From d1fc2acdbe31d3fd460df7bf73f791c7d1007597 Mon Sep 17 00:00:00 2001
From: qx <1084500556@qq.com>
Date: 星期一, 17 三月 2025 17:31:45 +0800
Subject: [PATCH] Merge branch 'master' of http://101.42.27.146:5001/r/ltkj_peisweb

---
 src/views/system/package/index.vue | 1099 +++++++++++++++++----------------------------------------
 1 files changed, 329 insertions(+), 770 deletions(-)

diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue
index b7bfc87..2a1edc4 100644
--- a/src/views/system/package/index.vue
+++ b/src/views/system/package/index.vue
@@ -57,7 +57,7 @@
         <el-table-column label="濂楅鍚嶇О" align="center" prop="pacName" width="150px" fixed />
         <el-table-column label="鍘熶环" width="80px" align="center" prop="price" fixed></el-table-column>
         <el-table-column label="鎶樻墸" width="80px" align="center" prop="limits" fixed></el-table-column>
-        <el-table-column label="浼樻儬浠�" width="80px" align="center" prop="newPrice" fixed>
+        <el-table-column label="鐜颁环" width="80px" align="center" prop="newPrice" fixed>
         </el-table-column>
         <el-table-column label="鍗曢」鍒楄〃" align="center" prop="allProName" width="1200px">
         </el-table-column>
@@ -200,13 +200,13 @@
           <el-input v-model="pics" placeholder="璇疯緭鍏ュ師浠�" style="width: 150px" />
         </el-form-item>
         <el-form-item label="鎶樻墸">
-          <el-input-number style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="1"
-            @change="numberChange"></el-input-number>
+          <el-input-number style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="0.1"
+          @change="debounceNumberChange" :debounce="3000"></el-input-number>
         </el-form-item>
 
         <el-form-item label="鐜颁环" prop="xianprice">
           <el-input v-model="form.xianprice" placeholder="鐜颁环" clearable style="width: 140px" @input="changeXianjia"
-            @blur="numberChangeXianPrice(youhui, youhui)" />
+            @blur="numberChangeXianPrice(youhui, youhui)" type="number" :debounce="3000"/>
         </el-form-item>
         <el-form-item label="鍏抽敭瀛�" prop="keywords">
           <el-select multiple v-model="form.keywords" placeholder="璇烽�夋嫨鍏抽敭瀛�" style="width: 160px" @change="sel" filterable
@@ -335,7 +335,7 @@
                   </el-input>
                 </template>
               </el-table-column>
-              <el-table-column prop="priceNow" label="浼樻儬浠�" width="80px" align="center">
+              <el-table-column prop="priceNow" label="鐜颁环" width="80px" align="center">
               </el-table-column>
               <el-table-column label="鎿嶄綔" align="center" width="80px">
                 <template slot-scope="scope">
@@ -399,12 +399,7 @@
 import Packages from "@/components/Packages";
 import { listCategory } from "@/api/mall/category";
 import { listKeyword } from "@/api/mall/keyword";
-// import { getProParentIdDxList, getProSonDxList } from "@/api/system/tijian";
-import {
-  getProParentIdDxList,
-  search,
-  getProSonDxList,
-} from "@/api/system/package";
+import { getProParentIdDxList, search, getProSonDxList } from "@/api/system/package";
 import {
   getPacList,
   getPacInFo,
@@ -421,22 +416,13 @@
   saveOreditTjPacNew,
 } from "@/api/system/package";
 import { Message } from "element-ui";
-import Big from "big.js";
+import Big from 'big.js';
+
 export default {
   name: "Package",
   dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"],
   components: { Packages },
   data() {
-    let checkPhoneNum = (rule, value, callback) => {
-      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
-      if (value == "" && value == undefined && !value) {
-        return callback("");
-      } else if (value != undefined && value != "") {
-        return callback();
-      } else if (!patter.test(value)) {
-        return callback("");
-      }
-    };
     return {
       pics: 0,
       filterText: "",
@@ -455,49 +441,33 @@
         children: [],
         label: "proName",
       },
-      isCollapsed: true, // 榛樿涓烘姌鍙犵姸鎬�
+      isCollapsed: true,
       categoryList: [],
       keys: "",
       keywordList: [],
       dataListAll: [],
-      // 澶氶�夋
       priceNow: "",
       checkAll: false,
       isIndeterminate: true,
-      // 閬僵灞�
       loading: false,
       radio: 3,
-      // 閫変腑鏁扮粍
       ids: [],
-      // 闈炲崟涓鐢�
       single: true,
-      // 闈炲涓鐢�
       multiple: true,
-      // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
-      // 浣撴濂楅琛ㄦ牸鏁版嵁
       packageList: [],
-      // 濂楅閫変腑鐨勭埗椤�
       allpackageList: [],
-      // 宸查��
       newproName: [],
-      // 鎵�鏈変綋妫�椤圭洰路
       allList: [],
       treeList: [],
-      // 鎵�鏈夊椁愭暟鎹�
-      // allpackage:[],
-      // 寮瑰嚭灞傛爣棰�
       title: "",
       lastXianPrice: 0,
-      // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
       Seachopen: false,
       checkedNodes: [],
       pacId: "",
-      // 鎬绘潯鏁�
       total: 0,
       total1: 0,
-      // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
@@ -509,397 +479,29 @@
         pageSize: 30,
         nr: "",
       },
-      // 琛ㄥ崟鍙傛暟
       form: {
-        xianprice: null, // 浼樻儬浠�
-        counterPrice: null, //鍘熶环
+        xianprice: null,
+        counterPrice: null,
         limits: 10,
       },
       forms: {},
       youhui: 10,
-      // 琛ㄥ崟鏍¢獙
-      rules: {
-        deleted: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        pacName: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        pacStatus: [
-          { required: true, validator: checkPhoneNum, trigger: "change" },
-        ],
-        // categoryId: [
-        //   { required: true, validator: checkPhoneNum, trigger: "change" },
-        // ],
-        /*  keywords: [
-          { required: true, validator: checkPhoneNum, trigger: "change" },
-        ], */
-        isOnSale: [
-          { required: true, validator: checkPhoneNum, trigger: "change" },
-        ],
-        sort: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
-        retailPrice: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        counterPrice: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-        tjCategory: [
-          { required: true, validator: checkPhoneNum, trigger: "blur" },
-        ],
-      },
+      debounceTimer: null,
+      rules: {},
     };
   },
