import type { SystemModel, TransformData } from '#/api'; import { fromRole, fromRow } from '#/api/model'; export function fromUser(data?: TransformData): SystemModel.User { const userId = data?.userId ?? data?.pid ?? data?.id; const id = userId === undefined || userId === null ? '' : String(userId); return { ...fromRow({ ...data, id, createUser: data?.createBy ?? data?.createUser, createTime: data?.createTime, }), id, access: data?.userName ?? data?.userid, name: data?.nickName ?? data?.username, worker: data?.jobnumber, mobile: data?.phonenumber ?? data?.mobile, phone: data?.phonenumber ?? data?.mobile ?? data?.phone, pid: id, roles: data?.roles?.map((item: TransformData) => fromRole(item)) ?? [], sititutionId: data?.deptId === undefined || data?.deptId === null ? data?.sititutionId : String(data.deptId), status: data?.status === 0 || data?.status === '0' || data?.stateSel === 0 || data?.stateSel === '0' ? 0 : 1, hospitalName: data?.dept?.deptName ?? data?.hospitalName, roleNames: data?.roles ?.map( (item: TransformData) => item.roleName ?? item.rolename ?? item.name, ) .filter(Boolean) .join(',') ?? '', remark: data?.remark, createUser: data?.createBy ?? data?.createUser, }; } export function toUser(data?: Partial): TransformData { const roleIds = data?.roles ?.map((item) => { if (typeof item === 'string' || typeof item === 'number') return item; return item.id ?? item.pid; }) .filter((item) => item !== undefined && item !== '') ?? []; const userId = data?.pid ?? data?.id; const status = data?.status === 0 || data?.status === 1 ? String(data.status) : undefined; return { userId: userId || void 0, userName: data?.access, nickName: data?.name, password: data?.password, jobnumber: data?.worker, phonenumber: data?.phone ?? data?.mobile, deptId: data?.sititutionId, roleIds: roleIds.length > 0 ? roleIds : void 0, status, remark: data?.remark, // 兼容旧接口查询 pid: userId || void 0, userid: data?.access, username: data?.name, mobile: data?.phone ?? data?.mobile, sititutionId: data?.sititutionId, stateSel: status === undefined ? null : (Number(status) as 0 | 1), }; }