11
WXL
2024-03-14 1c08c6dcbe0f81bd8cff8a363e0d6f5c996474be
11
已添加1个文件
已修改10个文件
3618 ■■■■ 文件已修改
src/api/project/organallocation.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/project/statistics.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/donationdetails/index.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/donorcharge/donorchargedetail/index.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/ethicalReview/index.vue 385 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/indexstatistics/index.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/applyStatistics/index.vue 432 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/caseStatistics/index.vue 446 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/chargeStatistics/index.vue 442 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/statistics/performanceStaristics/index.vue 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/unitCost/particulars/index.vue 1454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/project/organallocation.js
@@ -3,7 +3,7 @@
// æŸ¥è¯¢å™¨å®˜åˆ†é…åˆ—表
export function listOrganallocation(query) {
  return request({
    url: '/project/organallocation/list',
    url: '/project/donateorgan/countList',
    method: 'get',
    params: query
  })
src/api/project/statistics.js
@@ -4,31 +4,31 @@
export function listanlstatistics(query) {
  return request({
    url: '/project/spstatcase/spStatCaselist',
    method: 'get',
    params: query
    method: 'post',
    data: query
  })
}
// æŸ¥è¯¢ç»©æ•ˆç»Ÿè®¡
export function listjixstatistics(query) {
    return request({
      url: '/project/funddetail/getListBySpStatBonus',
      method: 'get',
      params: query
      method: 'post',
      data: query
    })
  }
  // æŸ¥è¯¢æŠ¥é”€ç»Ÿè®¡
export function listbxiaostatistics(query) {
    return request({
      url: '/project/spstatexpense/spStatExpenselist',
      method: 'get',
      params: query
      method: 'post',
      data: query
    })
  }
  // æŸ¥è¯¢æ”¶è´¹ç»Ÿè®¡
export function listsfeistatistics(query) {
    return request({
      url: '/project/donorchargeorgan/getListBySpStatChange',
      method: 'get',
      params: query
      method: 'post',
      data: query
    })
  }
src/views/project/donationdetails/index.vue
@@ -6,10 +6,7 @@
        <div>
          <el-steps direction="vertical" :active="workflow">
            <el-step title="潜在捐献" icon="el-icon-user">
              <template
                slot="description"
                v-if="donatebaseinfo.createtime"
              >
              <template slot="description" v-if="donatebaseinfo.createtime">
                <p>
                  æäº¤ï¼š<span
                    >{{ donatebaseinfo.createperson }}
@@ -29,24 +26,17 @@
              icon="el-icon-edit-outline"
              description="请先完成前部步骤"
            >
              <template
                slot="description"
                v-if="medicalevaluation.createtime"
              >
              <template slot="description" v-if="medicalevaluation.createtime">
                <p>
                  æäº¤ï¼š<span>
                    {{ medicalevaluation.createperson }}
                    {{
                      parseTime(medicalevaluation.createtime)
                    }}</span
                    {{ parseTime(medicalevaluation.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ medicalevaluation.updateperson }}
                    {{
                      parseTime(medicalevaluation.updatetime)
                    }}</span
                    {{ parseTime(medicalevaluation.updatetime) }}</span
                  >
                </p>
              </template>
@@ -63,17 +53,13 @@
                <p>
                  æäº¤ï¼š<span>
                    {{ relativesconfirmation.createperson }}
                    {{
                      parseTime(relativesconfirmation.createtime)
                    }}</span
                    {{ parseTime(relativesconfirmation.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ relativesconfirmation.updateperson }}
                    {{
                      parseTime(relativesconfirmation.updatetime)
                    }}</span
                    {{ parseTime(relativesconfirmation.updatetime) }}</span
                  >
                </p>
              </template>
@@ -83,24 +69,17 @@
              description="请先完成前部步骤"
              icon="el-icon-s-order"
            >
              <template
                slot="description"
                v-if="donateflowcharts.createtime"
              >
              <template slot="description" v-if="donateflowcharts.createtime">
                <p>
                  æäº¤ï¼š<span>
                    {{ donateflowcharts.createperson }}
                    {{
                      parseTime(donateflowcharts.createtime)
                    }}</span
                    {{ parseTime(donateflowcharts.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ donateflowcharts.updateperson }}
                    {{
                      parseTime(donateflowcharts.updatetime)
                    }}</span
                    {{ parseTime(donateflowcharts.updatetime) }}</span
                  >
                </p>
              </template>
@@ -117,17 +96,13 @@
                <p>
                  æäº¤ï¼š<span>
                    {{ donateorgansService.createperson }}
                    {{
                      parseTime(donateorgansService.createtime)
                    }}</span
                    {{ parseTime(donateorgansService.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ donateorgansService.updateperson }}
                    {{
                      parseTime(donateorgansService.updatetime)
                    }}</span
                    {{ parseTime(donateorgansService.updatetime) }}</span
                  >
                </p>
              </template>
@@ -137,24 +112,17 @@
              description="请先完成前部步骤"
              icon="el-icon-s-management"
            >
              <template
                slot="description"
                v-if="donationwitness.createtime"
              >
              <template slot="description" v-if="donationwitness.createtime">
                <p>
                  æäº¤ï¼š<span>
                    {{ donationwitness.createperson }}
                    {{
                      parseTime(donationwitness.createtime)
                    }}</span
                    {{ parseTime(donationwitness.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ donationwitness.updateperson }}
                    {{
                      parseTime(donationwitness.updatetime)
                    }}</span
                    {{ parseTime(donationwitness.updatetime) }}</span
                  >
                </p>
              </template>
@@ -171,17 +139,13 @@
                <p>
                  æäº¤ï¼š<span>
                    {{ donatecompletioninfo.createperson }}
                    {{
                      parseTime(donatecompletioninfo.createtime)
                    }}</span
                    {{ parseTime(donatecompletioninfo.createtime) }}</span
                  >
                </p>
                <p>
                  æ›´æ–°ï¼š<span>
                    {{ donatecompletioninfo.updateperson }}
                    {{
                      parseTime(donatecompletioninfo.updatetime)
                    }}</span
                    {{ parseTime(donatecompletioninfo.updatetime) }}</span
                  >
                </p>
              </template>
@@ -2611,13 +2575,13 @@
      showTerminationBtn: 0, //终止状态 0-未终止 1-已终止
      // æµç¨‹æ•°æ®ï¼šdonatebaseinfo[createtime,updatetime]、medicalevaluation、relativesconfirmation、donateflowcharts、donateorgansService、donationwitness、donatecompletioninfo
      Processdata: {},
      donatebaseinfo:{},
      medicalevaluation:{},
      relativesconfirmation:{},
      donateflowcharts:{},
      donateorgansService:{},
      donationwitness:{},
      donatecompletioninfo:{},
      donatebaseinfo: {},
      medicalevaluation: {},
      relativesconfirmation: {},
      donateflowcharts: {},
      donateorgansService: {},
      donationwitness: {},
      donatecompletioninfo: {},
      //省市区默认值设置,可为空
      searchAddress: {
        sheng: "",
@@ -2805,17 +2769,17 @@
    Getbasicinformation() {
      // å·¦ä¾§æµç¨‹æ•°æ®
      getDonatebaseinfoflow(this.infoid).then(res => {
        if (res.code==200) {
        if (res.code == 200) {
          this.Processdata = res.data;
          this.donatebaseinfo=this.Processdata.donatebaseinfo;
          this.medicalevaluation=this.Processdata.medicalevaluation;
          this.relativesconfirmation=this.Processdata.relativesconfirmation;
          this.donateflowcharts=this.Processdata.donateflowcharts;
          this.donateorgansService=this.Processdata.donateorgansService;
          this.donationwitness=this.Processdata.donationwitness;
          this.donatecompletioninfo=this.Processdata.donatecompletioninfo;
        }else{
          this.$message.error('侧边栏信息获取失败');
          this.donatebaseinfo = this.Processdata.donatebaseinfo;
          this.medicalevaluation = this.Processdata.medicalevaluation;
          this.relativesconfirmation = this.Processdata.relativesconfirmation;
          this.donateflowcharts = this.Processdata.donateflowcharts;
          this.donateorgansService = this.Processdata.donateorgansService;
          this.donationwitness = this.Processdata.donationwitness;
          this.donatecompletioninfo = this.Processdata.donatecompletioninfo;
        } else {
          this.$message.error("侧边栏信息获取失败");
        }
      });
@@ -2857,9 +2821,7 @@
      };
      if (this.actives == 1) {
        this.activetele = "医学评估";
        if (this.medicineform.infoid) {
          return;
        }
        listMedicalevaluation(searchParam).then(response => {
          if (response.code == 200 && response.rows[0]) {
            this.medicineform = response.rows[0];
@@ -2871,9 +2833,7 @@
        });
      } else if (this.actives == 2) {
        this.activetele = "捐献确认";
        if (this.affirmform.infoid) {
          return;
        }
        listRelativesconfirmation(searchParam).then(response => {
          if (response.code == 200 && response.rows[0]) {
            this.affirmform = response.rows[0];
@@ -2905,9 +2865,7 @@
        });
      } else if (this.actives == 3) {
        this.activetele = "伦理审查";
        if (this.ethicform.infoid) {
          return;
        }
        //listDonateflowchart(searchParam).then(response => {
        listEthicalreviewopinions(searchParam).then(response => {
          if (response.code == 200 && response.rows.length) {
@@ -2916,7 +2874,7 @@
            console.log("伦理审查数据为空");
          }
        });
      } else if (this.actives == 4 && !this.allocateddata[0]) {
      } else if (this.actives == 4) {
        listDonateorgan(searchParam).then(res => {
          if (res.code == 200) {
            if (res.rows[0]) {
@@ -2934,19 +2892,20 @@
            // );
          }
        });
      } else if (this.actives == 5 && !this.witnessform.infoid) {
      } else if (this.actives == 5 && !this.witnessform.id) {
        // ä¸å­˜åœ¨æ—¶èŽ·å–å™¨å®˜ä¿¡æ¯
        if (this.witnessform.infoid) {
        if (this.witnessform.id) {
          return;
        }
        listDonationwitnessorgan(searchParam).then(res => {
          if (res.code == 200) {
            if (res.rows[0]) {
              this.procureddata = res.rows;
              this.procureddata.infoid = this.infoid;
            } else {
              this.procureddata = this.allocateddata.filter(obj => obj.organname !== '左肝' && obj.organname !== '右肝');;
              this.procureddata = this.allocateddata.filter(
                obj => obj.organname !== "左肝" && obj.organname !== "右肝"
              );
              this.procureddata.infoid = this.infoid;
            }
            this.organList.organprocured = [];
@@ -2975,7 +2934,7 @@
        });
      } else if (this.actives == 6) {
        this.activetele = "完成登记";
        if (this.accomplishform.infoid) {
        if (this.accomplishform.id) {
          return;
        }
@@ -3268,6 +3227,7 @@
                  console.log(objfn, "sass");
                  updateDonorchargeorgan(objfn).then(res1 => {});
                } else {
                  item.id = null;
                  addDonorchargeorgan(item).then(res2 => {});
                }
              });
@@ -3529,7 +3489,7 @@
              infoid: this.infoid,
              donorno: this.form.donorno,
              organstate: 1,
              transplantstate:1,
              transplantstate: 1
            });
          }
        } else {
@@ -3572,6 +3532,11 @@
      if (this.form.workflow == 9) {
        this.form.workflow = 8;
        this.submitForm();
        this.$router.go(-1);
        this.$message({
          type: "success",
          message: "撤销成功!"
        });
      } else {
        this.$confirm("即将进行案例归档, ç¡®è®¤æ‰€æœ‰æ•°æ®å·²ä¿å­˜?", "提示", {
          confirmButtonText: "确定",
src/views/project/donorcharge/donorchargedetail/index.vue
@@ -147,8 +147,8 @@
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.caseno"
                  :disabled="true"
                  placeholder="系统编号"
                  :disabled="true"
                />
              </template>
            </el-table-column>
@@ -161,8 +161,8 @@
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.amount"
                  :disabled="true"
                  placeholder="实收金额"
                  :disabled="true"
                />
              </template>
            </el-table-column>
@@ -195,24 +195,24 @@
              <template slot-scope="scope">
                <el-input
                  v-model="scope.row.organcharge"
                  :disabled="true"
                  placeholder="标准费用"
                  :disabled="true"
                />
              </template>
            </el-table-column>
            <el-table-column
              prop="hospitalname"
              prop="hospitalno"
              align="center"
              label="接收医院"
              width="280"
            >
              <template slot-scope="scope">
                <org-selecter
                  :disabled="true"
                  v-model="scope.row.hospitalno"
                  ref="tranHosSelect"
                  :org-type="'4'"
                  v-model="scope.row.hospitalno"
                  style="width: 100%"
                  :disabled="true"
                />
              </template>
            </el-table-column>
@@ -309,7 +309,6 @@
    return {
      activeName: 1, //文件类型
      // éƒ¨é—¨æ ‘选项
      //票据文件
      pdftitle: "",
      pdfimg: "",
@@ -352,8 +351,6 @@
      donorchargeorgans: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢è´¹ç”¨è¡¨å‚æ•°
      queryParams: {
        pageNum: 1,
@@ -370,7 +367,6 @@
        pageSize: 10,
        donorchargeid: null
      },
      // å½“前用户信息
      userprofile: {},
      // è¡¨å•参数
@@ -388,7 +384,7 @@
          { required: true, message: "请输入所属业务组", trigger: "blur" }
        ]
      },
      gxinzt: false,
      baselist: [],
      donorList: [],
      organchargelist: [],
@@ -419,7 +415,6 @@
      headers: {
        Authorization: "Bearer " + getToken()
      },
      jurisdiction: false,
      //保存按钮控制
@@ -437,7 +432,6 @@
      this.defaultperson = response.data;
      this.standardlevel = response.data.standardlevel;
    });
    //获取参数
    this.getroute();
  },
@@ -531,8 +525,6 @@
      this.operationType = this.$route.query.operation;
      this.curId = this.$route.query.id;
      this.curCase = this.$route.query.data;
      this.gxinzt = this.$route.query.gxinzt;
      console.log(this.curCase);
      console.log("this.$route.query", this.$route.query);
      if (this.operationType == "add") {
@@ -572,7 +564,6 @@
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "新增捐献案例器官费用表";
      if (this.curCase) {
@@ -585,13 +576,46 @@
        this.form.age = this.curCase.age;
        this.form.donationcategory = this.curCase.donationcategory;
        this.organParams.infoid = this.curCase.id;
        listDonorchargeorgan(this.organParams).then(res => {
          console.log("listDonorchargeorgan", res);
          this.donorchargeorgans = res.rows;
          if (this.donorchargeorgans.length > 0) {
          } else {
            this.addRow(0);
        //获取完成登记的器官表
        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,
                      caseno: item.caseno,
                      organname: item.organname,
                      organcharge: rescharge.charge,
                      infoid: item.infoid,
                      hospitalname: item.hospitalname,
                      hospitalno: item.hospitalno,
                      organtime: item.transplanttime,
                      chargestate: "0"
                    });
                  }
                });
              });
            });
          }
        });
      }
