import request from '@/utils/request'; // 资质状态:none 无证书 / normal 正常 / expiring 临期 / expired 已过期 export type WorkerCertStatus = 'none' | 'normal' | 'expiring' | 'expired'; // 审核状态:0 待审核 / 1 已通过 / 2 已驳回 export type WorkerAuditStatus = 0 | 1 | 2; // 证书行(详情接口返回完整证书,保存时按此结构提交) export interface WorkerCert { id?: number; workerId?: number; certType: string; certNo: string; issueAuthority?: string; issueDate?: string; expireDate?: string; certImageUrl?: string; } // 列表接口返回的证书摘要 export interface WorkerCertSummary { id: number; certType: string; certNo: string; expireDate?: string; } export interface WorkerRecord { id: number; workerName: string; phone?: string; idCard?: string; workerTitle?: string; rating?: number | string; certInfo?: string; certVerified?: boolean; completedCount?: number; // 在岗状态:1 在岗 / 0 离职 status: number; auditStatus: number; auditRemark?: string; auditBy?: number; auditAt?: string; lastLoginAt?: string; // 是否已开通电工 APP 登录账号 hasAccount?: boolean; certStatus?: WorkerCertStatus; certs?: WorkerCertSummary[]; createdAt?: string; created_at?: string; updatedAt?: string; updated_at?: string; } export interface WorkerQuery { page?: number; pageSize?: number; keyword?: string; status?: number; auditStatus?: number; certStatus?: WorkerCertStatus; } export interface WorkerListResult { list: WorkerRecord[]; total: number; page: number; pageSize: number; } // KPI:电工总数 / 待审核 / 临期 / 已过期 export interface WorkerStats { total: number; pendingAudit: number; expiring: number; expired: number; } export interface WorkerCertPayload { certType: string; certNo: string; issueAuthority?: string; issueDate?: string; expireDate?: string; certImageUrl?: string; } export interface WorkerPayload { workerName: string; phone: string; idCard?: string; workerTitle?: string; status?: number; rating?: number; certInfo?: string; // 新增时是否同时开通电工 APP 账号(默认密码为手机号后 6 位) withAccount?: boolean; // 存在时整体覆盖该电工的全部证书 certs?: WorkerCertPayload[]; } export interface WorkerAuditPayload { approved: boolean; remark?: string; } // 管理端电工登记接口(不修改原 worker.ts,勘察派单页仍使用 workerApi) export const workerRegistryApi = { getList: (params: WorkerQuery) => request.get('/workers', { params }), getStats: () => request.get('/workers/stats'), getDetail: (id: number) => request.get(`/workers/${id}`), create: (data: WorkerPayload) => request.post('/workers', data), update: (id: number, data: Partial) => request.put(`/workers/${id}`, data), remove: (id: number) => request.delete(`/workers/${id}`), audit: (id: number, data: WorkerAuditPayload) => request.put(`/workers/${id}/audit`, data), // 重置 APP 登录密码(后端固定重置为手机号后 6 位) resetPassword: (id: number) => request.post(`/workers/${id}/reset-password`), addCert: (id: number, data: WorkerCertPayload) => request.post(`/workers/${id}/certs`, data), updateCert: (id: number, certId: number, data: WorkerCertPayload) => request.put(`/workers/${id}/certs/${certId}`, data), removeCert: (id: number, certId: number) => request.delete(`/workers/${id}/certs/${certId}`), };