From 5e94a2858a40bc32f3b0369172e16ce17597714a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 16 一月 2026 16:28:29 +0800
Subject: [PATCH] fix: 同步军泰伟业生产模块变更

---
 src/views/productionManagement/productStructure/Detail/index.vue |  106 ++++++++++++++++++++++++++++-------------------------
 1 files changed, 56 insertions(+), 50 deletions(-)

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index a131830..75f936e 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -1,30 +1,32 @@
 <template>
   <div class="app-container">
-    <el-button v-if="dataValue.isEdit"
-               type="primary"
-               @click="addItem"
-               style="margin-bottom: 10px">娣诲姞
-    </el-button>
-    <el-button v-if="!dataValue.isEdit"
-               type="primary"
-               @click="dataValue.isEdit = true"
-               style="margin-bottom: 10px">缂栬緫
-    </el-button>
-    <el-button v-if="dataValue.isEdit"
-               type="primary"
-               @click="cancelEdit"
-               style="margin-bottom: 10px">鍙栨秷
-    </el-button>
-    <el-button type="primary"
-               :loading="dataValue.loading"
-               @click="submit"
-               :disabled="!dataValue.isEdit"
-               style="margin-bottom: 10px">纭
-    </el-button>
+    <PageHeader content="浜у搧缁撴瀯璇︽儏">
+      <template #right-button>
+        <el-button v-if="dataValue.isEdit && !isOrderPage"
+                   type="primary"
+                   @click="addItem">娣诲姞
+        </el-button>
+        <el-button v-if="!dataValue.isEdit && !isOrderPage"
+                   type="primary"
+                   @click="dataValue.isEdit = true">缂栬緫
+        </el-button>
+        <el-button v-if="dataValue.isEdit && !isOrderPage"
+                   type="primary"
+                   @click="cancelEdit">鍙栨秷
+        </el-button>
+        <el-button v-if="!isOrderPage"
+                   type="primary"
+                   :loading="dataValue.loading"
+                   @click="submit"
+                   :disabled="!dataValue.isEdit">纭
+        </el-button>
+      </template>
+    </PageHeader>
     <el-table
         :data="tableData"
         border
         :preserve-expanded-content="false"
+        :default-expand-all="true"
         style="width: 100%"
     >
       <el-table-column type="expand">
@@ -120,25 +122,10 @@
                   </el-form-item>
                 </template>
               </el-table-column>
-              <el-table-column prop="diskQuantity"
-                               label="鐩樻暟锛堢洏锛�">
-                <template #default="{ row, $index }">
-                  <el-form-item :prop="`dataList.${$index}.diskQuantity`"
-                                :rules="[{ required: true, message: '璇疯緭鍏ョ洏鏁�', trigger: ['blur','change'] }]"
-                                style="margin: 0">
-                    <el-input-number v-model="row.diskQuantity"
-                                     :min="0"
-                                     :precision="0"
-                                     :step="1"
-                                     controls-position="right"
-                                     style="width: 100%"
-                                     :disabled="!dataValue.isEdit" />
-                  </el-form-item>
-                </template>
-              </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>
@@ -148,10 +135,9 @@
           </el-form>
         </template>
       </el-table-column>
-      <el-table-column label="浜у搧缂栫爜" prop="productCode" />
+      <el-table-column label="BOM缂栧彿" prop="bomNo" />
       <el-table-column label="浜у搧鍚嶇О" prop="productName" />
       <el-table-column label="瑙勬牸鍨嬪彿" prop="model" />
-      <el-table-column label="鍗曚綅" prop="unit" />
     </el-table>
 
     <product-select-dialog v-if="dataValue.showProductDialog"
@@ -170,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";
@@ -195,6 +182,13 @@
   }
 });
 
+// 浠庤矾鐢卞弬鏁拌幏鍙栦骇鍝佷俊鎭�
+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: [],
@@ -210,8 +204,7 @@
   {
     productName: "",
     model: "",
-    unit: "",
-    productCode: "",
+    bomNo: "",
   }
 ])
 
@@ -221,12 +214,15 @@
 };
 
 const fetchData = async () => {
-  const { data } = await queryList(routeId.value);
-  tableData[0].productName = data.productName;
-  tableData[0].model = data.model;
-  tableData[0].unit = data.unit;
-  tableData[0].productCode = data.productCode;
-  dataValue.dataList = data.productStructureList;
+  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 () => {
@@ -242,6 +238,7 @@
       row[0].productName;
   dataValue.dataList[dataValue.currentRowIndex].model = row[0].model;
   dataValue.dataList[dataValue.currentRowIndex].productModelId = row[0].id;
+  dataValue.dataList[dataValue.currentRowIndex].unit = row[0].unit || "";
   dataValue.showProductDialog = false;
 };
 
@@ -251,7 +248,7 @@
         dataValue.loading = true;
         if (valid) {
           add({
-            parentId: routeId.value,
+            bomId: routeId.value,
             productStructureList: dataValue.dataList || [],
           }).then(res => {
             router.push({
@@ -277,7 +274,6 @@
     unitQuantity: 0,
     demandedQuantity: 0,
     unit: "",
-    diskQuantity: 0,
   });
 };
 
@@ -287,6 +283,16 @@
 };
 
 onMounted(() => {
+  // 浠庤矾鐢卞弬鏁板洖鏄炬暟鎹�
+  tableData[0].productName = routeProductName.value;
+  tableData[0].model = routeProductModelName.value;
+  tableData[0].bomNo = routeBomNo.value;
+  
+  // 璁㈠崟鎯呭喌涓嬬鐢ㄧ紪杈�
+  if (isOrderPage.value) {
+    dataValue.isEdit = false;
+  }
+  
   fetchData();
   fetchProcessOptions();
 });

--
Gitblit v1.9.3