From e2ce0493b0978ed2706eed28555bd83ed329cb97 Mon Sep 17 00:00:00 2001 From: qx <1084500556@qq.com> Date: 星期四, 24 七月 2025 11:36:12 +0800 Subject: [PATCH] qx --- src/views/hosp/order/index.vue | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 172 insertions(+), 7 deletions(-) diff --git a/src/views/hosp/order/index.vue b/src/views/hosp/order/index.vue index add60fd..4f31111 100644 --- a/src/views/hosp/order/index.vue +++ b/src/views/hosp/order/index.vue @@ -474,7 +474,7 @@ </el-table-column> <el-table-column prop="proPrice" label="鍘熶环" width="56px"> </el-table-column> - + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="50px"> <template slot-scope="scope"> @@ -596,6 +596,19 @@ </el-table-column> <el-table-column prop="proPrice" label="鍘熶环" width="56px"> </el-table-column> + <el-table-column label="鎶樻墸"> + <template slot-scope="scope"> + <!-- @input="validateDiscount(scope.row)" --> + <el-input-number v-model.number="scope.row.discount" @change="handleManualChange(scope.row)" + placeholder="杈撳叆鎶樻墸" size="small" type="number" :precision="1" :step="0.1" :max="10" :min="0"> + </el-input-number> + </template> + </el-table-column> + <el-table-column prop="nowPrice" label="鐜颁环"> + <template slot-scope="scope"> + {{ scope.row.nowPrice ? scope.row.nowPrice.toFixed(2) : scope.row.nowPrice }} + </template> + </el-table-column> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="50px"> <template slot-scope="scope"> @@ -623,13 +636,23 @@ </el-form-item> <!-- 鎶樻墸璁惧畾 --> - <el-form-item label="鎶樻墸" style="display: flex"> + <!-- <el-form-item label="鎶樻墸" style="display: flex"> <el-input style="width: 90px" type="number" v-model="discount" :value="discount"></el-input> + </el-form-item> --> + + <el-form-item label="鎶樻墸"> + <!-- {{ discount }} --> + <el-input-number ref="inputNumber" style="width: 150px" v-model="discount" :precision="1" :step="0.1" + :max="10" :min="0" @change="debounceNumberChange"></el-input-number> </el-form-item> <!-- 搴斾粯閲戦 --> - <el-form-item label="搴斾粯" style="display: flex"> + <!-- <el-form-item label="搴斾粯" style="display: flex"> <el-input placeholder="搴斾粯閲戦" :value="TotalPrice1 * (discount / 10)" style="width: 90px"></el-input> + </el-form-item> --> + <el-form-item label="搴斾粯"> + <el-input placeholder="搴斾粯閲戦" v-model="TotalPrice" style="width: 206px" @input="changeXianjia" + @blur="numberChangeXianPrice(discount, discount)" /> </el-form-item> <!-- 浠樻绫诲瀷 --> @@ -942,6 +965,7 @@ getForceChexiao, } from "@/api/hosp/order"; import moment from "moment"; +import Big from "big.js"; import { getZhList, getlistByZhId } from "@/api/system/package"; import { getwater } from "@/api/hosp/customer"; import { getInfo } from "@/api/login"; @@ -1034,6 +1058,7 @@ }, TreedataList: [], discount: 10, + lastXianPrice:0, DataList: [], shijianlist: [], // 濂楅鎻愪氦鎸夐挳 @@ -1042,6 +1067,7 @@ activeName: "1", proIds: [], TotalPrice1: 0, + TotalPrice: 0, TotalPrice6: 0, TotalPrice7: 0, numberList: [], @@ -1457,7 +1483,8 @@ }, - updateProPrice(row) { + updateProPrice(row) { + console.log(row) const ordPrice = new Big(row.ordPrice); const discount = new Big(row.discount); const result = ordPrice.times(discount.div(10)); // ordPrice * (discount / 10) @@ -1471,12 +1498,146 @@ }, - handleManualChange(row) { + 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.discount = currentValue; + this.DataList3.forEach((item) => { + item.discount = this.discount; + const ordPrice = new Big(item.proPrice.toString()); + const discount = new Big(item.discount.toString()); + const result = ordPrice.times(discount.div(10)); + item.nowPrice = result.toNumber(); + // this.TotalPrice = this.DataList3.reduce((sum, item) => { + // return sum.plus(new Big(item.nowPrice || "0")); + // }, new Big(0)); + this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10)) + }); + }) + .catch(() => { + this.discount = oldValue; + }); + }, + + changeXianjia() { + // 鍘熷鎶樻墸鐜囪绠� + if (this.TotalPrice1 !== 0) { + this.discount = + (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; + } + }, + numberChangeXianPrice(currentValue, oldValue) { + // 濡傛灉鐜颁环娌℃湁鍙樺寲锛岀洿鎺ヨ繑鍥� + if (this.TotalPrice === this.lastXianPrice || !this.TotalPrice) { + return; + } + this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + this.discount = currentValue; + // if (this.discount < this.getInfodis) { + // this.discount = this.getInfodis; + // } + let totalYsprice = new Big(0); + console.log(this.tableData3, 11111) + this.tableData3.forEach((item) => { + item.discount = this.discount; + const ordPrice = new Big(item.proPrice); + const discount = new Big(item.discount); + const result = ordPrice.times(discount.div(10)); + item.nowPrice = result.toNumber(); + totalYsprice = totalYsprice.plus(new Big(item.nowPrice)); + }); + if (!totalYsprice.eq(this.TotalPrice)) { + const diff = new Big(this.TotalPrice).minus(totalYsprice); + if (this.tableData1.length > 0) { + const lastItem = this.tableData3[this.tableData3.length - 1]; + const newYsPrice = new Big(lastItem.nowPrice) + .plus(diff) + .toNumber(); + // console.log( + // "hhh", + // this.tableData1[this.tableData1.length - 1].nowPrice, + // newYsPrice + // ); + this.$set( + this.tableData3[this.tableData3.length - 1], + "nowPrice", + newYsPrice + ); + } + } + this.lastXianPrice = this.TotalPrice; + }) + .catch(() => { + this.discount = oldValue; + }); + }, + handleManualChange(row) { this.updateProPrice(row); }, - updateProPrice(row) { - const ordPrice = new Big(row.ordPrice); + // validateDiscount(row) { + // if ( + // this.TotalPrice !== undefined && + // !isNaN(this.TotalPrice) && + // this.TotalPrice !== this.lastXianPrice + // ) { + // this.updateProPrice1(row); + // this.lastXianPrice = this.TotalPrice; + // } + // }, + // updateProPrice1(row) { + // console.log( row,2222) + // const ordPrice = new Big(row.proPrice); + // const discount = new Big(row.discount); + // const result = ordPrice.times(discount.div(10)); + // row.nowPrice = result.toNumber(); + // const totalYsPrice = this.tableData1.reduce((sum, item) => { + // return sum.plus(new Big(item.nowPrice || "0")); + // }, new Big(0)); + // const totalYsPriceNum = totalYsPrice.toNumber(); + // if (this.TotalPrice !== undefined && !isNaN(this.TotalPrice)) { + // const xianPrice = new Big(this.TotalPrice); + // const diff = xianPrice.minus(totalYsPriceNum); + // if (!diff.eq(0) && this.tableData1.length > 0) { + // const lastItem = this.tableData1[this.tableData1.length - 1]; + // const newYsPrice = new Big(lastItem.nowPrice).plus(diff).toNumber(); + // this.$set( + // this.tableData1[this.tableData1.length - 1], + // "nowPrice", + // newYsPrice + // ); + // } + // } + + // Update youhui calculation + // if (this.TotalPrice1 !== 0 && this.TotalPrice !== 0) { + // this.discount = + // (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; + // } else { + // this.discount = 0; + // } + // }, + + updateProPrice(row) { + console.log(row, 55555) + const ordPrice = new Big(row.proPrice); const discount = new Big(row.discount); const result = ordPrice.times(discount.div(10)); // ordPrice * (discount / 10) row.nowPrice = result.toNumber(); @@ -2241,6 +2402,8 @@ this.TotalPrice1 = 0; this.DataList3.forEach((item) => { this.TotalPrice1 += item.proPrice * item.sl; + this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10)) + this.lastXianPrice = this.TotalPrice; }); }); } else if (checked === false) { @@ -2269,6 +2432,8 @@ this.TotalPrice1 = 0; this.DataList3.forEach((item) => { this.TotalPrice1 += item.proPrice * item.sl; + this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10)) + this.lastXianPrice = this.TotalPrice; }); }); } -- Gitblit v1.8.0