From 47f3611b20b8ee9379e93c82b7b2f46edae56eb1 Mon Sep 17 00:00:00 2001
From: lkk <364857242@qq.com>
Date: 星期二, 21 一月 2025 14:13:56 +0800
Subject: [PATCH] taocan

---
 src/views/system/package/index.vue |  935 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 755 insertions(+), 180 deletions(-)

diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue
index c8a8541..06436ff 100644
--- a/src/views/system/package/index.vue
+++ b/src/views/system/package/index.vue
@@ -145,10 +145,24 @@
           fixed
         />
         <el-table-column
-          label="浠锋牸"
+          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>
@@ -301,8 +315,9 @@
     <el-dialog
       :title="title"
       :visible.sync="open"
-      width="1100px"
+      width="1400px"
       append-to-body
+      :close-on-click-modal="false"
     >
       <el-form
         ref="form"
@@ -424,38 +439,75 @@
             style="width: 150px"
           />
         </el-form-item>
-        <el-form-item label="鍘熶环" prop="counterPrice">
+        <el-form-item label="鍘熶环" prop="pics">
           <el-input
-            v-model="form.counterPrice"
+            v-model="pics"
             placeholder="璇疯緭鍏ュ師浠�"
             style="width: 150px"
           />
         </el-form-item>
+        <el-form-item label="鎶樻墸">
+          <el-input-number
+            ref="inputNumber"
+            style="width: 150px"
+            v-model="youhui"
+            :precision="2"
+            :step="0.1"
+            :max="10"
+            :min="1"
+            @change="numberChange"
+          ></el-input-number>
+        </el-form-item>
+        <el-form-item label="浼樻儬浠�">
+          <el-input
+            ref="inputName"
+            v-model="form.xianprice"
+            placeholder="浼樻儬浠�"
+            clearable
+            style="width: 140px"
+          />
+        </el-form-item>
+        <el-form-item label="浣撴绫诲埆" prop="tjCategory">
+          <el-select
+            v-model="form.tjCategory"
+            placeholder="璇烽�夋嫨浣撴绫诲埆"
+            style="width: 150px"
+            filterable
+            clearable
+          >
+            <el-option
+              v-for="dict in dict.type.dict_tjtype"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
 
-        <div v-if="!isCollapsed" style="display:flex">
+        <div v-if="!isCollapsed" style="display: flex">
           <div>
             <el-form-item label="濂楅鎻忚堪" prop="pacRemark">
-            <el-input
-              type="textarea"
-              v-model="form.pacRemark"
-              placeholder="璇疯緭鍏ュ椁愭弿杩�"
-              style="width: 670px"
-              rows="2"
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="璇︾粏浠嬬粛" prop="detail">
-            <!-- <el-input
+              <el-input
+                type="textarea"
+                v-model="form.pacRemark"
+                placeholder="璇疯緭鍏ュ椁愭弿杩�"
+                style="width: 670px"
+                rows="2"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="璇︾粏浠嬬粛" prop="detail">
+              <!-- <el-input
             v-model="form.detail"
             placeholder="璇疯緭鍏ヨ缁嗕粙缁�"
             style="width: 200px"
           /> -->
-            <editor
-              v-model="form.detail"
-              :min-height="192"
-              style="width: 670px"
-            />
-          </el-form-item>
-          </div>          
+              <editor
+                v-model="form.detail"
+                :min-height="192"
+                style="width: 670px"
+              />
+            </el-form-item>
+          </div>
           <!-- </div> -->
           <div class="dialo2">
             <el-form-item label="鍥剧墖">
@@ -468,100 +520,186 @@
       <el-button type="primary" plain size="mini" @click="toggleCollapse">{{
         isCollapsed ? "灞曞紑" : "鏀惰捣"
       }}</el-button>
-      <el-button
-        type="primary"
-        plain
-        size="mini"
-        icon="el-icon-plus"
-        @click="addmembers()"
-        >鏂板鍗曢」</el-button
-      >
-      <el-table
-        v-loading="loading"
-        :data="form.tjProjectList"
-        @selection-change="handleSelectionChange"
-        border
-        max-height="275"
-        style="margin: 10px 0"
-      >
+      <!-- <el-button type="primary" plain size="mini" icon="el-icon-plus" @click="addmembers()">鏂板鍗曢」</el-button>
+      <el-table v-loading="loading" :data="form.tjProjectList" @selection-change="handleSelectionChange" border
+        max-height="275" style="margin: 10px 0">
         <el-table-column label="搴忓彿" align="center" type="index" />
