From d6df4fd6344569bffcd575f48f04da4a54f51036 Mon Sep 17 00:00:00 2001
From: wwl <xchao828@163.com>
Date: 星期二, 21 一月 2025 18:02:58 +0800
Subject: [PATCH] 1

---
 src/views/system/package/index.vue |   97 +++++++++++++++++++++++++++---------------------
 1 files changed, 55 insertions(+), 42 deletions(-)

diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue
index 06436ff..e8b6b9e 100644
--- a/src/views/system/package/index.vue
+++ b/src/views/system/package/index.vue
@@ -823,6 +823,7 @@
       // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
       Seachopen: false,
+      checkedNodes: [],
       pacId: "",
       // 鎬绘潯鏁�
       total: 0,
@@ -1152,14 +1153,19 @@
 
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete1(row) {
-      this.DataList = this.DataList.filter((item) => item.proId !== row.proId);
-      const tree = this.$refs.tree;
-      const node = tree.getNode(row.proId); // 鏍规嵁鑺傜偣鐨勫敮涓�鏍囪瘑鑾峰彇鑺傜偣瀵硅薄
-      if (node) {
-        node.setChecked(false); // 鍙栨秷閫変腑鐘舵��
+      this.DataList = this.DataList.filter(item => item.proId !== row.proId);
+      // 浠� checkedNodes 涓Щ闄�
+      const index = this.checkedNodes.indexOf(row.proId);
+      if (index > -1) {
+        this.checkedNodes.splice(index, 1);
       }
+      const tree = this.$refs.tree;
+      const node = tree.getNode(row.proId); 
+      if (node) {
+        node.setChecked(false); 
+      }
+      this.updateTotalPrice();
     },
-
     getSelectValue(val) {
       this.form.tjProjectList.forEach((formitem) => {
         if (formitem.proName == val) {
@@ -1274,17 +1280,12 @@
       search(this.queryParams1).then((response) => {
         this.Treedata = response.data.list; // 鏇存柊鏍戝舰鏁版嵁
         this.total1 = response.data.total; // 鏇存柊鎬绘潯鏁�
+        this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0);
 
-        const selectedIds = this.DataList.map((item) => item.proId);
-        // 鏇存柊 checkedkey 浣垮緱閫変腑鐨勯」鐩繚鎸侀�変腑鐘舵��
-        this.checkedkey = selectedIds.filter((id) =>
-          this.Treedata.some((item) => item.proId === id)
-        );
-
-        this.pics = this.DataList.reduce(
-          (total, item) => total + item.priceOrd,
-          0
-        );
+        // 纭繚鍦ㄦ暟鎹姞杞藉悗淇濇寔閫変腑鐘舵��
+        this.$nextTick(() => {
+          this.$refs.tree.setCheckedKeys(this.checkedNodes);
+        });
       });
       this.loading = false;
     },
@@ -1351,8 +1352,12 @@
     //   });
     // },
     handleFilterInput() {
-      this.queryParams.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
+      this.queryParams1.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
       this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
+      // 鍦ㄨ繃婊ゅ悗锛岄噸鏂拌缃�変腑鐘舵��
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys(this.checkedNodes);
+      });
     },
 
     // 鍒嗛〉浜嬩欢
@@ -1362,36 +1367,44 @@
       this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
     },
 
-    handleCurrentChecked(data, checked, checkedNodes) {
-      this.dataObj = data;
-      this.checkedObj = checked;
-
+    handleCurrentChecked(data, checked, indeterminate) {
       if (checked) {
-        // 妫�鏌ユ槸鍚﹀凡瀛樺湪浜� DataL
-        this.DataList.push({
-          proId: data.proId,
-          proName: data.proName,
-          priceOrd: data.proPrice, // 鍘熶环锛岀‘淇濊祴鍊兼纭�
-          limits: 10,
-          priceNow: data.proPrice,
-        });
+        // 濡傛灉宸查�夊垪琛ㄤ腑涓嶅瓨鍦ㄦ椤圭洰锛屽垯娣诲姞
+        if (!this.DataList.some(item => item.proId === data.proId)) {
+          this.DataList.push({
+            proId: data.proId,
+            proName: data.proName,
+            priceOrd: data.proPrice,
+            limits: 10,
+            priceNow: data.proPrice
+          });
+        }
+        // 娣诲姞鍒� checkedNodes 鏁扮粍
+        if (!this.checkedNodes.includes(data.proId)) {
+          this.checkedNodes.push(data.proId);
+        }
       } else {
-        let index = this.DataList.findIndex(
-          (item) => item.proId === data.proId
-        );
-        if (index !== -1) {
-          this.DataList.splice(index, 1);
+        // 鍙栨秷閫変腑鏃讹紝浠嶥ataList涓Щ闄�
+        this.DataList = this.DataList.filter(item => item.proId !== data.proId);
+        // 浠� checkedNodes 涓Щ闄�
+        const index = this.checkedNodes.indexOf(data.proId);
+        if (index > -1) {
+          this.checkedNodes.splice(index, 1);
         }
       }
-      this.pics = 0;
-      this.TotalPrice1 = 0;
-      this.DataList.forEach((item) => {
-        this.pics += item.priceOrd;
-        this.form.counterPrice += item.priceOrd;
-        this.TotalPrice1 += item.priceOrd; // 鍙互鏍规嵁闇�瑕佹敼鎴愪紭鎯犱环 `priceNow`
-      });
-    },
 
+      // 鏇存柊浼樻儬浠峰拰鎬讳环
+      this.updateTotalPrice();
+    }, 
+    updateTotalPrice() {
+      // 璁$畻鎵�鏈夐」鐩殑鎬讳紭鎯犱环
+      this.form.xianprice = this.DataList.reduce((sum, item) => {
+        return sum.plus(new Big(item.priceNow || "0"));
+      }, new Big(0)).toNumber();
+
+      // 璁$畻鍘熶环鎬诲拰
+      this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0);
+    },
     spliceData() {
       for (var i = 0; i < this.DataList.length; i++) {
         for (var j = i + 1; j < this.DataList.length; j++) {

--
Gitblit v1.8.0