import request from '@/utils/request' import { ADMIN_API_PREFIX } from '@/config' import type { PageParam, PageResult } from '@/types' /** * 系统管理 - 用户 * * 契约说明(新契约,与后端 parking-module-system 对齐): * - 前缀 /admin-api,回归 CommonResult{code=0} * - 标准 CRUD URL 命名:/create /update /delete /delete-list /get /list /page /export-excel * - 权限标识:system:user:create / update / delete / query / export * * ⚠️ 时间字段是**毫秒时间戳数字**,不是格式化字符串: * 后端 `UserRespVO.createTime` 是 `LocalDateTime`,由框架的 * `TimestampLocalDateTimeSerializer` 序列化成 epoch millis。 * 所以类型写 `number`,渲染统一走 `formatDateTime()`。 */ const BASE = `${ADMIN_API_PREFIX}/system/user` export interface UserVO { id: number username: string nickname: string orgId?: number orgName?: string mobile?: string email?: string /** 性别:0 未知,1 男,2 女(字典 system_user_sex) */ sex?: number /** 状态:0 启用,1 停用(字典 system_common_status) */ status?: number loginIp?: string /** 最后登录时间(毫秒时间戳) */ loginDate?: number /** 创建时间(毫秒时间戳) */ createTime?: number /** 已分配的角色编号(后端按用户聚合后下发) */ roleIds?: number[] } export interface UserPageReqVO extends PageParam { username?: string nickname?: string orgId?: number status?: number } export interface UserSaveReqVO { id?: number username: string nickname: string orgId?: number mobile?: string email?: string sex?: number /** 明文密码;创建时必填,修改时留空表示不改 */ password?: string status?: number remark?: string /** 角色编号集合(全量覆盖) */ roleIds?: number[] } export const UserApi = { getUserPage: (params: UserPageReqVO) => request.get>(`${BASE}/page`, { params }), getUserList: (params?: Partial) => request.get(`${BASE}/list`, { params }), getUser: (id: number) => request.get(`${BASE}/get`, { params: { id } }), createUser: (data: UserSaveReqVO) => request.post(`${BASE}/create`, data), updateUser: (data: UserSaveReqVO) => request.put(`${BASE}/update`, data), deleteUser: (id: number) => request.delete(`${BASE}/delete`, { params: { id } }), deleteUserList: (ids: number[]) => request.delete(`${BASE}/delete-list`, { params: { ids: ids.join(',') } }), exportUser: (params: UserPageReqVO) => request.download(`${BASE}/export-excel`, params, '用户列表.xlsx'), resetPassword: (id: number, password: string) => request.put(`${BASE}/update-password`, { id, password }) }