From cb1f69717eed3b6a61b6c61a8934bac752782b2d Mon Sep 17 00:00:00 2001
From: wwl <xchao828@163.com>
Date: 星期三, 05 三月 2025 17:00:38 +0800
Subject: [PATCH] 1

---
 src/views/system/package/index.vue |  183 ++++++++++++++++++++++++++-------------------
 1 files changed, 107 insertions(+), 76 deletions(-)

diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue
index 06436ff..839dfd1 100644
--- a/src/views/system/package/index.vue
+++ b/src/views/system/package/index.vue
@@ -24,19 +24,19 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="濂楅鍒嗙被" prop="categoryId">
+      <el-form-item label="浣撴绫诲埆" prop="tjCategory">
         <el-select
-          v-model="queryParams.categoryId"
+          v-model="queryParams.tjCategory"
           placeholder="璇烽�夋嫨鐘舵��"
           style="width: 200px"
           filterable
           clearable
         >
           <el-option
-            v-for="dict in categoryList"
+            v-for="dict in dict.type.dict_tjtype"
             :key="dict.id"
-            :label="dict.name"
-            :value="dict.id"
+            :label="dict.label"
+            :value="dict.value"
           ></el-option>
         </el-select>
       </el-form-item>
@@ -131,12 +131,19 @@
         />
         <!-- <el-table-column label="缂栧彿" align="center" prop="pacId" /> -->
         <el-table-column
-          label="濂楅鍒嗙被"
+          label="浣撴绫诲埆"
           width="100px"
           align="center"
           prop="categoryNames"
           fixed
-        ></el-table-column>
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.dict_tjtype"
+              :value="scope.row.tjCategory"
+            />
+          </template>
+        </el-table-column>
         <el-table-column
           label="濂楅鍚嶇О"
           align="center"
@@ -240,12 +247,12 @@
           align="center"
           prop="retailPrice"
         ></el-table-column>
-        <el-table-column
+        <!-- <el-table-column
           label="鍘熶环"
           width="90px"
           align="center"
           prop="counterPrice"
-        ></el-table-column>
+        ></el-table-column> -->
         <el-table-column
           label="宸插敭鏁伴噺"
           width="90px"
@@ -363,12 +370,7 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="濂楅绫荤洰" prop="categoryId">
-          <!-- <el-input
-            v-model="form.createId"
-            placeholder="璇疯緭鍏ュ晢鍝佺被鐩�"
-            style="width: 200px"
-          /> -->
+        <!--  <el-form-item label="濂楅绫荤洰" prop="categoryId">
           <el-select
             v-model="form.categoryId"
             placeholder="璇烽�夋嫨濂楅绫荤洰"
@@ -384,26 +386,24 @@
               :value="item.id"
             ></el-option>
           </el-select>
-        </el-form-item>
-
-        <el-form-item label="鍏抽敭瀛�" prop="keywords">
+        </el-form-item> -->
+        <el-form-item label="浣撴绫诲埆" prop="tjCategory">
           <el-select
-            multiple
-            v-model="form.keywords"
-            placeholder="璇烽�夋嫨鍏抽敭瀛�"
+            v-model="form.tjCategory"
+            placeholder="璇烽�夋嫨浣撴绫诲埆"
             style="width: 150px"
-            @change="sel"
             filterable
             clearable
           >
             <el-option
-              v-for="item in keywordList"
-              :key="item.id"
-              :label="item.keyword"
-              :value="item.id"
+              v-for="dict in dict.type.dict_tjtype"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
             ></el-option>
           </el-select>
         </el-form-item>
+
         <el-form-item label="鏄惁涓婃灦" prop="isOnSale">
           <!-- <el-radio-group v-model="form.pacStatus">
               <el-radio :label="0">鍚敤</el-radio>
@@ -412,7 +412,7 @@
           <el-select
             v-model="form.isOnSale"
             placeholder="璇烽�夋嫨鏄惁涓婃灦"
-            style="width: 150px"
+            style="width: 140px"
             filterable
             clearable
           >
@@ -467,19 +467,21 @@
             style="width: 140px"
           />
         </el-form-item>
-        <el-form-item label="浣撴绫诲埆" prop="tjCategory">
+        <el-form-item label="鍏抽敭瀛�" prop="keywords">
           <el-select
