From cee2eca9c3e40b48c40a8fe80f938a777f03d463 Mon Sep 17 00:00:00 2001 From: wwl <xchao828@163.com> Date: 星期二, 10 六月 2025 17:57:11 +0800 Subject: [PATCH] 1 --- src/views/system/package/index.vue | 817 +++++++++++++++------------------------------------------- 1 files changed, 212 insertions(+), 605 deletions(-) diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue index 58136e7..af9f3af 100644 --- a/src/views/system/package/index.vue +++ b/src/views/system/package/index.vue @@ -10,7 +10,7 @@ <el-form-item label="浣撴绫诲埆" prop="tjCategory"> <el-select v-model="queryParams.tjCategory" placeholder="璇烽�夋嫨鐘舵��" style="width: 200px" filterable clearable> <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.id" :label="dict.label" - :value="dict.value"></el-option> + :value="dict.value"></el-option> </el-select> </el-form-item> <el-form-item> @@ -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> @@ -162,7 +162,7 @@ style="width: 150px" @change="shangpin" filterable - clearable + clearablez > <el-option v-for="item in categoryList" @@ -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)" /> + type="number" :debounce="3000" min="0"/> </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"> @@ -364,7 +364,7 @@ </template> </el-table-column>--> </el-table> - <!-- <h3 style="font-weight: 600">鍚堣锛歿{ pics }}鍏�</h3> --> + <h4 style="font-weight: 600;padding-left:20px">涓�鍏遍�変腑{{DataList.length}}椤癸紝鍚堣锛歿{ form.xianprice }}鍏�</h4> </div> </el-col> </el-row> @@ -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,97 +479,74 @@ pageSize: 30, nr: "", }, - // 琛ㄥ崟鍙傛暟 form: { - xianprice: null, // 浼樻儬浠� - counterPrice: null, //鍘熶环 + xianprice: null, + counterPrice: null, limits: 10, }, forms: {}, youhui: 10, - // 琛ㄥ崟鏍¢獙 + initializing: true, // 鍒濆鍖栨爣蹇� + debounceTimer: null, 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" }, - ], + }, }; }, - // watch: { - // filterText(val) { - // this.$refs.tree.filter(val); - // }, - // }, - created() { this.getList(); this.getKeyword(); this.getCategory(); }, + methods: { + debounceNumberChange(currentValue, oldValue) { + clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.numberChange(currentValue, oldValue); + }, 300); + }, + + updateProPrice(row) { + const proPrice = new Big(row.priceOrd); + const limits = new Big(row.limits); + 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; + }, + calculateDiscount(row) { + if (row.limits > 10) { + row.limits = 10; + } else if (row.limits < 0) { + row.limits = 0; + } + this.updateProPrice(row); + }, toggleCollapse() { - this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫�� + this.isCollapsed = !this.isCollapsed; }, 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; - } + return data.proName.indexOf(value) !== -1 || 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; + 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) => { @@ -608,27 +555,20 @@ }, sel(val) { let id = val; - this.keys = ""; - id.forEach((item) => { - this.keys += item + ","; - }); + this.keys = id.join(","); }, - /** 鏌ヨ绫荤洰鍒楄〃 */ getCategory() { this.loading = true; listCategory(this.queryParams).then((response) => { this.categoryList = response.rows; - console.log(this.categoryList, 9988); }); }, - shangpin(vals) { }, - // 鍙栨秷鎸夐挳 + shangpin(vals) {}, cancel() { this.open = false; this.Seachopen = false; this.reset(); }, - // 琛ㄥ崟閲嶇疆 reset() { this.form = { pacId: null, @@ -643,16 +583,17 @@ allProName: null, priceNow: null, proId: null, - // pacStatus: "鍚敤", + xianprice: null, + counterPrice: null, + limits: 10, }; + this.initializing = true; this.resetForm("form"); }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { this.queryParams.pageNum = 1; this.getList(); }, - handlePackage() { this.$refs.aaa.open = true; this.$refs.aaa.getList(); @@ -666,54 +607,30 @@ this.form.retailPrice = param1[0].price; } }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { this.resetForm("queryForm"); this.handleQuery(); }, - // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { - if (!selection[0]) { - return; - } + 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, - // }); - // } + this.youhui = 10 }, - - // 鏄惁鍚敤 handleStatusChange(row) { let data = { pacId: row.pacId, @@ -721,78 +638,70 @@ }; let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤"; this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵") - .then(function () { - return updateStatus(data); - }) + .then(() => updateStatus(data)) .then(() => { this.msgSuccess(text + "鎴愬姛"); }) - .catch(function () { + .catch(() => { row.pacStatus = row.pacStatus === "0" ? "0" : "1"; }); }, - handleUp() { + this.reset(); 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]); }); - console.log(this.form, 2233); - - 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.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) => { - // this.form = response.data; - console.log(this.form, 445); - Object.keys(response.data).forEach((key) => { + const data = response.data || {}; + Object.keys(data).forEach((key) => { this.$set(this.form, key, response.data[key]); }); - this.lastXianPrice = this.form.xianprice - 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.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(); }); - - // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級 - this.getDataList(); + }).catch((error) => { + this.loading = false; + this.$message.error("鍔犺浇鏁版嵁澶辫触"); }); }, - - // 鏂板琛� addmembers() { if (this.form.pacName) { if (!this.form.tjProjectList) { @@ -804,7 +713,6 @@ proPrice: "", priceNow: "", proId: "", - Selection, }); } else { this.form.tjProjectList.push({ @@ -814,7 +722,6 @@ proPrice: "", priceNow: "", proId: "", - Selection, }); } } else { @@ -822,22 +729,15 @@ } this.$forceUpdate(); }, - - // 鍒犻櫎琛� Delete(index) { - if (this.form.tjProjectList.length == 0) { - this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", { - confirmButtonText: "纭畾", - }); + 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); @@ -851,86 +751,29 @@ }, getSelectValue(val) { this.form.tjProjectList.forEach((formitem) => { - if (formitem.proName == val) { + if (formitem.proName === val) { formitem.allSonProName = ""; this.allList.find((item) => { - if (item.proName == val) { + 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 - ) { + 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: "纭畾", - 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]; @@ -961,101 +804,29 @@ 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.initializing = false; }); + }); 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 (this.initializing) { + return; // 鍒濆鍖栨椂涓嶅鐞� + } if (checked) { - // 濡傛灉宸查�夊垪琛ㄤ腑涓嶅瓨鍦ㄦ椤圭洰锛屽垯娣诲姞 if (!this.DataList.some((item) => item.proId === data.proId)) { this.DataList.push({ proId: data.proId, @@ -1065,61 +836,103 @@ priceNow: data.proPrice, }); } - // 娣诲姞鍒� checkedNodes 鏁扮粍 if (!this.checkedNodes.includes(data.proId)) { this.checkedNodes.push(data.proId); } + this.updateTotalPrice(); } 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(); } - - // 鏇存柊浼樻儬浠峰拰鎬讳环 - 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; + /* numberChangeXianPrice(currentValue, oldValue) { + if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) return; + clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .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) { + this.DataList.splice(j, 1); + j--; } + } + } + return this.DataList; + }, + handleCurrentChecked1(data, checked, checkedNodes) { + 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 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); + this.spliceData(); + this.TotalPrice1 = this.pics; + } + }, + handleDeletes(row) { + this.DataList = this.DataList.filter((item) => item.proParentId !== row.proParentId); + this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); + }, + submitForm() { + // 妫�鏌ョ幇浠锋槸鍚﹀彂鐢熷彉鍖� + if (this.form.xianprice !== this.lastXianPrice) { + this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(() => { + // 鏇存柊鎵�鏈夊瓙椤圭殑鎶樻墸 + this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; let totalYsprice = new Big(0); this.DataList.forEach((item) => { item.limits = this.youhui; @@ -1129,107 +942,36 @@ 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 - ); + 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; + + // 淇濆瓨鏁版嵁 + return this.saveData(); + }).catch(() => { + // 鐢ㄦ埛鍙栨秷鎿嶄綔锛屾仮澶嶅師鏉ョ殑鐜颁环 + this.form.xianprice = this.lastXianPrice; }); - }, - 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; - }); + } else { + // 鐜颁环娌℃湁鍙樺寲锛岀洿鎺ヤ繚瀛� + this.saveData(); } }, - - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - 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() { + // 鏂板涓�涓柟娉曞鐞嗕繚瀛橀�昏緫 + saveData() { 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, @@ -1243,183 +985,48 @@ pacName: this.form.pacName, limits: this.form.limits, pacStatus: this.form.pacStatus, - packageProjects: packageProjects, + 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); + + return saveOreditTjPacNew(data).then((res) => { 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