11
WXL
2024-02-28 d9c209aecf592804ba2d119a65eddc1f73bd913c
11
已添加2个文件
已修改4个文件
1728 ■■■■■ 文件已修改
src/views/project/donorcharge/donorcharge/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/applyDetail/index.vue 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/fund/performancedetails/index.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/travelexpenseapply/travelexpensedetail/index.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/unitCost/index.vue 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/unitCost/particulars.vue 914 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/donorcharge/donorcharge/index.vue
@@ -59,8 +59,10 @@
            v-hasPermi="['system:donorcharge:edit']">修改</el-button>
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
            v-hasPermi="['system:donorcharge:edit']">详情</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
            v-hasPermi="['system:donorcharge:remove']">删除</el-button>
          <el-button size="mini" type="text" @click="handleDelete(scope.row)"
            v-hasPermi="['system:donorcharge:remove']"><span class="button-delete"
              ><i class="el-icon-delete"></i>删除</span
            ></el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -478,3 +480,9 @@
  }
};
</script>
<style scoped>
/* @import url(); å¼•入公共cssç±» */
.button-delete{
  color: rgb(236, 69, 69);
}
</style>
src/views/project/fund/applyDetail/index.vue
@@ -1034,7 +1034,7 @@
        type="border-card"
        @tab-click="handleClick"
      >
        <el-tab-pane label="普通附件" :name="1">
        <el-tab-pane label="普通附件" name="common">
          <div class="pdfimg">
            <div class="box-pdf">
              <div>
@@ -1095,7 +1095,7 @@
                  >
                    <template slot-scope="scope">
                      <el-button
                        type="primary"
                        type="danger"
                        size="mini"
                        @click.native.prevent.stop="deletedowfile(scope.row)"
                        >删除</el-button
@@ -1139,7 +1139,7 @@
            <div v-else class="pdfimgmins">{{ hintitle }}</div>
          </div>
        </el-tab-pane>
        <el-tab-pane label="发票文件" :name="2">
        <el-tab-pane label="发票文件" name="invoice">
          <div class="pdfimg">
            <div class="box-pdf">
              <div>
@@ -1656,7 +1656,7 @@
      invoicepdfimg: "",
      invoicepdfimgsrcList: [],
      invoDatatop: [],
      activeName: 1, //文件类型
      activeName: "common", //文件类型
      //上传附件路径
      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload",
      ICDtoken: getToken(),
@@ -3162,7 +3162,7 @@
    handleUploadError() {},
    remove(file, fileList) {
      const rbDetails = [...this.rbDetails];
      if (this.activeName == 1) {
      if (this.activeName == "common") {
        this.fileListto.splice(this.fileListto.indexOf(file), 1);
        rbDetails[this.atpresent].annexfilesList = this.fileListto;
      } else {
@@ -3178,7 +3178,7 @@
      };
      const pdfimg = this.Networkheader + "/prod-api" + response.fileName;
      //获取票据信息位置
      if (this.activeName == 1) {
      if (this.activeName == "common") {
        if (response.code == 200) {
          this.previewpdf = true;
@@ -3262,29 +3262,54 @@
      this.tableDatatop.push(row);
      this.atpresent = index;
      this.pdfVisible = true;
      console.log(this.fileListto, "this.fileListto");
      console.log(this.invoicefileListto, "this.invoicefileListto");
      if (this.rbDetails[index].annexfilesList) {
        this.rbDetails[index].annexfilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.fileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        // this.rbDetails[index].annexfilesList.forEach((value, indexson) => {
        //   const pdfimg = this.Networkheader + "/prod-api" + value.url;
        //   fetch(pdfimg, config)
        //     .then(response => response.blob())
        //     .then(blob => {
        //       // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
        //       this.fileListto.push({
        //         name: value.name,
        //         url: URL.createObjectURL(blob)
        //       });
        //       if (this.fileListto.length == 1) {
        //         this.pdfimg = URL.createObjectURL(blob);
        //       }
        //       this.pdfimgsrcList.push(URL.createObjectURL(blob));
        //     })
        //     .catch(error => {
        //       console.error("Error loading image", error);
        //       return;
        //     });
        // });
        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;
              });
              if (this.fileListto.length == 1) {
                this.pdfimg = URL.createObjectURL(blob);
              }
              this.pdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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 = [];
@@ -3293,26 +3318,31 @@
      }
      //发票
      if (this.rbDetails[index].invoicefilesList) {
        this.rbDetails[index].invoicefilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.invoicefileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        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;
              });
              if (this.invoicefileListto.length == 1) {
                this.invoicepdfimg = URL.createObjectURL(blob);
              }
              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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);
        });
        this.previewpdf = true;
      } else {
        this.invoicefileListto = [];
@@ -3320,16 +3350,18 @@
        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) {
      if (this.activeName == "common") {
        this.pdftitle =
          "共" + this.pdfimgsrcList.length + "项,当前选中" + item.name;
        let name = item.name.split(".");
@@ -3377,7 +3409,7 @@
    },
    // å‘票切换
    handleClick(tab, event) {
      if (this.activeName == 1) {
      if (this.activeName == "common") {
        this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
      } else {
        this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项";
@@ -3387,16 +3419,14 @@
    deletedowfile(row) {
      console.log(row);
      let indexvalue = "";
      if (this.activeName == 1) {
      if (this.activeName == "common") {
        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;
          }
        indexvalue = this.rbDetails[this.atpresent].annexfilesList.findIndex(
          item => item.name == row.name
        );
        console.log(indexvalue, "删除索引");
        this.rbDetails[this.atpresent].annexfilesList.splice(indexvalue, 1);
@@ -3409,10 +3439,8 @@
        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;
          }
        indexvalue = this.rbDetails[this.atpresent].invoicefilesList.findIndex(
          item => item.name == row.name
        );
        console.log(indexvalue, "删除索引");
        this.rbDetails[this.atpresent].invoicefilesList.splice(indexvalue, 1);
@@ -3420,11 +3448,14 @@
    },
    // ç‚¹å‡»ä¸Šç§»
    moveupdowfile(row) {
      if (this.activeName == 1) {
        const index = this.getIndexInArray(this.fileListto, row);
      if (this.activeName == "common") {
        const index = this.fileListto.findIndex(item => item.name == row.name);
        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
@@ -3434,13 +3465,19 @@
          0,
          itemann
        ); // å°†itemann插入到索引位置的前一位
        console.log(indexann, "indexann");
        console.log(index, "index");
      } else {
        const index = this.getIndexInArray(this.invoicefileListto, row);
        const index = this.invoicefileListto.findIndex(
          item => item.name == row.name
        );
        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
src/views/project/fund/performancedetails/index.vue
@@ -2516,7 +2516,7 @@
      this.tableDatatop = [];
      this.fileListto = [];
      this.invoicefileListto = [];
      this.pdfimg = '';
      this.pdfimg = "";
      this.invoicepdfimg = [];
      this.pdfimgsrcList = [];
      this.invoicepdfimgsrcList = [];
@@ -2525,26 +2525,32 @@
      this.pdfVisible = true;
      if (this.rbDetails[index].annexfilesList) {
        this.rbDetails[index].annexfilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.fileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        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;
              });
              if (this.fileListto.length == 1) {
                this.pdfimg = URL.createObjectURL(blob);
              }
              this.pdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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 = [];
@@ -2553,26 +2559,31 @@
      }
      //发票
      if (this.rbDetails[index].invoicefilesList) {
        this.rbDetails[index].invoicefilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.invoicefileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        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;
              });
              if (this.invoicefileListto.length == 1) {
                this.invoicepdfimg = URL.createObjectURL(blob);
              }
              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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);
        });
        this.previewpdf = true;
      } else {
        this.invoicefileListto = [];
@@ -2580,11 +2591,13 @@
        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");
    },
    // ç‚¹å‡»å·²ä¸Šä¼ æ–‡ä»¶
