# 质量管理 - 检测结果台账(分类 / 时间区间筛选 + 导出) - 前端联调方案 > 本次解决两件事: > 1. **直接展示**:四类检验单(IQC/IPQC/OQC/RQC)列表接口**已经返回**检验项实测结果汇总字段 `indicatorResultSummary`,但前端列表未展示 → 前端加一列即可,**后端无需改动**。 > 2. **筛选展示 + 导出台账**:新增跨四类的「检测结果台账」查询与导出接口(分类 + 检测日期区间 + 物料/批次/检测结果/检测人筛选),一行一个检测项结果,用于查询、打印、存档。 ## 涉及页面 - **新增**:检测结果台账页 `views/mes/qc/ledger/index.vue`(菜单已由后端 SQL 配置:质量管理 → 检测结果台账,path `inspection-ledger`,component `mes/qc/ledger/index`) - **变更(用于「直接展示」)**:来料检验 / 过程检验 / 出货检验 / 退货检验 四个列表页新增「检测结果(检验项)」列 ## 需求点与落点对照 | 需求 | 落点 | |------|------| | 检测结果在界面上直接展示 | 四类检验单列表 API 已返回 `indicatorResultSummary`,前端列表加列(无需后端改动) | | 支持筛选展示 | 新增台账页:分类 + 检测日期区间 + 检验单号 + 物料 + 批次号 + 检测结果 + 检测人 | | 按分类筛选 | 参数 `qcType`(1 来料检验 / 2 过程检验 / 3 出货检验 / 4 退货检验),不传为全部 | | 按时间区间筛选 | 参数 `inspectDate`(按「检测日期」过滤) | | 导出为台账 | `GET /mes/qc/inspection-ledger/export-excel`,与列表同一套筛选参数 | ## 业务流程与数据带入 1. 用户在台账页设置筛选条件(分类、检测日期区间等)→ 列表分页展示,一行一个检测项结果。 2. 同一套筛选参数直接传给导出接口 → 生成 Excel 台账(文件名「检测结果台账.xls」),用于打印与存档。 3. 检验单未录入检验结果时,该单仍会出现在台账中(检测项相关列为空),不会漏单。 ## API ### 1. 台账分页 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/admin-api/mes/qc/inspection-ledger/page` | 检测结果台账分页(四类检验单统一查询) | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | qcType | Integer | 否 | 分类(检验类型):1 来料检验 / 2 过程检验 / 3 出货检验 / 4 退货检验;不传为全部 | | inspectDate[0] | String | 否 | 检测日期开始,格式 yyyy-MM-dd HH:mm:ss | | inspectDate[1] | String | 否 | 检测日期结束,格式 yyyy-MM-dd HH:mm:ss | | code | String | 否 | 检验单编号,模糊匹配 | | itemId | Long | 否 | 物料编号 | | batchNo | String | 否 | 批次号,模糊匹配(来料检验取供应商批次号;出货/退货检验取批次号;过程检验无批次) | | checkResult | Integer | 否 | 检测结果,字典 `mes_qc_check_result` | | inspectorUserId | Long | 否 | 检测人员编号 | | pageNo / pageSize | Integer | 否 | 分页参数 | > `inspectDate` 与现有四类检验单列表的传参方式一致(同一套 RangePicker 参数对象可直接复用)。 **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | qcType | Integer | 分类(检验类型),字典 `mes_qc_type` | | qcId | Long | 检验单 ID(可跳转到对应检验单详情) | | code | String | 检验单编号 | | name | String | 检验单名称 | | status | Integer | 单据状态,字典 `mes_order_status` | | itemId / itemCode / itemName / itemSpecification / unitName | - | 物料信息(编码、名称、规格型号、计量单位) | | batchNo | String | 批次号 | | checkQuantity / qualifiedQuantity / unqualifiedQuantity | BigDecimal | 检测数量 / 合格数量 / 不合格数量 | | checkResult | Integer | 检测结果,字典 `mes_qc_check_result` | | inspectDate | String (LocalDateTime) | 检测日期 | | inspectorUserId / inspectorName | - | 检测人员 | | indicatorId / indicatorName | - | 检测项编号 / 名称 | | indicatorValue | String | 检测值(实测值,原样字符串) | | indicatorRemark | String | 检测项备注 | | judgementBasis | String | 判定依据,如 `10~20`、`≤20`、`≥10`、`标准值 15`;无法拼装时为空 | | standardValue / minThreshold / maxThreshold | BigDecimal | 判定依据原始值(前端展示用 `judgementBasis` 即可) | | remark | String | 检验单备注 | **响应示例:** ```json { "code": 0, "data": { "list": [ { "qcType": 1, "qcId": 123, "code": "IQC1789019053513", "name": "AN1789019053466-物料检验", "status": 0, "itemId": 28, "itemCode": "WL0001", "itemName": "物料A", "itemSpecification": "100mm*50mm", "unitName": "个", "batchNo": "VB20260101", "checkQuantity": 99, "qualifiedQuantity": 99, "unqualifiedQuantity": 0, "checkResult": 1, "inspectDate": "2026-09-10 00:00:00", "inspectorUserId": 111, "inspectorName": "张三", "indicatorId": 2, "indicatorName": "温度", "indicatorValue": "15", "indicatorRemark": null, "judgementBasis": "10~20", "remark": null } ], "total": 5 } } ``` ### 2. 台账导出 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/admin-api/mes/qc/inspection-ledger/export-excel` | 导出检测结果台账 Excel,参数与分页接口完全一致 | **导出列:** 分类 / 检验单编号 / 检验单名称 / 物料编码 / 物料名称 / 规格型号 / 批次号 / 检测项 / 检测值 / 判定依据 / 检测结果 / 检测数量 / 合格数量 / 不合格数量 / 检测人员 / 检测日期 / 单据状态 / 备注。 ## 权限与菜单(已由后端 SQL 配置完成) | 菜单 | 权限码 | 说明 | |------|--------|------| | 质量管理 → 检测结果台账 | — | type=2,component `mes/qc/ledger/index` | | 检测结果台账查询 | `mes:qc-inspection-ledger:query` | 页面加载、分页查询 | | 检测结果台账导出 | `mes:qc-inspection-ledger:export` | 导出按钮 | 菜单已授权给所有持有「来料检验查询」的角色;前端建好 `views/mes/qc/ledger/index.vue` 后菜单即可用。 ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | 分类 | 台账列表列、筛选项 | 用 `CellDict` + `DICT_TYPE.MES_QC_TYPE` 渲染 | | 检测结果 | 台账列表列、筛选项 | 用 `CellDict` + `DICT_TYPE.MES_QC_CHECK_RESULT` | | 检测项 / 检测值 / 判定依据 | 台账列表列 | 一行一个检测项;检验单未录入结果时为空 | | 单据状态 | 台账列表列 | `DICT_TYPE.MES_ORDER_STATUS` | | 检测结果(检验项) | 四类检验单列表列 | 直接渲染 `indicatorResultSummary`(如 `温度:15,电阻:1`),列宽建议 200+,内容过长可换行或省略号悬浮 | | 检测日期区间 | 台账页筛选区 | RangePicker,valueFormat `YYYY-MM-DD HH:mm:ss` | ## 业务规则说明 | 场景 | 规则 | |------|------| | 分类不选 | 四类检验单一起查询,按检测日期倒序、同日期按检验单 ID 倒序 | | 时间区间 | 按「检测日期」闭区间过滤;只传开始或只传结束均可 | | 一行一检测项 | 一张检验单录入多个检测项结果时展开为多行(其余字段重复) | | 检验单未录入检测项 | 该单保留一行,检测项 / 检测值 / 判定依据为空 | | 判定依据 | 由检验单行的标准值与误差上下限拼装:上下限都有 → `下限~上限`;仅上限 → `≤上限`;仅下限 → `≥下限`;仅标准值 → `标准值 值`;都没有则为空 | | 逻辑删除 | 已删除的检验单不出现在台账;已删除的检测项仍展示其历史名称,保证历史台账可读 | | 导出范围 | 导出遵循当前筛选条件;不选时间则导出全部符合其它条件的记录 | ## 注意事项 - 本次后端新增了页面接口与菜单,**需重启后端服务**后新接口才可用;相关角色需重新登录以刷新菜单与权限缓存。 - 台账接口的 `qcId` + `qcType` 可定位到原始检验单,若需要点击跳转,请按分类跳到对应页面(来料检验 / 过程检验 / 出货检验 / 退货检验)。 - 台账的「检测结果」列与四类检验单列表的「检测结果」列口径一致,均取检验单头的检测结论(字典 `mes_qc_check_result`)。 - 四类检验单列表新增的「检测结果(检验项)」列直接使用已有字段 `indicatorResultSummary`,不需要新接口;导出时该内容已包含在「检验指标」列中。 - 台账为只读页面,不提供新增 / 修改 / 删除操作。