-  // watch: {
-  //   filterText(val) {
-  //     this.$refs.tree.filter(val);
-  //   },
-  // },
-
   created() {
     this.getList();
     this.getKeyword();
     this.getCategory();
   },
   methods: {
-    toggleCollapse() {
-      this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫��
+    debounceNumberChange(currentValue, oldValue) {
+      clearTimeout(this.debounceTimer);
+      this.debounceTimer = setTimeout(() => {
+        this.numberChange(currentValue, oldValue);
+      }, 300);
     },
-    filterNode(value, data) {
-      if (!value) return true;
-      // return data.proName.indexOf(value) !== -1;
-      if (data.proName.indexOf(value) !== -1) {
-        return data.proName.indexOf(value) !== -1;
-      } else {
-        return data.proEngName.indexOf(value) !== -1;
-      }
-    },
-    /** 鏌ヨ浣撴濂楅鍒楄〃 */
-    getList() {
-      this.loading = true;
-      getPacTjProjectList().then((response) => {
-        this.allList = response.data;
-        if (this.allList.proStatus === 0) {
-          this.allList.proStatus = "鍚敤";
-        } else {
-          this.allList.proStatus = "鍋滅敤";
-        }
-        this.loading = false;
-      });
-      getPacList(this.queryParams).then((response) => {
-        response.rows.forEach((item, index) => {
-          item.newID =
-            (this.queryParams.pageNum - 1) * this.queryParams.pageSize +
-            index +
-            1;
-        });
-        this.total = response.total;
-        this.packageList = response.rows;
-        this.loading = false;
-      });
-    },
-
-    /** 鏌ヨ鍏抽敭瀛楀垪琛� */
-    getKeyword() {
-      this.loading = true;
-      listKeyword(this.queryParams).then((response) => {
-        this.keywordList = response.rows;
-      });
-    },
-    sel(val) {
-      let id = val;
-      this.keys = "";
-      id.forEach((item) => {
-        this.keys += item + ",";
-      });
-    },
-    /** 鏌ヨ绫荤洰鍒楄〃 */
-    getCategory() {
-      this.loading = true;
-      listCategory(this.queryParams).then((response) => {
-        this.categoryList = response.rows;
-        console.log(this.categoryList, 9988);
-      });
-    },
-    shangpin(vals) { },
-    // 鍙栨秷鎸夐挳
-    cancel() {
-      this.open = false;
-      this.Seachopen = false;
-      this.reset();
-    },
-    // 琛ㄥ崟閲嶇疆
-    reset() {
-      this.form = {
-        pacId: null,
-        pacName: null,
-        pacRemark: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
-        deleted: null,
-        allSonName: null,
-        allProName: null,
-        priceNow: null,
-        proId: null,
-        // pacStatus: "鍚敤",
-      };
-      this.resetForm("form");
-    },
-    /** 鎼滅储鎸夐挳鎿嶄綔 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-
-    handlePackage() {
-      this.$refs.aaa.open = true;
-      this.$refs.aaa.getList();
-      this.$refs.aaa.title = "濂楅瀛楀吀";
-    },
-    handleChanges(param1) {
-      this.form.pacName = param1[0].pacName;
-      this.form.hisPacId = param1[0].pacId;
-      if (param1[0].price) {
-        this.form.counterPrice = param1[0].price;
-        this.form.retailPrice = param1[0].price;
-      }
-    },
-    /** 閲嶇疆鎸夐挳鎿嶄綔 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 澶氶�夋閫変腑鏁版嵁
-    handleSelectionChange(selection) {
-      if (!selection[0]) {
-        return;
-      }
-      this.forms = selection[0];
-      this.ids = selection.map((item) => item.pacId);
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
-    },
-    /** 鏂板鎸夐挳鎿嶄綔 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "浣撴濂楅淇℃伅缁存姢";
-      this.DataList = [];
-      this.checkedkey = [];
-      this.queryParams1.nr = ""
-      this.queryParams1.page=1
-      this.checkedListkey = [];
-      this.checkedNodes =[];
-      this.getDataList();
-      // getAllList().then((response) => {
-      //   this.allList = response.data;
-      //   if (this.allList.proStatus === 0) {
-      //     this.allList.proStatus = "鍚敤";
-      //   } else {
-      //     this.allList.proStatus = "鍋滅敤";
-      //   }
-      //   this.loading = false;
-      // });
-      // if (!this.form.tjProjectList) {
-      //     this.form.tjProjectList = []
-      //     this.form.tjProjectList.push({
-      //       id: parseInt(length),
-      //       proName: "",
-      //       allSonProName: "",
-      //       proPrice: "",
-      //       priceNow: "",
-      //       proId: "",
-      //       Selection,
-      //     });
-      //   }
-    },
-
-    // 鏄惁鍚敤
-    handleStatusChange(row) {
-      let data = {
-        pacId: row.pacId,
-        pacStatus: row.pacStatus,
-      };
-      let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤";
-      this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵")
-        .then(function () {
-          return updateStatus(data);
-        })
-        .then(() => {
-          this.msgSuccess(text + "鎴愬姛");
-        })
-        .catch(function () {
-          row.pacStatus = row.pacStatus === "0" ? "0" : "1";
-        });
-    },
-
-    handleUp() {
-      this.title = "浣撴濂楅淇℃伅缁存姢";
-      this.open = true;
-      // getPacTjProjectList().then((response) => {
-      //   this.allList = response.data;
-      //   this.loading = false;
-      // });
-      getPacInFo(this.forms.pacId).then((response) => {
-        // this.form = response.data;
-        Object.keys(response.data).forEach((key) => {
-          this.$set(this.form, key, response.data[key]);
-        });
-        this.youhui = data.limits || 10;
-    this.pics = data.price || 0;
-    this.form.xianprice = data.newPrice || 0;
-
-        this.form.keywords = this.form.keywords.slice(0, -1);
-        this.form.keywords = this.form.keywords.split(",");
-        // this.DataList = [];
-
-        // this.pics = 0;
-        this.DataList = [];
-        this.checkedkey = [];
-        this.checkedListkey = [];
-        this.DataList = response.data.packageProjects;
-        this.DataList.forEach((item) => {
-          this.checkedkey.push(item.proId);
-          this.checkedListkey.push(item.proId);
-        });
-
-        // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級
-        this.getDataList();
-      });
-    },
-
-   /** 淇敼鎸夐挳鎿嶄綔 */
-handleUpdate(row) {
-  this.reset(); // 閲嶇疆琛ㄥ崟
-  this.title = "浣撴濂楅淇℃伅缁存姢";
-  this.open = true;
-  this.loading = true;
-
-  getPacInFo(row.pacId).then((response) => {
-    const data = response.data || {};
-    Object.keys(data).forEach((key) => {
-      this.$set(this.form, key, data[key]);
-    });
-    this.youhui = data.limits || 10;
-    this.pics = data.price || 0;
-    this.form.xianprice = data.newPrice || 0;
-    this.lastXianPrice = this.form.xianprice;
-    this.form.keywords = data.keywords && data.keywords.length > 0
-      ? data.keywords.slice(0, -1).split(",")
-      : [];
-    this.DataList = data.packageProjects || [];
-    this.checkedkey = this.DataList.map(item => item.proId || '');
-    this.checkedListkey = [...this.checkedkey];
-    this.checkedNodes = [...this.checkedkey]; // 鍚屾 checkedNodes
-
-    return this.getDataList();
-  }).then(() => {
-    this.loading = false;
-    this.$nextTick(() => {
-      this.$refs.form.validate(); // 瑙﹀彂鏍¢獙
-    });
-  }).catch((error) => {
-    this.loading = false;
-    this.$message.error("鍔犺浇鏁版嵁澶辫触");
-    console.error(error);
-  });
-},
-    // 鏂板琛�
-    addmembers() {
-      if (this.form.pacName) {
-        if (!this.form.tjProjectList) {
-          this.form.tjProjectList = [];
-          this.form.tjProjectList.push({
-            id: parseInt(length),
-            proName: "",
-            allSonProName: "",
-            proPrice: "",
-            priceNow: "",
-            proId: "",
-            Selection,
-          });
-        } else {
-          this.form.tjProjectList.push({
-            id: parseInt(length),
-            proName: "",
-            allSonProName: "",
-            proPrice: "",
-            priceNow: "",
-            proId: "",
-            Selection,
-          });
-        }
-      } else {
-        Message.warning("璇峰厛濉啓濂楅鍚嶇О");
-      }
-      this.$forceUpdate();
-    },
-
-    // 鍒犻櫎琛�
-    Delete(index) {
-      if (this.form.tjProjectList.length == 0) {
-        this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", {
-          confirmButtonText: "纭畾",
-        });
-      } else {
-        this.form.tjProjectList.splice(index, 1);
-      }
-    },
-
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete1(row) {
-      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) {
-          formitem.allSonProName = "";
-          this.allList.find((item) => {
-            if (item.proName == val) {
-              formitem.proId = item.proId;
-              formitem.proPrice = item.proPrice;
-              formitem.priceNow = item.proPrice;
-              formitem.allSonProName = item.allSonProName;
-              // item.tjProjectList.forEach((item1) => {
-              //   this.$nextTick(() => {
-              //     formitem.allSonProName =
-              //       formitem.allSonProName + "," + item1.proName;
-              //   });
-              //   // this.form.tjProjectList.allSonProName = this.form.tjProjectList.allSonProName+','+item1.proName
-              // });
-            }
-          });
-        }
-      });
-
-      for (let i = 0; i < this.form.tjProjectList.length; i++) {
-        for (let j = i + 1; j < this.form.tjProjectList.length; j++) {
-          if (
-            this.form.tjProjectList[i].proId == this.form.tjProjectList[j].proId
-          ) {
-            this.form.tjProjectList.splice(j, 1);
-            j--;
-            this.$modal.msgError("姝ら」鐩凡褰曞叆锛屼笉鍙噸澶嶅綍鍏�");
-          }
-        }
-      }
-
-      return this.form.tjProjectList;
-    },
-
     numberChange(currentValue, oldValue) {
       this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", {
         confirmButtonText: "纭畾",
@@ -914,37 +516,279 @@
             const limits = new Big(item.limits);
             const result = proPrice.times(limits.div(10));
             item.priceNow = result.toNumber();
-            this.form.xianprice = this.DataList.reduce((sum, item) => {
-              return sum.plus(new Big(item.priceNow || "0"));
-            }, new Big(0));
           });