@@ -600,14 +624,13 @@
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate() {
      this.reset();
      this.open = true;
      this.title = "修改捐献案例器官费用表";
      getDonorcharge(this.curId).then(response => {
        this.form = response.data;
        console.log("getDonorcharge", response);
        //器官费用信息
        this.organParams.infoid = this.form.infoid;
        this.organParams.donorchargeid = this.curId;
        console.log("this.organParams", this.organParams);
        listDonorchargeorgan(this.organParams).then(res => {
          console.log("listDonorchargeorgan", res);
@@ -617,9 +640,6 @@
          } else {
            this.addRow(0);
          }
          if ((this.gxinzt = true)) {
            this.submitForm();
          }
        });
      });
    },
@@ -627,15 +647,13 @@
    /** ä¿®æ”¹æŸ¥çœ‹æ“ä½œ */
    handleDetail() {
      this.reset();
      this.open = true;
      getDonorcharge(this.curId).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "查看捐献案例器官费用表";
        //器官费用信息
        this.organParams.infoid = this.form.infoid;
        this.organParams.donorchargeid = this.curId;
        listDonorchargeorgan(this.organParams).then(res => {
          this.donorchargeorgans = res.rows;
          if (this.donorchargeorgans.length > 0) {
@@ -678,13 +696,13 @@
            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;
        this.$router.go(-1);
                  }
                });
              }
@@ -700,7 +718,8 @@
                saveDonorchargeorgan(this.donorchargeorgans).then(res2 => {
                  if (res2.code == 200) {
                    this.$modal.msgSuccess("保存成功!");
                    this.open = false;
        this.$router.go(-1);
                  }
                });
              }
src/views/project/ethicalReview/index.vue
@@ -1,24 +1,48 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px">
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      v-show="showSearch"
      label-width="70px"
    >
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="姓名" prop="name">
            <el-input v-model="queryParams.name" placeholder="请输入姓名" clearable size="small"
              @keyup.enter.native="handleQuery" />
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item align="left" label="医疗机构" prop="treatmenthospitalno">
            <org-selecter ref="orgSelecter" :org-type="'3'" v-model="queryParams.treatmenthospitalno" />
          <el-form-item
            align="left"
            label="医疗机构"
            prop="treatmenthospitalno"
          >
            <org-selecter
              ref="orgSelecter"
              :org-type="'3'"
              v-model="queryParams.treatmenthospitalno"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="捐献地市">
            <el-select v-model="queryParams.city" placeholder="请选择地市">
              <el-option v-for="item in provinceData" :key="item.value" :label="item.label" :value="item.value">
              <el-option
                v-for="item in provinceData"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
@@ -26,9 +50,18 @@
        <el-col :span="6">
          <el-form-item label="捐献进度" prop="recordstate">
            <el-select v-model="queryParams.workflow" placeholder="请选择捐献进度" clearable size="small">
              <el-option v-for="dict in dict.type.sys_donornode" :key="dict.value" :label="dict.label"
                :value="dict.value" />
            <el-select
              v-model="queryParams.workflow"
              placeholder="请选择捐献进度"
              clearable
              size="small"
            >
              <el-option
                v-for="dict in dict.type.sys_donornode"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </el-form-item>
        </el-col>
@@ -36,8 +69,16 @@
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="报告人">
            <el-select v-model="queryParams.reporterno" placeholder="请选择报告人">
              <el-option v-for="item in reportlist" :key="item.index" :label="item.reportername" :value="item.reporterno">
            <el-select
              v-model="queryParams.reporterno"
              placeholder="请选择报告人"
            >
              <el-option
                v-for="item in reportlist"
                :key="item.index"
                :label="item.reportername"
                :value="item.reporterno"
              >
              </el-option>
            </el-select>
          </el-form-item>
@@ -45,40 +86,91 @@
        <el-col :span="12">
          <el-form-item label="报告日期">
            <el-date-picker style="width: 100%" v-model="selecttime" type="monthrange" range-separator="至"
              start-placeholder="开始月份" end-placeholder="结束月份" value-format="yyyy-MM-dd" @change="getTimeList">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <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-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-col>
      </el-row>
    </el-form>
    <el-table :default-sort="{ prop: 'createTime' }" v-loading="loading" :data="listnews" border>
    <el-table
      :default-sort="{ prop: 'createTime' }"
      v-loading="loading"
      :data="listnews"
      border
    >
      <el-table-column label="捐献者" align="center" prop="name" width="120" />
      <el-table-column label="年龄" align="center" prop="age" width="100" />
      <el-table-column label="性别" align="center" prop="sex" width="100">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_user_sex" :value="parseInt(scope.row.sex)" />
          <dict-tag
            :options="dict.type.sys_user_sex"
            :value="parseInt(scope.row.sex)"
          />
        </template>
      </el-table-column>
      <el-table-column label="医疗机构" align="center" prop="treatmenthospitalname" />
      <el-table-column label="伦理审查结论" align="center" prop="flowconclusion" width="100">
      <el-table-column
        label="医疗机构"
        align="center"
        prop="treatmenthospitalname"
      />
      <el-table-column
        label="伦理审查结论"
        align="center"
        prop="flowconclusion"
        width="100"
      >
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_EthicalReview" :value="scope.row.flowconclusion" />
          <dict-tag
            :options="dict.type.sys_EthicalReview"
            :value="scope.row.flowconclusion"
          />
        </template>
      </el-table-column>
      <el-table-column label="审查意见" align="center" prop="flowcontent" />
      <el-table-column label="审查时间" align="center" prop="createTime" width="160" />
      <el-table-column
        label="审查时间"
        align="center"
        prop="createTime"
        width="160"
      />
      <!-- <el-table-column label="身份证号" prop="idcardno" width="200" /> -->
      <el-table-column label="报告人" align="center" prop="reportername" width="100" />
      <el-table-column label="报告时间" align="center" prop="reporttime" width="140">
      <el-table-column
        label="报告人"
        align="center"
        prop="reportername"
        width="100"
      />
      <el-table-column
        label="报告时间"
        align="center"
        prop="reporttime"
        width="140"
      >
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.reporttime, "{y}-{m}-{d}") }}</span>
        </template>
@@ -90,29 +182,58 @@
        </template>
      </el-table-column> -->
      <el-table-column label="操作" align="center" width="150px" class-name="small-padding fixed-width" fixed="right">
      <el-table-column
        label="操作"
        align="center"
        width="150px"
        class-name="small-padding fixed-width"
        fixed="right"
      >
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-coordinate"
            @click="showDonationEvaluationDialog(scope.row)">伦理审查
          <el-button
            size="mini"
            type="text"
            icon="el-icon-coordinate"
            @click="showDonationEvaluationDialog(scope.row)"
            >伦理审查
          </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" />
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- ä¼¦ç†å®¡æŸ¥å¼¹çª— -->
    <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="1000px" append-to-body>
    <el-dialog
      :title="title"
      :visible.sync="open"
      :close-on-click-modal="false"
      width="1000px"
      append-to-body
    >
      <el-form ref="form" :model="form" :rules="rules" label-width="160px">
        <el-row>
          <el-col :span="12">
            <el-form-item align="left" label="捐献编号">
              <el-input v-model="curCase.donorno" placeholder="请输入捐献编号" disabled />
              <el-input
                v-model="curCase.donorno"
                placeholder="请输入捐献编号"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="捐献者姓名">
              <el-input v-model="curCase.name" placeholder="请输入姓名" disabled />
              <el-input
                v-model="curCase.name"
                placeholder="请输入姓名"
                disabled
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -121,15 +242,23 @@
        </el-row>
        <el-form-item label="审查意见">
          <el-input v-model="form.flowcontent" type="textarea" placeholder="请输入内容" />
          <el-input
            v-model="form.flowcontent"
            type="textarea"
            placeholder="请输入内容"
          />
        </el-form-item>
        <el-row>
          <el-col :span="18">
            <el-form-item label="审查结论">
              <el-radio-group v-model="form.flowconclusion">
                <el-radio v-for="dict in dict.type.sys_EthicalReview" :key="dict.value" :label="parseInt(dict.value)">{{
                  dict.label }}</el-radio>
                <el-radio
                  v-for="dict in dict.type.sys_EthicalReview"
                  :key="dict.value"
                  :label="parseInt(dict.value)"
                  >{{ dict.label }}</el-radio
                >
              </el-radio-group>
            </el-form-item>
          </el-col>
