qx
qx
5 天以前 5e6bca745ee55b6c71ccddcb753383c2c53e5958
src/views/hosp/order/index.vue
@@ -589,19 +589,33 @@
            </el-tabs>
          </div>
          <div class="grid-content bg-purple">
            <div style="text-align: center; margin-bottom: 10px; margin-top: 9px">
              已选项目列表
            </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="折扣" width="150px">
                <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">
@@ -629,14 +643,24 @@
            <el-input placeholder="原价" :value="TotalPrice1" disabled style="width: 90px"></el-input>
          </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>
          <!-- 付款类型 -->
@@ -1008,6 +1032,7 @@
      TotalPrice1: 0,
      TotalPrice6: 0,
      TotalPrice7: 0,
      TotalPrice: 0,
      numberList: [],
      dialogVisible: false,
      CheckBox: {},
@@ -2229,7 +2254,119 @@
        }
      }
    },
    handleDel(row) {
     handleManualChange(row) {
      this.updateProPrice(row);
    },
    updateProPrice(row) {
      if (row.proPrice == 0) {
        row.discount = 10
        return
      } else {
        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;
      }
    },
       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)).toFixed(2)
          });
        })
        .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) {
        console.log(2222333)
        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.DataList3, 11111)
          this.DataList3.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;
        });
    },
     handleDel(row) {
      this.Datalists.forEach((item, index) => {
        if (item.proId == row.proId) {
          this.Datalists.splice(index, 1);
@@ -2239,8 +2376,18 @@
          });
        }
      });
      this.DataList3.forEach((item, index) => {
        if (item.proId == row.proId) {
          let proParentId = item.proParentId
          // 获取当前选中的节点key
          const currentCheckedKeys = this.$refs.tree.getCheckedKeys();
          // 创建一个新数组,移除想要取消选中的节点key(这里假设是1)
          const newCheckedKeys = currentCheckedKeys.filter(key => key !== proParentId);
          // 使用setCheckedKeys方法更新选中状态
          this.$refs.tree.setCheckedKeys(newCheckedKeys);
          this.DataList3.splice(index, 1);
          this.marryalls = 0;
          this.DataList3.forEach((item1) => {
@@ -2248,21 +2395,36 @@
          });
        }
      });
      if (this.DataList3.length == 0) {
        this.discount = 10
        this.checkedkey = []
        this.$refs.tree.setCheckedKeys([])
        this.TotalPrice1 = this.marryalls;
        this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10))
      } else if (this.DataList3.length == 1) {
        this.discount = this.DataList3[0].discount
        this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10)).toFixed(2)
      }
      this.DataList.forEach((item, index) => {
        if (item.proId == row.proId) {
          this.DataList.splice(index, 1);
          this.TotalPrice1 = 0;
          this.TotalPrice = 0;
          this.DataList.forEach((item1) => {
            this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
            this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10))
          });
          if (this.marryalls != 0) {
            this.TotalPrice1 += this.marryalls;
            this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10))
          }
        }
      });
      this.TotalPrice1 = 0;
      this.TotalPrice = 0;
      this.DataList3.forEach((item) => {
        this.TotalPrice1 += item.proPrice;
        this.TotalPrice = new Big(this.TotalPrice1 * (this.discount / 10))
      });
    },
    /** 删除按钮操作 */