From 416b4ef820586a62b136d77fa0ccc185f173b5b9 Mon Sep 17 00:00:00 2001
From: wwl <xchao828@163.com>
Date: 星期五, 03 一月 2025 21:33:20 +0800
Subject: [PATCH] 1

---
 src/views/system/comp/index.vue |  351 ++++++++++++++++++++++------------------------------------
 1 files changed, 134 insertions(+), 217 deletions(-)

diff --git a/src/views/system/comp/index.vue b/src/views/system/comp/index.vue
index e0aaf26..3163714 100644
--- a/src/views/system/comp/index.vue
+++ b/src/views/system/comp/index.vue
@@ -169,10 +169,9 @@
               <el-form-item label="鍘熶环" prop="price">
                 <el-input v-model="forms.price" placeholder="璇疯緭鍏ュ師浠�" style="width: 130px" />
               </el-form-item>
-              <el-form-item label="鎶樻墸" prop="limits">
+              <!-- <el-form-item label="鎶樻墸" prop="limits">
                 <el-input v-model="forms.limits" placeholder="璇疯緭鍏ユ姌鎵�" style="width: 130px" @change="numberChange" />
-                <!-- :disabled="isfalse" -->
-              </el-form-item>
+              </el-form-item> -->
 
               <el-form-item label="浼樻儬浠�" prop="ysPrice">
                 <el-input v-model="forms.ysPrice" placeholder="璇疯緭鍏ュ簲鏀�" style="width: 120px" />
@@ -192,17 +191,9 @@
                   <el-input v-model="forms.gtAge" style="width: 54px" />
                 </el-col>
               </el-form-item>
-              <el-form-item label="鍘熶环" prop="price">
-                <el-input v-model="forms.price" placeholder="璇疯緭鍏ュ師浠�" style="width: 130px" />
-              </el-form-item>
-              <el-form-item label="鎶樻墸" prop="limits">
-                <el-input v-model="forms.limits" placeholder="璇疯緭鍏ユ姌鎵�" style="width: 130px" @change="numberChange" />
-                <!-- :disabled="isfalse" -->
-              </el-form-item>
 
-              <el-form-item label="浼樻儬浠�" prop="ysPrice">
-                <el-input v-model="forms.ysPrice" placeholder="璇疯緭鍏ュ簲鏀�" style="width: 120px" />
-              </el-form-item>
+
+
 
             </el-form>
 
@@ -333,7 +324,79 @@
 
     <div>
       <el-dialog :title="title" :visible.sync="openOne" width="1400px" append-to-body :close-on-click-modal="false">