-        <el-table-column
-          label="椤圭洰鍚嶇О"
-          align="center"
-          prop="proName"
-          width="180px"
-        >
+        <el-table-column label="椤圭洰鍚嶇О" align="center" prop="proName" width="180px">
           <template slot-scope="scope">
-            <el-select
-              filterable
-              v-model="scope.row.proName"
-              placeholder="璇烽�夋嫨椤圭洰鍚嶇О"
-              @change="getSelectValue"
-            >
-              <el-option
-                v-for="(item, index) in allList"
-                :key="index"
-                :label="item.proName"
-                :value="item.proName"
-              >
+            <el-select filterable v-model="scope.row.proName" placeholder="璇烽�夋嫨椤圭洰鍚嶇О" @change="getSelectValue">
+              <el-option v-for="(item, index) in allList" :key="index" :label="item.proName" :value="item.proName">
               </el-option>
             </el-select>
           </template>
         </el-table-column>
-        <el-table-column
-          label="椤圭洰鏄庣粏"
-          align="center"
-          prop="allSonProName"
-          width="400px"
-          :show-overflow-tooltip="true"
-        >
+        <el-table-column label="椤圭洰鏄庣粏" align="center" prop="allSonProName" width="400px" :show-overflow-tooltip="true">
         </el-table-column>
-        <el-table-column
-          label="鍘熶环(鍏�)"
-          align="center"
-          prop="proPrice"
-          width="80px"
-        />
-        <el-table-column
-          label="鐜颁环(鍏�)"
-          align="center"
-          prop="priceNow"
-          width="80px"
-        >
+        <el-table-column label="鍘熶环(鍏�)" align="center" prop="proPrice" width="80px" />
+        <el-table-column label="鐜颁环(鍏�)" align="center" prop="priceNow" width="80px">
           <template slot-scope="scope">
-            <el-input
-              v-model="scope.row.priceNow"
-              autocomplete="off"
-              placeholder="璇疯緭鍏ュ唴瀹�"
-            ></el-input>
+            <el-input v-model="scope.row.priceNow" autocomplete="off" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
           </template>
         </el-table-column>
-        <el-table-column
-          label="鎿嶄綔"
-          fixed="right"
-          align="center"
-          class-name="small-padding fixed-width"
-        >
+        <el-table-column label="鎿嶄綔" fixed="right" align="center" class-name="small-padding fixed-width">
           <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-circle-plus-outline"
-              @click="addmembers(scope.row)"
-              v-hasPermi="['system:package:edit']"
-              title="鏂板琛�"
-            ></el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click.native.prevent="Delete(scope.$index)"
-              v-hasPermi="['hosp:consumables:remove']"
-              title="鍒犻櫎"
-            ></el-button>
+            <el-button size="mini" type="text" icon="el-icon-circle-plus-outline" @click="addmembers(scope.row)"
+              v-hasPermi="['system:package:edit']" title="鏂板琛�"></el-button>
+            <el-button size="mini" type="text" icon="el-icon-delete" @click.native.prevent="Delete(scope.$index)"
+              v-hasPermi="['hosp:consumables:remove']" title="鍒犻櫎"></el-button>
           </template>
         </el-table-column>
