| | |
| | | <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 |
| | |
| | | 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, |
| | |
| | | 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: "", |
| | |
| | | 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, |
| | |
| | | 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: { |
| | | debounceNumberChange(currentValue, oldValue) { |
| | | clearTimeout(this.debounceTimer); |
| | | this.debounceTimer = setTimeout(() => { |
| | | this.numberChange(currentValue, oldValue); |
| | | }, 300); |
| | | }, |
| | | 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)).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)); |
| | | 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; // 点击按钮时切换isCollapsed的值 |
| | | 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) => { |
| | |
| | | }, |
| | | 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) { }, |
| | | // 取消按钮 |
| | | cancel() { |
| | | this.open = false; |
| | | this.Seachopen = false; |
| | | this.reset(); |
| | | }, |
| | | // 表单重置 |
| | | reset() { |
| | | this.form = { |
| | | pacId: null, |
| | |
| | | allProName: null, |
| | | priceNow: null, |
| | | proId: null, |
| | | // pacStatus: "启用", |
| | | 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.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.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, |
| | |
| | | }; |
| | | 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.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.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.reset(); |
| | | this.title = "体检套餐信息维护"; |
| | | this.open = true; |
| | | this.loading = true; |
| | | |
| | | getPacInFo(row.pacId).then((response) => { |
| | | const data = response.data || {}; |
| | | Object.keys(data).forEach((key) => { |
| | |
| | | this.DataList = data.packageProjects || []; |
| | | this.checkedkey = this.DataList.map(item => item.proId || ''); |
| | | this.checkedListkey = [...this.checkedkey]; |
| | | this.checkedNodes = [...this.checkedkey]; // 同步 checkedNodes |
| | | |
| | | this.checkedNodes = [...this.checkedkey]; |
| | | return this.getDataList(); |
| | | }).then(() => { |
| | | this.loading = false; |
| | | this.$nextTick(() => { |
| | | this.$refs.form.validate(); // 触发校验 |
| | | this.$refs.form.validate(); |
| | | }); |
| | | }).catch((error) => { |
| | | this.loading = false; |
| | |
| | | console.error(error); |
| | | }); |
| | | }, |
| | | // 新增行 |
| | | addmembers() { |
| | | if (this.form.pacName) { |
| | | if (!this.form.tjProjectList) { |
| | |
| | | proPrice: "", |
| | | priceNow: "", |
| | | proId: "", |
| | | Selection, |
| | | }); |
| | | } else { |
| | | this.form.tjProjectList.push({ |
| | |
| | | proPrice: "", |
| | | priceNow: "", |
| | | proId: "", |
| | | Selection, |
| | | }); |
| | | } |
| | | } else { |
| | |
| | | } |
| | | 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); |
| | |
| | | }, |
| | | 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]; |
| | |
| | | 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, |
| | |
| | | priceNow: data.proPrice, |
| | | }); |
| | | } |
| | | // 添加到 checkedNodes 数组 |
| | | if (!this.checkedNodes.includes(data.proId)) { |
| | | this.checkedNodes.push(data.proId); |
| | | } |
| | | } else { |
| | | // 取消选中时,从DataList中移除 |
| | | 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; |
| | | } |
| | | if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) return; |
| | | clearTimeout(this.debounceTimer); |
| | | this.debounceTimer = setTimeout(() => { |
| | | this.$confirm("确定修改所有子项的折扣吗?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | }) |
| | | .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 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; |
| | | }); |
| | | }, 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) { |
| | | //如果第一个等于第二个,splice方法删除第二个 |
| | | if (this.DataList[i].proId === this.DataList[j].proId) { |
| | | 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) { |
| | | 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, |
| | |
| | | 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(() => { }); |
| | | }, |
| | | |
| | | /** 分配套餐内项目操作 */ |
| | | 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; |