11
WXL
2024-07-11 f06564ebbd94e8cca0874604217dfd03f60aa245
src/views/project/fund/performancedetails/index.vue
@@ -141,12 +141,15 @@
            max-height="800"
            border
            highlight-current-row
            :summary-method="getSummaries"
            show-summary
          >
            <el-table-column
              prop="orderno"
              align="center"
              label="序号"
              width="88"
              fixed
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
@@ -157,6 +160,7 @@
              align="center"
              label="服务类型"
              width="200"
              fixed
            >
              <template slot-scope="scope">
                <el-select
@@ -194,8 +198,28 @@
                    :value="dict.id"
                  ></el-option>
                </el-select>
                <!-- <el-cascader
                  v-model="scope.row.applytype"
                  :options="aaoptions"
                  :show-all-levels="false"
                ></el-cascader> -->
              </template>
            </el-table-column>
            <!-- <el-table-column
              prop="jxrq"
              align="center"
              label="绩效日期"
              width="260"
            >
              <template slot-scope="scope">
                <el-date-picker
                  v-model="scope.row.jxrq"
                  type="date"
                  placeholder="选择日期"
                >
                </el-date-picker>
              </template>
            </el-table-column> -->
            <el-table-column
              prop="amount"
              align="center"
@@ -206,11 +230,21 @@
                <el-input
                  v-model="scope.row.amount"
                  placeholder="税前金额"
                  @blur="
                    val => {
                      calculateTax(scope.row, 'A');
                    }
                  "
                  @blur="chargeSum"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="taxamount"
              align="center"
              label="扣税金额"
              width="120"
            >
              <template slot-scope="scope">
                <el-input
                  @blur="chargeSum"
                  v-model="scope.row.taxamount"
                  placeholder="扣税金额"
                />
              </template>
            </el-table-column>
@@ -224,28 +258,11 @@
                <el-input
                  v-model="scope.row.taxedamount"
                  placeholder="税后金额"
                  @blur="
                    val => {
                      calculateTax(scope.row, 'B');
                    }
                  "
                  @blur="queenchargeSum"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="taxamount"
              align="center"
              label="扣税金额"
              width="120"
            >
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.taxamount"
                  placeholder="扣税金额"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="beneficiaryname"
              align="center"
@@ -969,7 +986,52 @@
      //行记录的费用类型数组
      rowfeeItemTypes: [{ label: "管理成本", value: "9" }],
      aaoptions: [
        {
          value: "niandu",
          label: "年度"
        },
        {
          value: "jidu",
          label: "季度",
          children: [
            {
              value: "2024-03-31",
              label: "第一季度"
            },
            {
              value: "2024-6-30",
              label: "第二季度"
            },
            {
              value: "2024-9-30",
              label: "第三季度"
            },
            {
              value: "2024-12-31",
              label: "第四季度"
            }
          ]
        },
        {
          value: "yuedu",
          label: "月度",
          children: [
            { label: "一月", value: new Date(2024, 0 + 1, 0).getDate() },
            { label: "二月", value: new Date(2024, 1 + 1, 0).getDate() },
            { label: "三月", value: new Date(2024, 2 + 1, 0).getDate() },
            { label: "四月", value: new Date(2024, 3 + 1, 0).getDate() },
            { label: "五月", value: new Date(2024, 4 + 1, 0).getDate() },
            { label: "六月", value: new Date(2024, 5 + 1, 0).getDate() },
            { label: "七月", value: new Date(2024, 6 + 1, 0).getDate() },
            { label: "八月", value: new Date(2024, 7 + 1, 0).getDate() },
            { label: "九月", value: new Date(2024, 8 + 1, 0).getDate() },
            { label: "十月", value: new Date(2024, 9 + 1, 0).getDate() },
            { label: "十一月", value: new Date(2024, 10 + 1, 0).getDate() },
            { label: "十二月", value: new Date(2024, 11 + 1, 0).getDate() }
          ]
        }
      ],
      //费用说明
      feeBlocks: [],
