| | |
| | | <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" /> |
| | | </el-form-item> --> |
| | | |
| | | <el-form-item label="优惠价" prop="ysPrice"> |
| | | <el-input v-model="forms.ysPrice" placeholder="请输入应收" style="width: 120px" /> |
| | | </el-form-item> |
| | |
| | | <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" |
| | | :min="0" @change="numberChange"></el-input-number> |
| | | <el-input-number ref="inputNumber" style="width: 150px" v-model="youhui" :precision="1" :step="0.1" |
| | | :min="0" :max="20" @change="debounceNumberChange" :debounce="3000"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="现价"> |
| | | <el-input ref="inputName" v-model="queryParams.xianprice" placeholder="合计" clearable |
| | |
| | | </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" width="486"> |
| | | <el-table-column label="项目名称" align="center" prop="proName" width="410"> |
| | | |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.proName }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="原价" align="center" prop="proPrice" width="85"></el-table-column> |
| | | <el-table-column label="折扣" width="85"> |
| | | <el-table-column label="折扣" width="151"> |
| | | <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> |
| | | <el-input-number v-model.number="scope.row.limits" @input="validateDiscount(scope.row)" |
| | | placeholder="输入折扣" size="small" type="number" :min="0" :step="0.1" :precision="1" :max="20"> |
| | | </el-input-number> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="现价" align="center" prop="ysPrice" width="85"></el-table-column> |
| | |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | changeXianjia() { |
| | | // 原始折扣率计算 |
| | | |
| | | |
| | | this.youhui = (Math.floor((this.queryParams.xianprice / this.queryParams.price) * 100) / 100) * 10 |
| | | |
| | | }, |
| | | validateDiscount(row) { |
| | | if (row.limits > 10) { |
| | | row.limits = 10; // 强制将值设置为最大值 |
| | |
| | | this.updateProPrice(row); // 更新价格或其他逻辑 |
| | | }, |
| | | updateProPrice(row) { |
| | | |
| | | console.log('1234') |
| | | const proPrice = new Big(row.proPrice); |
| | | |
| | | const limits = new Big(row.limits); |
| | |
| | | }, new Big(0)).toNumber(); |
| | | this.youhui = (Math.floor((this.queryParams.xianprice / this.queryParams.price) * 100) / 100) * 10 |
| | | }, |
| | | debounceNumberChange(currentValue, oldValue) { |
| | | clearTimeout(this.debounceTimer); |
| | | this.debounceTimer = setTimeout(() => { |
| | | this.numberChange(currentValue, oldValue); |
| | | }, 300); |
| | | }, |
| | | changeXianjia() { |
| | | // 原始折扣率计算 |
| | | |
| | | |
| | | if (this.queryParams.price !== 0) { |
| | | this.youhui = (Math.floor((this.queryParams.xianprice / this.queryParams.price) * 100) / 100) * 10; |
| | | } |
| | | |
| | | }, |
| | | |
| | | getList() { |
| | | this.$nextTick(() => { |
| | | this.$refs.inputName.focus(); |
| | |
| | | type: "warning", |
| | | }) |
| | | .then(() => { |
| | | // 确保修改折扣的值 |
| | | this.youhui = currentValue; |
| | | // 如果折扣小于最小折扣值,修正折扣 |
| | | if (this.youhui < this.getInfodis) { |
| | | this.youhui = this.getInfodis; |
| | | } |
| | | |
| | | let totalYsprice = new Big(0); // 初始化总 ysprice |
| | | |
| | | // 遍历每个项目,更新每个子项的价格 |
| | | this.OnenewpacName.forEach((item) => { |
| | | item.limits = this.youhui; |
| | | const proPrice = new Big(item.proPrice); |
| | |
| | | item.ysPrice = result.toNumber(); |
| | | totalYsprice = totalYsprice.plus(new Big(item.ysPrice)); |
| | | }); |
| | | |
| | | // 计算完所有 ysPrice 后进行调整 |
| | | if (totalYsprice.toNumber() !== this.queryParams.xianprice) { |
| | | const diff = this.queryParams.xianprice - totalYsprice.toNumber(); |
| | | // 如果总的 ysPrice 和查询参数中的 xianprice 不一致,进行调整 |
| | | if (!totalYsprice.eq(this.queryParams.xianprice)) { |
| | | const diff = new Big(this.queryParams.xianprice).minus(totalYsprice); |
| | | // 如果 OnenewpacName 数组不为空,调整最后一项的 ysPrice |
| | | if (this.OnenewpacName.length > 0) { |
| | | const lastItem = this.OnenewpacName[this.OnenewpacName.length - 1]; |
| | | lastItem.ysPrice += diff; |
| | | // 调整后更新 queryParams.xianprice |
| | | this.queryParams.xianprice = totalYsprice.plus(diff).toNumber(); |
| | | const newYsPrice = new Big(lastItem.ysPrice).plus(diff).toNumber(); |
| | | // 使用 splice 替换最后一项,确保更新触发视图更新 |
| | | console.log("hhh"); |
| | | |
| | | this.$set(this.OnenewpacName[this.OnenewpacName.length - 1], 'ysPrice', newYsPrice); |
| | | |
| | | } |
| | | } |
| | | }) |
| | | .catch(() => { |
| | | // 如果取消修改,恢复原有的优惠值 |
| | | this.youhui = oldValue; |
| | | }); |
| | | }, |
| | | |
| | | |
| | | changegroupingName() { |
| | | if (this.selectionList.length <= 0) { |
| | | this.$modal.msgError("请先选中部门或添加新的部门"); |
| | |
| | | const existingItem = this.OnenewpacName.find(existing => existing.proId === item.proId); |
| | | if (!existingItem) { |
| | | newItemsToAdd.push(item); // 如果不存在相同项目,则添加到新数组 |
| | | this.updateProPrice(item); // 更新单个项目的价格 |
| | | this.updateProPrice(item); |
| | | } |
| | | }); |
| | | |