From 8c885c21a30c4a39ced32e14048ce65a6a6d57db Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 23 一月 2026 15:06:06 +0800
Subject: [PATCH] fix: 最外层的规则不能被修改

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

diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index cdb32ae..e226a75 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -2,10 +2,6 @@
   <div class="app-container">
     <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">缂栬緫
@@ -47,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"
@@ -127,7 +123,7 @@
                                fixed="right"
                                width="200">
                 <template #default="{ row, $index }">
-                  <el-button v-if="dataValue.isEdit"
+                  <el-button v-if="dataValue.isEdit && !dataValue.dataList.some(item => (item as any).tempId === row.tempId)"
                              type="danger"
                              text
                              @click="removeItem(row.tempId)">鍒犻櫎
@@ -267,13 +263,21 @@
     }
     const productData = row[0];
 
-    // 鏍¢獙锛氫笉鑳藉湪鏈�澶栧眰閫夋嫨璺熷綋鍓嶄骇鍝佷竴鏍风殑浜у搧
-    const isTopLevel = dataValue.dataList.some(item => item.tempId === dataValue.currentRowName);
+    //  鏈�澶栧眰缁勪欢涓紝涓庡綋鍓嶄骇鍝佺浉鍚岀殑浜у搧鍙兘鏈変竴涓�
+    const isTopLevel = dataValue.dataList.some(item => (item as any).tempId === dataValue.currentRowName);
     if (isTopLevel) {
       if (productData.productName === tableData[0].productName &&
         productData.model === tableData[0].model) {
-        ElMessage.warning("涓嶈兘鍦ㄦ渶澶栧眰閫夋嫨璺熷綋鍓嶄骇鍝佷竴鏍风殑浜у搧");
-        return;
+        //  鏌ユ壘鏄惁宸茬粡鏈夊叾浠栭《灞傝宸茬粡鏄繖涓骇鍝�
+        const hasOther = dataValue.dataList.some(item =>
+          (item as any).tempId !== dataValue.currentRowName &&
+          (item as any).productName === tableData[0].productName &&
+          (item as any).model === tableData[0].model
+        );
+        if (hasOther) {
+          ElMessage.warning("鏈�澶栧眰鍜屽綋鍓嶄骇鍝佷竴鏍风殑涓�绾у彧鑳芥湁涓�涓�");
+          return;
+        }
       }
     }
     // dataValue.dataList[dataValue.currentRowIndex].productName =
@@ -386,22 +390,7 @@
     }
   };
 
-  const addItem = () => {
-    dataValue.dataList.push({
-      productName: "",
-      productId: "",
-      model: undefined,
-      productModelId: undefined,
-      processId: "",
-      processName: "",
-      unitQuantity: 0,
-      demandedQuantity: 0,
-      unit: "",
-      children: [],
-      tempId: new Date().getTime(),
-    });
-  };
-  const removeItem = tempId => {
+  const removeItem = (tempId:string) => {
     // 鍏堝皾璇曚粠椤跺眰鍒犻櫎
     const topIndex = dataValue.dataList.findIndex(item => item.tempId === tempId);
     if (topIndex !== -1) {

--
Gitblit v1.9.3