From f372a30a711a1f7d7bc764d2060d5719a47c7c4c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 23 一月 2026 15:37:07 +0800
Subject: [PATCH] fix: 最外层应当不能被编辑修改

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

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index 4dfedab..c56b247 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -43,7 +43,7 @@
                     <el-select v-model="row.model"
                                placeholder="璇烽�夋嫨瑙勬牸"
                                clearable
-                               :disabled="!dataValue.isEdit"
+                               :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)"
                                style="width: 100%"
                                @visible-change="(v) => { if (v) openDialog(row.tempId) }">
                       <el-option v-if="row.model"
@@ -57,14 +57,14 @@
                                label="娑堣�楀伐搴�">
                 <template #default="{ row, $index }">
                   <el-form-item v-if="dataValue.isEdit"
-                                :rules="[{ required: true, message: '璇烽�夋嫨娑堣�楀伐搴�', trigger: 'change' }]"
+                                :rules="dataValue.dataList.some(item => (item as any).tempId === row.tempId) ? [] : [{ required: true, message: '璇烽�夋嫨娑堣�楀伐搴�', trigger: 'change' }]"
                                 style="margin: 0">
                     <el-select v-model="row.processId"
                                placeholder="璇烽�夋嫨"
                                filterable
                                clearable
                                style="width: 100%"
-                               :disabled="!dataValue.isEdit">
+                               :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)">
                       <el-option v-for="item in dataValue.processOptions"
                                  :key="item.id"
                                  :label="item.name"
@@ -85,7 +85,7 @@
                                      :step="1"
                                      controls-position="right"
                                      style="width: 100%"
-                                     :disabled="!dataValue.isEdit" />
+                                     :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)" />
                   </el-form-item>
                 </template>
               </el-table-column>
@@ -102,7 +102,7 @@
                                      :step="1"
                                      controls-position="right"
                                      style="width: 100%"
-                                     :disabled="!dataValue.isEdit" />
+                                     :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)" />
                   </el-form-item>
                 </template>
               </el-table-column>
@@ -115,7 +115,7 @@
                     <el-input v-model="row.unit"
                               placeholder="璇疯緭鍏ュ崟浣�"
                               clearable
-                              :disabled="!dataValue.isEdit" />
+                               :disabled="!dataValue.isEdit || dataValue.dataList.some(item => (item as any).tempId === row.tempId)" />
                   </el-form-item>
                 </template>
               </el-table-column>
@@ -220,7 +220,7 @@
     },
   ]);
 
-  const openDialog = tempId => {
+  const openDialog = (tempId: any) => {
     console.log(tempId, "tempId");
     dataValue.currentRowName = tempId;
     dataValue.showProductDialog = true;
@@ -236,8 +236,8 @@
       const { data } = await queryList(routeId.value);
       dataValue.dataList = (data as any) || [];
       // 涓烘墍鏈夐」鍙婂叾瀛愰」璁剧疆name灞炴��
-      const setNameRecursively = items => {
-        items.forEach(item => {
+      const setNameRecursively = (items: any[]) => {
+        items.forEach((item: any) => {
           item.tempId = item.id;
           item.processName =
             dataValue.processOptions.find(option => option.id === item.processId)
@@ -257,7 +257,7 @@
     dataValue.processOptions = data as any;
   };
 
-  const handleProduct = row => {
+  const handleProduct = (row: any) => {
     if (row?.length > 1) {
       ElMessage.error("鍙兘閫夋嫨涓�涓骇鍝�");
     }
@@ -297,7 +297,7 @@
     });
     dataValue.showProductDialog = false;
   };
-  const childItem = (item, tempId, productData) => {
+  const childItem = (item: any, tempId: any, productData: any) => {
     if (item.tempId === tempId) {
       item.productName = productData.productName;
       item.model = productData.model;
@@ -320,14 +320,14 @@
     let isValid = true;
 
     // 鏍¢獙鍑芥暟
-    const validateItem = item => {
+    const validateItem = (item: any, isTopLevel = false) => {
       // 鏍¢獙褰撳墠椤圭殑蹇呭~瀛楁
       if (!item.model) {
         ElMessage.error("璇烽�夋嫨瑙勬牸");
         isValid = false;
         return;
       }
-      if (!item.processId) {
+      if (!isTopLevel && !item.processId) {
         ElMessage.error("璇烽�夋嫨娑堣�楀伐搴�");
         isValid = false;
         return;
@@ -351,14 +351,14 @@
       // 閫掑綊鏍¢獙瀛愰」
       if (item.children && item.children.length > 0) {
         item.children.forEach(child => {
-          validateItem(child);
+          validateItem(child, false);
         });
       }
     };
 
     // 閬嶅巻鎵�鏈夐《灞傞」
     dataValue.dataList.forEach(item => {
-      validateItem(item);
+      validateItem(item, true);
     });
 
     return isValid;
@@ -399,7 +399,7 @@
     }
 
     // 閫掑綊鍒犻櫎瀛愰」
-    const delchildItem = (items, tempId) => {
+    const delchildItem = (items: any[], tempId: any) => {
       for (let i = 0; i < items.length; i++) {
         const item = items[i];
         if (item.tempId === tempId) {
@@ -448,7 +448,7 @@
       addchildItem(item, tempId);
     });
   };
-  const addchildItem = (item, tempId) => {
+  const addchildItem = (item: any, tempId: any) => {
     if (item.tempId === tempId) {
       console.log(item, "item");
       if (!item.children) {

--
Gitblit v1.9.3