+          this.form.xianprice = this.DataList.reduce((sum, item) => {
+            return sum.plus(new Big(item.priceNow || "0"));
+          }, new Big(0)).toNumber();
+          this.lastXianPrice = this.form.xianprice;
         })
         .catch(() => {
           this.youhui = oldValue;
         });
     },
-
     updateProPrice(row) {
       const proPrice = new Big(row.priceOrd);
       const limits = new Big(row.limits);
-      const result = proPrice.times(limits.div(10)); // ordPrice * (discount / 10)
+      const result = proPrice.times(limits.div(10));
       row.priceNow = result.toNumber();
       this.form.xianprice = this.DataList.reduce((sum, item) => {
         return sum.plus(new Big(item.priceNow || "0"));
       }, new Big(0)).toNumber();
-      this.youhui =
-        (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10;
-      // console.log(this.youhui, 1212);
+      this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10;
     },
     calculateDiscount(row) {
       if (row.limits > 10) {
-        row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у��
+        row.limits = 10;
       } else if (row.limits < 0) {
-        row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓��
+        row.limits = 0;
       }
-      this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫
+      this.updateProPrice(row);
     },
-    // 榛樿鎺ュ彈鍥涗釜鍊� { 褰撳墠琛岀殑鍊�, 褰撳墠鍒楃殑鍊�, 琛岀殑涓嬫爣, 鍒楃殑涓嬫爣 }
+    toggleCollapse() {
+      this.isCollapsed = !this.isCollapsed;
+    },
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.proName.indexOf(value) !== -1 || data.proEngName.indexOf(value) !== -1;
+    },
+    getList() {
+      this.loading = true;
+      getPacTjProjectList().then((response) => {
+        this.allList = response.data;
+        this.loading = false;
+      });
+      getPacList(this.queryParams).then((response) => {
+        response.rows.forEach((item, index) => {
+          item.newID = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1;
+        });
+        this.total = response.total;
+        this.packageList = response.rows;
+        this.loading = false;
+      });
+    },
+    getKeyword() {
+      this.loading = true;
+      listKeyword(this.queryParams).then((response) => {
+        this.keywordList = response.rows;
+      });
+    },
+    sel(val) {
+      let id = val;
+      this.keys = id.join(",");
+    },
+    getCategory() {
+      this.loading = true;
+      listCategory(this.queryParams).then((response) => {
+        this.categoryList = response.rows;
+      });
+    },
+    shangpin(vals) {},
+    cancel() {
+      this.open = false;
+      this.Seachopen = false;
+      this.reset();
+    },
+    reset() {
+      this.form = {
+        pacId: null,
+        pacName: null,
+        pacRemark: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        deleted: null,
+        allSonName: null,
+        allProName: null,
+        priceNow: null,
+        proId: null,
+        xianprice: null,
+        counterPrice: null,
+        limits: 10,
+      };
+      this.resetForm("form");
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    handlePackage() {
+      this.$refs.aaa.open = true;
+      this.$refs.aaa.getList();
+      this.$refs.aaa.title = "濂楅瀛楀吀";
+    },
+    handleChanges(param1) {
+      this.form.pacName = param1[0].pacName;
+      this.form.hisPacId = param1[0].pacId;
+      if (param1[0].price) {
+        this.form.counterPrice = param1[0].price;
+        this.form.retailPrice = param1[0].price;
+      }
+    },
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    handleSelectionChange(selection) {
+      if (!selection[0]) return;
+      this.forms = selection[0];
+      this.ids = selection.map((item) => item.pacId);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
+    },
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "浣撴濂楅淇℃伅缁存姢";
+      this.DataList = [];
+      this.checkedkey = [];
+      this.queryParams1.nr = "";
+      this.queryParams1.page = 1;
+      this.checkedListkey = [];
+      this.checkedNodes = [];
+      this.getDataList();
+    },
+    handleStatusChange(row) {
+      let data = {
+        pacId: row.pacId,
+        pacStatus: row.pacStatus,
+      };
+      let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤";
+      this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵")
+        .then(() => updateStatus(data))
+        .then(() => {
+          this.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(() => {
+          row.pacStatus = row.pacStatus === "0" ? "0" : "1";
+        });
+    },
+    handleUp() {
+      this.title = "浣撴濂楅淇℃伅缁存姢";
+      this.open = true;
+      getPacInFo(this.forms.pacId).then((response) => {
+        Object.keys(response.data).forEach((key) => {
+          this.$set(this.form, key, response.data[key]);
+        });
+        this.youhui = response.data.limits || 10;
+        this.pics = response.data.price || 0;
+        this.form.xianprice = response.data.newPrice || 0;
+        this.lastXianPrice = this.form.xianprice;
+        this.form.keywords = response.data.keywords && response.data.keywords.length > 0
+          ? response.data.keywords.slice(0, -1).split(",")
+          : [];
+        this.DataList = response.data.packageProjects || [];
+        this.checkedkey = this.DataList.map(item => item.proId || '');
+        this.checkedListkey = [...this.checkedkey];
+        this.checkedNodes = [...this.checkedkey];
+        this.getDataList();
+      });
+    },
+    handleUpdate(row) {
+      this.reset();
+      this.title = "浣撴濂楅淇℃伅缁存姢";
+      this.open = true;
+      this.loading = true;
+      getPacInFo(row.pacId).then((response) => {
+        const data = response.data || {};
+        Object.keys(data).forEach((key) => {
+          this.$set(this.form, key, data[key]);
+        });
+        this.youhui = data.limits || 10;
+        this.pics = data.price || 0;
+        this.form.xianprice = data.newPrice || 0;
+        this.lastXianPrice = this.form.xianprice;
+        this.form.keywords = data.keywords && data.keywords.length > 0
+          ? data.keywords.slice(0, -1).split(",")
+          : [];
+        this.DataList = data.packageProjects || [];
+        this.checkedkey = this.DataList.map(item => item.proId || '');
+        this.checkedListkey = [...this.checkedkey];
+        this.checkedNodes = [...this.checkedkey];
+        return this.getDataList();
+      }).then(() => {
+        this.loading = false;
+        this.$nextTick(() => {
+          this.$refs.form.validate();
+        });
+      }).catch((error) => {
+        this.loading = false;
+        this.$message.error("鍔犺浇鏁版嵁澶辫触");
+        console.error(error);
+      });
+    },
+    addmembers() {
+      if (this.form.pacName) {
+        if (!this.form.tjProjectList) {
+          this.form.tjProjectList = [];
+          this.form.tjProjectList.push({
+            id: parseInt(length),
+            proName: "",
+            allSonProName: "",
+            proPrice: "",
+            priceNow: "",
+            proId: "",
+          });
+        } else {
+          this.form.tjProjectList.push({
+            id: parseInt(length),
+            proName: "",
+            allSonProName: "",
+            proPrice: "",
+            priceNow: "",
+            proId: "",
+          });
+        }
+      } else {
+        Message.warning("璇峰厛濉啓濂楅鍚嶇О");
+      }
+      this.$forceUpdate();
+    },
+    Delete(index) {
+      if (this.form.tjProjectList.length === 0) {
+        this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾" });
+      } else {
+        this.form.tjProjectList.splice(index, 1);
+      }
+    },
+    handleDelete1(row) {
+      this.DataList = this.DataList.filter((item) => item.proId !== row.proId);
+      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) {
+          formitem.allSonProName = "";
+          this.allList.find((item) => {
+            if (item.proName === val) {
+              formitem.proId = item.proId;
+              formitem.proPrice = item.proPrice;
+              formitem.priceNow = item.proPrice;
+              formitem.allSonProName = item.allSonProName;
+            }
+          });
+        }
+      });
+      for (let i = 0; i < this.form.tjProjectList.length; i++) {
+        for (let j = i + 1; j < this.form.tjProjectList.length; j++) {
+          if (this.form.tjProjectList[i].proId === this.form.tjProjectList[j].proId) {
+            this.form.tjProjectList.splice(j, 1);
+            j--;
+            this.$modal.msgError("姝ら」鐩凡褰曞叆锛屼笉鍙噸澶嶅綍鍏�");
+          }
+        }
+      }
+      return this.form.tjProjectList;
+    },
     objectSpanMethod({ row, column, rowIndex, columnIndex }) {
       let fields = ["propinName"];
       let cellValue = row[column.property];
@@ -975,101 +819,24 @@
     getDataList() {
       this.loading = true;
       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
-        );
-
-        // 纭繚鍦ㄦ暟鎹姞杞藉悗淇濇寔閫変腑鐘舵��
+        this.Treedata = response.data.list;
+        this.total1 = response.data.total;
+        this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0);
         this.$nextTick(() => {
           this.$refs.tree.setCheckedKeys(this.checkedNodes);
         });
       });
       this.loading = false;
     },