-      </el-table>
+      </el-table> -->
+
+      <el-row style="display: flex; width: 1300px">
+        <el-col>
+          <div
+            style="text-align: center; margin-bottom: 10px; margin-top: 10px"
+          >
+            椤圭洰鍒楄〃
+          </div>
+          <el-input
+            placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+            @input="handleFilterInput"
+            v-model="queryParams1.nr"
+            clearable
+          />
+          <div class="tab3" style="height: 365px">
+            <el-tree
+              class="filter-tree"
+              v-loading="loading"
+              :data="Treedata"
+              :props="defaultProps"
+              show-checkbox
+              node-key="proId"
+              @check-change="handleCurrentChecked"
+              :default-checked-keys="checkedkey"
+              :filter-node-method="filterNode"
+              ref="tree"
+              :render-content="renderContent"
+            >
+            </el-tree>
+            <pagination
+              small
+              v-show="total1 > 0"
+              :total="total1"
+              :page.sync="queryParams1.page"
+              :limit.sync="queryParams1.pageSize"
+              @pagination="getDataList"
+            />
+          </div>
+        </el-col>
+        <!--  <el-col :span="6">
+          <div
+            style="text-align: center; margin-bottom: 10px; margin-top: 10px"
+          >
+            鏄庣粏椤圭洰鍒楄〃
+          </div>
+          <div class="tab3">
+            <el-tree
+              class="filter-tree"
+              v-loading="loading"
+              :data="TreedataList"
+              node-key="proId"
+              :props="defaultProps"
+              :filter-node-method="filterNode"
+              show-checkbox
+              @check-change="handleCurrentChecked1"
+              :default-checked-keys="checkedListkey"
+              ref="trees"
+              :render-content="renderContent"
+            >
+            </el-tree>
+          </div>
+        </el-col> -->
+        <el-col>
+          <div class="grid-content bg-purple">
+            <div
+              style="
+                text-align: center;
+                margin-bottom: 10px;
+                margin-top: 10px;
+                margin-left: 8%;
+              "
+            >
+              宸查�夐」鐩垪琛�
+            </div>
+            <el-table
+              :data="DataList"
+              border
+              style="width: 90%; margin-left: 20px"
+              height="400"
+              :span-method="objectSpanMethod"
+            >
+              <el-table-column prop="proName" label="妫�鏌ラ」鐩�">
+              </el-table-column>
+
+              <el-table-column
+                prop="priceOrd"
+                label="鍘熶环"
+                align="center"
+                width="80px"
+              >
+              </el-table-column>
+              <el-table-column label="鎶樻墸" width="100px">
+                <template slot-scope="scope">
+                  <!-- 鍙緭鍏ョ函鏁板瓧鎶樻墸 -->
+                  <el-input
+                    v-model.number="scope.row.limits"
+                    @input="calculateDiscount(scope.row)"
+                    placeholder="杈撳叆鎶樻墸"
+                    size="small"
+                    type="number"
+                    min="0"
+                    step="0.1"
+                    max="10"
+                  >
+                  </el-input>
+                </template>
+              </el-table-column>
+              <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">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="handleDelete1(scope.row)"
+                    title="鍒犻櫎"
+                  >
+                  </el-button>
+                </template>
+              </el-table-column>
+              <!-- <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="260px">
+              </el-table-column> -->
+
+              <!-- <el-table-column
+                label="鎿嶄綔"
+                align="center"
+                fixed="right"
+                class-name="small-padding fixed-width"
+                width="50px"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="mini"
+                    type="text"
+                    icon="el-icon-delete"
+                    @click="handleDeletes(scope.row)"
+                    title="鍒犻櫎"
+                  ></el-button>
+                </template> 
+              </el-table-column>-->
+            </el-table>
+            <!-- <h3 style="font-weight: 600">鍚堣锛歿{ pics }}鍏�</h3> -->
+          </div>
+        </el-col>
+      </el-row>
 
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
@@ -593,7 +731,15 @@
 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 {
+  getPacList,
+  getPacInFo,
   listPackage,
   getPackage,
   delPackage,
@@ -603,15 +749,17 @@
   updateStatus,
   getAllList,
   updateProject,
+  getPacTjProjectList,
+  saveOreditTjPacNew,
 } from "@/api/system/package";
 import { Message } from "element-ui";
+import Big from "big.js";
 export default {
   name: "Package",
-  dicts: ["sys_normal_disable", "sys_yes_no"],
+  dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"],
   components: { Packages },
   data() {
     let checkPhoneNum = (rule, value, callback) => {
-      console.log(value);
       let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
       if (value == "" && value == undefined && !value) {
         return callback("");
@@ -622,6 +770,23 @@
       }
     };
     return {
+      pics: 0,
+      filterText: "",
+      DataList: [],
+      list1: true,
+      activeName: "1",
+      num: 1,
+      checkedObj: {},
+      dataObj: {},
+      Treedata: [],
+      TreedataList: [],
+      treedataList: [],
+      checkedkey: [],
+      checkedListkey: [],
+      defaultProps: {
+        children: [],
+        label: "proName",
+      },
       isCollapsed: true, // 榛樿涓烘姌鍙犵姸鎬�
       categoryList: [],
       keys: "",
@@ -642,8 +807,6 @@
       multiple: true,
       // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
-      // 鎬绘潯鏁�
-      total: 0,
       // 浣撴濂楅琛ㄦ牸鏁版嵁
       packageList: [],
       // 濂楅閫変腑鐨勭埗椤�
@@ -652,6 +815,7 @@
       newproName: [],
       // 鎵�鏈変綋妫�椤圭洰路
       allList: [],
+      treeList: [],
       // 鎵�鏈夊椁愭暟鎹�
       // allpackage:[],
       // 寮瑰嚭灞傛爣棰�
@@ -660,6 +824,9 @@
       open: false,
       Seachopen: false,
       pacId: "",
+      // 鎬绘潯鏁�
+      total: 0,
+      total1: 0,
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
@@ -667,8 +834,19 @@
         pacName: null,
         pacRemark: null,
       },
+      queryParams1: {
+        page: 1,
+        pageSize: 30,
+        nr: "",
+      },
       // 琛ㄥ崟鍙傛暟
-      form: {},
+      form: {
+        xianprice: null, // 浼樻儬浠�
+        counterPrice: null, //鍘熶环
+        limits: 10,
+      },
+      forms: {},
+      youhui: 10,
       // 琛ㄥ崟鏍¢獙
       rules: {
         deleted: [
@@ -699,6 +877,12 @@
       },
     };
   },
+  // watch: {
+  //   filterText(val) {
+  //     this.$refs.tree.filter(val);
+  //   },
+  // },
+
   created() {
     this.getList();
     this.getKeyword();
@@ -708,10 +892,28 @@
     toggleCollapse() {
       this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫��
     },
+    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;
-      listPackage(this.queryParams).then((response) => {
+      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 +
@@ -723,6 +925,7 @@
         this.loading = false;
       });
     },
+
     /** 鏌ヨ鍏抽敭瀛楀垪琛� */
     getKeyword() {
       this.loading = true;
@@ -744,9 +947,7 @@
         this.categoryList = response.rows;
       });
     },
