- 新增后端重置密码接口及前端对应操作入口 - 新增补开电工 APP 账号的更新参数 - 新增 hasAccount 字段标识电工是否开通 APP 账号 - 新增数据库菜单及角色绑定支持密码重置权限 - 移除后台角色中错误的 WORKER 和 CUSTOMER 角色
133 lines
3.4 KiB
TypeScript
133 lines
3.4 KiB
TypeScript
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<WorkerListResult>('/workers', { params }),
|
||
|
||
getStats: () => request.get<WorkerStats>('/workers/stats'),
|
||
|
||
getDetail: (id: number) => request.get<WorkerRecord>(`/workers/${id}`),
|
||
|
||
create: (data: WorkerPayload) => request.post('/workers', data),
|
||
|
||
update: (id: number, data: Partial<WorkerPayload>) => 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}`),
|
||
}; |