-    // getDataList() {
-    //   this.loading = true;
-
-    //   getProParentIdDxList(this.queryParams).then((response) => {
-    //     this.Treedata = response.data.list;
-    //     /*  if (this.form.tjProjectList) {
-    //       this.form.tjProjectList.forEach((item) => {
-    //         this.Treedata.forEach((item1) => {
-    //           if (item.proId == item1.proId) {
-    //             this.checkedkey.push(item1.proId);
-
-    //             this.DataList.push(item1);
-
-    //             this.DataList.forEach((item1) => {
-    //               item1.limits = 10;
-    //               if (item1.limits > 10) {
-    //                 item1.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у��
-    //               } else if (item1.limits < 0) {
-    //                 item1.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓��
-    //               }
-    //               this.updateProPrice(item1); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫
-    //             });
-
-    //           }
-    //         });
-    //       });
-    //     }  */ /* else {
-    //       this.checkedkey.push(this.Treedata[0].proId);
-    //       let proId = this.Treedata[0].proId;
-    //       this.TreedataList = this.Treedata.filter(
-    //         (item) => item.proId == proId
-    //       ); */
-
-    //     // 灏嗙涓�涓」鐩坊鍔犲埌 DataList
-    //     // this.TreedataList.forEach((item) => {
-    //     //   this.checkedListkey.push(item.proId);
-    //     //   this.DataList.push(item);
-    //     // });
-    //     /*  getProSonDxList(proId).then((res) => {
-    //         this.TreedataList = res.data.list;
-    //         this.TreedataList.forEach((item) => {
-    //           item.disabled = true;
-    //           this.checkedListkey.push(item.proId);
-    //           this.DataList.push(item);
-    //           this.DataList.forEach((item) => {
-    //             item.propinName = this.Treedata[0].proName;
-    //             item.propinPrice = this.Treedata[0].proPrice;
-    //           });
-    //           this.pics = 0;
-    //           this.DataList.forEach((item) => {
-    //             this.pics += item.proPrice;
-    //           });
-    //         });
-    //       }); */
-    //     // }
-    //     this.pics = this.DataList.reduce(
-    //       (total, item) => total + item.priceOrd,
-    //       0
-    //     );
-    //     this.loading = false;
-    //   });
-    // },
     handleFilterInput() {
-      this.queryParams1.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
-      this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
-      // 鍦ㄨ繃婊ゅ悗锛岄噸鏂拌缃�変腑鐘舵��
+      this.queryParams1.page = 1;
+      this.getDataList();
       this.$nextTick(() => {
         this.$refs.tree.setCheckedKeys(this.checkedNodes);
       });
     },
