yxh
yxh
20 小时以前 9f3a102f55f8d2b270cfd018af154021ef92fc95
yxh
已修改1个文件
34 ■■■■ 文件已修改
src/views/project/travelexpenseapply/travelexpensedetail/index.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -2649,21 +2649,37 @@
      this.$refs["form"].validate(valid => {
        if (valid) {
          //票据文件处理
          const addnumber = new Decimal(this.rbPayees.reduce(
            (amount, item) => amount + Number(item.amount),
            0
          ));
          console.log(this.form.amountrequested,addnumber);
          //校验请款金额合计是否等于报销单金额
          if (this.form.amountrequested != addnumber) {
          // const addnumber = new Decimal(this.rbPayees.reduce((amount, item) => amount + Number(item.amount), 0 ));
          // console.log(this.form.amountrequested,addnumber);
          // //校验请款金额合计是否等于报销单金额
          // if (this.form.amountrequested != addnumber) {
          //   this.$message({
          //     message:
          //       "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!!",
          //     type: "warning"
          //   });
          //   return;
          // }
          // 1. 在 reduce 累加时,直接传入字符串给 Decimal,并使用 .plus() 方法进行累加
          // 初始值设为 new Decimal(0),确保全程高精度运算
          const addnumber = this.rbPayees.reduce((amount, item) => {
            return amount.plus(new Decimal(item.amount.toString()));
          }, new Decimal(0));
          console.log(this.form.amountrequested, addnumber.toString());
          // 2. 使用 Decimal 的 .eq() 方法进行严格相等比较
          // 这样既解决了精度问题,也解决了类型转换比较的问题
          if (!addnumber.eq(this.form.amountrequested)) {
            this.$message({
              message:
                "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!!",
              message: "报销请款表中合计金额不等于报销单的报销金额,请更正后再保存!!",
              type: "warning"
            });
            return;
          }
          const rbDetails = [...this.rbDetails];
          const rbPayees = [...this.rbPayees];
          //保存前校验数据