/** * 用户管理相关类型定义 * @description 定义用户管理(CRUD)相关的数据类型 */ import type { PageQuery } from './api'; // ==================== 用户查询参数 ==================== /** * 用户查询条件 */ export interface UserQuery extends PageQuery { /** 用户名(模糊搜索) */ username?: string; /** 角色 */ role?: string; /** 昵称(模糊搜索) */ nickname?: string; /** 邮箱 */ email?: string; /** 手机号 */ phone?: string; /** 状态(0-禁用, 1-启用) */ status?: number; } // ==================== 用户响应数据 ==================== /** * 用户响应数据 */ export interface UserResp { /** 用户ID */ id: number; /** 用户名 */ username: string; /** 角色(ADMIN-管理员, USER-普通用户) */ role: string; /** 邮箱 */ email?: string; /** 手机号 */ phone?: string; /** 昵称 */ nickname: string; /** 头像地址 */ avatar?: string; /** 状态(0-禁用, 1-启用) */ status: number; /** 创建人ID */ createUser?: number; /** 创建人名称 */ createUserString?: string; /** 创建时间 */ createTime?: string; /** 更新时间 */ updateTime?: string; } // ==================== 用户请求参数 ==================== /** * 用户请求参数(创建/更新用户) */ export interface UserReq { /** 用户名(4-20位字母、数字或下划线) */ username: string; /** 角色(ADMIN 或 USER) */ role: string; /** 密码(8-20位,包含大小写字母和数字)- 可选,更新时不传则不修改密码 */ password?: string; /** 邮箱 */ email?: string; /** 手机号(11位) */ phone?: string; /** 昵称 */ nickname: string; /** 头像地址 */ avatar?: string; /** 状态(0-禁用, 1-启用) */ status?: number; } // ==================== 批量操作参数 ==================== /** * 批量删除请求参数 */ export interface BatchDeleteReq { /** 用户ID列表 */ ids: number[]; } /** * 重置密码请求参数 */ export interface ResetPasswordReq { /** 用户ID */ userId: number; /** 新密码 */ newPassword: string; } /** * 修改个人信息请求参数 */ export interface UpdateProfileReq { /** 昵称 */ nickname?: string; /** 邮箱 */ email?: string; /** 手机号 */ phone?: string; /** 头像地址 */ avatar?: string; } // ==================== 表单数据类型 ==================== /** * 用户表单数据(用于前端表单组件) */ export interface UserFormData { /** 用户ID(编辑时使用) */ id?: number; /** 用户名 */ username: string; /** 角色 */ role: string; /** 密码(创建时必填,更新时可选) */ password?: string; /** 确认密码(创建时必填,更新时可选) */ confirmPassword?: string; /** 邮箱 */ email?: string; /** 手机号 */ phone?: string; /** 昵称 */ nickname: string; /** 头像地址 */ avatar?: string; /** 状态 */ status?: number; } // ==================== 用户列表筛选条件 ==================== /** * 用户列表筛选条件(用于前端筛选表单) */ export interface UserFilterForm { /** 用户名 */ username?: string; /** 角色 */ role?: string; /** 昵称 */ nickname?: string; /** 状态 */ status?: number; /** 创建时间范围 */ createTimeRange?: [string, string]; } // ==================== 工具函数 ==================== /** * 将用户响应数据转换为表单数据 * @param user - 用户响应数据 * @returns 表单数据 */ export function userRespToFormData(user: UserResp): UserFormData { return { id: user.id, username: user.username, role: user.role, email: user.email, phone: user.phone, nickname: user.nickname, avatar: user.avatar, status: user.status, }; } /** * 将表单数据转换为用户请求参数 * @param formData - 表单数据 * @returns 用户请求参数 */ export function formDataToUserReq(formData: UserFormData): UserReq { const req: UserReq = { username: formData.username, role: formData.role, nickname: formData.nickname, }; // 可选字段 if (formData.password) { req.password = formData.password; } if (formData.email) { req.email = formData.email; } if (formData.phone) { req.phone = formData.phone; } if (formData.avatar) { req.avatar = formData.avatar; } if (formData.status !== undefined) { req.status = formData.status; } return req; }