-
-    // 鍒嗛〉浜嬩欢
-    handlePageChange({ page, pageSize }) {
-      this.queryParams.page = page; // 鏇存柊褰撳墠椤�
-      this.queryParams.pageSize = pageSize; // 鏇存柊姣忛〉鏉℃暟
-      this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
-    },
-
     handleCurrentChecked(data, checked, indeterminate) {
       if (checked) {
-        // 濡傛灉宸查�夊垪琛ㄤ腑涓嶅瓨鍦ㄦ椤圭洰锛屽垯娣诲姞
         if (!this.DataList.some((item) => item.proId === data.proId)) {
           this.DataList.push({
             proId: data.proId,
@@ -1079,100 +846,68 @@
             priceNow: data.proPrice,
           });
         }
-        // 娣诲姞鍒� checkedNodes 鏁扮粍
         if (!this.checkedNodes.includes(data.proId)) {
           this.checkedNodes.push(data.proId);
         }
       } else {
-        // 鍙栨秷閫変腑鏃讹紝浠嶥ataList涓Щ闄�
-        this.DataList = this.DataList.filter(
-          (item) => item.proId !== data.proId
-        );
-        // 浠� checkedNodes 涓Щ闄�
+        this.DataList = this.DataList.filter((item) => item.proId !== data.proId);
         const index = this.checkedNodes.indexOf(data.proId);
         if (index > -1) {
           this.checkedNodes.splice(index, 1);
         }
       }
-
-      // 鏇存柊浼樻儬浠峰拰鎬讳环
       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
-      );
+      this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0);
     },