-        <el-row :gutter="24">
+        <el-row :gutter="24" v-if="!isTableVisible">
+
+          <el-col :span="11" :xs="24">
+            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="46px"
+              style="height: 35px">
+              <el-form-item label="鍘熶环">
+                <el-input ref="inputName" v-model="queryParams.price" placeholder="鍚堣" clearable style="width: 140px" />
+              </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"></el-input-number>
+              </el-form-item>
+              <el-form-item label="鐜颁环">
+                <el-input ref="inputName" v-model="queryParams.xianprice" placeholder="鍚堣" clearable
+                  style="width: 140px" />
+              </el-form-item>
+              <el-form-item>
+                <el-button icon="el-icon-refresh" size="mini" @click="resetQuerys">閲嶇疆</el-button>
+              </el-form-item>
+            </el-form>
+            <el-table border v-loading="loading" :data="OnenewpacName" :row-class-name="tableRowClassName" height="478">
+              <el-table-column label="椤圭洰鍚嶇О/浠锋牸/鍏�" align="center" prop="proName">
+
+                <template slot-scope="scope">
+                  {{ scope.row.proName + "/" + scope.row.proPrice }}
+                </template>
+              </el-table-column>
+              <el-table-column label="鍘熶环" align="center" prop="proPrice"></el-table-column>
+              <el-table-column label="鎶樻墸">
+                <template slot-scope="scope">
+                  <!-- 鍙緭鍏ョ函鏁板瓧鎶樻墸 -->
+                  <el-input v-model.number="scope.row.limits" @input="validateDiscount(scope.row)" placeholder="杈撳叆鎶樻墸"
+                    size="small" type="number" min="0" step="1" max="10">
+                  </el-input>
+                </template>
+              </el-table-column>
+              <el-table-column label="鐜颁环" align="center" prop="ysPrice"></el-table-column>
+              <el-table-column label="鎿嶄綔" align="center" width="68">
+                <template slot-scope="scope">
+                  <el-button size="mini" type="text" icon="el-icon-delete"
+                    @click="handledbelete(scope.row)">鍒犻櫎</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-col>
+          <el-col :span="2" :xs="24">
+            <div style="margin: 240% 16%">
+              <el-button type="primary" size="medium " icon="el-icon-back"
+                style="writing-mode: vertical-rl; text-align: center;letter-spacing: 10px;"
+                @click="resetright">纭</el-button>
+            </div>
+          </el-col>
+          <el-col :span="11" :xs="24">
+            <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
+              label-width="68px">
+              <el-form-item label="椤圭洰鍚嶇О" prop="proName">
+                <el-input ref="inputName" v-model="queryParams.proName" placeholder="璇疯緭鍏ラ」鐩悕绉�" clearable
+                  @keyup.enter.native="handleSearchFor" style="width: 140px" />
+              </el-form-item>
+              <el-form-item>
+                <el-button type="primary" icon="el-icon-search" size="mini" @click="handleSearchFor">鎼滅储</el-button>
+              </el-form-item>
+            </el-form>
+            <el-table border v-loading="loading" ref="tre" :data="Treedata" @selection-change="handleChangesingle"
+              height="478" style="width: 70%">
+              <el-table-column type="selection" width="40px" align="center" />
+              <el-table-column label="椤圭洰鍚嶇О" align="center" prop="proName" />
+              <el-table-column label="椤圭洰浠锋牸/鍏�" align="center" prop="proPrice" />
+            </el-table>
+          </el-col>
+        </el-row>
+        <!-- -=----------------------------------------------------- -->
+        <el-row :gutter="24" v-else>
           <el-col :span="8" :xs="24">
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
               <el-form-item label="濂楅鍚嶇О" prop="pacName">
@@ -346,7 +409,7 @@
               </el-form-item>
             </el-form>
             <el-table ref="tbone" border v-loading="loading" :data="newpacName" @selection-change="handleChangeOne"
-              height="478" v-if="isTableVisible">
+              height="478">
               <el-table-column type="selection" width="40px" align="center" />
               <el-table-column label="搴忓彿" align="center" prop="newID" width="50px" />
               <el-table-column label="濂楅鍚嶇О/浠锋牸/鍏�" align="center" prop="pacName">
@@ -366,10 +429,6 @@
                 <el-button icon="el-icon-refresh" size="mini" @click="resetQuerys">閲嶇疆</el-button>
               </el-form-item>
             </el-form>
-            <!-- <div style="color: red; font-size: 8px">
-              娉ㄩ噴锛氶紶鏍囧乏閿弻鍑婚�変腑琛屽彲鍒犻櫎
-            </div> -->
-            <!--       @row-dblclick="dbclick" -->
             <el-table border v-loading="loading" :data="OnenewpacName" :row-class-name="tableRowClassName" height="478">
               <el-table-column label="椤圭洰鍚嶇О/浠锋牸/鍏�" align="center" prop="proName">
 
@@ -562,13 +621,12 @@
 </template>
 
 <script>
-
+import Big from 'big.js';
 import {
   listComp,
   getComp,
   delComp,
   addComp,
-  getfzgrouping,
   updateComp,
   addDept,
   Deptlist,
@@ -650,6 +708,8 @@
         enName: null,
         code: null,
         price: null,
+        xianprice: null,
+        limits: null
       },
       id: "",
       // 琛ㄥ崟鍙傛暟
@@ -660,10 +720,11 @@
         gtAge: 100,
         groupingName: "",
         pacName: "",
-        payType: "",
-        sex: "",
+        payType: "1",
+        sex: "2",
       },
       sfzs: '',
+      youhui: '',
       // 琛ㄥ崟鏍¢獙
       rules: {
         cnName: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
@@ -674,7 +735,7 @@
           { required: true, validator: checkPhoneNum, trigger: "blur" },
         ],
         gtAge: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
