yxh
yxh
18 小时以前 9f3a102f55f8d2b270cfd018af154021ef92fc95
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -1906,13 +1906,27 @@
        const index = this.getIndexInArray(this.fileListto, row);
        this.fileListto.splice(index, 1);
        console.log(this.rbDetails[this.atpresent].annexfilesList);
        indexvalue = this.rbDetails[this.atpresent].annexfilesList.find(
          (item, index) => {
            return item.name == row.name;
          }
        );
        console.log(indexvalue, "删除索引");
        this.rbDetails[this.atpresent].annexfilesList.splice(indexvalue, 1);
        // indexvalue = this.rbDetails[this.atpresent].annexfilesList.find(
        //   (item, index) => {
        //     return item.name == row.name;
        //   }
        // );
        // console.log(indexvalue, "删除索引");
        // this.rbDetails[this.atpresent].annexfilesList.splice(indexvalue, 1);
        const targetIndex = this.rbDetails[
          this.atpresent
        ].annexfilesList.findIndex(item => {
          return item.name === row.name; // 建议使用严格相等 ===
        });
        console.log(targetIndex, "删除索引"); // 现在打印的是索引号,例如 0, 1, 2...
        if (targetIndex > -1) {
          // 确保找到了元素
          this.rbDetails[this.atpresent].annexfilesList.splice(targetIndex, 1);
          console.log("删除成功");
        } else {
          console.log("未找到对应项目,无法删除");
        }
      } else {
        const indexlist = this.getIndexInArray(
          this.invoicepdfimgsrcList,
@@ -1922,13 +1936,23 @@
        const index = this.getIndexInArray(this.invoicefileListto, row);
        this.invoicefileListto.splice(index, 1);
        console.log(this.rbDetails[this.atpresent].invoicefilesList);
        indexvalue = this.rbDetails[this.atpresent].invoicefilesList.find(
          (item, index) => {
            return item.name == row.name;
          }
        );
        console.log(indexvalue, "删除索引");
        this.rbDetails[this.atpresent].invoicefilesList.splice(indexvalue, 1);
        const targetIndex = this.rbDetails[
          this.atpresent
        ].invoicefilesList.findIndex(item => {
          return item.name === row.name; // 建议使用严格相等 ===
        });
        console.log(targetIndex, "删除索引"); // 现在打印的是索引号,例如 0, 1, 2...
        if (targetIndex > -1) {
          // 确保找到了元素
          this.rbDetails[this.atpresent].invoicefilesList.splice(
            targetIndex,
            1
          );
          console.log("删除成功");
        } else {
          console.log("未找到对应项目,无法删除");
        }
      }
    },
    // 点击上移
@@ -2625,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];
          //保存前校验数据