11
WXL
2024-03-14 1c08c6dcbe0f81bd8cff8a363e0d6f5c996474be
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>