-        limits: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
+        limits: [{ required: false, validator: checkPhoneNum, trigger: "blur" }],
         ltAge: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
         /*  pacName: [
           { required: true, validator: checkPhoneNum, trigger: "blur" },
@@ -731,7 +792,26 @@
     this.getList();
   },
   methods: {
+    validateDiscount(row) {
+      if (row.limits > 10) {
+        row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у��
+      } else if (row.limits < 0) {
+        row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓��
+      }
+      this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫
+    },
+    updateProPrice(row) {
+  
+      const proPrice = new Big(row.proPrice);
 
+      const limits = new Big(row.limits);
+      const result = proPrice.times(limits.div(10));  // ordPrice * (discount / 10)
+      row.ysPrice = result.toNumber();
+      this.queryParams.xianprice = this.OnenewpacName.reduce((sum, item) => {
+        return sum.plus(new Big(item.ysPrice || '0'));
+      }, new Big(0)).toNumber();
+      this.youhui = (Math.floor((this.queryParams.xianprice / this.queryParams.price)*100)/100)*10
+    },
     getList() {
       this.$nextTick(() => {
         this.$refs.inputName.focus();
@@ -761,7 +841,7 @@
     cancell() {
       this.openss = false;
       this.openOne = false;
-      this.reset();
+      // this.reset();
     },
     // 琛ㄥ崟閲嶇疆
     reset() {
@@ -901,10 +981,7 @@
           (this.forms.limits / 10)
         ).toFixed(2);
       } */
-      this.forms.ysPrice = (
-        this.forms.price *
-        (this.forms.limits / 10)
-      ).toFixed(2);
+
     },
 
     changegroupingName() {
@@ -929,36 +1006,7 @@
               index +
               1;
           });
-          // if (this.groupList.length >= 1) {
-          //   if (this.groupList[0].id) {
-          //     getfzgrouping(this.groupList[0].id).then((response) => {
-          //       this.OnenewpacName = response.data.groupingProList;
-          //       this.queryParams.price = 0;
-          //       this.OnenewpacName.forEach((item) => {
-          //         this.queryParams.price += item.proPrice;
-          //       });
-          //     });
-          //   }
-          // }
 
-          // if (this.newpacName.length != 0) {
-          //   this.$nextTick(() => {
-          //     if (this.forms.pacName) {
-          //       this.newpacName.forEach((item, index) => {
-          //         if (this.forms.pacName == item.pacName) {
-          //           this.$refs.tbone.toggleRowSelection(
-          //             this.newpacName[index],
-          //             true
-          //           );
-          //         }
-          //       });
-          //     } else {
-          //       this.$refs.tbone.toggleRowSelection(this.newpacName[0], true);
-          //     }
-          //   });
-          // } else {
-          //   this.$refs.tbone.clearSelection();
-          // }
         });
       } else {
         deptTreeSelect().then((response) => {
@@ -970,35 +1018,7 @@
               index +
               1;
           });
-          // if (this.groupList.length >= 1) {
-          //   if (this.groupList[0].id) {
-          //     getfzgrouping(this.groupList[0].id).then((response) => {
-          //       this.OnenewpacName = response.data.groupingProList;
-          //       this.queryParams.price = 0;
-          //       this.OnenewpacName.forEach((item) => {
-          //         this.queryParams.price += item.proPrice;
-          //       });
-          //     });
-          //   }
-          // }
-          // if (this.newpacName.length != 0) {
-          //   this.$nextTick(() => {
-          //     if (this.forms.pacName) {
-          //       this.newpacName.forEach((item, index) => {
-          //         if (this.forms.pacName == item.pacName) {
-          //           this.$refs.tbone.toggleRowSelection(
-          //             this.newpacName[index],
-          //             true
-          //           );
-          //         }
-          //       });
-          //     } else {
-          //       this.$refs.tbone.toggleRowSelection(this.newpacName[0], true);
-          //     }
-          //   });
-          // } else {
-          //   this.$refs.tbone.clearSelection();
-          // }
+
         });
       }
       getProjectList().then((response) => {
@@ -1057,7 +1077,6 @@
     // 鍗曢」閫夊畾鎸夐挳
     resetright() {
       this.queryParams.price = 0;
-      // this.dataLists=JSON.parse(JSON.stringify(this.dataList));
       this.dataList.forEach((item) => {
         this.$refs.tre.toggleRowSelection(item, false);
         this.OnenewpacName.push(item);
@@ -1086,35 +1105,20 @@
         this.queryParams.price += item.proPrice;
       });
     },
-    /*  submitrighr() {
-      if (this.pacList.length >= 1) {
-        this.openss = false;
-        this.forms.pacName = this.pacList[0].pacName;
-        this.forms.price = this.queryParams.price;
-        this.forms.ysPrice = (
-          this.forms.price *
-          (this.forms.limits / 10)
-        ).toFixed(2);
-      } else {
-        this.$modal.msgError("璇烽�夋嫨濂楅");
-      }
-    }, */
+
     submitrighr() {
       this.openOne = false;
-      // this.forms.pacName = this.pacList[0].pacName;
       this.forms.price = this.queryParams.price;
-      this.forms.ysPrice = (
-        this.forms.price *
-        (this.forms.limits / 10)
-      ).toFixed(2);
-      // console.log(this.groupingList, 555);
-
+      this.forms.ysPrice = this.queryParams.xianprice
+      this.forms.limits = this.youhui
       let mapList = [];
       this.OnenewpacName.forEach((item) => {
         mapList.push({
           proName: item.proName,
           proId: item.proId,
           proPrice: item.proPrice,
+          limits: item.limits,
+          ysPrice: item.ysPrice
         });
       });
 
@@ -1137,7 +1141,7 @@
         mapList: mapList,
         price: this.forms.price,
         ysPrice: this.forms.ysPrice,
-        id: this.groupList[0].id,
+        id: this.groupList[0] ? this.groupList[0].id : ''
       };
 
       // 鍙戦�佽姹備繚瀛樻暟鎹�
@@ -1145,11 +1149,11 @@
         if (res.code == 200) {
           this.beCurrent();
           this.forms.groupingName = "";
-          this.forms.sex = "";
+          this.forms.sex = "2";
           this.forms.pacName = "";
           this.forms.price = "";
           this.forms.ysPrice = "";
-          this.forms.payType = "";
+          this.forms.payType = "1";
         }
       });
 