-
     changeXianjia() {
-      // 鍘熷鎶樻墸鐜囪绠�
       if (this.form.xianprice !== 0) {
-        this.youhui =
-          (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10;
+        this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10;
       }
     },
-
     numberChangeXianPrice(currentValue, oldValue) {
-      // 濡傛灉鐜颁环娌℃湁鍙樺寲锛岀洿鎺ヨ繑鍥�
-      if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) {
-        return;
-      }
-      this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning",
-      })
-        .then(() => {
-          this.youhui = currentValue;
-          if (this.youhui < this.getInfodis) {
-            this.youhui = this.getInfodis;
-          }
-          let totalYsprice = new Big(0);
-          this.DataList.forEach((item) => {
-            item.limits = this.youhui;
-            const ordPrice = new Big(item.priceOrd);
-            const discount = new Big(item.limits);
-            const result = ordPrice.times(discount.div(10));
-            item.priceNow = result.toNumber();
-            totalYsprice = totalYsprice.plus(new Big(item.priceNow));
-          });
-          if (!totalYsprice.eq(this.form.xianprice)) {
-            const diff = new Big(this.form.xianprice).minus(totalYsprice);
-            if (this.DataList.length > 0) {
-              const lastItem = this.DataList[this.DataList.length - 1];
-              const newYsPrice = new Big(lastItem.priceNow)
-                .plus(diff)
-                .toNumber();
-              console.log(
-                "hhh",
-                this.DataList[this.DataList.length - 1].priceNow,
-                newYsPrice
-              );
-              this.$set(
-                this.DataList[this.DataList.length - 1],
-                "priceNow",
-                newYsPrice
-              );
-            }
-          }
-          this.lastXianPrice = this.form.xianprice;
+      if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) return;
+      clearTimeout(this.debounceTimer);
+      this.debounceTimer = setTimeout(() => {
+        this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning",
         })
-        .catch(() => {
-          this.youhui = oldValue;
-        });
+          .then(() => {
+            this.youhui = currentValue;
+            let totalYsprice = new Big(0);
+            this.DataList.forEach((item) => {
+              item.limits = this.youhui;
+              const ordPrice = new Big(item.priceOrd);
+              const discount = new Big(item.limits);
+              const result = ordPrice.times(discount.div(10));
+              item.priceNow = result.toNumber();
+              totalYsprice = totalYsprice.plus(new Big(item.priceNow));
+            });
+            if (!totalYsprice.eq(this.form.xianprice)) {
+              const diff = new Big(this.form.xianprice).minus(totalYsprice);
+              if (this.DataList.length > 0) {
+                const lastItem = this.DataList[this.DataList.length - 1];
+                const newYsPrice = new Big(lastItem.priceNow).plus(diff).toNumber();
+                this.$set(this.DataList[this.DataList.length - 1], "priceNow", newYsPrice);
+              }
+            }
+            this.lastXianPrice = this.form.xianprice;
+          })
+          .catch(() => {
+            this.youhui = oldValue;
+          });
+      }, 500);
     },
     spliceData() {
       for (var i = 0; i < this.DataList.length; i++) {
         for (var j = i + 1; j < this.DataList.length; j++) {
-          if (this.DataList[i].proId == this.DataList[j].proId) {
-            //濡傛灉绗竴涓瓑浜庣浜屼釜锛宻plice鏂规硶鍒犻櫎绗簩涓�
+          if (this.DataList[i].proId === this.DataList[j].proId) {
             this.DataList.splice(j, 1);
             j--;
           }
@@ -1180,70 +915,30 @@
       }
       return this.DataList;
     },
-
-    // 鐐瑰嚮鑾峰彇姣忎釜鏍戣妭鐐�
     handleCurrentChecked1(data, checked, checkedNodes) {
-      if (checked == false) {
-        this.DataList.forEach((item, index) => {
-          if (item.proId == data.proId) {
-            this.DataList.splice(index, 1);
-            this.TotalPrice1 = 0;
-            this.pics = 0;
-            this.DataList.forEach((item1) => {
-              this.pics += item1.priceOrd;
-              // this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
-            });
-          }
-        });
-      } else if (checked == true) {
+      if (!checked) {
+        this.DataList = this.DataList.filter((item) => item.proId !== data.proId);
+        this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0);
+        this.pics = this.TotalPrice1;
+      } else {
         this.DataList.push(data);
-        this.pics = 0;
-        this.DataList.forEach((item1) => {
-          this.pics += item1.priceOrd;
-          if (item1.proParentId == this.dataObj.proId) {
-            item1.propinName = this.dataObj.proName;
-            item1.propinPrice = this.dataObj.proPrice;
-          }
-        });
+        this.pics = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0);
         this.spliceData();
-        this.TotalPrice1 = 0;
-        this.pics = 0;
-        this.DataList.forEach((item1) => {
-          // this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
-          this.pics += item1.priceOrd;
-        });
+        this.TotalPrice1 = this.pics;
       }
     },
-
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDeletes(row) {
-      this.DataList.forEach((item, index) => {
-        if (item.proParentId == row.proParentId) {
-          this.DataList.splice(index, 1);
-          this.TotalPrice1 = 0;
-          this.DataList.forEach((item1) => {
-            this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
-          });
-        }
-      });
-
-      // this.$refs.trees.setCheckedKeys([]);
+      this.DataList = this.DataList.filter((item) => item.proParentId !== row.proParentId);
+      this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0);
     },
