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 | 247 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 222 insertions(+), 25 deletions(-) diff --git a/src/views/hosp/order/index.vue b/src/views/hosp/order/index.vue index 0068a69..4f31111 100644 --- a/src/views/hosp/order/index.vue +++ b/src/views/hosp/order/index.vue @@ -75,7 +75,7 @@ v-hasPermi="['hosp:order:export']">瀵煎嚭</el-button> </el-col> - + <el-col :span="1.5"> <el-button type="primary" size="mini" @click="handleProject1" :disabled="single" v-hasPermi="['hosp:order:export']">琛ュ綍椤圭洰</el-button> @@ -97,16 +97,17 @@ <el-button type="primary" size="mini" @click="budadzd" :disabled="single" v-hasPermi="['hosp:order:export']">鎵撳嵃琛ュ綍鍗�</el-button> </el-col> - <el-col :span="1.5"> - <el-button style="background-color:#E6A23C;color:#fff" - size="mini" @click="handleRevoke" :disabled="single">鎾ら攢绛惧埌</el-button> + <el-col :span="1.5"> + <el-button style="background-color:#E6A23C;color:#fff" size="mini" @click="handleRevoke" + :disabled="single">鎾ら攢绛惧埌</el-button> </el-col> <el-col :span="1.5"> <el-button style="background-color:#E6A23C;color:#fff" size="mini" @click="ForceChexiao" :disabled="single" v-hasPermi="['qzcx']">寮哄埗鎾ら攢</el-button> </el-col> <el-col :span="1.5"> - <el-button style="background-color:#E6A23C;color:#fff" size="mini" @click="ResumeAppointment" :disabled="multiple">鎭㈠棰勭害</el-button> + <el-button style="background-color:#E6A23C;color:#fff" size="mini" @click="ResumeAppointment" + :disabled="multiple">鎭㈠棰勭害</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> @@ -197,8 +198,8 @@ <template slot-scope="scope"> <el-button size="mini" type="text" icon="el-icon-document" @click="handleUpdate(scope.row)" v-hasPermi="['hosp:order:edit']" title="璁㈠崟娴佹按"></el-button> - <el-button size="mini" type="text" icon="el-icon-edit" @click="handleProject(scope.row)" - v-hasPermi="['hosp:order:edit']" title="琛ュ綍椤圭洰"></el-button> + <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleProject(scope.row)" + v-hasPermi="['hosp:order:edit']" title="琛ュ綍椤圭洰"></el-button> --> <!-- <el-button type="text" size="mini" class="btn" icon="el-icon-download" title="涓嬭浇瀵艰瘖鍗�" @click=" daoZhenDan, LoadFileImg(scope.row); @@ -225,8 +226,8 @@ @click="viewReport(scope.row)" ></el-button> --> - <el-button type="text" size="mini" class="btn" icon="el-icon-download" title="瀵艰瘖鍗�" - @click="handleReport(scope.row)"></el-button> + <!-- <el-button type="text" size="mini" class="btn" icon="el-icon-download" title="瀵艰瘖鍗�" + @click="handleReport(scope.row)"></el-button> --> <!-- <button @click="downLoadFileImg(scope.row)">鏌ョ湅鎶ュ憡</button> --> </template> @@ -474,6 +475,7 @@ <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"> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDel(scope.row)" @@ -534,7 +536,7 @@ </el-dialog> <!-- 娣诲姞琛ュ綍椤圭洰 --> - <el-dialog :title="title" :visible.sync="Projectopen1" width="1100px" style="height: 860px" append-to-body + <el-dialog :title="title" :visible.sync="Projectopen1" width="1200px" style="height: 860px" append-to-body :close-on-click-modal="false"> <div class="box"> <div class="box1"> @@ -586,13 +588,26 @@ </div> <el-table :data="DataList3" border style="width: 100%; table-layout: fixed" height="560" :span-method="objectspanmethod"> - <el-table-column prop="propinName" label="妫�鏌ラ」鐩�" width="200px" :show-overflow-tooltip="true"> + <el-table-column prop="propinName" label="妫�鏌ラ」鐩�" width="160px" :show-overflow-tooltip="true"> </el-table-column> - <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="200px" :show-overflow-tooltip="true"> + <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="160px" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="sl" label="鏁伴噺" width="56px"> </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"> @@ -621,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> <!-- 浠樻绫诲瀷 --> @@ -785,6 +810,12 @@ </el-table-column> <el-table-column align="center" prop="price" label="璐圭敤鍚堣"> </el-table-column> + <el-table-column align="center" prop="sfzt" label="璐圭敤鐘舵��"> + <template v-slot="scope"> + <span v-if="scope.row.sfzt">{{ '宸茬粨璐�' }}</span> + <span v-else>{{ '鏈粨璐�' }}</span> + </template> + </el-table-column> </el-table> <h3>浠樻璇︽儏</h3> <el-table :data="bill" style="width: 100%; margin-top: 10px"> @@ -934,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"; @@ -1026,6 +1058,7 @@ }, TreedataList: [], discount: 10, + lastXianPrice:0, DataList: [], shijianlist: [], // 濂楅鎻愪氦鎸夐挳 @@ -1034,6 +1067,7 @@ activeName: "1", proIds: [], TotalPrice1: 0, + TotalPrice: 0, TotalPrice6: 0, TotalPrice7: 0, numberList: [], @@ -1342,8 +1376,6 @@ // 鍏堣皟鐢� getInfo 鑾峰彇 userId getInfo() .then((res) => { - console.log(res, 1111); - const dqdlr = res.user.userId; // 鑾峰彇 userId console.log("User ID:", dqdlr); const params = { viewNum, tjNumber, dqdlr }; // 灏� userId 鍔犲叆 params @@ -1364,7 +1396,6 @@ // 寮哄埗鎾ら攢鎸夐挳 ForceChexiao() { - const tjNum = this.tjnumbers; this.isLoading = true this.$confirm( @@ -1377,17 +1408,13 @@ customClass: "custom-message-box", } ) - .then(() => { - getForceChexiao(tjNum).then((res) => { - if (res.code == 200) { this.$modal.msgSuccess("鎾ら攢鎴愬姛"); this.isLoading = false this.getList(); } - }).catch(() => { console.log("鍔犺浇澶辫触") this.isLoading = false; @@ -1453,6 +1480,172 @@ // 涓嶈鎿嶄綔鎴愬姛杩樻槸澶辫触锛岄兘浼氭墽琛� }); + }, + + + 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) + row.nowPrice = result.toNumber(); + this.TotalPrice = this.tableData1.reduce((sum, item) => { + return sum.plus(new Big(item.nowPrice || "0")); + }, new Big(0)); + + this.discount = + (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; + }, + + + 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); + }, + + // 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(); + this.TotalPrice = this.DataList3.reduce((sum, item) => { + return sum.plus(new Big(item.nowPrice || "0")); + }, new Big(0)); + this.discount = + (Math.floor((this.TotalPrice / this.TotalPrice1) * 100) / 100) * 10; }, handleRevoke() { @@ -2015,8 +2208,8 @@ this.Datalists = []; this.TotalPrice1 = 0; this.filterText = "", - this.filterage = "", - this.orderId = row.orderId; + this.filterage = "", + this.orderId = row.orderId; this.cusId = row.tjCusIdCard; this.userId = row.userId; this.customer = { @@ -2097,8 +2290,8 @@ this.DataList3 = []; this.Datalists = []; this.filterText = "", - this.filterage = "", - this.TotalPrice1 = 0; + this.filterage = "", + this.TotalPrice1 = 0; this.orderId = this.ids; this.cusId = this.cusIds; this.userId = this.userIds; @@ -2209,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) { @@ -2237,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