@@ -1984,17 +2046,37 @@
      }
    },
    //计算金额
    calculateTax(row, type) {
    //税前扣税算税后
    chargeSum(row, type) {
      let targetValue = 0;
      for (let i = 0; i < this.rbDetails.length; i++) {
        if (!this.rbDetails[i].amount) {
          this.rbDetails[i].amount = 0;
        }
        if (!this.rbDetails[i].taxamount) {
          this.rbDetails[i].taxamount = 0;
        }
        this.rbDetails[i].taxedamount =
          parseFloat(this.rbDetails[i].amount) -
          parseFloat(this.rbDetails[i].taxamount);
        targetValue += parseFloat(this.rbDetails[i].amount); // 假设每个对象中的特定值存储在'specificValue'属性下
      }
      console.log(targetValue, "合计");
      this.form.pretaxcost = targetValue;
    },
    //税后扣税算税前
    queenchargeSum(row, type) {
      for (let i = 0; i < this.rbDetails.length; i++) {
        if (!this.rbDetails[i].amount) {
          this.rbDetails[i].amount = 0;
        }
        if (!this.rbDetails[i].taxamount) {
          this.rbDetails[i].taxamount = 0;
        }
        this.rbDetails[i].amount =
          parseFloat(this.rbDetails[i].taxamount) +
          parseFloat(this.rbDetails[i].taxedamount);
      }
    },
    unsave() {
@@ -2531,7 +2613,6 @@
      this.pdfVisible = true;
      if (this.rbDetails[index].annexfilesList) {
        const fetchPromises = this.rbDetails[index].annexfilesList.map(
          (value, indexson) => {
            const pdfimg = this.Networkheader + "/prod-api" + value.url;
@@ -2584,10 +2665,14 @@
        );
        Promise.all(fetchPromises).then(invoicefileListto => {
          this.invoicefileListto = invoicefileListto.filter(item => item !== null);
          this.invoicefileListto = invoicefileListto.filter(
            item => item !== null
          );
          this.invoicepdfimg = this.invoicefileListto[0].url;
          console.log(this.invoicepdfimg, "invoicepdfimg");
          this.invoicepdfimgsrcList = this.invoicefileListto.map(item => item.url);
          this.invoicepdfimgsrcList = this.invoicefileListto.map(
            item => item.url
          );
        });
        this.previewpdf = true;
@@ -2703,8 +2788,10 @@
        const index = this.getIndexInArray(this.fileListto, row);
        const item = this.fileListto.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
        this.fileListto.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
        const indexann = this.rbDetails[this.atpresent].annexfilesList.findIndex(item => item.name == row.name);
        const indexann = this.rbDetails[
          this.atpresent
        ].annexfilesList.findIndex(item => item.name == row.name);
        const itemann = this.rbDetails[this.atpresent].annexfilesList.splice(
          indexann,
          1
@@ -2718,8 +2805,10 @@
        const index = this.getIndexInArray(this.invoicefileListto, row);
        const item = this.invoicefileListto.splice(index, 1)[0]; // 移除指定索引处的元素,并保存到item变量中
        this.invoicefileListto.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
        const indexinvo = this.rbDetails[this.atpresent].invoicefilesList.findIndex(item => item.name == row.name);
        const indexinvo = this.rbDetails[
          this.atpresent
        ].invoicefilesList.findIndex(item => item.name == row.name);
        const iteminvo = this.rbDetails[this.atpresent].invoicefilesList.splice(
          indexinvo,
          1
@@ -2734,6 +2823,48 @@
    Downloadfile(row) {
      console.log(row);
      window.location.href = this.Networkheader + "/prod-api" + row.url;
    },
    //表格合计
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = [
        "applytype",
        "itemid",
        // "jxrq",
        "beneficiaryname",
        "idcardno",
        "depositbank",
        "bankcardno",
        "remark"
      ];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = "合计";
          return;
        }
        //去除部分字段计算
        if (columnnames.indexOf(column.property) > -1) {
          return;
        }
        const values = data.map(item => Number(item[column.property]));
        if (!values.every(value => isNaN(value))) {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0);
          sums[index] = sums[index].toFixed(2); // 保留2位小数,解决小数合计列;
        } else {
          sums[index] = "";
        }
      });
      return sums;
    }
  },