-
-    /** 鎻愪氦鎸夐挳 */
     submitForm() {
       this.form.limits = this.youhui;
       this.form.price = this.pics;
-      this.form.priceNow = this.queryParams.xianprice;
-
+      this.form.priceNow = this.form.xianprice;
       if (this.keys) {
-        this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪��
-      } else {
-        // this.form.keywords = this.form.keywords; // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓�
+        this.form.keywords = this.keys;
       }
-
-      let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍
-
+      let packageProjects = [];
       this.DataList.forEach((item) => {
         packageProjects.push({
           proName: item.proName,
@@ -1262,178 +957,42 @@
         price: this.pics,
         pacId: this.form.pacId || null,
         isOnSale: this.form.isOnSale,
-        // keywords: this.form.keywords,
         sort: this.form.sort,
         retailPrice: this.form.retailPrice,
         tjCategory: this.form.tjCategory,
         pacRemark: this.form.pacRemark,
         detail: this.form.detail,
       };
-
       saveOreditTjPacNew(data).then((res) => {
-        console.log(res, 555);
         this.open = false;
         this.getList();
       });
     },
-    /* submitForm() {
-      if (this.form.pacName) {
-        this.form.tjProjectList = [];
-        if (this.DataList.length != 0) {
-          this.treeList = JSON.parse(JSON.stringify(this.DataList));
-          for (var i = 0; i < this.treeList.length; i++) {
-            for (var j = i + 1; j < this.treeList.length; j++) {
-              if (
-                this.treeList[i].proParentId == this.treeList[j].proParentId
-              ) {
-                this.treeList.splice(j, 1);
-                j--;
-              }
-            }
-          }
-          this.treeList.forEach((item) => {
-            this.form.tjProjectList.push({
-              // id: 0,
-              proName: item.propinName,
-              // allSonProName: item.proName + ",",
-              proPrice: item.propinPrice,
-              priceNow: item.propinPrice,
-              proId: item.proParentId,
-            });
-          });
-        }
-        this.$refs["form"].validate((valid) => {
-          if (valid) {
-            if (this.form.pacId != null) {
-              // if (this.form.pacStatus === "鍚敤") {
-              //   this.form.pacStatus = 0;
-              // } else {
-              //   this.form.pacStatus = 1;
-              // }
-              if (this.keys) {
-                this.form.keywords = this.keys;
-              } else {
-                this.form.keywords = this.form.keywords.toString();
-              }
-
-              updatePackage(this.form).then((response) => {
-                this.$modal.msgSuccess("淇敼鎴愬姛");
-                this.open = false;
-                this.getList();
-              });
-            } else {
-              this.form.keywords = this.keys;
-              // if (this.form.pacStatus === "鍚敤") {
-              //   this.form.pacStatus = 0;
-              // } else {
-              //   this.form.pacStatus = 1;
-              // }
-              // return;
-              addPackage(this.form).then((response) => {
-                this.$modal.msgSuccess("鏂板鎴愬姛");
-                this.open = false;
-                this.getList();
-              });
-            }
-          }
-        });
-      } else {
-        Message.warning("璇峰厛濉啓濂楅鍚嶇О");
-      }
-    }, */
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
     handleDelete(row) {
       const pacIds = row.pacId || this.ids;
       this.$modal
         .confirm('鏄惁纭鍒犻櫎浣撴濂楅缂栧彿涓�"' + pacIds + '"鐨勬暟鎹」锛�')
-        .then(function () {
-          return delPackage(pacIds);
-        })
+        .then(() => delPackage(pacIds))
         .then(() => {
           this.getList();
           this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
         })
-        .catch(() => { });
+        .catch(() => {});
     },
-
-    /** 鍒嗛厤濂楅鍐呴」鐩搷浣� */
-    handleProject: function (row) {
+    handleProject(row) {
       const pacId = row.pacId;
       this.$router.push("/system/user-auth/role/" + pacId);
     },
-
-    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download(
         "system/package/export",
-        {
-          ...this.queryParams,
-        },
+        { ...this.queryParams },
         `package_${new Date().getTime()}.xlsx`
       );
-    },
-    // 濂楅璇︽儏
-    // handleSeach(row) {
-    //   this.Seachopen = true;
-    //   this.loading = true;
-    //   const pacId = row.pacId;
-    //   this.pacId = row.pacId
-    //   let data = {
-    //     pacId: pacId,
-    //   };
-    //   getAllPackage(data).then((response) => {
-    //     this.allpackageList = response.data.tjProjectList;
-    //     this.loading = false;
-    //     let arr = [];
-    //     this.allpackageList.forEach((item) => {
-    //       arr.push(item.proName);
-    //     });
-    //     this.newproName = arr;
-    //   });
-
-    //   getAllPackageList().then((response) => {
-    //     this.allList = response.data;
-    //     this.loading = false;
-    //   });
-    // },
-    // // 鍏ㄩ��
-    // handleCheckAllChange(val) {
-    //   this.newproName = val ? this.allList : [];
-    //   this.isIndeterminate = false;
-    // },
-
-    // handleCheckedCitiesChange(value) {
-    //   let checkedCount = value.length;
-    //   this.checkAll = checkedCount === this.allList.length;
-    //   this.isIndeterminate =
-    //     checkedCount > 0 && checkedCount < this.allList.length;
-    // },
-
-    submitcheckbox() {
-      let _this = this;
-      let proIds = [];
-      this.allList.forEach((item) => {
-        _this.newproName.forEach((item1) => {
-          if (item.proName == item1) {
-            proIds.push(item.proId);
-          }
-        });
-      });
-      let data = {
-        pacid: Number(this.pacId),
-        proIds: proIds.toString(),
-      };
-
-      updateProject(data).then((response) => {
-        this.$modal.msgSuccess("鎴愬姛");
-        this.Seachopen = false;
-      });
     },
   },
 };
 </script>
-
-
 <style>
 .el-tooltip__popper {
   max-width: 800px;

--
Gitblit v1.8.0