From bbce6db600e6bb0cf2a3bb78bdf5ccff70b737a8 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 23 七月 2026 13:05:10 +0800
Subject: [PATCH] feat(workorder): 添加工序投料BOM明细展开功能

---
 src/api/mes/pro/workorder/process/index.ts           |   10 ++++++++++
 src/api/mes/pro/route/process/index.ts               |   10 ++++++++++
 src/views/mes/pro/workorder/modules/process-list.vue |   19 +++++++++++++++++++
 src/views/mes/pro/workorder/data.ts                  |    4 ++++
 4 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/src/api/mes/pro/route/process/index.ts b/src/api/mes/pro/route/process/index.ts
index d594e4e..3e5c2f8 100644
--- a/src/api/mes/pro/route/process/index.ts
+++ b/src/api/mes/pro/route/process/index.ts
@@ -1,6 +1,15 @@
 import { requestClient } from '#/api/request';
 
 export namespace MesProRouteProcessApi {
+  /** 宸ュ簭鎶曟枡BOM鏄庣粏 */
+  export interface ProcessBomItem {
+    itemId?: number;
+    itemCode?: string;
+    itemName?: string;
+    quantity?: number;
+    remark?: string;
+  }
+
   /** MES 宸ヨ壓璺嚎宸ュ簭 */
   export interface RouteProcess {
     id?: number;
@@ -22,6 +31,7 @@
     outputItemCode?: string;
     outputItemName?: string;
     remark?: string;
+    bomItems?: ProcessBomItem[];
     createTime?: Date;
   }
 }
diff --git a/src/api/mes/pro/workorder/process/index.ts b/src/api/mes/pro/workorder/process/index.ts
index 6833d3f..4444ca0 100644
--- a/src/api/mes/pro/workorder/process/index.ts
+++ b/src/api/mes/pro/workorder/process/index.ts
@@ -3,6 +3,15 @@
 import { requestClient } from '#/api/request';
 
 export namespace MesProWorkOrderProcessApi {
+  /** 宸ュ簭鎶曟枡BOM鏄庣粏 */
+  export interface ProcessBomItem {
+    itemId?: number;
+    itemCode?: string;
+    itemName?: string;
+    quantity?: number;
+    remark?: string;
+  }
+
   /** MES 鐢熶骇宸ュ崟宸ュ簭 */
   export interface WorkOrderProcess {
     id?: number; // 缂栧彿
@@ -23,6 +32,7 @@
     outputItemId?: number; // 浜у嚭浜у搧鐗╂枡缂栧彿
     outputItemCode?: string; // 浜у嚭浜у搧鐗╂枡缂栫爜
     outputItemName?: string; // 浜у嚭浜у搧鐗╂枡鍚嶇О
+    bomItems?: ProcessBomItem[]; // 宸ュ簭鎶曟枡BOM鏄庣粏
     remark?: string; // 澶囨敞
   }
 }
diff --git a/src/views/mes/pro/workorder/data.ts b/src/views/mes/pro/workorder/data.ts
index 9a4bf1b..fcac639 100644
--- a/src/views/mes/pro/workorder/data.ts
+++ b/src/views/mes/pro/workorder/data.ts
@@ -753,6 +753,10 @@
         ]
       : []),
     {
+      type: 'expand',
+      width: 50,
+    } as const,
+    {
       field: 'sort',
       title: '搴忓彿',
       width: 80,
diff --git a/src/views/mes/pro/workorder/modules/process-list.vue b/src/views/mes/pro/workorder/modules/process-list.vue
index 35ac698..f5b0cdc 100644
--- a/src/views/mes/pro/workorder/modules/process-list.vue
+++ b/src/views/mes/pro/workorder/modules/process-list.vue
@@ -143,6 +143,7 @@
           outputItemCode: item.outputItemCode,
           outputItemName: item.outputItemName,
           remark: item.remark,
+          bomItems: item.bomItems,
         }));
       }
     } else {
@@ -299,6 +300,24 @@
           ]"
         />
       </template>
+      <template #expand="{ row }">
+        <div
+          v-if="row.bomItems && row.bomItems.length > 0"
+          class="bg-gray-50 px-8 py-3"
+        >
+          <div class="text-xs text-gray-500 mb-2 font-medium">鎶曟枡鏄庣粏</div>
+          <div class="flex flex-wrap gap-2">
+            <Tag
+              v-for="(bom, idx) in row.bomItems"
+              :key="idx"
+              color="blue"
+            >
+              {{ bom.itemName || bom.itemCode }}
+              <span class="text-gray-400 ml-1">脳{{ bom.quantity }}</span>
+            </Tag>
+          </div>
+        </div>
+      </template>
     </Grid>
   </div>
 </template>
\ No newline at end of file

--
Gitblit v1.9.3