@@ -1168,9 +1172,6 @@
       this.pacList.forEach((item) => {
         this.OnenewpacName = item.tjProjectList;
       });
-      // this.dataLists.forEach((item2) => {
-      //   this.OnenewpacName.push(item2);
-      // });
       this.OnenewpacName.forEach((item) => {
         this.queryParams.price += item.proPrice;
       });
@@ -1213,7 +1214,6 @@
 
     handleChange(selection) {
       this.groupList = selection;
-
       if (selection.length > 0) {
         this.groupList.forEach((item) => {
           this.forms.groupingName = item.groupingName;
@@ -1232,33 +1232,18 @@
         this.GroupUpdate();
         this.isSexDisabled = false; // 鎭㈠鎬у埆閫夋嫨妗嗕负鍙敤
       }
-
-      /* this.groupList.forEach((item) => {
-        this.forms.groupingName = item.groupingName;
-        this.forms.gtAge = item.gtAge;
-        this.forms.limits = item.limits;
-        this.forms.ltAge = item.ltAge;
-        this.forms.pacName = item.pacName;
-        this.forms.payType = item.payType;
-        this.forms.sex = item.sex;
-        this.forms.price = item.price;
-        this.forms.ysPrice = item.ysPrice;
-      });
-      if (selection.length > 1) {
-        let del_row = selection.shift();
-        this.$refs.tbs.toggleRowSelection(del_row, false); //璁剧疆杩欎竴琛屽彇娑堥�変腑
-      }
-      if(selection.length > 0) {
-        this.isSexDisabled = true;
-      }
-      else {
-        this.isSexDisabled = false;
-      } */
       this.groupIds = selection.map((item) => item.id);
       this.singlegg = !selection.length;
     },
     xiangmuWh() {
+      if (!this.forms.groupingName ||
+        !this.forms.sex ||
+        !this.forms.payType) {
+        this.$modal.msgError("璇峰厛濉啓鎵�鏈夊繀濉」!");
+        return; // Stop execution if any required field is empty
+      }
       this.openOne = true;
+
       this.title = "鍒嗙粍椤圭洰缁存姢";
       this.OnenewpacName = [];
       this.queryParams.price = 0;
@@ -1267,10 +1252,13 @@
         let id = this.groupList[0].id || '';
         getDetails(id).then((res) => {
           this.OnenewpacName = res.data.groupingProList;
+          this.queryParams.xianprice = this.OnenewpacName.reduce((sum, item) => {
+            return sum.plus(new Big(item.ysPrice || '0'));
+          }, new Big(0));
           this.OnenewpacName.forEach((item, index) => {
             this.queryParams.price += item.proPrice;
           });
-
+          this.youhui = (Math.floor((this.queryParams.xianprice / this.queryParams.price)*100)/100)*10
         });
       }
       // console.log(this.groupList[0].id, 9966);
@@ -1310,70 +1298,7 @@
         // console.log(this.Treedata,999888);
       });
     },
