| | |
| | | inspectorName: string; |
| | | } |
| | | |
| | | export interface TimeSensitiveTaskStartForm extends TimeSensitiveTaskForm { |
| | | export interface TimeSensitiveTaskStartForm { |
| | | id: number | string; |
| | | initiatorName: string; |
| | | initiateTime: string; |
| | | setTemperature: number | string; |
| | | agingDuration: number | string; |
| | | machineName: string; |
| | | furnaceInTime: string; |
| | | inspectorName: string; |
| | | } |
| | | |
| | | export interface TimeSensitiveCandidateQuery { |
| | |
| | | size?: number; |
| | | taskId: number | string; |
| | | materialType: TimelinessMaterialType; |
| | | categoryName?: string; |
| | | model?: string; |
| | | materialCode?: string; |
| | | } |
| | | |
| | | export interface TimeSensitiveTaskItemInput { |
| | | itemId: number | string; |
| | | /** 单丝传“铁架号-铁牌序号”,绞线传数字序号。 */ |
| | | ironPlateNo: number | string; |
| | | } |
| | | |
| | | export interface TimelinessInspectionDetailForm { |
| | |
| | | timelinessInspectionId?: number | string; |
| | | } |
| | | |
| | | /** 联调完成后改为 false 即可恢复下方真实接口。 */ |
| | | export const USE_TIME_SENSITIVE_MOCK = true; |
| | | /** 本地演示开关;正常运行时始终请求与 PC 端一致的真实接口。 */ |
| | | export const USE_TIME_SENSITIVE_MOCK = false; |
| | | |
| | | const mockTasks: any[] = [ |
| | | { |
| | |
| | | ], |
| | | }; |
| | | |
| | | const mockMaterialDetails: Record<string, Record<string, any>> = { |
| | | "9101": { |
| | | qualitySetTemperature: 180, |
| | | qualitySetDuration: "2+4+1", |
| | | confirmTime: "2026-09-04 08:35:00", |
| | | confirmUserName: "张工", |
| | | status: 0, |
| | | ledgerNo: "SO2609010188", |
| | | schedulingDetailNo: "LS-PC-260904-001", |
| | | deviceCode: "LS006", |
| | | clientName: "山东元旺电工科技有限公司", |
| | | productionDate: "2026-09-04", |
| | | groupTeam: "白班", |
| | | groupTeamLeader: "王班长", |
| | | productionNumber: 1, |
| | | unit: "盘", |
| | | }, |
| | | "9102": { |
| | | qualitySetTemperature: 175, |
| | | qualitySetDuration: "2+3+1", |
| | | confirmTime: "2026-09-04 08:42:00", |
| | | confirmUserName: "张工", |
| | | status: 0, |
| | | ledgerNo: "SO2609010192", |
| | | schedulingDetailNo: "LS-PC-260904-002", |
| | | deviceCode: "LS008", |
| | | clientName: "华东电缆有限公司", |
| | | productionDate: "2026-09-04", |
| | | groupTeam: "白班", |
| | | groupTeamLeader: "王班长", |
| | | productionNumber: 1, |
| | | unit: "盘", |
| | | }, |
| | | "9301": { |
| | | qualitySetTemperature: 180, |
| | | qualitySetDuration: "2+4+1", |
| | | confirmTime: "2026-09-05 09:15:00", |
| | | confirmUserName: "李工", |
| | | status: 0, |
| | | ledgerNo: "SO2609050106", |
| | | schedulingDetailNo: "LS-PC-260905-006", |
| | | deviceCode: "LS003", |
| | | clientName: "山东元旺电工科技有限公司", |
| | | productionDate: "2026-09-05", |
| | | groupTeam: "白班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | unit: "盘", |
| | | }, |
| | | "9302": { |
| | | qualitySetTemperature: 180, |
| | | qualitySetDuration: "2+4+1", |
| | | confirmTime: "2026-09-05 09:32:00", |
| | | confirmUserName: "李工", |
| | | status: 0, |
| | | ledgerNo: "SO2609050112", |
| | | schedulingDetailNo: "LS-PC-260905-007", |
| | | deviceCode: "LS005", |
| | | clientName: "华北线缆有限公司", |
| | | productionDate: "2026-09-05", |
| | | groupTeam: "白班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | unit: "盘", |
| | | }, |
| | | "9501": { |
| | | qualitySetTemperature: 180, |
| | | qualitySetDuration: "2+4+1", |
| | | confirmTime: "2026-09-03 10:20:00", |
| | | confirmUserName: "刘工", |
| | | status: 2, |
| | | ledgerNo: "SO2609030088", |
| | | schedulingDetailNo: "LS-PC-260903-003", |
| | | deviceCode: "LS002", |
| | | clientName: "鲁中电缆有限公司", |
| | | productionDate: "2026-09-03", |
| | | groupTeam: "中班", |
| | | groupTeamLeader: "孙班长", |
| | | productionNumber: 1, |
| | | unit: "盘", |
| | | }, |
| | | "9201": { |
| | | qualitySetTemperature: 175, |
| | | qualitySetDuration: "2+3+1", |
| | | confirmTime: "2026-09-04 09:05:00", |
| | | confirmUserName: "王工", |
| | | status: 1, |
| | | ledgerNo: "SO2609020116", |
| | | schedulingDetailNo: "JX-PC-260904-001", |
| | | deviceCode: "JX003", |
| | | clientName: "华北电缆有限公司", |
| | | productionDate: "2026-09-04", |
| | | groupTeam: "中班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | productionWeight: 1180, |
| | | unit: "盘", |
| | | }, |
| | | "9202": { |
| | | qualitySetTemperature: 175, |
| | | qualitySetDuration: "2+3+1", |
| | | confirmTime: "2026-09-04 09:12:00", |
| | | confirmUserName: "王工", |
| | | status: 1, |
| | | ledgerNo: "SO2609020118", |
| | | schedulingDetailNo: "JX-PC-260904-002", |
| | | deviceCode: "JX004", |
| | | clientName: "华北电缆有限公司", |
| | | productionDate: "2026-09-04", |
| | | groupTeam: "中班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | productionWeight: 1260, |
| | | unit: "盘", |
| | | }, |
| | | "9401": { |
| | | qualitySetTemperature: 175, |
| | | qualitySetDuration: "2+3+1", |
| | | confirmTime: "2026-09-05 10:10:00", |
| | | confirmUserName: "李工", |
| | | status: 0, |
| | | ledgerNo: "SO2609050216", |
| | | schedulingDetailNo: "JX-PC-260905-002", |
| | | deviceCode: "JX006", |
| | | clientName: "华北电缆有限公司", |
| | | productionDate: "2026-09-05", |
| | | groupTeam: "中班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | productionWeight: 1380, |
| | | unit: "盘", |
| | | }, |
| | | "9402": { |
| | | qualitySetTemperature: 175, |
| | | qualitySetDuration: "2+3+1", |
| | | confirmTime: "2026-09-05 10:22:00", |
| | | confirmUserName: "李工", |
| | | status: 0, |
| | | ledgerNo: "SO2609050220", |
| | | schedulingDetailNo: "JX-PC-260905-003", |
| | | deviceCode: "JX007", |
| | | clientName: "华南电缆有限公司", |
| | | productionDate: "2026-09-05", |
| | | groupTeam: "中班", |
| | | groupTeamLeader: "赵班长", |
| | | productionNumber: 1, |
| | | productionWeight: 1460, |
| | | unit: "盘", |
| | | }, |
| | | }; |
| | | |
| | | [...mockMaterialPool.单丝, ...mockMaterialPool.绞线].forEach((item) => { |
| | | Object.assign(item, mockMaterialDetails[String(item.id)] || {}); |
| | | }); |
| | | |
| | | const findMockMaterial = (id: number | string) => |
| | | [...mockMaterialPool.单丝, ...mockMaterialPool.绞线].find( |
| | | (item) => String(item.id) === String(id) |
| | |
| | | return item ? { ...item } : undefined; |
| | | }; |
| | | |
| | | const cloneMockMaterialWithIronPlate = (id: number | string, ironPlateNo: number | string) => { |
| | | const item = cloneMockMaterial(id); |
| | | return item ? { ...item, ironPlateNo } : undefined; |
| | | }; |
| | | |
| | | const mockItems: Record<string, any[]> = { |
| | | "9001": [cloneMockMaterial(9101), cloneMockMaterial(9102)].filter(Boolean), |
| | | "9002": [cloneMockMaterial(9201), cloneMockMaterial(9202)].filter(Boolean), |
| | | "9003": [cloneMockMaterial(9501)].filter(Boolean), |
| | | "9001": [cloneMockMaterialWithIronPlate(9101, 1), cloneMockMaterialWithIronPlate(9102, 2)].filter( |
| | | Boolean |
| | | ), |
| | | "9002": [cloneMockMaterialWithIronPlate(9201, 1), cloneMockMaterialWithIronPlate(9202, 2)].filter( |
| | | Boolean |
| | | ), |
| | | "9003": [cloneMockMaterialWithIronPlate(9501, 1)].filter(Boolean), |
| | | }; |
| | | |
| | | const mockInspections: Record<string, any[]> = { |
| | |
| | | } |
| | | return request<BaseResult<PageResult>>({ |
| | | url: "/timeSensitiveTask/queryPage", |
| | | method: "GET", |
| | | method: "POST", |
| | | data: params, |
| | | }); |
| | | }, |
| | |
| | | } |
| | | return request<BaseResult<any>>({ |
| | | url: "/timeSensitiveTask/getDetailById", |
| | | method: "GET", |
| | | data: { id }, |
| | | method: "POST", |
| | | data: id as any, |
| | | }); |
| | | }, |
| | | |
| | |
| | | } |
| | | return request<BaseResult<any[]>>({ |
| | | url: "/timeSensitiveTask/getItems", |
| | | method: "GET", |
| | | data: { taskId }, |
| | | method: "POST", |
| | | data: taskId as any, |
| | | }); |
| | | }, |
| | | |
| | |
| | | } |
| | | return request<BaseResult<any>>({ |
| | | url: "/timeSensitiveTask/delete", |
| | | method: "DELETE", |
| | | data: { id }, |
| | | method: "POST", |
| | | data: id as any, |
| | | }); |
| | | }, |
| | | |
| | |
| | | } |
| | | return request<BaseResult<any>>({ |
| | | url: "/timeSensitiveTask/checkEnd", |
| | | method: "GET", |
| | | data: { id }, |
| | | method: "POST", |
| | | data: id as any, |
| | | }); |
| | | }, |
| | | |
| | |
| | | queryCandidates(params: TimeSensitiveCandidateQuery) { |
| | | if (USE_TIME_SENSITIVE_MOCK) { |
| | | const existingIds = new Set( |
| | | (mockItems[String(params.taskId)] || []).map((item) => String(item.id)) |
| | | Object.values(mockItems) |
| | | .flat() |
| | | .map((item) => String(item.id)) |
| | | ); |
| | | let rows = mockMaterialPool[params.materialType] |
| | | .filter((item) => !existingIds.has(String(item.id))) |
| | |
| | | } |
| | | return request<BaseResult<PageResult>>({ |
| | | url: "/timeSensitiveTask/queryCandidates", |
| | | method: "GET", |
| | | method: "POST", |
| | | data: params, |
| | | }); |
| | | }, |
| | | |
| | | addItems(data: { taskId: number | string; itemIds: Array<number | string> }) { |
| | | addItems(data: { |
| | | taskId: number | string; |
| | | itemIds: Array<number | string>; |
| | | items: TimeSensitiveTaskItemInput[]; |
| | | }) { |
| | | if (USE_TIME_SENSITIVE_MOCK) { |
| | | const key = String(data.taskId); |
| | | mockItems[key] ||= []; |
| | | const existingIds = new Set(mockItems[key].map((item) => String(item.id))); |
| | | data.itemIds.forEach((id) => { |
| | | const material = cloneMockMaterial(id); |
| | | if (material && !existingIds.has(String(id))) mockItems[key].push(material); |
| | | data.items.forEach(({ itemId, ironPlateNo }) => { |
| | | const material = cloneMockMaterial(itemId); |
| | | if (material && !existingIds.has(String(itemId))) { |
| | | mockItems[key].push({ ...material, ironPlateNo }); |
| | | } |
| | | }); |
| | | updateMockItemCount(data.taskId); |
| | | const task = mockTasks.find((item) => String(item.id) === key); |
| | |
| | | "新增明细", |
| | | "待开始", |
| | | "待开始", |
| | | `新增 ${data.itemIds.length} 条时效明细`, |
| | | `领用 ${data.itemIds.length} 条物料`, |
| | | task?.initiatorName || "操作人" |
| | | ); |
| | | return mockResult(true, "时效明细新增成功"); |
| | | return mockResult(true, "物料领用成功"); |
| | | } |
| | | return request<BaseResult<any>>({ |
| | | url: "/timeSensitiveTask/addItems", |
| | |
| | | "删除明细", |
| | | "待开始", |
| | | "待开始", |
| | | `删除 ${data.itemIds.length} 条时效明细`, |
| | | `删除 ${data.itemIds.length} 条领用物料`, |
| | | task?.initiatorName || "操作人" |
| | | ); |
| | | return mockResult(true, "时效明细删除成功"); |
| | | return mockResult(true, "领用物料删除成功"); |
| | | } |
| | | return request<BaseResult<any>>({ |
| | | url: "/timeSensitiveTask/deleteItems", |
| | |
| | | }); |
| | | }, |
| | | |
| | | /** 与 PC 端 aging_rack_number 字典一致,用作单丝领用铁架号。 */ |
| | | getAgingRackNumbers() { |
| | | return request<BaseResult<any[]>>({ |
| | | url: "/system/dict/data/type/aging_rack_number", |
| | | method: "GET", |
| | | }); |
| | | }, |
| | | |
| | | getOperationRecords(recordId: number | string) { |
| | | if (USE_TIME_SENSITIVE_MOCK) { |
| | | return mockResult<any[]>( |