| | |
| | | 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]; |
| | | //保存前校验数据 |