-    //淇濆瓨鍒嗙粍
-    /* handleGroup() {
-      if (this.selectionList.length <= 0) {
-        this.$modal.msgError("璇峰厛閫変腑閮ㄩ棬鎴栨坊鍔犳柊鐨勯儴闂�");
-      } else {
-        this.groupList.forEach((item) => {
-          if (item.id) {
-            this.id = item.id;
-          }
-        });
-        let mapList = [];
-        this.OnenewpacName.forEach((item) => {
-          mapList.push({
-            proName: item.proName,
-            proId: item.proId,
-            proPrice: item.proPrice,
-          });
-        });
-        if (this.id) {
-          var data = {
-            id: this.id,
-            groupingName: this.forms.groupingName,
-            gtAge: this.forms.gtAge,
-            limits: this.forms.limits,
-            ltAge: this.forms.ltAge,
-            pacName: this.forms.pacName,
-            payType: this.forms.payType,
-            sex: this.forms.sex,
-            dwDeptId: this.selectionList[0].id,
-            dwId: this.selectionList[0].dwId,
-            mapList: mapList,
-            price: this.forms.price,
-            ysPrice: this.forms.ysPrice,
-          };
-        } else {
-          var data = {
-            groupingName: this.forms.groupingName,
-            gtAge: this.forms.gtAge,
-            limits: this.forms.limits,
-            ltAge: this.forms.ltAge,
-            pacName: this.forms.pacName,
-            payType: this.forms.payType,
-            sex: this.forms.sex,
-            dwDeptId: this.selectionList[0].id,
-            dwId: this.selectionList[0].dwId,
-            mapList: mapList,
-            price: this.forms.price,
-            ysPrice: this.forms.ysPrice,
-          };
-        }
-        dwgrouping(data).then((res) => {
-          if (res.code == 200) {
-            this.beCurrent();
-            this.groupingList = res.data.updatedGroupingList; 
-            this.forms.groupingName = "";
-            this.forms.sex = "";
-            this.forms.pacName = "";
-            this.forms.price = "";
-            this.forms.ysPrice = "";
-            this.forms.payType = "";
-          }
-        });
-      }
-    }, */
+
     handleGroup() {
       // 濡傛灉娌℃湁閫変腑浠讳綍閮ㄩ棬锛堝嵆娌℃湁 selectionList锛夛紝鍙互鐩存帴浠� OnenewpacName 鑾峰彇鏁版嵁
       let mapList = [];
@@ -1385,16 +1310,8 @@
         });
       });
 
-      // 濡傛灉 selectionList 涓虹┖锛屼娇鐢� mapList 缁х画淇濆瓨
-      /* if (this.OnenewpacName.length === 0) {
-        this.$modal.msgError("璇峰厛閫変腑椤圭洰");
-        return; // 鎻愮ず鐢ㄦ埛閫変腑椤圭洰
-      } */
 
-      this.forms.ysPrice = (
-        this.forms.price *
-        (this.forms.limits / 10)
-      ).toFixed(2);
+   
 
       let data = {
         groupingName: this.forms.groupingName,
@@ -1417,30 +1334,30 @@
         if (res.code == 200) {
           this.beCurrent();
           this.forms.groupingName = "";
-          this.forms.sex = "";
+          this.forms.sex = "2";
           this.forms.pacName = "";
           this.forms.price = "";
           this.forms.ysPrice = "";
-          this.forms.payType = "";
+          this.forms.payType = "1";
         }
       });
     },
     // 淇敼鍒嗙粍
     GroupUpdate() {
-      // this.forms = {};
+      console.log(this.$refs.elTable)
+      this.$refs.tbs.clearSelection();
       this.forms = {
         groupingName: "",
         gtAge: "",
         limits: "",
         ltAge: "",
         pacName: "",
-        payType: "",
-        sex: "",
+        payType: "1",
+        sex: "2",
         price: "",
         ysPrice: "",
       };
 
-      // this.$refs.forms.resetFields();
     },
     beCurrent() {
       let data = {

--
Gitblit v1.8.0