Files
smart_grid_iot/client/src/api/workerRegistry.ts
T
andyesfly f8117e33b6 feat: 新增电工 APP 账号开通与密码重置功能
- 新增后端重置密码接口及前端对应操作入口
- 新增补开电工 APP 账号的更新参数
- 新增 hasAccount 字段标识电工是否开通 APP 账号
- 新增数据库菜单及角色绑定支持密码重置权限
- 移除后台角色中错误的 WORKER 和 CUSTOMER 角色
2026-10-11 15:07:45 +08:00

133 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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}`),
};