import { apiClient } from './client'; export interface UserListItem { userId: number; username: string; employeeName?: string | null; userCode: string; departmentName?: string | null; userType: 'NORMAL' | 'SUPER_ADMIN'; language: string; isDeleted: boolean; lastLoginDate?: string | null; createdBy?: string | null; createdDate?: string | null; } export interface UserDetail extends UserListItem { canEditDocument?: boolean; employeeId?: number | null; permissionCategoryIds: number[]; updatedBy?: string | null; updatedDate?: string | null; } export interface UsersListQuery { page?: number; size?: number; sortField?: 'tCreateDate' | 'tLastLoginDate' | 'sUsername' | 'sUserCode'; sortOrder?: 'asc' | 'desc'; queryField?: string; matchMode?: 'contains' | 'notContains' | 'equals'; queryValue?: string; userType?: 'NORMAL' | 'SUPER_ADMIN'; isDeleted?: boolean; } export interface PageResult { records: T[]; total: number; page: number; size: number; } export interface CreateUserReq { username: string; userCode: string; userType: 'NORMAL' | 'SUPER_ADMIN'; language: 'zh-CN' | 'en-US' | 'zh-TW'; canEditDocument: boolean; employeeId?: number | null; permissionCategoryIds?: number[]; } export interface UpdateUserReq { userCode?: string; userType?: 'NORMAL' | 'SUPER_ADMIN'; language?: 'zh-CN' | 'en-US' | 'zh-TW'; canEditDocument?: boolean; employeeId?: number | null; isDeleted?: boolean; permissionCategoryIds?: number[]; } export interface CreateUserVo { userId: number; username: string; userCode: string; } export const usersApi = { async list(query: UsersListQuery = {}): Promise> { return await apiClient.get>('/users', { params: query }); }, async get(userId: number): Promise { return await apiClient.get(`/users/${userId}`); }, async create(req: CreateUserReq): Promise { return await apiClient.post('/users', req); }, async update(userId: number, req: UpdateUserReq): Promise { return await apiClient.put(`/users/${userId}`, req); }, };