11
WXL
2024-03-20 1e487a42549384f6e937a5c7d557563aedafec2c
src/views/project/fund/performancedetails/index.vue
@@ -147,6 +147,7 @@
              align="center"
              label="序号"
              width="88"
              fixed
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.orderno" placeholder="序号" />
@@ -157,6 +158,7 @@
              align="center"
              label="服务类型"
              width="200"
              fixed
            >
              <template slot-scope="scope">
                <el-select
@@ -194,6 +196,26 @@
                    :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="amount"
              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
@@ -229,6 +251,19 @@
                      calculateTax(scope.row, 'B');
                    }
                  "
                />
              </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>
@@ -500,7 +535,7 @@
      :visible.sync="pdfVisible"
      width="60%"
    >
      <div>
      <div style="margin-bottom: 10px;">
        <el-table :data="tableDatatop" style="width: 100%">
          <el-table-column
            prop="beneficiaryname"
@@ -528,7 +563,13 @@
          </el-table-column>
        </el-table>
      </div>
      <el-alert
        title="新上传文件需在提交保存后才可进行案例关联,否则视为放弃"
        type="error"
        show-icon
        close-text="知道了"
      >
      </el-alert>
      <el-tabs
        style="margin-top: 20px;"
        v-model="activeName"
@@ -596,7 +637,7 @@
                  >
                    <template slot-scope="scope">
                      <el-button
                        type="primary"
                        type="danger"
                        size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)"
                        >删除</el-button
@@ -894,6 +935,7 @@
      unitforname: null,
      isIndeterminate: true,
      Performanceclass: 68,
      ICDtoken: getToken(),
      //是否是专家费的OPO审批人员
      ismanager: false,
