From 9d787c0f551bbf0dd096ebcbb79b8b69caaaddd7 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 16 一月 2026 11:44:29 +0800
Subject: [PATCH] 原材料,过程,出厂检验新增编辑规格改成下拉框,值根据产品获取

---
 src/views/productionManagement/productStructure/Detail/index.vue |   72 +++++++++++++++++++----------------
 1 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index e95f906..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">纭
@@ -25,6 +26,7 @@
         :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