-            v-model="form.tjCategory"
-            placeholder="璇烽�夋嫨浣撴绫诲埆"
-            style="width: 150px"
+            multiple
+            v-model="form.keywords"
+            placeholder="璇烽�夋嫨鍏抽敭瀛�"
+            style="width: 160px"
+            @change="sel"
             filterable
             clearable
           >
             <el-option
-              v-for="dict in dict.type.dict_tjtype"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
+              v-for="item in keywordList"
+              :key="item.id"
+              :label="item.keyword"
+              :value="item.id"
             ></el-option>
           </el-select>
         </el-form-item>
@@ -823,6 +825,7 @@
       // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
       Seachopen: false,
+      checkedNodes: [],
       pacId: "",
       // 鎬绘潯鏁�
       total: 0,
@@ -861,9 +864,9 @@
         // categoryId: [
         //   { required: true, validator: checkPhoneNum, trigger: "change" },
         // ],
-        keywords: [
+        /*  keywords: [
           { required: true, validator: checkPhoneNum, trigger: "change" },
-        ],
+        ], */
         isOnSale: [
           { required: true, validator: checkPhoneNum, trigger: "change" },
         ],
@@ -872,6 +875,9 @@
           { required: true, validator: checkPhoneNum, trigger: "blur" },
         ],
         counterPrice: [
+          { required: true, validator: checkPhoneNum, trigger: "blur" },
+        ],
+        tjCategory: [
           { required: true, validator: checkPhoneNum, trigger: "blur" },
         ],
       },
@@ -945,6 +951,7 @@
       this.loading = true;
       listCategory(this.queryParams).then((response) => {
         this.categoryList = response.rows;
+        console.log(this.categoryList, 9988);
       });
     },
     shangpin(vals) {},
@@ -1067,6 +1074,8 @@
       // });
       getPacInFo(this.forms.pacId).then((response) => {
         this.form = response.data;
+        console.log(this.form, 2233);
+
         this.form.keywords = this.form.keywords.slice(0, -1);
         this.form.keywords = this.form.keywords.split(",");
         // this.DataList = [];
@@ -1092,6 +1101,8 @@
       this.open = true;
       getPacInFo(row.pacId).then((response) => {
         this.form = response.data;
+        console.log(this.form, 445);
+
         this.form.keywords = this.form.keywords.slice(0, -1);
         this.form.keywords = this.form.keywords.split(",");
         this.DataList = [];
@@ -1153,13 +1164,18 @@
     /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     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); // 鍙栨秷閫変腑鐘舵��
+      // 浠� 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 +1290,15 @@
       search(this.queryParams1).then((response) => {
         this.Treedata = response.data.list; // 鏇存柊鏍戝舰鏁版嵁
         this.total1 = response.data.total; // 鏇存柊鎬绘潯鏁�
-
-        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 +1365,12 @@
     //   });
     // },
     handleFilterInput() {
-      this.queryParams.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
+      this.queryParams1.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
       this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
+      // 鍦ㄨ繃婊ゅ悗锛岄噸鏂拌缃�変腑鐘舵��
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys(this.checkedNodes);
+      });
     },
 
     // 鍒嗛〉浜嬩欢
@@ -1362,36 +1380,49 @@
       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
+        // 鍙栨秷閫変腑鏃讹紝浠嶥ataList涓Щ闄�
+        this.DataList = this.DataList.filter(
+          (item) => item.proId !== data.proId
         );
-        if (index !== -1) {
-          this.DataList.splice(index, 1);
+        // 浠� 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++) {
@@ -1463,7 +1494,7 @@
       if (this.keys) {
         this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪��
       } else {
-        this.form.keywords = this.form.keywords.toString(); // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓�
+        // this.form.keywords = this.form.keywords; // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓�
       }
 
       let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍
@@ -1486,7 +1517,7 @@
         price: this.pics,
         pacId: this.form.pacId || null,
         isOnSale: this.form.isOnSale,
-        keywords: this.form.keywords,
+        // keywords: this.form.keywords,
         sort: this.form.sort,
         retailPrice: this.form.retailPrice,
         tjCategory: this.form.tjCategory,

--
Gitblit v1.8.0