src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -1636,7 +1636,7 @@
      this.tableDatatop = [];
      this.fileListto = [];
      this.invoicefileListto = [];
      this.pdfimg = [];
      this.pdfimg = "";
      this.invoicepdfimg = [];
      this.pdfimgsrcList = [];
      this.invoicepdfimgsrcList = [];
@@ -1645,26 +1645,32 @@
      this.pdfVisible = true;
      if (this.rbDetails[index].annexfilesList) {
        this.rbDetails[index].annexfilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.fileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        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;
              });
              if (this.fileListto.length == 1) {
                this.pdfimg = URL.createObjectURL(blob);
              }
              this.pdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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 = [];
@@ -1673,26 +1679,31 @@
      }
      //发票
      if (this.rbDetails[index].invoicefilesList) {
        this.rbDetails[index].invoicefilesList.forEach((value, indexson) => {
          const pdfimg = this.Networkheader + "/prod-api" + value.url;
          fetch(pdfimg, config)
            .then(response => response.blob())
            .then(blob => {
              // å°†èŽ·å–çš„æ•°æ®æµè½¬æ¢ä¸ºURL
              this.invoicefileListto.push({
                name: value.name,
                url: URL.createObjectURL(blob)
        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;
              });
              if (this.invoicefileListto.length == 1) {
                this.invoicepdfimg = URL.createObjectURL(blob);
              }
              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
            })
            .catch(error => {
              console.error("Error loading image", error);
              return;
            });
          }
        );
        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);
        });
        this.previewpdf = true;
      } else {
        this.invoicefileListto = [];
@@ -1700,11 +1711,13 @@
        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");
    },
    // ç‚¹å‡»å·²ä¸Šä¼ æ–‡ä»¶