-    shangpin(vals) {
-      console.log(vals);
-    },
+    shangpin(vals) {},
     // 鍙栨秷鎸夐挳
     cancel() {
       this.open = false;
@@ -801,7 +1002,7 @@
       if (!selection[0]) {
         return;
       }
-      this.form = selection[0];
+      this.forms = selection[0];
       this.ids = selection.map((item) => item.pacId);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
@@ -811,6 +1012,10 @@
       this.reset();
       this.open = true;
       this.title = "浣撴濂楅淇℃伅缁存姢";
+      this.DataList = [];
+      this.checkedkey = [];
+      this.checkedListkey = [];
+      this.getDataList();
       // getAllList().then((response) => {
       //   this.allList = response.data;
       //   if (this.allList.proStatus === 0) {
@@ -856,41 +1061,56 @@
     handleUp() {
       this.title = "浣撴濂楅淇℃伅缁存姢";
       this.open = true;
-      getAllList().then((response) => {
-        this.allList = response.data;
-        this.loading = false;
-      });
-    },
-    /** 淇敼鎸夐挳鎿嶄綔 */
-    handleUpdate(row) {
-      this.form = row;
-      this.form.keywords = this.form.keyIds;
-      // if (this.form.pacStatus === 0) {
-      //   this.form.pacStatus = "鍚敤";
-      // } else {
-      //   this.form.pacStatus = "鍋滅敤";
-      // }
-      this.title = "浣撴濂楅淇℃伅缁存姢";
-      this.open = true;
-      // getAllList().then((response) => {
+      // getPacTjProjectList().then((response) => {
       //   this.allList = response.data;
       //   this.loading = false;
       // });
+      getPacInFo(this.forms.pacId).then((response) => {
+        this.form = response.data;
+        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.title = "浣撴濂楅淇℃伅缁存姢";
+      this.open = true;
+      getPacInFo(row.pacId).then((response) => {
+        this.form = response.data;
+        this.form.keywords = this.form.keywords.slice(0, -1);
+        this.form.keywords = this.form.keywords.split(",");
+        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();
+      });
     },
 
     // 鏂板琛�
     addmembers() {
       if (this.form.pacName) {
-        this.loading = true;
-        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({
@@ -930,6 +1150,16 @@
       }
     },
 
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    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); // 鍙栨秷閫変腑鐘舵��
+      }
+    },
+
     getSelectValue(val) {
       this.form.tjProjectList.forEach((formitem) => {
         if (formitem.proName == val) {
@@ -939,13 +1169,14 @@
               formitem.proId = item.proId;
               formitem.proPrice = item.proPrice;
               formitem.priceNow = item.proPrice;
-              item.tjProjectList.forEach((item1) => {
-                this.$nextTick(() => {
-                  formitem.allSonProName =
-                    formitem.allSonProName + "," + item1.proName;
-                });
-                // this.form.tjProjectList.allSonProName = this.form.tjProjectList.allSonProName+','+item1.proName
-              });
+              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
+              // });
             }
           });
         }
@@ -965,38 +1196,375 @@
 
       return this.form.tjProjectList;
     },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm() {
-      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;
-            // }
-            this.form.keywords = this.keys;
-            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;
-            // }
-            addPackage(this.form).then((response) => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
+
+    numberChange(currentValue, oldValue) {
+      this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          this.youhui = currentValue;
+          this.DataList.forEach((item) => {
+            item.limits = this.youhui;
+            const proPrice = new Big(item.priceOrd);
+            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));
+          });
+        })
+        .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)
+      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);
+    },
+    calculateDiscount(row) {
+      if (row.limits > 10) {
+        row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у��
+      } else if (row.limits < 0) {
+        row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓��
+      }
+      this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫
+    },
+    // 榛樿鎺ュ彈鍥涗釜鍊� { 褰撳墠琛岀殑鍊�, 褰撳墠鍒楃殑鍊�, 琛岀殑涓嬫爣, 鍒楃殑涓嬫爣 }
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      let fields = ["propinName"];
+      let cellValue = row[column.property];
+      if (cellValue && fields.includes(column.property)) {
+        let prevRow = this.DataList[rowIndex - 1];
+        let nextRow = this.DataList[rowIndex + 1];
+        if (prevRow && prevRow[column.property] === cellValue) {
+          return { rowspan: 0, colspan: 0 };
+        } else {
+          let countRowspan = 1;
+          while (nextRow && nextRow[column.property] === cellValue) {
+            nextRow = this.DataList[++countRowspan + rowIndex];
+          }
+          if (countRowspan > 1) {
+            return { rowspan: countRowspan, colspan: 1 };
           }
         }
+      }
+    },
+    renderContent(h, { node, data, store }) {
+      return (
+        <span class="custom-tree-node">
+          <span>{node.label}</span>
+          <span>({data.proPrice}鍏�)</span>
+        </span>
+      );
+    },
+    getDataList() {
+      this.loading = true;
+      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.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.queryParams.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤�
+      this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
+    },
+
+    // 鍒嗛〉浜嬩欢
+    handlePageChange({ page, pageSize }) {
+      this.queryParams.page = page; // 鏇存柊褰撳墠椤�
+      this.queryParams.pageSize = pageSize; // 鏇存柊姣忛〉鏉℃暟
+      this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁
+    },
+
+    handleCurrentChecked(data, checked, checkedNodes) {
+      this.dataObj = data;
+      this.checkedObj = checked;
+
+      if (checked) {
+        // 妫�鏌ユ槸鍚﹀凡瀛樺湪浜� DataL
+        this.DataList.push({
+          proId: data.proId,
+          proName: data.proName,
+          priceOrd: data.proPrice, // 鍘熶环锛岀‘淇濊祴鍊兼纭�
+          limits: 10,
+          priceNow: data.proPrice,
+        });
+      } else {
+        let index = this.DataList.findIndex(
+          (item) => item.proId === data.proId
+        );
+        if (index !== -1) {
+          this.DataList.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`
       });
     },
+
+    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鏂规硶鍒犻櫎绗簩涓�
+            this.DataList.splice(j, 1);
+            j--;
+          }
+        }
+      }
+      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) {
+        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.spliceData();
+        this.TotalPrice1 = 0;
+        this.pics = 0;
+        this.DataList.forEach((item1) => {
+          // this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
+          this.pics += item1.priceOrd;
+        });
+      }
+    },
+
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    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([]);
+    },
+
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.form.limits = this.youhui;
+      this.form.price = this.pics;
+      this.form.priceNow = this.queryParams.xianprice;
+
+      if (this.keys) {
+        this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪��
+      } else {
+        this.form.keywords = this.form.keywords.toString(); // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓�
+      }
+
+      let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍
+
+      this.DataList.forEach((item) => {
+        packageProjects.push({
+          proName: item.proName,
+          proId: item.proId,
+          priceNow: item.priceNow,
+          limits: item.limits,
+          priceOrd: item.priceOrd,
+        });
+      });
+      let data = {
+        pacName: this.form.pacName,
+        limits: this.form.limits,
+        pacStatus: this.form.pacStatus,
+        packageProjects: packageProjects,
+        newPrice: this.form.xianprice,
+        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;
@@ -1119,10 +1687,17 @@
   left: 40%;
   bottom: 2%;
 }
-
-/* .dialo{
-  display: flex;
-  flex-direction: row;
+.tab3 {
+  max-height: 400px;
+  overflow-y: auto;
+  border: 1px solid #d9d9d9;
+}
+/* .custom-tree-node {
+    flex: 1;
+    display: flex;
     align-items: center;
-} */
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+  } */
 </style>
\ No newline at end of file

--
Gitblit v1.8.0