@@ -948,7 +990,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: [],
@@ -1021,6 +1108,8 @@
        flowconclusion: null,
        fundid: null
      },
      // 网络请求头
      Networkheader: null,
      // 查询参数
      queryParams: {
@@ -1080,7 +1169,6 @@
      invoicefileListto: [],
      invoicepdfimg: "",
      invoicepdfimgsrcList: [],
      invoDatatop: [],
      activeName: 1, //文件类型
      //上传附件路径
      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload",
@@ -1703,9 +1791,11 @@
        flowconclusion: this.checkObj.flowlevelone,
        flowcontent: this.checkObj.flowconclusion
      };
      this.$modal.loading("正在提交审核,请稍候!");
      checkfund(checkFundObj).then(res => {
        //关闭窗口
        this.reset();
        this.$modal.closeLoading();
        this.$modal.msgSuccess("审核完成!");
        this.$store.dispatch("tagsView/delView", this.$route);
        this.$router.go(-1);
@@ -2403,111 +2493,191 @@
        rbDetails[this.atpresent].invoicefilesList = this.invoicefileListto;
      }
    },
    // 获取请求头
    Getnetworkheader() {
      let string = window.location.href;
      if (string.includes("9091")) {
        const index = string.indexOf("9091");
        this.Networkheader = string.slice(0, index + 4); // 截取9091及其前部字符
      } else {
        const index = string.indexOf("8032");
        this.Networkheader = string.slice(0, index + 4); // 截取8032及其前部字符
      }
    },
    uploadSccess(response, file, fileList) {
      this.rbDetails;
      const config = {
        headers: { Authorization: "Bearer " + this.ICDtoken }
      };
      const pdfimg = this.Networkheader + "/prod-api" + response.fileName;
      //获取票据信息位置
      console.log(response);
      console.log(file);
      if (this.activeName == 1) {
        if (response.code == 200) {
          // this.form.filename = file.raw.name;
          this.previewpdf = true;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // 将获取的数据流转换为URL
              this.pdfimg = URL.createObjectURL(blob);
              this.pdfimgsrcList.push(URL.createObjectURL(blob));
              this.fileListto.push({
                name: file.name,
                url: URL.createObjectURL(blob)
              });
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          this.$modal.msgSuccess(response.msg);
          this.fileListto.push({
          console.log(this.fileListto, "新增后");
          if (!this.rbDetails[this.atpresent].annexfilesList) {
            this.rbDetails[this.atpresent].annexfilesList = [];
          }
          this.rbDetails[this.atpresent].annexfilesList.push({
            name: file.name,
            url: response.fileName
          });
          this.pdfimgsrcList.push(
            this.Networkheader + "/prod-api" + response.fileName
          );
          console.log(this.pdfimgsrcList);
          this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
          this.pdfimg = this.Networkheader + "/prod-api" + response.fileName;
          this.rbDetails[this.atpresent].annexfilesList = this.fileListto;
        } else {
          console.log(response.msg);
        }
      } else {
        if (response.code == 200) {
          // this.form.filename = file.raw.name;
          this.previewpdf = true;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // 将获取的数据流转换为URL
              this.invoicepdfimg = URL.createObjectURL(blob);
              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
              this.invoicefileListto.push({
                name: file.name,
                url: URL.createObjectURL(blob)
              });
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          this.$modal.msgSuccess(response.msg);
          this.invoicefileListto.push({
          console.log(this.invoicefileListto, "新增后");
          if (!this.rbDetails[this.atpresent].invoicefilesList) {
            this.rbDetails[this.atpresent].invoicefilesList = [];
          }
          this.rbDetails[this.atpresent].invoicefilesList.push({
            name: file.name,
            url: response.fileName
          });
          this.invoicepdfimgsrcList.push(
            this.Networkheader + "/prod-api" + response.fileName
          );
          console.log(this.invoicepdfimgsrcList);
          this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项";
          this.pdfimg = this.Networkheader + "/prod-api" + response.fileName;
          this.rbDetails[
            this.atpresent
          ].invoicefilesList = this.invoicefileListto;
          console.log(this.rbDetails[this.atpresent]);
        } else {
          console.log(response.msg);
        }
      }
    },
    // 点击票据
    Filepopup(index, rows, row) {
      const config = {
        headers: { Authorization: "Bearer " + this.ICDtoken }
      };
      this.tableDatatop = [];
      this.fileListto = [];
      this.invoicefileListto = [];
      this.pdfimg = "";
      this.invoicepdfimg = [];
      this.pdfimgsrcList = [];
      this.invoDatatop = [];
      this.invoicepdfimgsrcList = [];
      this.invoDatatop.push(row);
      this.tableDatatop.push(row);
      this.atpresent = index;
      this.pdfVisible = true;
      console.log(this.rbDetails[index]);
      if (this.rbDetails[index].annexfilesList) {
        this.previewpdf = true;
        this.fileListto = this.rbDetails[index].annexfilesList;
        console.log(this.fileListto);
        this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url;
        this.fileListto.forEach(item => {
          this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url);
        const fetchPromises = this.rbDetails[index].annexfilesList.map(
          (value, indexson) => {
            const pdfimg = this.Networkheader + "/prod-api" + value.url;
            return fetch(pdfimg, config)
              .then(response => response.blob())
              .then(blob => {
                return {
                  name: value.name,
                  url: URL.createObjectURL(blob)
                };
              })
              .catch(error => {
                console.error("Error loading image", error);
                return null;
              });
          }
        );
        Promise.all(fetchPromises).then(fileListto => {
          this.fileListto = fileListto.filter(item => item !== null);
          this.pdfimg = this.fileListto[0].url;
          console.log(this.pdfimg, "pdfimg");
          this.pdfimgsrcList = this.fileListto.map(item => item.url);
        });
        this.previewpdf = true;
      } else {
        this.fileListto = [];
        this.pdfimg = "";
        this.pdftitle = "";
      }
      // -发票文件
      //发票
      if (this.rbDetails[index].invoicefilesList) {
        this.previewpdf = true;
        this.invoicefileListto = this.rbDetails[index].invoicefilesList;
        console.log(this.invoicefileListto);
        this.invoicepdfimg =
          this.Networkheader + "/prod-api" + this.invoicefileListto[0].url;
        this.invoicefileListto.forEach(item => {
          this.invoicepdfimgsrcList.push(
            this.Networkheader + "/prod-api" + item.url
        const fetchPromises = this.rbDetails[index].invoicefilesList.map(
          (value, indexson) => {
            const pdfimg = this.Networkheader + "/prod-api" + value.url;
            return fetch(pdfimg, config)
              .then(response => response.blob())
              .then(blob => {
                return {
                  name: value.name,
                  url: URL.createObjectURL(blob)
                };
              })
              .catch(error => {
                console.error("Error loading image", error);
                return null;
              });
          }
        );
        Promise.all(fetchPromises).then(invoicefileListto => {
          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
          );
        });
        console.log(this.invoicepdfimgsrcList);
        console.log(this.invoicepdfimg);
        this.previewpdf = true;
      } else {
        this.invoicefileListto = [];
        this.invoicepdfimg = "";
        this.pdftitle = "";
      }
      if (this.activeName == 1) {
      if (this.activeName == "common") {
        this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
      } else {
        this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项";
      }
      console.log(this.fileListto, "this.fileListto");
      console.log(this.rbDetails[index].annexfilesList, "annexfilesList");
    },
    // 点击已上传文件
    downFile(item) {
      if (this.activeName == 1) {
        console.log(item, "点击文件拿item");
        this.pdftitle =
          "共" + this.pdfimgsrcList.length + "项,当前选中" + item.name;
        let name = item.name.split(".");
@@ -2516,11 +2686,12 @@
          this.previewpdf = false;
          this.hintitle = "当前文件暂不支持预览";
        } else if (name[1] == "jpg" || "png") {
          console.log(item, "展示");
          this.previewpdf = true;
          if (item.url) {
            this.pdfimg = this.Networkheader + "/prod-api" + item.url;
            this.pdfimg = item.url;
          } else {
            this.pdfimg = this.Networkheader + "/prod-api" + item.response.url;
            this.pdfimg = "";
          }
        } else {
          this.hintitle = "当前文件暂不支持预览";
@@ -2528,7 +2699,6 @@
          this.previewpdf = false;
        }
      } else {
        console.log(item, "点击文件拿item");
        this.pdftitle =
          "共" + this.invoicepdfimgsrcList.length + "项,当前选中" + item.name;
        let name = item.name.split(".");
@@ -2539,12 +2709,9 @@
        } else if (name[1] == "jpg" || "png") {
          this.previewpdf = true;
          if (item.url) {
            this.invoicepdfimg = this.Networkheader + "/prod-api" + item.url;
            console.log(this.invoicepdfimg, "pdfimg");
            console.log(this.invoicepdfimgsrcList, "imglist");
            this.invoicepdfimg = item.url;
          } else {
            this.invoicepdfimg =
              this.Networkheader + "/prod-api" + item.response.url;
            this.invoicepdfimg = "";
          }
        } else {
          this.hintitle = "当前文件暂不支持预览";
@@ -2566,22 +2733,37 @@
    },
    // 点击删除
    deletedowfile(row) {
      console.log(row);
      let indexvalue = "";
      if (this.activeName == 1) {
        const indexlist = this.getIndexInArray(
          this.pdfimgsrcList,
          this.Networkheader + "/prod-api" + row.url
        );
        const indexlist = this.getIndexInArray(this.pdfimgsrcList, row.url);
        this.pdfimgsrcList.splice(indexlist, 1);
        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);
      } else {
        const indexlist = this.getIndexInArray(
          this.invoicepdfimgsrcList,
          this.Networkheader + "/prod-api" + row.url
          row.url
        );
        this.invoicepdfimgsrcList.splice(indexlist, 1);
        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);
      }
    },
    // 点击上移
@@ -2590,10 +2772,36 @@
        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 itemann = this.rbDetails[this.atpresent].annexfilesList.splice(
          indexann,
          1
        )[0]; // 移除指定索引处的元素,并保存到item变量中
        this.rbDetails[this.atpresent].annexfilesList.splice(
          indexann - 1,
          0,
          itemann
        ); // 将itemann插入到索引位置的前一位
      } else {
        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 iteminvo = this.rbDetails[this.atpresent].invoicefilesList.splice(
          indexinvo,
          1
        )[0]; // 移除指定索引处的元素,并保存到item变量中
        this.rbDetails[this.atpresent].invoicefilesList.splice(
          indexinvo - 1,
          0,
          iteminvo
        ); // 将iteminvo插入到索引位置的前一位
      }
    },
    Downloadfile(row) {
@@ -2606,6 +2814,7 @@
  created() {
    //获取路由参数
    this.getroute();
    this.Getnetworkheader();
    this.getExternalList();
    this.getFeeUnitList();
    this.listperformance();