src/views/project/unitCost/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,463 @@
<template>
    <div class="app-container">
      <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="120px">
        <el-form-item label="付款医院" prop="name">
          <el-input v-model="queryParams.name" placeholder="请输入姓名" clearable size="small"
            @keyup.enter.native="handleQuery" />
        </el-form-item>
        <el-form-item label="收款年度" prop="donationcategory">
          <el-input v-model="queryParams.donationcategory" placeholder="请输入捐献类别" clearable size="small"
            @keyup.enter.native="handleQuery" />
        </el-form-item>
        <el-form-item label="收款状态" prop="chargeamount">
          <el-input v-model="queryParams.chargeamount" placeholder="请输入费用金额" clearable size="small"
            @keyup.enter.native="handleQuery" />
        </el-form-item>
        <el-form-item>
          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
      <el-row :gutter="10" class="mb8">
        <el-col :span="1.5">
          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
            v-hasPermi="['system:donorcharge:add']">新增</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
            v-hasPermi="['system:donorcharge:edit']">修改</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
            v-hasPermi="['system:donorcharge:remove']">删除</el-button>
        </el-col>
        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
      </el-row>
      <el-table v-loading="loading" :data="donorchargeList" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" align="center" />
        <el-table-column label="申请时间" align="center" prop="donatetime" width="180">
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.donatetime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="收款单号" align="center" prop="donateno" />
        <el-table-column label="付款医院" align="center" prop="name" />
        <el-table-column label="收款状态" align="center" prop="donationcategory" />
        <el-table-column label="应收金额" align="center" prop="donateorgan" />
        <el-table-column label="已收金额" align="center" prop="chargeamounted" />
        <el-table-column label="收款日期" align="center" prop="chargeamount" />
        <el-table-column label="经办人" align="center" prop="agent" />
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
              v-hasPermi="['system:donorcharge:edit']">修改</el-button>
            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDetail(scope.row)"
              v-hasPermi="['system:donorcharge:edit']">详情</el-button>
            <el-button size="mini" type="text" @click="handleDelete(scope.row)"
              v-hasPermi="['system:donorcharge:remove']"><span class="button-delete"
              ><i class="el-icon-delete"></i>删除</span
            ></el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
        @pagination="getList" />
      <!-- æ·»åŠ æˆ–ä¿®æ”¹æçŒ®æ¡ˆä¾‹å™¨å®˜åˆ—å¯¹è¯æ¡† -->
      <el-dialog :title="title" :visible.sync="open" append-to-body align="center" :close-on-click-modal="false"
        width="1200px">
        <el-form ref="form" :model="form" :rules="rules" label-width="100px">
          <el-row>
            <el-col :span="12"><el-form-item label="OPO编号" prop="donateno">
                <el-input v-model="form.donateno" placeholder="请输入OPO编号" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="姓名" prop="name">
                <el-input v-model="form.name" placeholder="请输入姓名" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="捐献时间" prop="donatetime">
                <el-date-picker clearable size="small" v-model="form.donatetime" type="date" value-format="yyyy-MM-dd"
                  style="width: 174px" placeholder="选择捐献时间">
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6"><el-form-item label="出生年月" prop="borthdate">
                <el-date-picker clearable size="small" v-model="form.borthdate" type="date" value-format="yyyy-MM-dd"
                  style="width: 174px" placeholder="选择出生年月">
                </el-date-picker>
              </el-form-item></el-col>
            <el-col :span="6"><el-form-item label="年龄" prop="age">
                <el-input v-model="form.age" placeholder="请输入年龄" />
              </el-form-item></el-col>
            <el-col :span="6"> <el-form-item label="性别" prop="sex">
                <el-select v-model="form.sex" placeholder="请选择性别">
                  <el-option label="请选择字典生成" value="" />
                </el-select>
              </el-form-item></el-col>
            <el-col :span="6"><el-form-item label="捐献类别" prop="donationcategory">
                <el-input v-model="form.donationcategory" placeholder="请输入捐献类别" />
              </el-form-item></el-col>
          </el-row>
          <el-row>
            <el-col :span="6"><el-form-item label="捐献案例ID" prop="infoid">
                <el-input v-model="form.infoid" placeholder="请输入捐献案例ID" />
              </el-form-item></el-col>
            <el-col :span="6"><el-form-item label="捐献器官" prop="donateorgan">
                <el-input v-model="form.donateorgan" placeholder="请输入捐献的器官" />
              </el-form-item></el-col>
            <el-col :span="6"><el-form-item label="应收费用" prop="chargeamount">
                <el-input v-model="form.chargeamount" placeholder="请输入应收费用" />
              </el-form-item></el-col>
            <el-col :span="6"><el-form-item label="已收费用" prop="chargeamounted">
                <el-input v-model="form.chargeamounted" placeholder="请输入已收费用" />
              </el-form-item></el-col>
          </el-row><el-row>
            <el-col :span="24"><el-form-item label="备注" prop="remark">
                <el-input v-model="form.remark" placeholder="请输入备注" />
              </el-form-item></el-col>
          </el-row>
          <el-row>
            <el-table :data="donorchargerogans" v-loading="loading" max-height="1200" border highlight-current-row>
              <el-table-column prop="orderno" align="center" label="序号" width="80">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.orderno" placeholder="序号" />
                </template>
              </el-table-column>
              <el-table-column prop="organno" align="center" label="器官编号" width="90">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.organno" placeholder="器官编号" />
                </template>
              </el-table-column>
              <el-table-column prop="organname" align="center" label="器官名称" width="100">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.organname" placeholder="器官名称" />
                </template>
              </el-table-column>
              <el-table-column prop="hospitalname" align="center" label="接收医院" width="200">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.hospitalname" placeholder="接收医院" />
                </template>
              </el-table-column>
              <el-table-column prop="amounttime" align="center" label="接收时间" width="120">
                <template slot-scope="scope">
                  <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.amounttime" type="date"
                    value-format="yyyy-MM-dd HH:mm:ss" placeholder="接收时间">
                  </el-date-picker> </template>
              </el-table-column>
              <el-table-column prop="amount" align="center" label="已收费用" width="120">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.amount" placeholder="已收费用" />
                </template>
              </el-table-column>
              <el-table-column prop="amounttime" align="center" label="收款时间" width="120">
                <template slot-scope="scope">
                  <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.amounttime" type="date"
                    value-format="yyyy-MM-dd HH:mm:ss" placeholder="收款时间" @blur="getdays(scope.row)">
                  </el-date-picker> </template>
              </el-table-column>
              <el-table-column prop="organcharge" align="center" label="标准费用" width="120">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.organcharge" placeholder="已收费用" />
                </template>
              </el-table-column>
              <el-table-column prop="remark" align="center" label="备注">
                <template slot-scope="scope">
                  <el-input v-model="scope.row.remark" placeholder="备注" />
                </template>
              </el-table-column>
            </el-table>
          </el-row>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
          <el-button @click="cancel">取 æ¶ˆ</el-button>
        </div>
      </el-dialog>
      <el-dialog :visible.sync="showSelectionDialog" :close-on-click-modal="false" :title="'请选择捐献案例'" width="500px"
        style="text-align: center" v-loading="loading">
        <el-form ref="selectionForm" :model="selectionForm">
          <el-row>
            <el-form-item label="捐献者名字:" prop="donorname" label-width="120px">
              <el-select v-model="selectionForm.donorid" filterable reserve-keyword default-first-option
                placeholder="请输入捐献者的姓名" style="width: 100%">
                <el-option v-for="item in donorlist" :key="item.donorid" :label="item.donorname" :value="item.donorid">
                </el-option>
              </el-select>
            </el-form-item>
          </el-row>
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="showSelectionDialog = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="confirmSelection()">ç¡® å®š</el-button>
        </span>
      </el-dialog>
    </div>
  </template>
  <script>
  import { listDonatebaseinfo } from "@/api/project/donatebaseinfo";
  import { listDonorcharge, getDonorcharge, delDonorcharge, addDonorcharge, updateDonorcharge, exportDonorcharge, listDonorchargeorgan, delDonorchargeorgan, addDonorchargeorgan, updateDonorchargeorgan, exportDonorchargeorgan } from "@/api/project/donorcharge";
  export default {
    name: "Donorcharge",
    data() {
      return {
        // é®ç½©å±‚
        loading: true,
        // å¯¼å‡ºé®ç½©å±‚
        exportLoading: false,
        // é€‰ä¸­æ•°ç»„
        ids: [],
        // éžå•个禁用
        single: true,
        // éžå¤šä¸ªç¦ç”¨
        multiple: true,
        // æ˜¾ç¤ºæœç´¢æ¡ä»¶
        showSearch: true,
        // æ€»æ¡æ•°
        total: 0,
        //当前案例id
        curInfoId: 0,
        // æçŒ®æ¡ˆä¾‹å™¨å®˜åˆ—表格数据
        donorchargeList: [],
        donorchargerogans: [],
        //捐献案例选择
        showSelectionDialog: false,
        donorlist: [],
        donorinfolist: [],
        selectionForm: {
          index: null,
          donorid: null,
          donorname: null
        },
        loadingdonorlist: false,
        // å¼¹å‡ºå±‚标题
        title: "",
        // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
        open: false,
        // æŸ¥è¯¢è´¹ç”¨è¡¨å‚æ•°
        queryParams: {
          pageNum: 1,
          pageSize: 10,
          infoid: null,
          name: null,
          donationcategory: null,
          donateorgan: null,
          chargeamounted: null,
        },
        //查询案例参数
        donorParams: {
          pageNum: 1,
          pageSize: 1000,
        },
        // æŸ¥è¯¢è´¹ç”¨å™¨å®˜è¡¨å‚æ•°
        organParams: {
          pageNum: 1,
          pageSize: 10,
          donorchargeid: null,
        },
        // è¡¨å•参数
        form: {},
        // è¡¨å•校验
        rules: {
        }
      };
    },
    created() {
      this.getList();
    },
    methods: {
      //专家/医疗机构/费用报销机构选择
      confirmSelection() {
        var curdonorinfo = null;
        //从案例列表获取信息
        this.donorinfolist.map(item => {
          if (this.selectionForm.donorid == item.id) {
            curdonorinfo = item;
          }
        });
        this.showSelectionDialog = false;
        this.$router.push({
            path: "/cost/particulars",
          query: { id: 0, operation: "add", data: curdonorinfo }
        });
      },
      /** æŸ¥è¯¢æçŒ®æ¡ˆä¾‹å™¨å®˜åˆ—列表 */
      getList() {
        this.loading = true;
        listDonorcharge(this.queryParams).then(response => {
          this.donorchargeList = response.rows;
          this.total = response.total;
          this.loading = false;
        });
      },
      // å–消按钮
      cancel() {
        this.open = false;
        this.reset();
      },
      // è¡¨å•重置
      reset() {
        this.form = {
          id: null,
          infoid: null,
          donateno: null,
          donatetime: null,
          name: null,
          borthdate: null,
          sex: null,
          age: null,
          donationcategory: null,
          donateorgan: null,
          chargeamount: null,
          chargeamounted: null,
          remark: null,
          delFlag: null,
          createBy: null,
          createTime: null,
          updateBy: null,
          updateTime: null
        };
        this.resetForm("form");
      },
      /** æœç´¢æŒ‰é’®æ“ä½œ */
      handleQuery() {
        this.queryParams.pageNum = 1;
        this.getList();
      },
      /** é‡ç½®æŒ‰é’®æ“ä½œ */
      resetQuery() {
        this.resetForm("queryForm");
        this.handleQuery();
      },
      // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
      handleSelectionChange(selection) {
        this.ids = selection.map(item => item.id)
        this.single = selection.length !== 1
        this.multiple = !selection.length
      },
      /** æ–°å¢žæŒ‰é’®æ“ä½œ */
      handleAdd() {
        this.selectionForm.index = null;
        this.selectionForm.donorid = null;
        this.selectionForm.donorname = null;
        if (this.donorlist[0]) {
          this.showSelectionDialog = true;
        }
        else {
          //获取捐献案例列表
          if (this.donorlist.length > 0) { }
          else {
            this.loading = true;
            listDonatebaseinfo(this.donorParams).then(res => {
              // this.donorinfolist = res.rows;
              res.rows.forEach(item => {
                if (item.workflow >= 6) {
                  this.donorinfolist.push(item);
                }
              });
              this.donorinfolist.forEach(item1 => {
                this.donorlist.push({
                  donorid: item1.id,
                  donorname: item1.name
                });
              });
              console.log(this.donorinfolist,' this.donorinfolist');
              this.loading = false;
            });
          }
          this.showSelectionDialog = true;
        };
        /**
        this.reset();
        this.open = true;
        this.title = "捐献案例器官费用情况";
        this.donorchargerogans = [];
        */
      },
      /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
      handleUpdate(row) {
        this.$router.push({
          path: "/cost/particulars",
          query: { id: row.id, operation: "update", data: row }
        });
      },
      /** è¯¦æƒ…查看按钮操作 */
      handleDetail(row) {
        this.$router.push({
          path: "/cost/particulars",
          query: { id: row.id, operation: "detail", data: row }
        });
      },
      /** åˆ é™¤æŒ‰é’®æ“ä½œ */
      handleDelete(row) {
        const ids = row.id || this.ids;
        this.$modal.confirm('是否确认删除捐献案例器官列编号为"' + ids + '"的数据项?').then(function () {
          return delDonorcharge(ids);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => { });
      },
      /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
      handleExport() {
        const queryParams = this.queryParams;
        this.$modal.confirm('是否确认导出所有捐献案例器官列数据项?').then(() => {
          this.exportLoading = true;
          return exportDonorcharge(queryParams);
        }).then(response => {
          this.$download.name(response.msg);
          this.exportLoading = false;
        }).catch(() => { });
      },
      /** æäº¤æŒ‰é’® */
      submitForm() {
        this.$refs["form"].validate(valid => {
          if (valid) {
            if (this.form.id != null) {
              updateDonorcharge(this.form).then(response => {
                this.$modal.msgSuccess("修改成功");
                this.open = false;
                this.getList();
              });
            } else {
              addDonorcharge(this.form).then(response => {
                this.$modal.msgSuccess("新增成功");
                this.open = false;
                this.getList();
              });
            }
          }
        });
      },
    }
  };
  </script>
  <style scoped>
  /* @import url(); å¼•入公共cssç±» */
  .button-delete{
    color: rgb(236, 69, 69);
  }
  </style>
src/views/project/unitCost/particulars.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,914 @@
<template>
  <div class="Modifydetailscla">
    <div class="boxdiv">
      <div class="top-text">{{ title }}</div>
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-row>
          <el-col :span="5">
            <el-form-item label="经办人" prop="name">
              <el-input
                v-model="form.name"
                placeholder="请输入姓名"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="7">
            <el-form-item label="收款状态" prop="sex">
              <el-select v-model="form.sex" placeholder="请输入性别">
                <el-option
                  v-for="dict in dict.type.sys_user_sex"
                  :key="dict.label"
                  :label="dict.label"
                  :value="parseInt(dict.value)"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="申请日期" prop="borthdate">
              <el-date-picker
                clearable
                size="small"
                v-model="form.borthdate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择出生年月"
              >
              </el-date-picker>
            </el-form-item>
          </el-col> </el-row
        ><el-row
          ><el-col :span="5"
            ><el-form-item label="收款单位" prop="donateno">
              <el-input
                v-model="form.donateno"
                placeholder="请输入收款单位"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="7"
            ><el-form-item label="收款银行" prop="donateno">
              <el-input
                v-model="form.donateno"
                placeholder="请输入收款银行"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="收款行号" prop="donationcategory">
              <el-input
                v-model="form.donationcategory"
                placeholder="请输入收款行号"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="17">
            <el-form-item label="联系信息" prop="remark">
              <el-input v-model="form.remark" placeholder="请输入备注" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="5">
            <el-form-item label="付款医院" prop="sex">
              <el-select v-model="form.sex" placeholder="请选择医院">
                <el-option
                  v-for="dict in dict.type.sys_user_sex"
                  :key="dict.label"
                  :label="dict.label"
                  :value="parseInt(dict.value)"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="应收金额" prop="chargeamount">
              <el-input
                v-model="form.chargeamount"
                placeholder="请输入应收金额"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="实收金额" prop="chargeamounted">
              <el-input
                v-model="form.chargeamounted"
                placeholder="请输入实收金额"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="申请日期" prop="borthdate">
              <el-date-picker
                clearable
                size="small"
                v-model="form.borthdate"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择出生年月"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px">
          <el-table
            :data="donorchargeorgans"
            ref="table"
            border
            max-height="800"
            highlight-current-row
            :summary-method="getSummaries"
            show-summary
          >
            <el-table-column
              prop="organno"
              align="center"
              label="器官编号"
              width="90"
            >
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.organno"
                  placeholder="器官编号"
                  :disabled="true"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="organname"
              align="center"
              label="器官名称"
              width="120"
            >
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.organname"
                  placeholder="器官名称"
                />
              </template>
            </el-table-column>
            <el-table-column
              label="国家编号"
              align="center"
              width="120"
              prop="caseno"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.caseno" placeholder="国家编号" />
              </template>
            </el-table-column>
            <el-table-column
              prop="hospitalname"
              align="center"
              label="接收医院"
              width="280"
            >
              <template slot-scope="scope">
                <org-selecter
                  ref="tranHosSelect"
                  :org-type="'4'"
                  v-model="scope.row.hospitalno"
                  style="width: 100%"
                />
              </template>
            </el-table-column>
            <el-table-column
              label="受体姓氏"
              align="center"
              width="120"
              prop="name"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.name" placeholder="受体姓氏" />
              </template>
            </el-table-column>
            <el-table-column
              prop="organtime"
              align="center"
              label="接收日期"
              width="200"
            >
              <template slot-scope="scope">
                <el-date-picker
                  clearable
                  size="small"
                  style="width: 100%"
                  v-model="scope.row.organtime"
                  type="date"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="接收日期"
                >
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column
              prop="amount"
              align="center"
              label="应收金额"
              width="150"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="应收金额" />
              </template>
            </el-table-column>
            <el-table-column
              prop="amount"
              align="center"
              label="实收金额"
              width="150"
            >
              <template slot-scope="scope">
                <el-input v-model="scope.row.amount" placeholder="实收金额" />
              </template>
            </el-table-column>
            <el-table-column
              prop="amounttime"
              align="center"
              label="收款日期"
              width="200"
            >
              <template slot-scope="scope">
                <el-date-picker
                  clearable
                  size="small"
                  style="width: 100%"
                  v-model="scope.row.amounttime"
                  type="date"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="收款日期"
                >
                </el-date-picker>
              </template>
            </el-table-column>
            <el-table-column prop="organchargedesc" align="center" label="备注">
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.organchargedesc"
                  placeholder="备注"
                />
              </template>
            </el-table-column>
            <el-table-column label="操作" align="center">
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-circle-plus-outline" @click="handleUpdate(scope.row)"
            v-hasPermi="['system:donorcharge:edit']">新增</el-button>
          <el-button size="mini" type="text" @click="handleDelete(scope.row)"
            v-hasPermi="['system:donorcharge:remove']"><span class="button-delete"
              ><i class="el-icon-delete"></i>删除</span
            ></el-button>
            <el-button size="mini" type="text" icon="el-icon-folder-opened" @click="handleUpdate(scope.row)"
            v-hasPermi="['system:donorcharge:edit']">附件</el-button>
        </template>
      </el-table-column>
          </el-table>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button
          type="primary"
          @click="submitForm"
          v-if="operationType == 'add' || operationType == 'update'"
          >保 å­˜</el-button
        >
        <el-button type="primary" @click="cancel">关闭</el-button>
      </div>
    </div>
  </div>
</template>
<script>
import pdf from "vue-pdf";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { regionDataPlus, CodeToText } from "element-china-area-data";
import {
  getDonorcharge,
  addDonorcharge,
  updateDonorcharge
} from "@/api/project/donorcharge";
import {
  listDonorchargeorgan,
  delDonorchargeorgan,
  saveDonorchargeorgan
} from "@/api/project/donorcharge";
import { listDonatecomporgan } from "@/api/project/donatecompletioninfo";
import { listOrgancharge } from "@/api/project/organcharge";
import OrgSelecter from "@/views/project/components/orgselect";
import Li_area_select from "@/components/Address";
import { getUserProfile } from "@/api/system/user";
import { getToken } from "@/utils/auth";
import debounce from "lodash/debounce";
export default {
  components: {
    Treeselect,
    OrgSelecter,
    Li_area_select,
    pdf
  },
  dicts: ["sys_user_sex", "sys_0_1"],
  name: "Donorchargemanager",
  data() {
    return {
      activeName: 1, //文件类型
      // éƒ¨é—¨æ ‘选项
      //票据文件
      pdftitle: "",
      pdfimg: "",
      pdfVisible: false,
      costtypeobj: {
        value: 0,
        label: ""
      },
      pdfimgsrcList: [],
      Savereminder: false, //提醒保存弹框
      Reminderquantity: 0, //提醒数量
      totalquantity: 0, //总数量
      hintitle: "选中左侧已上传文件预览查看",
      atpresent: "",
      iframeurl: "",
      options: regionDataPlus,
      selectedOptions: [],
      value1: "",
      previewpdf: false,
      // é®ç½©å±‚
      loading: true,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // ç½‘络请求头
      Networkheader: null,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // æçŒ®æ¡ˆä¾‹å™¨å®˜åˆ—表格数据
      donorchargeList: [],
      donorchargeorgans: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢è´¹ç”¨è¡¨å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        infoid: null,
        name: null,
        donationcategory: null,
        donateorgan: null,
        chargeamounted: null
      },
      // æŸ¥è¯¢è´¹ç”¨å™¨å®˜è¡¨å‚æ•°
      organParams: {
        pageNum: 1,
        pageSize: 10,
        donorchargeid: null
      },
      // å½“前用户信息
      userprofile: {},
      // è¡¨å•参数
      form: {},
      // åˆ—表参数
      table: {},
      reimbursementList: [],
      // è¡¨å•校验
      rules: {
        reason: [
          { required: true, message: "请输入出差事由", trigger: "blur" }
        ],
        deptmentname: [
          { required: true, message: "请输入所属业务组", trigger: "blur" }
        ]
      },
      baselist: [],
      donorList: [],
      organchargelist: [],
      standardlevel: 0,
      defaultperson: {},
      fundflowList: [],
      showApproveRecordDialog: false,
      // å½“前单据ID
      curId: 0,
      curCase: null,
      //业务操作类型
      operationType: "edit",
      //上传发票文件路径
      uploadFileUrl: process.env.VUE_APP_BASE_API + "/common/upload",
      //文件列表
      fileList: [],
      fileListto: [],
      invoicefileList: [],
      invoicefileListto: [],
      invoicepdfimg: "",
      invoicepdfimgsrcList: [],
      invoDatatop: [],
      //人员类别
      persontype: null,
      headers: {
        Authorization: "Bearer " + getToken()
      },
      jurisdiction: false,
      //保存按钮控制
      idisabled: false
    };
  },
  created() {
    console.log(234);
    this.Getnetworkheader();
    //获取登录者信息
    getUserProfile().then(response => {
      this.userprofile = response.data;
      this.defaultperson = response.data;
      this.standardlevel = response.data.standardlevel;
    });
    //获取参数
    this.getroute();
  },
  mounted() {
    window.addEventListener("beforeunload", e => this.beforeunloadHandler(e));
  },
  updated() {
    this.$nextTick(() => {
      this.$refs["table"].doLayout();
    });
  },
  destroyed() {
    window.removeEventListener("beforeunload", e => this.beforeunloadFn(e));
  }, //生命周期 - é”€æ¯å®Œæˆ
  methods: {
    // æµè§ˆå™¨é¡µé¢å…³é—­æˆ–刷新提示
    beforeunloadHandler(e) {
      if (
        (JSON.stringify(this.form) == sessionStorage.getItem("apiform") &&
          JSON.stringify(this.donorchargeorgans) ==
            sessionStorage.getItem("apifunddetail")) ||
        !sessionStorage.getItem("apifunddetail")
      ) {
      } else {
        this._beforeUnload_time = new Date().getTime();
        e = e || window.event;
        if (e) {
          e.returnValue = "关闭提示";
        }
        return "关闭提示";
      }
    },
    handleUploadError() {},
    // èŽ·å–è¯·æ±‚å¤´
    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及其前部字符
      }
    },
    // å‘票切换
    handleClick(tab, event) {
      if (this.activeName == 1) {
        this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
      } else {
        this.pdftitle = "共" + this.invoicepdfimgsrcList.length + "项";
      }
    },
    getIndexInArray(arr, obj) {
      return arr.indexOf(obj);
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        id: null,
        infoid: null,
        donateno: null,
        donatetime: null,
        name: null,
        borthdate: null,
        sex: null,
        age: null,
        donationcategory: null,
        donateorgan: null,
        chargeamount: null,
        chargeamounted: null,
        remark: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null
      };
      this.resetForm("form");
    },
    /** é€šè¿‡å‚数获取业务类型 */
    getroute() {
      //选择业务类型:1、新增;2、修改;3、查看
      this.operationType = this.$route.query.operation;
      this.curId = this.$route.query.id;
      this.curCase = this.$route.query.data;
      console.log("this.$route.query", this.$route.query);
      if (this.operationType == "add") {
        this.title = "新建案例器官费用表";
        this.handleAdd();
        console.log("1");
      } else if (this.operationType == "update") {
        this.title = "修改案例器官费用表";
        this.handleUpdate();
        console.log("2");
      } else if (this.operationType == "detail") {
        this.title = "查看案例器官费用表";
        this.handleDetail();
        console.log("3");
      }
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // å–消按钮
    cancel() {
      this.$store.dispatch("tagsView/delView", this.$route);
      this.$router.go(-1);
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "新增捐献案例器官费用表";
      if (this.curCase) {
        this.form.infoid = this.curCase.id;
        this.form.donateno = this.curCase.donorno;
        this.form.donatetime = this.curCase.donatetime;
        this.form.name = this.curCase.name;
        this.form.borthdate = this.curCase.birthday;
        this.form.sex = this.curCase.sex;
        this.form.age = this.curCase.age;
        this.form.donationcategory = this.curCase.donationcategory;
        //获取完成登记的器官表
        if (this.curCase.id > 0) {
        } else {
          this.curCase.id = 0;
        }
        let searchParam = {
          infoid: this.curCase.id
        };
        listDonatecomporgan(searchParam).then(res => {
          if (res.code == 200) {
            // æŸ¥è¯¢å™¨å®˜è´¹ç”¨è¡¨
            let tempParam = {
              organcode: null,
              organname: null,
              charge: null
            };
            listOrgancharge(tempParam).then(res1 => {
              if (res1.code == 200) {
                this.organchargelist = res1.rows;
              }
              //插入器官表
              res.rows.forEach(item => {
                //获取费用金额
                this.organchargelist.map(rescharge => {
                  if (rescharge.organcode == item.organno) {
                    this.donorchargeorgans.push({
                      organno: item.organno,
                      organname: item.organname,
                      organcharge: rescharge.charge,
                      infoid: item.infoid,
                      hospitalname: item.transplanthospitalname,
                      hospitalno: item.transplanthospitalno,
                      organtime: item.transplanttime,
                      chargestate: "0"
                    });
                  }
                });
              });
            });
          }
        });
      }
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate() {
      this.reset();
      this.open = true;
      this.title = "修改捐献案例器官费用表";
      getDonorcharge(this.curId).then(response => {
        this.form = response.data;
        console.log("getDonorcharge", response);
        //器官费用信息
        this.organParams.donorchargeid = this.curId;
        console.log("this.organParams", this.organParams);
        listDonorchargeorgan(this.organParams).then(res => {
          console.log("listDonorchargeorgan", res);
          this.donorchargeorgans = res.rows;
          console.log(this.donorchargeorgans, "donorchargeorgans");
          if (this.donorchargeorgans.length > 0) {
          } else {
            this.addRow(0);
          }
        });
      });
    },
    /** ä¿®æ”¹æŸ¥çœ‹æ“ä½œ */
    handleDetail() {
      this.reset();
      this.open = true;
      getDonorcharge(this.curId).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "查看捐献案例器官费用表";
        //器官费用信息
        this.organParams.donorchargeid = this.curId;
        listDonorchargeorgan(this.organParams).then(res => {
          this.donorchargeorgans = res.rows;
          if (this.donorchargeorgans.length > 0) {
          } else {
            this.addRow(0);
          }
        });
      });
    },
    /** æäº¤ä¿å­˜æŒ‰é’® */
    submitForm: debounce(function(data) {
      this.$refs["form"].validate(valid => {
        if (valid) {
          //校验、费用合计
          let ChargeSum = 0;
          let ChargeamountSum = 0;
          let organname = "";
          try {
            for (let i = 0; i < this.donorchargeorgans.length; i++) {
              organname += this.donorchargeorgans[i].organname + ",";
              if (!isNaN(parseFloat(this.donorchargeorgans[i].organcharge))) {
                ChargeSum += parseFloat(this.donorchargeorgans[i].organcharge);
              }
              if (!isNaN(parseFloat(this.donorchargeorgans[i].amount))) {
                ChargeamountSum += parseFloat(this.donorchargeorgans[i].amount);
              }
            }
            this.form.donateorgan = organname.substring(
              0,
              organname.lastIndexOf(",")
            );
            this.form.chargeamount = ChargeSum.toFixed(2);
            this.form.chargeamounted = ChargeamountSum.toFixed(2);
          } catch {}
          //保存
          if (this.form.id != null) {
            for (let k = 0; k < this.donorchargeorgans.length; k++) {
              this.donorchargeorgans[k].donorchargeID = this.form.id;
            }
            updateDonorcharge(this.form).then(res1 => {
              if (res1.code == 200) {
                saveDonorchargeorgan(this.donorchargeorgans).then(res2 => {
                  if (res2.code == 200) {
                    this.$modal.msgSuccess("保存成功!");
                    this.open = false;
                  }
                });
              }
            });
          } else {
            addDonorcharge(this.form).then(response => {
              if (response.code == 200) {
                console.log("addDonorcharge", response);
                //保存前校验数据
                for (let k = 0; k < this.donorchargeorgans.length; k++) {
                  this.donorchargeorgans[k].donorchargeid = response.data.id;
                }
                saveDonorchargeorgan(this.donorchargeorgans).then(res2 => {
                  if (res2.code == 200) {
                    this.$modal.msgSuccess("保存成功!");
                    this.open = false;
                  }
                });
              }
            });
          }
        }
      });
    }, 500),
    //计算费用合计
    chargeSum() {
      let ChargeSum = 0;
      let ChargeamountSum = 0;
      //费用合计
      try {
        for (let i = 0; i < this.donorchargeorgans.length; i++) {
          if (!isNaN(parseFloat(this.donorchargeorgans[i].organcharge))) {
            ChargeSum += parseFloat(this.donorchargeorgans[i].organcharge);
          }
          if (!isNaN(parseFloat(this.donorchargeorgans[i].amount))) {
            ChargeamountSum += parseFloat(this.donorchargeorgans[i].amount);
          }
        }
        this.form.chargeamount = ChargeSum.toFixed(2);
        this.form.chargeamounted = ChargeamountSum.toFixed(2);
      } catch {}
    },
    //表格合计
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = [
        "organno",
        "organname",
        "amount",
        "amounttime",
        "organcharge",
        "hospitalname",
        "organtime",
        "remark"
      ];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = "合计";
          return;
        }
        // if (index === 2) {
        //   sums[index] = this.form.chargeamounted;
        //   return;
        // }
        // if (index === 4) {
        //   sums[index] = this.form.chargeamount;
        //   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;
    }
  }
};
</script>
<style lang="scss" scoped>
.Modifydetailscla {
  padding: 10px;
  .boxdiv {
    font-size: 18px;
    padding: 0 30px;
    padding-bottom: 60px;
    .top-text {
      text-align: center;
      font-size: 23px;
      font-weight: 600;
      margin: 20px 0;
      margin-bottom: 50px;
    }
    .dialog-footer {
      text-align: left;
      margin-top: 10px;
    }
  }
}
.upload-demo {
  text-align: center;
}
.pdfimg {
  display: flex; // text-align: center;
  width: 100%;
  height: 600px;
  .box-pdf {
    width: 400px;
    padding-top: 20px;
    margin-right: 30px;
    border: 1px solid #dcdfe6;
    -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
      0 0 6px 0 rgba(0, 0, 0, 0.04);
    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1); // <- Add this to fix.
  }
  .pdftit {
    width: 200px;
    padding: 20px;
    font-size: 18px;
  }
  .pdftit:hover {
    background: #c0cef7;
  }
  .pdfimgmin {
    width: 60%;
    img {
      width: 100%;
    }
  }
  .pdfimgmins {
    font-size: 28px;
    width: 60%;
    text-align: center;
  }
}
.button-delete{
  color: rgb(236, 69, 69);
}
::v-deep .el-input--medium .el-input__inner {
  height: 36px;
  line-height: 36px;
  text-align: center;
}
::v-deep .el-alert__title {
  font-size: 20px;
  line-height: 20px;
}
</style>