@@ -137,8 +266,14 @@
          <!-- createtime   å®¡æŸ¥æ—¥æœŸ -->
          <el-col :span="6" :pull="5">
            <el-form-item label="审查日期">
              <el-date-picker clearable size="small" v-model="form.createTime" type="date"
                value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择结论时间">
              <el-date-picker
                clearable
                size="small"
                v-model="form.createTime"
                type="date"
                value-format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择结论时间"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
@@ -209,29 +344,57 @@
          </el-row>
        </el-form-item> -->
        <el-form-item label="捐献资料附件">
          <annex-upload ref="ethicalannex" :infoid="curCase.id" :donorno="curCase.donorno" :flowname="flowname"
            :annexno="annexno" />
          <annex-upload
            ref="ethicalannex"
            :infoid="curCase.id"
            :donorno="curCase.donorno"
            :flowname="flowname"
            :annexno="annexno"
          />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" :loading="loading" @click="submitForm">ç¡® å®š</el-button>
        <el-button type="primary" :loading="loading" @click="submitForm"
          >ç¡® å®š</el-button
        >
        <el-button @click="cancel">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
    <!-- æ·»åŠ æˆ–ä¿®æ”¹ä¼¦ç†å®¡æŸ¥ä¸“å®¶æ„è§å¯¹è¯æ¡† -->
    <el-dialog :title="title" :visible.sync="isShowExpertAdviceDialog" width="800px" append-to-body>
      <el-form ref="expertAdviceForm" :model="expertAdviceForm" :rules="expertAdviceRules" label-width="80px">
    <el-dialog
      :title="title"
      :visible.sync="isShowExpertAdviceDialog"
      width="800px"
      append-to-body
    >
      <el-form
        ref="expertAdviceForm"
        :model="expertAdviceForm"
        :rules="expertAdviceRules"
        label-width="80px"
      >
        <el-form-item label="专家名字" prop="expertname">
          <el-input v-model="expertAdviceForm.expertname" placeholder="请输入专家名字" />
          <el-input
            v-model="expertAdviceForm.expertname"
            placeholder="请输入专家名字"
          />
        </el-form-item>
        <el-form-item label="专家意见" prop="expertopinion">
          <el-input v-model="expertAdviceForm.expertopinion" type="textarea" placeholder="请输入内容" />
          <el-input
            v-model="expertAdviceForm.expertopinion"
            type="textarea"
            placeholder="请输入内容"
          />
        </el-form-item>
        <el-form-item label="专家结论 ">
          <el-radio-group v-model="expertAdviceForm.expertconclusion">
            <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="parseInt(dict.value)">{{ dict.label
            }}</el-radio>
            <el-radio
              v-for="dict in dict.type.sys_0_1"
              :key="dict.value"
              :label="parseInt(dict.value)"
              >{{ dict.label }}</el-radio
            >
          </el-radio-group>
        </el-form-item>
      </el-form>
@@ -247,12 +410,12 @@
import {
  listDonatebaseinfo,
  getDonatebaseinfo,
  updateDonatebaseinfo,
  updateDonatebaseinfo
} from "@/api/project/donatebaseinfo";
import {
  addDonateflowchart,
  listDonateflowchart,
  updateDonateflowchart,
  updateDonateflowchart
} from "@/api/project/DonationEvaluation";
import {
  listEthicalreviewopinions,
@@ -260,7 +423,7 @@
  delEthicalreviewopinions,
  addEthicalreviewopinions,
  updateEthicalreviewopinions,
  listnewEthicalreviewopinions,
  listnewEthicalreviewopinions
} from "@/api/project/ethicalreviewopinions";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
@@ -270,7 +433,7 @@
  components: {
    Li_area_select,
    OrgSelecter,
    AnnexUpload,
    AnnexUpload
  },
  name: "EthicalReview",
  dicts: [
@@ -292,7 +455,7 @@
    "sys_FamilyRelation",
    "sys_OrganizationType",
    "sys_EthicalReview",
    'sys_donornode'
    "sys_donornode"
  ],
  data() {
    return {
@@ -314,7 +477,7 @@
        { label: "衢州市", value: "8" },
        { label: "舟山市", value: "9" },
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" },
        { label: "丽水市", value: "B" }
      ],
      //省市区
@@ -322,7 +485,7 @@
      defultAddress: {
        sheng: "浙江省",
        shi: "",
        qu: "",
        qu: ""
      },
      // é®ç½©å±‚
      loading: true,
@@ -366,14 +529,14 @@
        organizationtype: null,
        reportername: null,
        reporttime: null,
        city: null,
        city: null
      },
      //查询参数-专家意见
      expertAdviceQueryParam: {
        pageNum: 1,
        pageSize: 10,
        infoid: null,
        donorno: null,
        donorno: null
        // expertopinion: null,
        // expertconclusion: null,
        // expertname: null,
@@ -387,7 +550,7 @@
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null,
        organizationname: null
      },
      // è¡¨å•参数
      form: {
@@ -403,7 +566,7 @@
        flowannex: null,
        flowcontent: null,
        flowconclusion: 0,
        conclusiontime: null,
        conclusiontime: null
      },
      // è¡¨å•校验
      rules: {},
