From 954540adc7d198c933cda8146a6a82b3bc54a88f Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Fri, 3 Apr 2026 09:34:42 +0800 Subject: [PATCH] =?UTF-8?q?change(reverseTrace):=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E6=A8=A1=E6=8B=9F=E6=95=B0=E6=8D=AE=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E7=9C=9F=E5=AE=9E=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增API接口和类型定义,重构追溯页面逻辑 - 添加三个API接口:按批次码追溯、获取工单投料信息、获取质检明细 - 定义完整的类型结构,与后端数据结构对齐 - 优化页面加载状态和错误处理 - 实现工单展开懒加载和质检明细弹窗功能 - 完善状态显示和空数据提示 --- src/api/mes/reverseTrace/index.ts | 37 ++ src/api/mes/reverseTrace/types.ts | 133 ++++++++ src/views/mes/reverseTrace/backup.vue | 463 ++++++++++++++++++++++++++ src/views/mes/reverseTrace/index.vue | 331 +++++++++--------- 4 files changed, 787 insertions(+), 177 deletions(-) create mode 100644 src/api/mes/reverseTrace/index.ts create mode 100644 src/api/mes/reverseTrace/types.ts create mode 100644 src/views/mes/reverseTrace/backup.vue diff --git a/src/api/mes/reverseTrace/index.ts b/src/api/mes/reverseTrace/index.ts new file mode 100644 index 0000000..0e0186f --- /dev/null +++ b/src/api/mes/reverseTrace/index.ts @@ -0,0 +1,37 @@ +import request from '@/utils/request' +import type { AxiosPromise } from 'axios' +import type { ReverseTraceData, MaterialInput, QcCheckItem } from './types' + +/** + * 产品反向追溯 - API接口 + * + * 三个接口分别对应: + * 1. 首屏追溯:输入批次码 -> 返回全链路聚合数据 + * 2. 工单展开懒加载:planId + industryType -> 返回投料列表 + * 3. 质检明细懒加载:inspectionId -> 返回检验项列表 + */ + +/** 按成品批次码进行全链路反向追溯 */ +export function getReverseTraceByBatch(batchCode: string): AxiosPromise { + return request({ + url: `/mes/reverseTrace/batch/${batchCode}`, + method: 'get' + }) +} + +/** 查询工单的原材料投料信息(展开行懒加载) */ +export function getMaterialInputs(planId: number, industryType: string): AxiosPromise { + return request({ + url: '/mes/reverseTrace/workOrder/materialInputs', + method: 'get', + params: { planId, industryType } + }) +} + +/** 查询质检检验项明细(弹窗懒加载) */ +export function getQcCheckItems(inspectionId: number): AxiosPromise { + return request({ + url: `/mes/reverseTrace/qc/detail/${inspectionId}`, + method: 'get' + }) +} diff --git a/src/api/mes/reverseTrace/types.ts b/src/api/mes/reverseTrace/types.ts new file mode 100644 index 0000000..0c6d77a --- /dev/null +++ b/src/api/mes/reverseTrace/types.ts @@ -0,0 +1,133 @@ +/** + * 产品反向追溯 - TypeScript类型定义 + * 与后端 ReverseTraceVo / TraceMaterialInputVo / TraceQcCheckItemVo 完全对齐 + */ + +/** 质检检验项明细 */ +export interface QcCheckItem { + /** 检验项目名称 */ + itemName: string + /** 标准值 */ + standard: string + /** 实际检测值 */ + actual: string + /** 检验结果: 合格/不合格/未判定 */ + result: string +} + +/** 成品信息 */ +export interface ProductInfo { + batchCode: string + productCode: string + productName: string + spec: string + productionDate: string + /** 状态: 已出库/已质检/生产完成 */ + status: string +} + +/** 客户明细数据 */ +export interface CustomerData { + customerCode: string + customerName: string + contactPerson: string + contactPhone: string + deliveryAddress: string + outboundTime: string + outboundQty: string + invoiceNo: string +} + +/** 客户信息(条件展示) */ +export interface CustomerInfo { + /** 是否有出库记录 */ + hasOutbound: boolean + /** 客户明细(hasOutbound=true时有值) */ + data: CustomerData | null +} + +/** 成品质检信息 */ +export interface QcInfo { + /** 质检主表ID(点击"检验明细"时使用) */ + inspectionId: number + qcCode: string + batchCode: string + /** 为后续扩展预留,当前页面暂未展示 */ + productCode: string + productName: string + spec: string + qcTime: string + qcType: string + inspector: string + result: string + /** 质检明细(成品质检直接返回) */ + checkItems: QcCheckItem[] +} + +/** 生产订单信息 */ +export interface ProductionOrder { + orderCode: string + batchCode: string + productName: string + dispatchType: string + dispatchTypeName: string + dispatchInfo: string + planQty: string + dispatchedQty: string + completedQty: string + startTime: string + endTime: string + status: string +} + +/** 生产工单 */ +export interface WorkOrder { + /** 工单ID(展开时传给后端查询投料信息) */ + planId: number + /** 行业类型(展开时传回后端) */ + industryType: string + processSeq: number + workOrderCode: string + processCode: string + processName: string + machineNo: string + machineName: string + startTime: string + endTime: string + worker: string + status: string + /** 投料明细(展开懒加载填充) */ + materialInputs?: MaterialInput[] + /** 加载状态 */ + loading?: boolean +} + +/** 原材料投料信息 */ +export interface MaterialInput { + /** 触发本条投料链路的产出条码 */ + productionBarcode: string + /** 投入扫描记录主键,便于后续穿透到扫描明细 */ + inputScanId: number + materialCode: string + materialName: string + batchCode: string + supplier: string + qty: string + unit: string + inTime: string + qcCode: string + qcResult: string + /** 质检主表ID(点击"检验明细"时使用) */ + inspectionId: number +} + +/** 整页追溯数据 */ +export interface ReverseTraceData { + /** 行业类型: TIRE/JJ */ + industryType: string + productInfo: ProductInfo + customerInfo: CustomerInfo + qcInfo: QcInfo + productionOrder: ProductionOrder + workOrderList: WorkOrder[] +} diff --git a/src/views/mes/reverseTrace/backup.vue b/src/views/mes/reverseTrace/backup.vue new file mode 100644 index 0000000..9e3775a --- /dev/null +++ b/src/views/mes/reverseTrace/backup.vue @@ -0,0 +1,463 @@ + + + + + diff --git a/src/views/mes/reverseTrace/index.vue b/src/views/mes/reverseTrace/index.vue index 9e3775a..e2ae584 100644 --- a/src/views/mes/reverseTrace/index.vue +++ b/src/views/mes/reverseTrace/index.vue @@ -16,13 +16,14 @@ - 追溯 + 追溯 重置 -
+
+ @@ -30,14 +31,14 @@ 成品信息 - {{ traceData.productInfo.batchCode }} - {{ traceData.productInfo.productCode }} - {{ traceData.productInfo.productName }} - {{ traceData.productInfo.spec }} - {{ traceData.productInfo.productionDate }} + {{ traceData.productInfo?.batchCode }} + {{ traceData.productInfo?.productCode }} + {{ traceData.productInfo?.productName }} + {{ traceData.productInfo?.spec }} + {{ traceData.productInfo?.productionDate }} - - {{ traceData.productInfo.status }} + + {{ traceData.productInfo?.status }} @@ -45,7 +46,8 @@ - + +