| | |
| | | <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" /> |
| | |
| | | <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> |
| | | |
| | |
| | | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | <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"> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | import Big from 'big.js'; |
| | | import { |
| | | listComp, |
| | | getComp, |
| | | delComp, |
| | | addComp, |
| | | getfzgrouping, |
| | | updateComp, |
| | | addDept, |
| | | Deptlist, |
| | |
| | | enName: null, |
| | | code: null, |
| | | price: null, |
| | | xianprice: null, |
| | | limits: null |
| | | }, |
| | | id: "", |
| | | // 表单参数 |
| | |
| | | gtAge: 100, |
| | | groupingName: "", |
| | | pacName: "", |
| | | payType: "", |
| | | sex: "", |
| | | payType: "1", |
| | | sex: "2", |
| | | }, |
| | | sfzs: '', |
| | | youhui: '', |
| | | // 表单校验 |
| | | rules: { |
| | | cnName: [{ required: true, validator: checkPhoneNum, trigger: "blur" }], |
| | |
| | | { 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" }, |
| | |
| | | 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(); |
| | |
| | | cancell() { |
| | | this.openss = false; |
| | | this.openOne = false; |
| | | this.reset(); |
| | | // this.reset(); |
| | | }, |
| | | // 表单重置 |
| | | reset() { |
| | |
| | | (this.forms.limits / 10) |
| | | ).toFixed(2); |
| | | } */ |
| | | this.forms.ysPrice = ( |
| | | this.forms.price * |
| | | (this.forms.limits / 10) |
| | | ).toFixed(2); |
| | | |
| | | }, |
| | | |
| | | changegroupingName() { |
| | |
| | | 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) => { |
| | |
| | | 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) => { |
| | |
| | | // 单项选定按钮 |
| | | 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); |
| | |
| | | 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 |
| | | }); |
| | | }); |
| | | |
| | |
| | | mapList: mapList, |
| | | price: this.forms.price, |
| | | ysPrice: this.forms.ysPrice, |
| | | id: this.groupList[0].id, |
| | | id: this.groupList[0] ? this.groupList[0].id : '' |
| | | }; |
| | | |
| | | // 发送请求保存数据 |
| | |
| | | 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"; |
| | | } |
| | | }); |
| | | |
| | |
| | | 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; |
| | | }); |
| | |
| | | |
| | | handleChange(selection) { |
| | | this.groupList = selection; |
| | | |
| | | if (selection.length > 0) { |
| | | this.groupList.forEach((item) => { |
| | | this.forms.groupingName = item.groupingName; |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | // 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 = []; |
| | |
| | | }); |
| | | }); |
| | | |
| | | // 如果 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, |
| | |
| | | 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 = { |