@@ -420,25 +583,21 @@
      // è¡¨å•校验
      expertAdviceRules: {
        expertopinion: [
          { required: true, message: "专家意见不能为空", trigger: "blur" },
          { required: true, message: "专家意见不能为空", trigger: "blur" }
        ],
        expertconclusion: [
          { required: true, message: "专家结论不能为空", trigger: "blur" },
          { required: true, message: "专家结论不能为空", trigger: "blur" }
        ],
        expertname: [
          { required: true, message: "专家名字不能为空", trigger: "blur" },
          { required: true, message: "专家名字不能为空", trigger: "blur" }
        ],
        conclusiontime: [
          { required: true, message: "结论时间不能为空", trigger: "blur" },
        ],
      },
          { required: true, message: "结论时间不能为空", trigger: "blur" }
        ]
      }
    };
  },
  created() {
    this.getuserlist();
    this.getList();
  },
  activated() {
    this.selecttime = "";
    this.reportervalue = "";
    this.reportlist = [];
@@ -447,11 +606,13 @@
    this.queryParams.name = "";
    this.queryParams.treatmenthospitalno = "";
    if (this.$route.params.starttime != null && this.$route.params.endtime) {
    if (this.$route.params.starttime && this.$route.params.endtime) {
      this.selecttime = [
        this.$route.params.starttime,
        this.$route.params.endtime,
        this.$route.params.endtime
      ];
      this.endtime = this.selecttime[1];
      this.starttime = this.selecttime[0];
    }
    if (this.$route.params.reporterno != "") {
      this.reporterno = this.$route.params.reporterno;
@@ -474,22 +635,23 @@
    if (this.$route.params.city != "") {
      this.queryParams.city = this.$route.params.city;
    }
    this.getuserlist();
    this.getList();
  },
  activated() {},
  mounted() {
    this.LoadReportList();
  },
  methods: {
    LoadReportList() {
      listDonatebaseinfo().then((res) => {
      listDonatebaseinfo().then(res => {
        console.log("潜在捐献表", res);
        let list = res.rows;
        let reportlist = [];
        list.forEach((element) => {
        list.forEach(element => {
          reportlist.push({
            reporterno: element.reporterno,
            reportername: element.reportername,
            reportername: element.reportername
          });
        });
        console.log("dwada", reportlist);
@@ -501,7 +663,7 @@
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function (arr, current) {
      Arr = Arr.reduce(function(arr, current) {
        hash[current.reporterno]
          ? ""
          : (hash[current.reporterno] = true && arr.push(current));
@@ -566,7 +728,7 @@
    },
    //用户列表
    getuserlist() {
      listUser().then((res) => {
      listUser().then(res => {
        this.users = res.data;
      });
    },
@@ -574,11 +736,15 @@
    getList() {
      this.loading = true;
      this.queryParams.params = {};
      console.log(this.starttime, "this.starttime");
      console.log(this.endtime, "this.endtime");
      if (null != this.daterangeReporttime && "" != this.daterangeReporttime) {
        this.queryParams.params["beginReporttime"] =
          this.daterangeReporttime[0];
        this.queryParams.params[
          "beginReporttime"
        ] = this.daterangeReporttime[0];
        this.queryParams.params["endReporttime"] = this.daterangeReporttime[1];
      }
      if (this.starttime != "") {
        this.queryParams.starttime = this.starttime;
      }
@@ -587,7 +753,7 @@
      }
      this.$nextTick(() => {
        listnewEthicalreviewopinions(this.queryParams).then((response) => {
        listnewEthicalreviewopinions(this.queryParams).then(response => {
          console.log("000000000000", response);
          this.listnews = response.rows;
          this.total = response.total;
@@ -615,7 +781,7 @@
        flowname: null,
        flowannex: null,
        flowcontent: null,
        flowconclusion: 0,
        flowconclusion: 0
      };
      this.resetForm("form");
    },
@@ -635,7 +801,7 @@
        expertname: null,
        conclusiontime: null,
        conclusionannex: null,
        conclusionorder: null,
        conclusionorder: null
      };
      this.resetForm("expertAdviceForm");
    },
@@ -667,7 +833,7 @@
        reportername: null,
        reporttime: null,
        city: null,
        treatmenthospitalno: null,
        treatmenthospitalno: null
      };
      this.selecttime = [];
      this.getTimeList();
@@ -675,7 +841,7 @@
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null,
        organizationname: null
      };
      //this.$refs.areaSelect.clean();
@@ -688,7 +854,7 @@
        path: "/organ/donationdetails/",
        query: {
          id: row.id,
          organType: "edit",
          organType: "edit"
        }
      });
      //查找是否存在伦理审查记录
@@ -742,10 +908,13 @@
    submitForm() {
      this.loading = true;
      this.$nextTick(() => {
        this.$refs["form"].validate((valid) => {
        this.$refs["form"].validate(valid => {
          if (valid) {
            //判断审查意见录入
            if (this.form.flowconclusion == 2 || this.form.flowconclusion == 3) {
            if (
              this.form.flowconclusion == 2 ||
              this.form.flowconclusion == 3
            ) {
              var exp = this.form.flowcontent;
              if (typeof exp == "undefined" || exp == null || exp == "") {
                this.$modal.msgError("请输入审查意见!");
@@ -756,7 +925,7 @@
            //判断是否是新纪录
            if (this.form.id != null) {
              // updateEthicalreviewopinions没有权限
              updateDonateflowchart(this.form).then((response) => {
              updateDonateflowchart(this.form).then(response => {
                this.$modal.msgSuccess("修改成功");
                //更新捐献状态
                if (this.form.flowconclusion == 1) {
@@ -764,20 +933,20 @@
                } else {
                  this.curCase.recordstate = 9;
                }
                updateDonatebaseinfo(this.curCase).then((response) => {
                updateDonatebaseinfo(this.curCase).then(response => {
                  this.open = false;
                  this.getList();
                });
              });
            } else {
              addDonateflowchart(this.form).then((response) => {
              addDonateflowchart(this.form).then(response => {
                //更新捐献状态
                if (this.form.flowconclusion == 1) {
                  this.curCase.recordstate = 8;
                } else {
                  this.curCase.recordstate = 9;
                }
                updateDonatebaseinfo(this.curCase).then((response) => {
                updateDonatebaseinfo(this.curCase).then(response => {
                  this.$modal.msgSuccess("新增成功");
                  this.open = false;
                  this.getList();
@@ -786,9 +955,9 @@
            }
          }
        });
      this.loading = false;
      })
        this.loading = false;
      });
    },
    /** èŽ·å–æçŒ®è¯„ä¼° */
@@ -797,10 +966,10 @@
      this.curCase = dontateInfo;
      let queryParam = {
        donorno: dontateInfo.donorno,
        flowname: "伦理审查",
        flowname: "伦理审查"
      };
      listDonateflowchart(queryParam).then((response) => {
      listDonateflowchart(queryParam).then(response => {
        let evaluationList = response.rows;
        if (evaluationList.length == 1) {
          this.form = evaluationList[0];
@@ -838,18 +1007,18 @@
    //保存专家意见
    saveExpertAdvice() {
      this.$refs["expertAdviceForm"].validate((valid) => {
      this.$refs["expertAdviceForm"].validate(valid => {
        if (valid) {
          if (this.expertAdviceForm.id != null) {
            updateEthicalreviewopinions(this.expertAdviceForm).then(
              (response) => {
              response => {
                this.$modal.msgSuccess("修改成功");
                // this.getExpertList();
                this.isShowExpertAdviceDialog = false;
              }
            );
          } else {
            addEthicalreviewopinions(this.expertAdviceForm).then((response) => {
            addEthicalreviewopinions(this.expertAdviceForm).then(response => {
              this.$modal.msgSuccess("新增成功");
              // this.getExpertList();
              this.isShowExpertAdviceDialog = false;
@@ -863,39 +1032,37 @@
    //获取专家意见列表
    getExpertList() {
      this.loading = true;
      listEthicalreviewopinions(this.expertAdviceQueryParam).then(
        (response) => {
          this.doctorAdviceTableData = response.rows;
          this.total = response.total;
          this.loading = false;
        }
      );
      listEthicalreviewopinions(this.expertAdviceQueryParam).then(response => {
        this.doctorAdviceTableData = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDeleteExpert(row) {
      const ids = row.id;
      this.$modal
        .confirm('是否确认删除伦理审查专家意见编号为"' + ids + '"的数据项?')
        .then(function () {
        .then(function() {
          return delEthicalreviewopinions(ids);
        })
        .then(() => {
          // this.getExpertList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => { });
        .catch(() => {});
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdateExpert(row) {
      this.reset();
      const id = row.id;
      getEthicalreviewopinions(id).then((response) => {
      getEthicalreviewopinions(id).then(response => {
        this.expertAdviceForm = response.data;
        this.isShowExpertAdviceDialog = true;
        //this.title = "修改伦理审查专家意见";
      });
    },
  },
    }
  }
};
</script>
</script>
src/views/project/indexstatistics/index.vue
@@ -68,8 +68,8 @@
              :to="{
                name: 'Donatebaseinfo',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -85,7 +85,7 @@
              <!-- @click="tobaseinfo0" -->
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="user" />&nbsp;&nbsp; æ½œåœ¨æçŒ®ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfDonate
                  donateNumData.numberOfDonate
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -95,8 +95,8 @@
              :to="{
                name: 'Medicalevaluation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -112,7 +112,7 @@
                @click="Tomedicalevalua"
              >
                <svg-icon icon-class="tool" />&nbsp;&nbsp; å®ŒæˆåŒ»å­¦è¯„估累计:{{
                  this.donateNumData.numberOfMedicalEvaluation
                  donateNumData.numberOfMedicalEvaluation
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -122,8 +122,8 @@
              :to="{
                name: 'Relativesconfirmation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -136,7 +136,7 @@
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="checkbox" />&nbsp;&nbsp;
                å®Œæˆäº²å±žç¡®è®¤ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfRelativeConfirmation
                  donateNumData.numberOfRelativeConfirmation
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -146,8 +146,8 @@
              :to="{
                name: 'EthicalReview',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -160,7 +160,7 @@
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="education" />&nbsp;&nbsp;
                å®Œæˆä¼¦ç†å®¡æŸ¥ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfEthicalReview
                  donateNumData.numberOfEthicalReview
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -171,36 +171,21 @@
          style="margin-top: 10px; font-size: 18px;  font-weight: bold"
        >
          <el-col :span="6">
            <router-link
              :to="{
                name: 'Organallocation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
                  shi: searchAddress.shi,
                  qu: searchAddress.qu,
                  city: city
                }
              }"
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="druid" />&nbsp;&nbsp; å®Œæˆå™¨å®˜åˆ†é…ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfDonatePeople
                  donateNumData.numberOfDonatePeople
                }}&nbsp; ä¸ª
                <!-- this.donateNumData.numberOfOrgans -->
                <!-- donateNumData.numberOfOrgans -->
              </el-card>
            </router-link>
          </el-col>
          <el-col :span="6">
            <router-link
              :to="{
                name: 'Donationwitness',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -212,7 +197,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="job" />&nbsp;&nbsp; å®ŒæˆèŽ·å–è§è¯ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfWitness
                  donateNumData.numberOfWitness
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -222,8 +207,8 @@
              :to="{
                name: 'Donatefinish',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -235,7 +220,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="lock" />&nbsp;&nbsp; æçŒ®å®Œæˆç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfCompletion
                  donateNumData.numberOfCompletion
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -246,8 +231,8 @@
              :to="{
                name: 'Donatebaseinfo',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: 99,
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -259,7 +244,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="lock" />&nbsp;&nbsp; æçŒ®ç»ˆæ­¢ç´¯è®¡ï¼š{{
                  this.donateNumData.numberOfTerminated
                  donateNumData.numberOfTerminated
                }}&nbsp; ä¾‹
              </el-card>
            </router-link>
@@ -284,9 +269,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    å™¨å®˜æçŒ®è½¬åŒ–率<br />
                    {{
                      (this.qualirtData.donateTransferRate * 100).toFixed(2)
                    }}%
                    {{ (qualirtData.donateTransferRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="8" style="text-align: center">
@@ -295,9 +278,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    å¹³å‡å™¨å®˜äº§å‡ºçއ<br />
                    {{
                      (this.qualirtData.organProductionRate * 100).toFixed(2)
                    }}%
                    {{ (qualirtData.organProductionRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="8" style="text-align: center">
@@ -306,7 +287,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    èŽ·å–å™¨å®˜åˆ©ç”¨çŽ‡<br />
                    {{ (this.qualirtData.organUsedRate * 100).toFixed(2) }}%
                    {{ (qualirtData.organUsedRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -317,17 +298,15 @@
                    <el-row :gutter="10" style="margin-top: 10px">
                      <el-col :span="8" style="text-align: center"
                        >DBD:
                        {{ (this.qualirtData.dbddonateRate * 100).toFixed(2) }}%
                        {{ (qualirtData.dbddonateRate * 100).toFixed(2) }}%
                      </el-col>
                      <el-col :span="8" style="text-align: center">
                        DCD:
                        {{ (this.qualirtData.dcddonateRate * 100).toFixed(2) }}%
                        {{ (qualirtData.dcddonateRate * 100).toFixed(2) }}%
                      </el-col>
                      <el-col :span="8" style="text-align: center">
                        DBCD:
                        {{
                          (this.qualirtData.dbcddonateRate * 100).toFixed(2)
                        }}%
                        {{ (qualirtData.dbcddonateRate * 100).toFixed(2) }}%
                      </el-col>
                    </el-row>
                  </el-card>
@@ -343,9 +322,7 @@
                      <span style="font-size: 14px"> èŽ·å–å‰æ´»æ£€çŽ‡</span>
                    </el-row>
                    {{
                      (this.qualirtData.organBeforeGetCheckRate * 100).toFixed(
                        2
                      )
                      (qualirtData.organBeforeGetCheckRate * 100).toFixed(2)
                    }}%
                  </el-card>
                </el-col>
@@ -357,11 +334,7 @@
                    <el-row>
                      <span style="font-size: 14px">获取后活检率</span>
                    </el-row>
                    {{
                      (this.qualirtData.organAfterGetCheckRate * 100).toFixed(
                        2
                      )
                    }}%
                    {{ (qualirtData.organAfterGetCheckRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -372,7 +345,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    <span style="font-size: 14px">边缘供器官比率</span><br />
                    {{ (this.qualirtData.marginOrganRate * 100).toFixed(2) }}%
                    {{ (qualirtData.marginOrganRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="12" style="text-align: center">
@@ -383,7 +356,7 @@
                    <span style="font-size: 14px"
                      >器官保存液病原菌培养阳性率</span
                    >
                    {{ (this.qualirtData.germPositiveRate * 100).toFixed(2) }}%
                    {{ (qualirtData.germPositiveRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -395,21 +368,19 @@
                      <el-row>
                        <el-col :span="6" style="text-align: center">
                          æ€»å‘生率<br />
                          {{
                            (this.qualirtData.totalPNFRate * 100).toFixed(2)
                          }}%
                          {{ (qualirtData.totalPNFRate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBD<br />
                          {{ (this.qualirtData.dbdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dbdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DCD<br />
                          {{ (this.qualirtData.dcdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dcdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBCD<br />
                          {{ (this.qualirtData.dbcdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dbcdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                      </el-row>
                    </el-row>
@@ -424,22 +395,22 @@
                      <el-row>
                        <el-col :span="6" style="text-align: center">
                          æ€»å‘生率<br />{{
                            (this.qualirtData.totalDGFRate * 100).toFixed(2)
                            (qualirtData.totalDGFRate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBD<br />{{
                            (this.qualirtData.dbddgfrate * 100).toFixed(2)
                            (qualirtData.dbddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DCD<br />{{
                            (this.qualirtData.dcddgfrate * 100).toFixed(2)
                            (qualirtData.dcddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBCD<br />{{
                            (this.qualirtData.dbcddgfrate * 100).toFixed(2)
                            (qualirtData.dbcddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                      </el-row>
@@ -1145,8 +1116,6 @@
      //     : "";
      let info = {
        pageNum: 1,
        pageSize: 10,
        starttime: this.starttime,
        endtime: this.endtime
src/views/project/statistics/applyStatistics/index.vue
@@ -1,27 +1,427 @@
<!--  -->
<template>
  <div>
报销
  <div class="app-container">
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      label-width="70px"
    >
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="业务人员" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item align="left" label="业务组" prop="treatmenthospitalno">
            <org-selecter
              ref="orgSelecter"
              :org-type="'3'"
              v-model="queryParams.treatmenthospitalno"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="费用类型">
            <el-select
              v-model="queryParams.paexpensetype"
              placeholder="请选择案例状态"
            >
              <el-option
                v-for="item in reportlist"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="12">
          <el-form-item label="统计日期">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <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-col>
      </el-row>
    </el-form>
    <!--<el-table v-loading="loading" border :data="donatebaseinfoList">     -->
    <el-table
      :data="jxidata"
      ref="table"
      border
      max-height="700"
      highlight-current-row
      :summary-method="getSummaries"
      show-summary
    >
      <el-table-column label="序号" align="center" prop="id" width="100">
      </el-table-column>
      <el-table-column label="医院名称" align="center" prop="deptmentName">
      </el-table-column>
      <el-table-column label="已收金额" align="center" prop="amount" />
      <el-table-column label="未收金额" align="center" prop="nonpayment" />
      <el-table-column label="金额" align="center" prop="organcharge" />
      <el-table-column label="操作" align="center">
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-edit"
            >明细</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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹å®¶å±žç¡®è®¤å¯¹è¯æ¡† -->
  </div>
</template>
<script>
export default {
  data () {
    return {
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import ã€Šç»„件名称》 from '《组件路径》';
import {
  listsfeistatistics,
  listbxiaostatistics,
  listjixstatistics,
  listanlstatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import AnnexUpload from "@/views/project/components/annexupload";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
    Li_area_select,
    OrgSelecter,
    AnnexUpload
  },
  name: "Medicalevaluation",
  dicts: [],
  data() {
    //这里存放数据
    return {
      starttime: "",
      endtime: "",
      countyname: "",
      cuuntry: "",
      selecttime: "",
      reportervalue: "",
      reportlist: [
        { label: "差旅费", value: "1" },
        { label: "专家费", value: "1" },
        { label: "伦理专家费", value: "2" },
        { label: "医学成本", value: "3" },
        { label: "办公费", value: "4" }
      ],
      //省市区
      //默认值设置,可为空
      searchAddress: {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      },
      provinceData: [
        { label: "全部", value: "" },
        { label: "杭州市", value: "1" },
        { label: "宁波市", value: "2" },
        { label: "温州市", value: "3" },
        { label: "嘉兴市", value: "4" },
        { label: "湖州市", value: "5" },
        { label: "绍兴市", value: "6" },
        { label: "金华市", value: "7" },
        { label: "衢州市", value: "8" },
        { label: "舟山市", value: "9" },
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" }
      ],
      residenceAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      registerAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      defultAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      // é®ç½©å±‚
      loading: false,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      donatebaseinfoList: [],
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      jxidata: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // èŽ·å–ç»„ç»‡åç§°æ—¶é—´èŒƒå›´
      daterangeReporttime: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {},
      //当前选中捐献案例
      curCase: {},
      //流程名称
      flowname: "捐献医学评估",
      //流程名称-伦理审查
      annexno: "",
      confirmationform: {},
      //是否显示确认登记表
      isShowConfirmationDialog: false,
      //确认登记表title
      confirmationTitle: ""
    };
  },
  //监听属性 ç±»ä¼¼äºŽdata概念
  computed: {},
  activated() {},
  mounted() {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    getTimeList(e) {
      if (this.selecttime != 0) {
        this.endtime = this.selecttime[1];
        this.starttime = this.selecttime[0];
        // if (this.endtime == this.starttime) {
        let num = Number(this.endtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.endtime.slice(6, 7));
          this.endtime =
            this.endtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.endtime=this.endtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.endtime =
            this.endtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.endtime =
            this.endtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        this.starttime = this.starttime + " " + "00" + ":" + "00" + ":" + "00";
        // }
      } else {
        // this.starttime = "1998-01-01 00:00:00";
        // this.endtime = "2998-01-01 00:00:00";
      }
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function(arr, current) {
        hash[current.reporterno]
          ? ""
          : (hash[current.reporterno] = true && arr.push(current));
        return arr;
      }, []);
      return Arr;
    },
    /** æŸ¥è¯¢æçŒ®åŸºç¡€åˆ—表 */
    getList() {
      listbxiaostatistics(this.queryParams).then(res => {
        this.jxidata = res.rows;
      });
    },
    // è¡¨å•重置
    reset() {
      this.form = {};
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.daterangeReporttime = [];
      this.reportervalue = "";
      this.form.treatmenthospitalno = "";
      this.queryParams = {
        doname: null,
        pageNum: 1,
        pageSize: 10,
        name: null,
        idcardno: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        // "2"
        recordstate: null,
        treatmenthospitalname: null,
        donorno: null,
        acquisitiontissueno: null,
        reportername: null,
        reporttime: null,
        city: null
      };
      this.selecttime = [];
      this.getTimeList();
      this.searchAddress = {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      };
      this.resetForm("queryForm");
      this.handleQuery();
    },
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = ["applymonth", "deptmentName", "username"];
      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;
    }
  },
  created () {
  },
  methods: {
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    //获取列表
    this.getList();
  }
}
  // //生命周期 - æŒ‚载完成(可以访问DOM元素)
  //    mounted() {},
  // beforeCreate() {}, //生命周期 - åˆ›å»ºä¹‹å‰
  // beforeMount() {}, //生命周期 - æŒ‚载之前
  // beforeUpdate() {}, //生命周期 - æ›´æ–°ä¹‹å‰
  // updated() {}, //生命周期 - æ›´æ–°ä¹‹åŽ
  // beforeDestroy() {}, //生命周期 - é”€æ¯ä¹‹å‰
  // destroyed() {}, //生命周期 - é”€æ¯å®Œæˆ
  // activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang='scss' scoped>
</style>
src/views/project/statistics/caseStatistics/index.vue
@@ -1,27 +1,441 @@
<!--  -->
<template>
  <div>
案例
  <div class="app-container">
    ç»©æ•ˆ
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      label-width="70px"
    >
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="业务人员" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
              clearable
              size="small"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item align="left" label="业务组" prop="treatmenthospitalno">
            <org-selecter
              ref="orgSelecter"
              :org-type="'3'"
              v-model="queryParams.treatmenthospitalno"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label='案例状态'>
            <el-select
              v-model="queryParams.pabonustype"
              placeholder="请选择案例状态"
            >
              <el-option
                v-for="item in reportlist"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="12">
          <el-form-item label="统计日期">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <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-col>
      </el-row>
    </el-form>
    <!--<el-table v-loading="loading" border :data="donatebaseinfoList">     -->
    <el-table v-loading="loading"  :data="jxidata"  ref="table"
      border
      max-height="700"
      highlight-current-row
      :summary-method="getSummaries"
      show-summary>
      <el-table-column label="序号" align="center" prop="id" width="100">
      </el-table-column>
      <el-table-column label="统计月份" align="center" prop="name" />
      <el-table-column label="业务组" align="center" prop="name">
      </el-table-column>
      <el-table-column label="专职人员" align="center" prop="age" />
      <el-table-column
        label="案例数量"
        align="center"
        prop="treatmenthospitalname"
      />
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
        fixed="right"
      >
        <template slot-scope="scope">
          <!--           v-if="scope.row.recordstate==2"
 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            >明细</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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹å®¶å±žç¡®è®¤å¯¹è¯æ¡† -->
  </div>
</template>
<script>
export default {
  data () {
    return {
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import ã€Šç»„件名称》 from '《组件路径》';
import {
  listsfeistatistics,
  listbxiaostatistics,
  listjixstatistics,
  listanlstatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import AnnexUpload from "@/views/project/components/annexupload";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
    Li_area_select,
    OrgSelecter,
    AnnexUpload
  },
  name: "Medicalevaluation",
  dicts: [],
  data() {
    //这里存放数据
    return {
      starttime: "",
      endtime: "",
      countyname: "",
      cuuntry: "",
      selecttime: "",
      reportervalue: "",
      reportlist: [
        { label: "月度", value: "1" },
        { label: "季度", value: "2" },
        { label: "年度", value: "3" }
      ],
      //省市区
      //默认值设置,可为空
      searchAddress: {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      },
      provinceData: [
        { label: "全部", value: "" },
        { label: "杭州市", value: "1" },
        { label: "宁波市", value: "2" },
        { label: "温州市", value: "3" },
        { label: "嘉兴市", value: "4" },
        { label: "湖州市", value: "5" },
        { label: "绍兴市", value: "6" },
        { label: "金华市", value: "7" },
        { label: "衢州市", value: "8" },
        { label: "舟山市", value: "9" },
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" }
      ],
      residenceAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      registerAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      defultAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      // é®ç½©å±‚
      loading: false,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      donatebaseinfoList: [],
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      jxidata: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // èŽ·å–ç»„ç»‡åç§°æ—¶é—´èŒƒå›´
      daterangeReporttime: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {},
      //当前选中捐献案例
      curCase: {},
      //流程名称
      flowname: "捐献医学评估",
      //流程名称-伦理审查
      annexno: "",
      confirmationform: {},
      //是否显示确认登记表
      isShowConfirmationDialog: false,
      //确认登记表title
      confirmationTitle: ""
    };
  },
  //监听属性 ç±»ä¼¼äºŽdata概念
  computed: {},
  activated() {},
  mounted() {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    getTimeList(e) {
      if (this.selecttime != 0) {
        this.endtime = this.selecttime[1];
        this.starttime = this.selecttime[0];
        // if (this.endtime == this.starttime) {
        let num = Number(this.endtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.endtime.slice(6, 7));
          this.endtime =
            this.endtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.endtime=this.endtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.endtime =
            this.endtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.endtime =
            this.endtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        this.starttime = this.starttime + " " + "00" + ":" + "00" + ":" + "00";
        // }
      } else {
        // this.starttime = "1998-01-01 00:00:00";
        // this.endtime = "2998-01-01 00:00:00";
      }
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function(arr, current) {
        hash[current.reporterno]
          ? ""
          : (hash[current.reporterno] = true && arr.push(current));
        return arr;
      }, []);
      return Arr;
    },
    /** æŸ¥è¯¢æçŒ®åŸºç¡€åˆ—表 */
    getList() {
      listanlstatistics(this.queryParams).then(res => {
        this.jxidata = res.rows;
      });
    },
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = [
      "applymonth", "deptmentName", "username"
      ];
      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;
    },
    // è¡¨å•重置
    reset() {
      this.form = {};
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.daterangeReporttime = [];
      this.reportervalue = "";
      this.form.treatmenthospitalno = "";
      this.queryParams = {
        doname: null,
        pageNum: 1,
        pageSize: 10,
        name: null,
        idcardno: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        // "2"
        recordstate: null,
        treatmenthospitalname: null,
        donorno: null,
        acquisitiontissueno: null,
        reportername: null,
        reporttime: null,
        city: null
      };
      this.selecttime = [];
      this.getTimeList();
      this.searchAddress = {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      };
      this.resetForm("queryForm");
      this.handleQuery();
    }
  },
  created () {
  },
  methods: {
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    //获取列表
    this.getList();
  }
}
  // //生命周期 - æŒ‚载完成(可以访问DOM元素)
  //    mounted() {},
  // beforeCreate() {}, //生命周期 - åˆ›å»ºä¹‹å‰
  // beforeMount() {}, //生命周期 - æŒ‚载之前
  // beforeUpdate() {}, //生命周期 - æ›´æ–°ä¹‹å‰
  // updated() {}, //生命周期 - æ›´æ–°ä¹‹åŽ
  // beforeDestroy() {}, //生命周期 - é”€æ¯ä¹‹å‰
  // destroyed() {}, //生命周期 - é”€æ¯å®Œæˆ
  // activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang='scss' scoped>
</style>
src/views/project/statistics/chargeStatistics/index.vue
@@ -1,27 +1,437 @@
<!--  -->
<template>
  <div>
收费
  <div class="app-container">
    ç»©æ•ˆ
    <el-form
      :model="queryParams"
      ref="queryForm"
      :inline="true"
      label-width="70px"
    >
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="医院名称">
            <el-select
              v-model="queryParams.pabonustype"
              placeholder="请选择案例状态"
            >
              <el-option
                v-for="item in reportlist"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="统计类型">
            <el-select
              v-model="queryParams.pabonustype"
              placeholder="请选择案例状态"
            >
              <el-option
                v-for="item in reportlist"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="12">
          <el-form-item label="统计日期">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <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-col>
      </el-row>
    </el-form>
    <!--<el-table v-loading="loading" border :data="donatebaseinfoList">     -->
    <el-table
      v-loading="loading"
      :data="jxidata"
      ref="table"
      border
      max-height="700"
      highlight-current-row
      :summary-method="getSummaries"
      show-summary
    >
      <el-table-column label="序号" align="center" prop="id" width="100">
      </el-table-column>
      <el-table-column label="统计月份" align="center" prop="name" />
      <el-table-column label="业务组" align="center" prop="name">
      </el-table-column>
      <el-table-column label="专职人员" align="center" prop="age" />
      <el-table-column
        label="金额"
        align="center"
        prop="amount"
      />
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
        fixed="right"
      >
        <template slot-scope="scope">
          <!--           v-if="scope.row.recordstate==2"
 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleAdd(scope.row)"
            >医学评估</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"
    />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹å®¶å±žç¡®è®¤å¯¹è¯æ¡† -->
  </div>
</template>
<script>
export default {
  data () {
    return {
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import ã€Šç»„件名称》 from '《组件路径》';
import {
  listsfeistatistics,
  listbxiaostatistics,
  listjixstatistics,
  listanlstatistics
} from "@/api/project/statistics";
import { listUser } from "@/api/project/organization";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import AnnexUpload from "@/views/project/components/annexupload";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
    Li_area_select,
    OrgSelecter,
    AnnexUpload
  },
  name: "Medicalevaluation",
  dicts: [],
  data() {
    //这里存放数据
    return {
      starttime: "",
      endtime: "",
      countyname: "",
      cuuntry: "",
      selecttime: "",
      reportervalue: "",
      reportlist: [
        { label: "月度", value: "1" },
        { label: "季度", value: "2" },
        { label: "年度", value: "3" }
      ],
      //省市区
      //默认值设置,可为空
      searchAddress: {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      },
      provinceData: [
        { label: "全部", value: "" },
        { label: "杭州市", value: "1" },
        { label: "宁波市", value: "2" },
        { label: "温州市", value: "3" },
        { label: "嘉兴市", value: "4" },
        { label: "湖州市", value: "5" },
        { label: "绍兴市", value: "6" },
        { label: "金华市", value: "7" },
        { label: "衢州市", value: "8" },
        { label: "舟山市", value: "9" },
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" }
      ],
      residenceAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      registerAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      defultAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      // é®ç½©å±‚
      loading: false,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      donatebaseinfoList: [],
      // æçŒ®åŸºç¡€è¡¨æ ¼æ•°æ®
      jxidata: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // èŽ·å–ç»„ç»‡åç§°æ—¶é—´èŒƒå›´
      daterangeReporttime: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
      rules: {},
      //当前选中捐献案例
      curCase: {},
      //流程名称
      flowname: "捐献医学评估",
      //流程名称-伦理审查
      annexno: "",
      confirmationform: {},
      //是否显示确认登记表
      isShowConfirmationDialog: false,
      //确认登记表title
      confirmationTitle: ""
    };
  },
  //监听属性 ç±»ä¼¼äºŽdata概念
  computed: {},
  activated() {},
  mounted() {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    getTimeList(e) {
      if (this.selecttime != 0) {
        this.endtime = this.selecttime[1];
        this.starttime = this.selecttime[0];
        // if (this.endtime == this.starttime) {
        let num = Number(this.endtime.slice(5, 7));
        if (num < 9) {
          let mon = Number(this.endtime.slice(6, 7));
          this.endtime =
            this.endtime.slice(0, 5) +
            "0" +
            (mon + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        // this.endtime=this.endtime.slice(0,5)å¹´
        else if (num >= 10) {
          this.endtime =
            this.endtime.slice(0, 5) +
            (num + 1) +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        } else {
          this.endtime =
            this.endtime.slice(0, 5) +
            "10" +
            "-" +
            "01" +
            " " +
            "00" +
            ":" +
            "00" +
            ":" +
            "00";
        }
        this.starttime = this.starttime + " " + "00" + ":" + "00" + ":" + "00";
        // }
      } else {
        // this.starttime = "1998-01-01 00:00:00";
        // this.endtime = "2998-01-01 00:00:00";
      }
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function(arr, current) {
        hash[current.reporterno]
          ? ""
          : (hash[current.reporterno] = true && arr.push(current));
        return arr;
      }, []);
      return Arr;
    },
    /** æŸ¥è¯¢æçŒ®åŸºç¡€åˆ—表 */
    getList() {
      listsfeistatistics(this.queryParams).then(res => {
        this.jxidata = res.rows;
      });
    },
    // è¡¨å•重置
    reset() {
      this.form = {};
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.daterangeReporttime = [];
      this.reportervalue = "";
      this.form.treatmenthospitalno = "";
      this.queryParams = {
        doname: null,
        pageNum: 1,
        pageSize: 10,
        name: null,
        idcardno: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        // "2"
        recordstate: null,
        treatmenthospitalname: null,
        donorno: null,
        acquisitiontissueno: null,
        reportername: null,
        reporttime: null,
        city: null
      };
      this.selecttime = [];
      this.getTimeList();
      this.searchAddress = {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      };
      this.resetForm("queryForm");
      this.handleQuery();
    },
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = ["applymonth", "deptmentName", "username"];
      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;
    }
  },
  created () {
  },
  methods: {
  //生命周期 - åˆ›å»ºå®Œæˆï¼ˆå¯ä»¥è®¿é—®å½“前this实例)
  created() {
    //获取列表
    this.getList();
  }
}
  // //生命周期 - æŒ‚载完成(可以访问DOM元素)
  //    mounted() {},
  // beforeCreate() {}, //生命周期 - åˆ›å»ºä¹‹å‰
  // beforeMount() {}, //生命周期 - æŒ‚载之前
  // beforeUpdate() {}, //生命周期 - æ›´æ–°ä¹‹å‰
  // updated() {}, //生命周期 - æ›´æ–°ä¹‹åŽ
  // beforeDestroy() {}, //生命周期 - é”€æ¯ä¹‹å‰
  // destroyed() {}, //生命周期 - é”€æ¯å®Œæˆ
  // activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang='scss' scoped>
</style>
src/views/project/statistics/performanceStaristics/index.vue
@@ -1,7 +1,6 @@
<!--  -->
<template>
  <div class="app-container">
    ç»©æ•ˆ
    <el-form
      :model="queryParams"
      ref="queryForm"
@@ -30,16 +29,15 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="案例状态">
          <el-form-item label="绩效类型">
            <el-select
              v-model="queryParams.reporterno"
              v-model="queryParams.pabonustype"
              placeholder="请选择案例状态"
            >
              <el-option
                v-for="item in reportlist"
                :key="item.index"
                :label="item.reportername"
                :value="item.reporterno"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
@@ -81,21 +79,26 @@
    </el-form>
    <!--<el-table v-loading="loading" border :data="donatebaseinfoList">     -->
    <el-table v-loading="loading" border :data="jxidata">
    <el-table
      v-loading="loading"
      :data="jxidata"
      ref="table"
      border
      max-height="700"
      highlight-current-row
      :summary-method="getSummaries"
      show-summary
    >
      <el-table-column label="序号" align="center" prop="id" width="100">
      </el-table-column>
      <el-table-column label="统计月份" align="center" prop="name" />
      <el-table-column label="统计月份" align="center" prop="bonusmonth" />
      <el-table-column label="业务组" align="center" prop="name">
      <el-table-column label="业务组" align="center" prop="deptName">
      </el-table-column>
      <el-table-column label="专职人员" align="center" prop="age" />
      <el-table-column label="专职人员" align="center" prop="beneficiaryname" />
      <el-table-column
        label="案例数量"
        align="center"
        prop="treatmenthospitalname"
      />
      <el-table-column label="金额" align="center" prop="amount" />
      <el-table-column
        label="操作"
@@ -106,12 +109,8 @@
        <template slot-scope="scope">
          <!--           v-if="scope.row.recordstate==2"
 -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleAdd(scope.row)"
            >医学评估</el-button
          <el-button size="mini" type="text" icon="el-icon-edit"
            >明细</el-button
          >
        </template>
      </el-table-column>
@@ -132,13 +131,6 @@
<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import ã€Šç»„件名称》 from '《组件路径》';
import {
  listDonatebaseinfo,
  getDonatebaseinfo,
  addDonatebaseinfo,
  updateDonatebaseinfo
} from "@/api/project/donatebaseinfo";
import {
  listsfeistatistics,
@@ -172,7 +164,11 @@
      selecttime: "",
      reportervalue: "",
      reportlist: [],
      reportlist: [
        { label: "月度", value: "1" },
        { label: "季度", value: "2" },
        { label: "年度", value: "3" }
      ],
      //省市区
      //默认值设置,可为空
      searchAddress: {
@@ -236,11 +232,10 @@
      daterangeReporttime: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pabonustype: null,
        pageNum: 1,
        pageSize: 10
      },
      // è¡¨å•参数
      form: {},
      // è¡¨å•校验
@@ -321,23 +316,7 @@
        // this.endtime = "2998-01-01 00:00:00";
      }
    },
    LoadReportList() {
      listDonatebaseinfo().then(res => {
        let list = res.rows;
        let reportlist = [];
        list.forEach(item => {
          reportlist.push({
            reporterno: item.reporterno,
            reportername: item.reportername
          });
        });
        if (reportlist != 0) {
          reportlist = this.resetArr(reportlist);
          this.reportlist = reportlist;
        }
      });
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function(arr, current) {
@@ -402,6 +381,37 @@
      this.resetForm("queryForm");
      this.handleQuery();
    },
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      var columnnames = ["applymonth", "deptmentName", "username"];
      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;
    }
  },
src/views/project/unitCost/particulars/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1454 @@
<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.createby"
                  placeholder="请输入姓名"
                  :disabled="true"
                />
              </el-form-item>
            </el-col>
            <el-col :span="5">
              <el-form-item label="收款状态" prop="sex">
                <el-select v-model="form.paystatus" placeholder="请选择状态">
                  <el-option
                    v-for="dict in gatheringlist"
                    :key="dict.label"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="7">
              <el-form-item label="申请日期" prop="createTime">
                <el-date-picker
                  v-model="form.createTime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  type="datetime"
                  :disabled="true"
                  placeholder="选择出生年月"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="7"
              ><el-form-item label="收款单号" prop="donateno">
                <el-input v-model="form.paymentno" placeholder="请输入收款单号" />
              </el-form-item>
            </el-col> </el-row
          ><el-row
            ><el-col :span="5"
              ><el-form-item label="收款单位" prop="donateno">
                <el-input
                  v-model="form.beneficiary"
                  placeholder="请输入收款单位"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12"
              ><el-form-item label="收款银行" prop="donateno">
                <el-input
                  v-model="form.beneficiarybank"
                  placeholder="请输入收款银行"
                />
              </el-form-item>
            </el-col>
            <el-col :span="7">
              <el-form-item label="收款行号" prop="donationcategory">
                <el-input
                  v-model="form.beneficiaryaccount"
                  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-col :span="7">
              <el-form-item label="付款医院" prop="sex">
                <el-input
                  v-model="form.hospitalname"
                  placeholder="请输入付款医院"
                  :disabled="true"
                />
              </el-form-item>
            </el-col>
            <el-col :span="5">
              <el-form-item label="应收金额" prop="receivableamount">
                <el-input
                  v-model="form.receivableamount"
                  placeholder="请输入应收金额"
                  :disabled="true"
                />
              </el-form-item>
            </el-col>
            <el-col :span="5">
              <el-form-item label="实收金额" prop="receivedamount">
                <el-input
                  @blur="chargeSumall"
                  v-model="form.receivedamount"
                  placeholder="请输入实收金额"
                />
              </el-form-item>
            </el-col>
            <el-col :span="5">
              <el-form-item label="收款日期" prop="receivedtime">
                <el-date-picker
                  clearable
                  size="small"
                  v-model="form.receivedtime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  type="datetime"
                  placeholder="选择收款日期"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <div class="headlines">
            <div>收款明细</div>
            <el-button type="primary" @click="handleAddpatient">新增</el-button>
          </div>
          <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"
                fixed
                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"
                fixed
                align="center"
                label="器官名称"
                width="120"
              >
                <template slot-scope="scope">
                  <el-input
                    v-model="scope.row.organname"
                    :disabled="true"
                    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"
                    :disabled="true"
                    placeholder="国家编号"
                  />
                </template>
              </el-table-column>
              <el-table-column
                prop="hospitalno"
                align="center"
                label="接收医院"
                width="280"
              >
                <template slot-scope="scope">
                  <!-- <el-input
                    v-model="scope.row.hospitalname"
                    :disabled="true"
                    placeholder="接收医院"
                  /> -->
                  <org-selecter
                          ref="tranHosSelect"
                          :org-type="'4'"
                    :disabled="true"
                          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"
                    :disabled="true"
                    placeholder="受体姓氏"
                  />
                </template>
              </el-table-column>
              <el-table-column
                prop="receiveTime"
                align="center"
                label="接收日期"
                width="200"
              >
                <template slot-scope="scope">
                  <el-date-picker
                    clearable
                    size="small"
                    style="width: 100%"
                    v-model="scope.row.receiveTime"
                    :disabled="true"
                    type="date"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    placeholder="接收日期"
                  >
                  </el-date-picker>
                </template>
              </el-table-column>
              <el-table-column
                prop="organcharge"
                align="center"
                label="应收金额"
                width="150"
              >
                <template slot-scope="scope">
                  <el-input
                    @blur="chargeSum"
                    v-model="scope.row.organcharge"
                    placeholder="应收金额"
                  />
                </template>
              </el-table-column>
              <el-table-column
                prop="amount"
                align="center"
                label="实收金额"
                width="150"
              >
                <template slot-scope="scope">
                  <el-input
                    @blur="chargeSum"
                    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"
                width="280"
                align="center"
                label="备注"
              >
                <template slot-scope="scope">
                  <el-input
                    type="textarea"
                    :rows="1"
                    v-model="scope.row.organchargedesc"
                    placeholder="备注"
                  />
                </template>
              </el-table-column>
              <el-table-column
                label="操作"
                fixed="right"
                width="260"
                align="center"
              >
                <template slot-scope="scope">
                  <el-button
                    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
                    type="text"
                    icon="el-icon-folder-opened"
                    @click="Filepopup(scope.$index, 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="success"
            @click="submitForm"
            v-if="operationType == 'add' || operationType == 'update'"
            >保 å­˜</el-button
          >
          <el-button type="info" @click="cancel">关闭</el-button>
        </div>
        <!-- æ·»åŠ æ‚£è€… -->
        <el-dialog
          title="选择器官和组织"
          :visible.sync="dialogVisiblepatient"
          width="70%"
          :before-close="handleClosehz"
        >
          <div class="examine-jic">
            <div class="jic-value">
              <el-row :gutter="20">
                <!--用户数据-->
                <el-form
                  :model="patientqueryParams"
                  ref="queryForm"
                  size="small"
                  :inline="true"
                  label-width="98px"
                >
                  <el-form-item label="接收医院" prop="status">
                    <el-input
                      v-model="form.hospitalname"
                      placeholder="请输入付款医院"
                      :disabled="true"
                    />
                  </el-form-item>
                  <el-form-item label="捐献者" prop="status">
                    <el-select
                      v-model="patientqueryParams.donorchargeid"
                      filterable
                      placeholder="请选择"
                    >
                      <el-option
                        v-for="item in donorchargeanlList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                  <el-form-item>
                    <el-button
                      type="primary"
                      icon="el-icon-search"
                      size="medium"
                      @click="handleAddpatient"
                      >搜索</el-button
                    >
                    <el-button
                      icon="el-icon-refresh"
                      size="medium"
                      @click="resetQuery"
                      >重置</el-button
                    >
                  </el-form-item>
                </el-form>
                <!-- é€‰æ‹©å™¨å®˜åˆ—表 -->
                <el-table
                  ref="multipleTable"
                  :data="donorchargeList"
                  tooltip-effect="dark"
                  style="width: 100%"
                  @selection-change="handleSelectionChange"
                >
                  <el-table-column type="selection" width="55"> </el-table-column>
                  <el-table-column label="捐献者" width="120">
                    <template slot-scope="scope">{{
                      scope.row.donorname
                    }}</template>
                  </el-table-column>
                  <el-table-column
                    prop="organname"
                    label="器官名称"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                  <el-table-column prop="organno" label="器官编号" width="120">
                  </el-table-column>
                  <el-table-column
                    prop="caseno"
                    label="国家分配编号"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                  <el-table-column
                    prop="name"
                    label="受体姓氏"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                  <el-table-column
                    prop="hospitalname"
                    label="接收医院"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                  <el-table-column
                    prop="receiveTime"
                    label="接收日期"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                  <el-table-column
                    prop="address"
                    label="备注"
                    show-overflow-tooltip
                  >
                  </el-table-column>
                </el-table>
              </el-row>
              <pagination
                v-show="patienttotal > 0"
                :total="patienttotal"
                :page.sync="patientqueryParams.pageNum"
                :limit.sync="patientqueryParams.pageSize"
                @pagination="handleAddpatient"
              />
            </div>
          </div>
          <span slot="footer" class="dialog-footer">
            <el-button @click="dialogVisiblepatient = false">取 æ¶ˆ</el-button>
            <el-button type="primary" @click="AddDispatchpatients"
              >确定添加</el-button
            >
          </span>
        </el-dialog>
        <!-- é™„件弹窗 -->
        <el-dialog
          v-dialogDrags
          :modal="false"
          :close-on-click-modal="false"
          :title="pdftitle"
          :visible.sync="pdfVisible"
          width="60%"
        >
          <div class="pdfimg">
            <div class="box-pdf">
              <div>
                <el-upload
                  size="mini"
                  class="upload-demo"
                  :action="uploadFileUrl"
                  :file-list="fileListto"
                  :show-file-list="false"
                  multiple
                  drag
                  :headers="headers"
                  :on-success="
                    (response, file, fileList) =>
                      uploadSccess(response, file, fileList)
                  "
                  :on-preview="downFile"
                  :disabled="operationType == 'detail'"
                  :on-error="handleUploadError"
                  :on-remove="remove"
                  accept="image/*,.pdf"
                >
                  <i class="el-icon-upload"></i>
                  <div class="el-upload__text">
                    å°†ç¥¨æ®æ‹–到此处,或
                    <em
                      ><el-button
                        :disabled="operationType == 'detail'"
                        size="small"
                        type="primary"
                        >点击上传</el-button
                      ></em
                    >
                  </div>
                </el-upload>
                <el-table
                  :data="fileListto"
                  @row-click="downFile"
                  style="width: 100%"
                  height="400"
                >
                  <el-table-column
                    prop="name"
                    :show-overflow-tooltip="true"
                    label="名称"
                  >
                    <template slot-scope="scope">
                      <i style="color:#409EFF" class=" el-icon-s-order" />
                      <span>{{ scope.row.name }}</span>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="name"
                    width="190"
                    :show-overflow-tooltip="true"
                    label="功能"
                  >
                    <template slot-scope="scope">
                      <el-button
                        type="danger"
                        size="mini"
                        @click="deletedowfile(scope.row)"
                        >删除</el-button
                      >
                      <el-button
                        type="primary"
                        size="mini"
                        @click.native.prevent.stop="moveupdowfile(scope.row)"
                        >上移</el-button
                      >
                      <el-button
                        type="success"
                        size="mini"
                        icon="el-icon-search"
                        circle
                        @click.native.prevent.stop="Downloadfile(scope.row)"
                      ></el-button>
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </div>
            <div v-if="this.previewpdf && pdfimgsrcList.length" class="pdfimgmin">
              <!-- <img :src="pdfimg" /> -->
              <el-image
                style="width: 95%; height: 90%"
                :src="pdfimg"
                :preview-src-list="pdfimgsrcList"
              >
                <!-- <div slot="error" class="image-slot">
                <i class="el-icon-picture-outline"></i>
              </div> -->
              </el-image>
            </div>
            <div v-else class="pdfimgmins">{{ hintitle }}</div>
          </div>
        </el-dialog>
      </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,
    listDonorcharge,
    listDonorpayment,
    addDonorpayment,
    editDonorpayment
  } from "@/api/project/donorcharge";
  import {
    listDonorchargeorgan,
    updateDonorchargeorgan,
    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_gathering", "sys_0_1"],
    name: "Donorchargemanager",
    data() {
      return {
        activeName: 1, //文件类型
        tableData: [
          {
            date: "2016-05-03",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 å¼„"
          },
          {
            date: "2016-05-02",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 å¼„"
          },
          {
            date: "2016-05-04",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 å¼„"
          },
          {
            date: "2016-05-01",
            name: "王小虎",
            address: "上海市普陀区金沙江路 1518 å¼„"
          }
        ],
        gatheringlist: [
          { label: "新建", value: "1" },
          { label: "待收款", value: "2" },
          { label: "已收款", value: "3" }
        ],
        multipleSelection: [],
        patientqueryParams: {
          pageNum: 1,
          pageSize: 10,
          hospitalno: null,
          paymentid: null
        },
        dialogVisiblepatient: false,
        patienttotal: 0, //
        //票据文件
        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: [],
        donorchargeanlList: [], //案例列表
        delogans: [],
        // å¼¹å‡ºå±‚标题
        title: "",
        // æŸ¥è¯¢è´¹ç”¨è¡¨å‚æ•°
        queryParams: {
          pageNum: 1,
          pageSize: 10,
          infoid: null,
          name: null,
          donationcategory: null,
          donateorgan: null,
          chargeamounted: null
        },
        // æŸ¥è¯¢è´¹ç”¨å™¨å®˜è¡¨å‚æ•°
        organParams: {
          pageNum: 1,
          pageSize: 10,
          paymentid: null
        },
        // å½“前用户信息
        userprofile: {},
        // è¡¨å•参数
        form: {},
        // åˆ—表参数
        table: {},
        reimbursementList: [],
        // è¡¨å•校验
        rules: {
          reason: [
            { required: true, message: "请输入出差事由", trigger: "blur" }
          ],
          deptmentname: [
            { required: true, message: "请输入所属业务组", trigger: "blur" }
          ]
        },
        topicoptions: [
          {
            value: "选项1",
            label: "黄金糕"
          },
          {
            value: "选项2",
            label: "双皮奶"
          },
          {
            value: "选项5",
            label: "北京烤鸭"
          }
        ],
        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: [],
        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 "关闭提示";
        }
      },
      handleClosehz() {
        this.dialogVisiblepatient = false;
      },
      handleQuery() {},
      resetQuery() {
        this.patientqueryParams.donorname = null;
        this.patientqueryParams.donorchargeid = null;
        this.handleAddpatient();
      },
      handleUploadError() {},
      // å¼¹æ¡†æ·»åŠ 
      AddDispatchpatients() {
        this.donorchargeorgans = this.donorchargeorgans.concat(
          this.multipleSelection
        );
        this.dialogVisiblepatient = false;
      },
      // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      // ç‚¹å‡»æ–°å¢ž
      handleAddpatient(row) {
        this.dialogVisiblepatient = true;
        this.patientqueryParams.hospitalno = this.form.hospitalno;
        this.patientqueryParams.paymentid = null;
        this.patientqueryParams.paymentidIsNotNull = false;
        listDonorchargeorgan(this.patientqueryParams).then(res => {
          this.donorchargeList = res.rows;
          this.patienttotal = res.total;
          this.patientqueryParams.paymentidIsNotNull = true;
          console.log(this.donorchargeList);
        });
      },
      // èŽ·å–è¯·æ±‚å¤´
      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及其前部字符
        }
      },
      // è¡¨å•重置
      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;
        this.patientqueryParams.paymentid = this.curId;
        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");
        }
        listDonorcharge({ pageNum: 1, pageSize: 10000 }).then(response => {
          this.donorchargeanlList = response.rows;
        });
      },
      /** é‡ç½®æŒ‰é’®æ“ä½œ */
      resetQuery() {
        this.resetForm("queryForm");
        this.handleQuery();
      },
      // å–消按钮
      cancel() {
        this.$store.dispatch("tagsView/delView", this.$route);
        this.$router.go(-1);
      },
      /** æ–°å¢žæŒ‰é’®æ“ä½œ */
      handleAdd() {
        this.reset();
        this.title = "新增捐献案例器官费用表";
        if (this.curCase) {
          this.form.infoid = this.curCase.id;
          this.form.paystatus = "1";
          this.form.hospitalname = this.curCase.organizationname;
          this.form.hospitalno = this.curCase.organizationid;
          this.form.borthdate = this.curCase.birthday;
        }
      },
      /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
      handleUpdate() {
        this.reset();
        this.title = "收款结算申请单编辑";
        listDonorpayment({ id: this.curId }).then(response => {
          this.form = response.rows[0];
          //器官费用信息
          listDonorchargeorgan(this.patientqueryParams).then(res => {
            console.log("listDonorchargeorgan", res);
            this.donorchargeorgans = res.rows;
            console.log(this.donorchargeorgans, "donorchargeorgans");
          });
        });
      },
      /** æŸ¥çœ‹æ“ä½œ */
      handleDetail() {
        this.reset();
        listDonorpayment({ id: this.curId }).then(response => {
          this.title = "查看捐献案例器官费用表";
          this.form = response.rows[0];
          //器官费用信息
          listDonorchargeorgan(this.patientqueryParams).then(res => {
            console.log("listDonorchargeorgan", res);
            this.donorchargeorgans = res.rows;
            console.log(this.donorchargeorgans, "donorchargeorgans");
          });
        });
      },
      /** æäº¤ä¿å­˜æŒ‰é’® */
      submitForm() {
        this.chargeSum();
        this.$refs["form"].validate(valid => {
          if (valid) {
            this.$modal.loading("正在提交,请稍候!");
            //保存
            if (this.form.id != null) {
              for (let k = 0; k < this.donorchargeorgans.length; k++) {
                this.donorchargeorgans[k].paymentid = this.form.id;
              }
              editDonorpayment(this.form).then(res1 => {
                if (res1.code == 200) {
                  saveDonorchargeorgan(this.donorchargeorgans).then(res2 => {
                    if (res2.code == 200) {
                      this.$modal.msgSuccess("保存成功!");
                    } else {
                      this.$modal.msgError(res2.msg);
                    }
                    this.$modal.closeLoading();
                  });
                } else {
                  this.$modal.closeLoading();
                  this.$modal.msgError(res1.msg);
                }
              });
            } else {
              addDonorpayment(this.form).then(response => {
                if (response.code == 200) {
                  this.form.id = response.msg;
                  //保存前校验数据
                  for (let k = 0; k < this.donorchargeorgans.length; k++) {
                    this.donorchargeorgans[k].paymentid = response.msg;
                  }
                  saveDonorchargeorgan(this.donorchargeorgans).then(res2 => {
                    if (res2.code == 200) {
                      this.$modal.msgSuccess("保存成功!");
                    } else {
                      this.$modal.msgError(res2.msg);
                    }
                  });
                  this.$modal.closeLoading();
                } else {
                  this.$modal.msgError(response.msg);
                  this.$modal.closeLoading();
                }
              });
            }
          }
        });
      },
      //修改总实收后触发
      chargeSumall() {
        if (this.form.receivedamount == this.form.receivableamount) {
          this.donorchargeorgans.forEach(item => {
            item.amount = item.organcharge;
          });
        } else {
          this.$modal.msgError("注意实收金额不等于应收金额,请核对数据!");
        }
      },
      //修改实收或应收后触发
      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.receivableamount = ChargeSum.toFixed(2);
          this.form.receivedamount = ChargeamountSum.toFixed(2);
        } catch {}
      },
      handleDelete(row) {
        this.$modal
          .confirm("是否确认删除该条器官费用数据项?")
          .then(() => {
            let value = row;
            value.paymentid = null;
            this.delogans.push(value);
            saveDonorchargeorgan(this.delogans).then(res2 => {
              if (res2.code == 200) {
                let index = this.donorchargeorgans.indexOf(row);
                this.donorchargeorgans.splice(index, 1);
                this.$modal.msgSuccess("删除成功!");
              }
            });
          })
          .catch(() => {});
      },
      //表格合计
      getSummaries(param) {
        const { columns, data } = param;
        const sums = [];
        var columnnames = [
          "organno",
          "organname",
          "amounttime",
          "organchargedesc",
          "hospitalname",
          "organtime",
          "remark",
          "name",
          "caseno",
          "receiveTime"
        ];
        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;
      },
      // æ–‡ä»¶------------------------
      remove(file, fileList) {
        const donorchargeorgans = [...this.donorchargeorgans];
        this.fileListto.splice(this.fileListto.indexOf(file), 1);
        donorchargeorgans[this.atpresent].annexFilesList = this.fileListto;
      },
      uploadSccess(response, file, fileList) {
        this.donorchargeorgans;
        const config = {
          headers: { Authorization: "Bearer " + this.ICDtoken }
        };
        const pdfimg = this.Networkheader + "/prod-api" + response.fileName;
        //获取票据信息位置
        if (response.code == 200) {
          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);
          console.log(this.fileListto, "新增后");
          if (!this.donorchargeorgans[this.atpresent].annexFilesList) {
            this.donorchargeorgans[this.atpresent].annexFilesList = [];
          }
          this.donorchargeorgans[this.atpresent].annexFilesList.push({
            name: file.name,
            url: response.fileName
          });
          this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
        } else {
          console.log(response.msg);
        }
      },
      // ç‚¹å‡»ç¥¨æ®
      Filepopup(index, row) {
        const config = {
          headers: { Authorization: "Bearer " + this.ICDtoken }
        };
        this.tableDatatop = [];
        this.fileListto = [];
        this.invoicefileListto = [];
        this.pdfimg = "";
        this.invoicepdfimg = [];
        this.pdfimgsrcList = [];
        this.invoicepdfimgsrcList = [];
        this.tableDatatop.push(row);
        this.atpresent = index;
        this.pdfVisible = true;
        if (this.donorchargeorgans[index].annexFilesList) {
          const fetchPromises = this.donorchargeorgans[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 = "";
        }
        this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
        console.log(this.fileListto, "this.fileListto");
        console.log(
          this.donorchargeorgans[index].annexFilesList,
          "annexFilesList"
        );
      },
      // ç‚¹å‡»å·²ä¸Šä¼ æ–‡ä»¶
      downFile(item) {
        this.pdftitle =
          "共" + this.pdfimgsrcList.length + "项,当前选中" + item.name;
        let name = item.name.split(".");
        if (name[1] == "pdf") {
          this.$modal.msgWarning("当前文件暂不支持预览");
          this.previewpdf = false;
          this.hintitle = "当前文件暂不支持预览";
        } else if (name[1] == "jpg" || "png") {
          console.log(item, "展示");
          this.previewpdf = true;
          if (item.url) {
            this.pdfimg = item.url;
          } else {
            this.pdfimg = "";
          }
        } else {
          this.hintitle = "当前文件暂不支持预览";
          this.$modal.msgWarning("当前文件暂不支持预览");
          this.previewpdf = false;
        }
      },
      getIndexInArray(arr, obj) {
        return arr.indexOf(obj);
      },
      // å‘票切换
      handleClick(tab, event) {
        this.pdftitle = "共" + this.pdfimgsrcList.length + "项";
      },
      // ç‚¹å‡»åˆ é™¤
      deletedowfile(row) {
        console.log(row);
        let indexvalue = "";
        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.donorchargeorgans[this.atpresent].annexFilesList);
        indexvalue = this.donorchargeorgans[
          this.atpresent
        ].annexFilesList.findIndex(item => item.name == row.name);
        console.log(indexvalue, "删除索引");
        this.donorchargeorgans[this.atpresent].annexFilesList.splice(
          indexvalue,
          1
        );
      },
      // ç‚¹å‡»ä¸Šç§»
      moveupdowfile(row) {
        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.donorchargeorgans[
          this.atpresent
        ].annexFilesList.findIndex(item => item.name == row.name);
        const itemann = this.donorchargeorgans[
          this.atpresent
        ].annexFilesList.splice(indexann, 1)[0]; // ç§»é™¤æŒ‡å®šç´¢å¼•处的元素,并保存到item变量中
        this.donorchargeorgans[this.atpresent].annexFilesList.splice(
          indexann - 1,
          0,
          itemann
        ); // å°†itemann插入到索引位置的前一位
        console.log(indexann, "indexann");
        console.log(index, "index");
        console.log(
          this.donorchargeorgans[this.atpresent].annexFilesList,
          "annexFilesList"
        );
        console.log(this.fileListto, "fileListto");
        // console.log(this.donorchargeorgans[this.atpresent].invoicefilesList,'invoicefilesList');
      },
      Downloadfile(row) {
        window.location.href = row.url;
      }
    }
  };
  </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;
    }
  }
  .headlines {
    font-size: 25px;
    display: flex;
    width: 96%;
    justify-content: space-between;
    padding-left: 5px;
    margin-bottom: 10px;
    border-left: 5px solid rgb(65, 161, 190);
  }
  .button-delete {
    color: rgb(236, 69, 69);
  }
  .examine-jic {
    .headline {
      font-size: 24px;
      border-left: 5px solid #41a1be;
      padding-left: 5px;
      margin-bottom: 10px;
      display: flex;
      justify-content: space-between;
      .Add-details {
        font-size: 18px;
        color: #02a7f0;
        cursor: pointer;
      }
    }
    .jic-value {
      font-size: 20px;
      border-top: 1px solid #a7abac;
      padding: 10px;
      margin-bottom: 10px;
      .details-jic {
        padding: 10px 15px;
        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);
        .details-title {
          display: flex;
          justify-content: space-between;
          margin-bottom: 10px;
          div:nth-child(2) {
            color: #02a7f0;
            cursor: pointer;
          }
        }
        .details-renw {
          background: #e4ebfc;
          padding: 15px 5px;
          border-radius: 5px;
          margin-bottom: 20px;
        }
      }
    }
  }
  ::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>