编辑 | blame | 历史 | 原始文档

工艺路线工序接口新增投料BOM - 前端联调方案

涉及页面

  • 生产工单新增/编辑页(src/views/mes/pro/workorder/detail.vue
  • 子组件 modules/process-list.vue(工序列表)
  • 子组件 modules/process-form.vue(工序新增/编辑弹窗)

业务流程与数据带入

  1. 用户新建/编辑工单 → 选择产品 → process-list.vue 调用接口获取工序列表
  2. 工序列表返回数据中新增 bomItems 字段(工序投料明细)
  3. 工序展开行自动展示投料明细(无需额外请求)
  4. 保存工单时 bomItems 随工序数据一起提交

API

接口说明

方法 路径 说明
GET /mes/pro/route-process/list-by-product?productId={productId} 按产品获取工艺路线工序(含投料BOM)

响应字段新增

MesProRouteProcessRespVO 新增字段:

字段 类型 说明
bomItems ProcessBomItem[] 工序投料BOM列表,无投料时为空数组或 null

ProcessBomItem 结构

字段 类型 说明
itemId Long BOM物料编号
itemCode String BOM物料编码
itemName String BOM物料名称
quantity BigDecimal 用料比例
remark String 备注

响应示例

{
  "code": 0,
  "data": [
    {
      "id": 1,
      "routeId": 10,
      "processId": 100,
      "processCode": "P001",
      "processName": "焊接",
      "sort": 1,
      "nextProcessId": 101,
      "nextProcessName": "组装",
      "linkType": 3,
      "keyFlag": true,
      "checkFlag": false,
      "backflushFlag": true,
      "outputItemId": 200,
      "outputItemCode": "M200",
      "outputItemName": "半成品A",
      "bomItems": [
        {
          "itemId": 1001,
          "itemCode": "M001",
          "itemName": "钢板",
          "quantity": 2.0,
          "remark": ""
        },
        {
          "itemId": 1002,
          "itemCode": "M002",
          "itemName": "焊条",
          "quantity": 0.5,
          "remark": ""
        }
      ]
    },
    {
      "id": 2,
      "routeId": 10,
      "processId": 101,
      "processCode": "P002",
      "processName": "组装",
      "sort": 2,
      "nextProcessId": null,
      "bomItems": []
    }
  ]
}

字段展示规则

字段 展示位置 说明
bomItems 工序表格展开行 点击展开按钮后以 Tag 列表形式展示每个投料物料
itemName / itemCode Tag 文本 优先显示物料名称,无名称时显示编码
quantity Tag 后缀 显示为 ×{quantity} 格式

前端对接确认清单

已修改文件(当前分支已有)

文件 修改内容
src/api/mes/pro/route/process/index.ts RouteProcess 接口新增 bomItems?: ProcessBomItem[]
src/api/mes/pro/workorder/process/index.ts WorkOrderProcess 接口新增 bomItems?: ProcessBomItem[]
src/views/mes/pro/workorder/data.ts useProcessGridColumns 新增展开列 { type: 'expand', width: 50 }
src/views/mes/pro/workorder/modules/process-list.vue getList() 映射 bomItems,模板新增 #expand slot

需确认

  1. ProcessBomItem 接口类型在前端 API 文件中已补充,确认与后端返回结构一致
  2. 展开行内的投料明细 Tag 列表展示按当前设计:蓝色 Tag,显示 物料名称 ×用量
  3. 无投料工序的展开行为空(无任何内容),不显示"投料明细"标题

业务规则说明

场景 规则
产品未配置工艺路线 返回空列表,不报错
工艺路线有工序但未配置投料 bomItems 为空,展开行无内容
投料物料已被删除 不返回该条投料记录(数据库逻辑删除)
工序被删除后重建 展开行重新从接口获取最新 BOM 数据

注意事项

  • 后端确保无需重启即可验证(如果接口已有数据):使用已配置投料的产品ID调用接口
  • 投料 BOM 来自 mes_pro_route_product_bom 表(配置投料),不是产品标准 BOM
  • BOM 物料名称通过 MesMdItemService 实时查询,确保展示最新物料名称
  • Mapper 层使用 MyBatis-Plus @TableLogic,已逻辑删除的记录不会返回