qx
qx
1 天以前 e2ce0493b0978ed2706eed28555bd83ed329cb97
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;
          });
        });
      }