From 3de8b71ee1c6be3e41b77d6633c3f1a1b66c40f2 Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期五, 16 一月 2026 10:59:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津军泰伟业' into dev_天津军泰伟业

---
 src/views/productionManagement/productStructure/Detail/index.vue |   33 ++++++++++++----
 src/views/productionManagement/productionOrder/index.vue         |   22 +++++++++++
 src/api/productionManagement/productionOrder.js                  |    9 ++++
 3 files changed, 56 insertions(+), 8 deletions(-)

diff --git a/src/api/productionManagement/productionOrder.js b/src/api/productionManagement/productionOrder.js
index 241baa5..9f110a7 100644
--- a/src/api/productionManagement/productionOrder.js
+++ b/src/api/productionManagement/productionOrder.js
@@ -36,6 +36,15 @@
   });
 }
 
+// 鐢熶骇璁㈠崟-鏌ヨ浜у搧缁撴瀯鍒楄〃
+export function listProcessBom(query) {
+  return request({
+    url: "/productOrder/listProcessBom",
+    method: "get",
+    params: query,
+  });
+}
+
 // 鑾峰彇鐐掓満姝e湪宸ヤ綔閲忔暟鎹�
 export function schedulingList(query) {
   return request({
diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index b702eb7..75f936e 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -2,19 +2,20 @@
   <div class="app-container">
     <PageHeader content="浜у搧缁撴瀯璇︽儏">
       <template #right-button>
-        <el-button v-if="dataValue.isEdit"
+        <el-button v-if="dataValue.isEdit && !isOrderPage"
                    type="primary"
                    @click="addItem">娣诲姞
         </el-button>
-        <el-button v-if="!dataValue.isEdit"
+        <el-button v-if="!dataValue.isEdit && !isOrderPage"
                    type="primary"
                    @click="dataValue.isEdit = true">缂栬緫
         </el-button>
-        <el-button v-if="dataValue.isEdit"
+        <el-button v-if="dataValue.isEdit && !isOrderPage"
                    type="primary"
                    @click="cancelEdit">鍙栨秷
         </el-button>
-        <el-button type="primary"
+        <el-button v-if="!isOrderPage"
+                   type="primary"
                    :loading="dataValue.loading"
                    @click="submit"
                    :disabled="!dataValue.isEdit">纭
@@ -123,7 +124,8 @@
               </el-table-column>
               <el-table-column label="鎿嶄綔" fixed="right" width="100">
                 <template #default="{ row, $index }">
-                  <el-button type="danger"
+                  <el-button v-if="dataValue.isEdit"
+                             type="danger"
                              text
                              @click="dataValue.dataList.splice($index, 1)">鍒犻櫎
                   </el-button>
@@ -154,6 +156,7 @@
   ref,
 } from "vue";
 import { queryList, add } from "@/api/productionManagement/productStructure.js";
+import { listProcessBom } from "@/api/productionManagement/productionOrder.js";
 import { list } from "@/api/productionManagement/productionProcess";
 import { ElMessage } from "element-plus";
 import {useRoute, useRouter} from "vue-router";
@@ -183,6 +186,9 @@
 const routeBomNo = computed(() => route.query.bomNo || '');
 const routeProductName = computed(() => route.query.productName || '');
 const routeProductModelName = computed(() => route.query.productModelName || '');
+const routeOrderId = computed(() => route.query.orderId);
+const pageType = computed(() => route.query.type);
+const isOrderPage = computed(() => pageType.value === 'order' && routeOrderId.value);
 
 const dataValue = reactive({
   dataList: [],
@@ -208,9 +214,15 @@
 };
 
 const fetchData = async () => {
-  const { data } = await queryList(routeId.value);
-  // 浜у搧淇℃伅浠庤矾鐢卞弬鏁拌幏鍙栵紝浼樺厛浣跨敤璺敱鍙傛暟
-  dataValue.dataList = data || [];
+  if (isOrderPage.value) {
+    // 璁㈠崟鎯呭喌锛氫娇鐢ㄨ鍗曠殑浜у搧缁撴瀯鎺ュ彛
+    const { data } = await listProcessBom({ orderId: routeOrderId.value });
+    dataValue.dataList = data || [];
+  } else {
+    // 闈炶鍗曟儏鍐碉細浣跨敤鍘熸潵鐨勬帴鍙�
+    const { data } = await queryList(routeId.value);
+    dataValue.dataList = data || [];
+  }
 };
 
 const fetchProcessOptions = async () => {
@@ -276,6 +288,11 @@
   tableData[0].model = routeProductModelName.value;
   tableData[0].bomNo = routeBomNo.value;
   
+  // 璁㈠崟鎯呭喌涓嬬鐢ㄧ紪杈�
+  if (isOrderPage.value) {
+    dataValue.isEdit = false;
+  }
+  
   fetchData();
   fetchProcessOptions();
 });
diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index 9a13a40..9250eb8 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -97,6 +97,7 @@
     productOrderListPage,
     listProcessRoute,
     bindingRoute,
+    listProcessBom,
   } from "@/api/productionManagement/productionOrder.js";
   import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
   const { proxy } = getCurrentInstance();
@@ -181,6 +182,13 @@
           showHide: row => !row.processRouteCode,
           clickFun: row => {
             openBindRouteDialog(row);
+          },
+        },
+        {
+          name: "浜у搧缁撴瀯",
+          type: "text",
+          clickFun: row => {
+            showProductStructure(row);
           },
         },
       ],
@@ -341,6 +349,20 @@
     }
   };
 
+  const showProductStructure = row => {
+    router.push({
+      path: "/productionManagement/productStructureDetail",
+      query: {
+        id: row.id,
+        bomNo: row.bomNo || "",
+        productName: row.productCategory || "",
+        productModelName: row.specificationModel || "",
+        orderId: row.id,
+        type: "order",
+      },
+    });
+  };
+
   // 瀵煎嚭
   const handleOut = () => {
     ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {

--
Gitblit v1.9.3