yxh
yxh
2023-10-11 11b3fee3b15e3facf39e5ce9570b65b838b919c4
yxh
已添加1个文件
635 ■■■■■ 文件已修改
src/views/project/organallocation/index0.vue 635 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/project/organallocation/index0.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,635 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px">
      <el-row>
        <el-col :span="6">
          <el-form-item label="捐献者" prop="name">
            <el-input v-model="queryParams.name" placeholder="请输入捐献者" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="器官名称" prop="organno">
            <el-select v-model="queryParams.organno" placeholder="请选择器官类别名称" clearable size="small">
              <el-option v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.label" :value="dict.value" />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="移植机构" prop="gainhospitalname">
            <org-selecter ref="tranHosSelect" :org-type="'4'" v-model="queryParams.gainhospitalname" />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="医疗机构" prop="医疗机构">
            <org-selecter ref="orgSelecter" :org-type="'3'" v-model="queryParams.treatmenthospitalno" />
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="9">
          <el-form-item label="分配时间" prop="organgettime">
            <el-date-picker style="width: 100%" v-model="queryParams.organgettime" type="monthrange" range-separator="至"
              start-placeholder="开始月份" end-placeholder="结束月份" value-format="yyyy-MM-dd">
            </el-date-picker>
            <!-- <el-date-picker clearable size="small" v-model="queryParams.organgettime" type="date"
              value-format="yyyy-MM-dd" placeholder="选择器官获取时间">
            </el-date-picker> -->
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" style="margin-right: 20px" 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-row>
        <el-col :span="6">
          <el-form-item label="组长" prop="zuzhang">
            <el-input
              v-model="queryParams.zuzhang"
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="移植时间" prop="transplanttime">
        <el-date-picker
          clearable
          size="small"
          v-model="queryParams.transplanttime"
          type="date"
          value-format="yyyy-MM-dd"
          placeholder="请选择移植时间"
        >
        </el-date-picker>
      </el-form-item>
        </el-col>
      </el-row> -->
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button type="warning" plain icon="el-icon-download" size="mini" :loading="exportLoading"
          @click="handleExport">导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <!--<el-table v-loading="loading" :data="donateorganList" @selection-change="handleSelectionChange" label-width="96px">-->
    <el-table border v-loading="loading" :data="newdonateorganList" @selection-change="handleSelectionChange"
            highlight-current-row style="width: 100%">
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <!-- <el-table-column
        label="捐献编号"
        width="160"
        align="center"
        prop="donorno"
      /> -->
      <el-table-column label="捐献者" width="100" align="center" prop="name" />
      <el-table-column label="医疗机构" width="100" align="center" prop="treatmenthospitalname" />
      <el-table-column label="重新分配" width="100" align="center" prop="organstate">
        <!--1:是 0:否 -->
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_organstate" :value="scope.row.organstate" />
        </template>
      </el-table-column>
      <el-table-column label="器官名称" align="center" prop="organname" width="100" />
      <el-table-column label="系统编号" align="center" prop="ageunit" width="100" />
      <el-table-column label="受体姓名" align="center" prop="name" width="100" />
      <el-table-column label="证件类型" align="center" prop="age" width="100" />
      <el-table-column label="证件号" align="center" prop="idcardno" width="100" />
      <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="scope.row.sex" />
        </template>
      </el-table-column>
      <el-table-column label="移植医院" align="center" prop="transplanthospitalname" />
      <el-table-column label="接收时间" width="160" align="center" prop="applicanttime">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.applicanttime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="经办人" width="120" align="center" prop="create_by" />
      <el-table-column label="录入时间" width="160" align="center" prop="create_time">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.create_time, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" >
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleAdd(scope.row)"
            v-hasPermi="['project:donateorgan:edit']">新增</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleEdit(scope.row)"
            v-hasPermi="['project:donateorgan:remove']">修改</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
            v-hasPermi="['project:donateorgan:remove']">删除</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleRedo(scope.row)"
            v-hasPermi="['project:donateorgan:remove']">重新分配</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleSave(scope.row)"
            v-hasPermi="['project:donateorgan:remove']">保存</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
      @pagination="getList" />
    <!-- æ·»åŠ æˆ–ä¿®æ”¹æçŒ®å™¨å®˜ç®¡ç†å¯¹è¯æ¡† -->
    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="800px" append-to-body>
      <!-- :rules="rules" -->
      <el-form ref="form" :model="form" label-width="130px" :rules="rules">
        <el-row>
          <el-col :span="12">
            <el-form-item label="捐献编号" prop="donorno">
              <el-input v-model="form.donorno" placeholder="" disabled />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="24"> -->
          <!-- </el-col> -->
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="器官" prop="organname">
              <el-select v-model="form.organname" placeholder="请选择器官类别名称" clearable size="medium" disabled>
                <el-option v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.label"
                  :value="dict.label" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="器官状态" prop="organstate">
              <el-select v-model="form.organstate" placeholder="1:预登记2:已获取3:分配登记4:分配审核" clearable size="medium" disabled>
                <el-option v-for="dict in dict.type.sys_organstate" :key="dict.value" :label="dict.label"
                  :value="dict.value" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <!--  è¯¦è§å­—å…¸sys_Organ -->
        <!-- <el-form-item label="器官类别编号" prop="organno">
              <el-select v-model="queryParams.organno" placeholder="请选择器官类别编号">
                <el-option label="请选择字典生成" value="" />
              </el-select>
            </el-form-item>
        <el-form-item label="器官类别名称" prop="organname">
              <el-select v-model="queryParams.organname" placeholder="请选择器官类别名称">
                <el-option label="请选择字典生成" value="" />
              </el-select>
            </el-form-item> -->
        <!-- <el-form-item label="器官编号" prop="organnumber">
          <el-input v-model="form.organnumber" placeholder="请输入器官编号" style="width:220px"/>
        </el-form-item> -->
        <el-row>
          <el-col :span="12">
            <el-form-item label="获取时间" prop="organgettime">
              <el-date-picker clearable size="medium" v-model="form.organgettime" type="date" disabled
                value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择器官获取时间">
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="获取医生" prop="organgetdoct">
              <el-input disabled v-model="form.organgetdoct" placeholder="请输入医生姓名" style="width: 220px" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="获取机构" prop="gainhospitalname">
              <el-select v-model="form.gainhospitalname" placeholder="请选择获取机构" clearable size="medium" disabled>
                <el-option v-for="dict in dict.type.sys_OrganizationType" :key="dict.value" :label="dict.label"
                  :value="dict.label" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="移植机构" prop="transplanthospitalname">
              <el-select v-model="form.transplanthospitalname" placeholder="器官移植机构名称" disabled>
                <el-option label="请选择字典生成" value="" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <!-- <el-form-item label="器官获取机构编号" prop="gainhospitalno">
              <el-select v-model="queryParams.gainhospitalno" placeholder="器官获取机构编号">
                <el-option label="请选择字典生成" value="" />
              </el-select>
            </el-form-item>  -->
        <!-- <el-form-item label="器官移植机构编号" prop="transplanthospitalno">
              <el-select v-model="queryParams.transplanthospitalno" placeholder="器官移植机构编号">
                <el-option label="请选择字典生成" value="" />
              </el-select>
            </el-form-item> -->
        <el-row>
          <el-col :span="12">
            <el-form-item label="移植医生" prop="transplantdoct">
              <el-input v-model="form.transplantdoct" placeholder="请输入移植医生" style="width: 220px" disabled />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="移植时间" prop="transplanttime">
              <el-date-picker clearable size="medium" v-model="form.transplanttime" type="date"
                value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择移植时间" disabled>
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="获取前活检" prop="isbiopsybefore" align="left">
              <el-radio-group v-model="form.isbiopsybefore">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="获取后活检" prop="isbiopsyafter" align="left">
              <el-radio-group v-model="form.isbiopsyafter">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="属于边缘器官" prop="ismarginalorgan" align="left">
              <el-radio-group v-model="form.ismarginalorgan">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="病原菌阳性" prop="ispathogenpositive" align="left">
              <el-radio-group v-model="form.ispathogenpositive">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="原发性无功能" prop="ispnf" align="left">
              <el-radio-group v-model="form.ispnf">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="功能延迟性恢复" prop="isdgf" align="left">
              <el-radio-group v-model="form.isdgf">
                <el-radio v-for="dict in dict.type.sys_0_1" :key="dict.value" :label="dict.value">{{ dict.label }}
                </el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">保 å­˜</el-button>
        <el-button @click="cancel">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import OrgSelecter from "@/views/project/components/orgselect";
import {
  listDonateorgan,
  listnewDonateorgan,
  getDonateorgan,
  delDonateorgan,
  addDonateorgan,
  updateDonateorgan,
  exportDonateorgan,
} from "@/api/project/donateorgan";
import {
  listDonatebaseinfo,
  // exportProvincemessage,
} from "@/api/project/donatebaseinfo";
export default {
  components: {
    OrgSelecter,
  },
  name: "Donateorgan",
  dicts: [
    "sys_OrganizationType",
    "sys_Organ",
    "sys_user_sex",
    "sys_organstate",
    "sys_DonationStatus",
    "sys_0_1",
  ],
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // å¯¼å‡ºé®ç½©å±‚
      exportLoading: false,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•个禁用
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // æçŒ®å™¨å®˜ç®¡ç†è¡¨æ ¼æ•°æ®
      donateorganList: [],
      newdonateorganList: [],
      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" },
      ],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      reportlist: [],
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        infoid: null,
        donorno: null,
        organno: null,
        organname: null,
        organstate: null,
        organnumber: null,
        organgettime: null,
        organgetdoct: null,
        gainhospitalno: null,
        gainhospitalname: null,
        transplanthospitalno: null,
        transplanthospitalname: null,
        transplantdoct: null,
        transplanttime: null,
        reporterName: ""
      },
      // è¡¨å•参数
      form: {
        reporterName: ""
      },
      rules: {
        isbiopsybefore: [
          { required: true, message: "请选择获取前活检", trigger: "blur" },
        ],
        isbiopsyafter: [
          { required: true, message: "请选择获取后活检", trigger: "propname" },
        ],
        ismarginalorgan: [
          { required: true, message: "请选择属于边缘器官", trigger: "blur" },
        ],
        ispathogenpositive: [
          { required: true, message: "请选择病原菌阳性", trigger: "blur" },
        ],
        ispnf: [
          { required: true, message: "请选择原发性无功能", trigger: "blur" },
        ],
        isdgf: [
          { required: true, message: "请选择功能延迟性恢复", trigger: "blur" },
        ],
      },
    };
  },
  created() {
    this.getList();
    this.LoadReportList();
  },
  methods: {
    LoadReportList() {
      listDonatebaseinfo().then((res) => {
        let list = res.rows;
        let reportlist = [];
        reportlist.push({ reporterno: "", reportername: "全部" });
        list.forEach((element) => {
          reportlist.push({
            reporterno: element.reporterno,
            reportername: element.reportername,
          });
        });
        if (reportlist != 0) {
          reportlist = this.resetArr(reportlist);
          this.reportlist = reportlist;
        }
      });
    },
    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() {
      this.loading = true;
      this.queryParams.params = {};
      const queryParams = { ...this.queryParams }
      if (queryParams.organgettime && typeof queryParams.organgettime == 'object') {
        queryParams.startorgangettime = queryParams.organgettime[0] + ' 00:00:00'
        queryParams.endorgangettime = queryParams.organgettime[1] + " 23:59:59"
        queryParams.organgettime = null
      }
      if (queryParams.transplanttime && typeof queryParams.transplanttime == 'object') {
        queryParams.starttransplanttime = queryParams.transplanttime[0] + ' 00:00:00'
        queryParams.endtransplanttime = queryParams.transplanttime[1] + " 23:59:59"
        queryParams.transplanttime = null
      }
      console.log("搜索查询啊", this.queryParams);
      listnewDonateorgan(queryParams).then((response) => {
        console.log("器官数据:", response);
        this.newdonateorganList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•重置
    reset() {
      this.form = {
        id: null,
        infoid: null,
        donorno: null,
        organno: null,
        organname: null,
        organstate: null,
        organnumber: null,
        organgettime: null,
        organgetdoct: null,
        gainhospitalno: null,
        gainhospitalname: null,
        transplanthospitalno: null,
        transplanthospitalname: null,
        transplantdoct: null,
        transplanttime: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        isbiopsybefore: 0,
        isbiopsyafter: 0,
        ismarginalorgan: 0,
        ispathogenpositive: 0,
        ispnf: 0,
        isdgf: 0,
        reporterName: ""
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map((item) => item.id);
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加捐献器官管理";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleEdit() {
      this.reset();
      this.open = true;
      this.title = "添加捐献器官管理";
    },
     /** åˆ é™¤æŒ‰é’®æ“ä½œ */
     handleDelete() {
      this.reset();
      this.open = true;
      this.title = "添加捐献器官管理";
    },
     /** é‡æ–°åˆ†é…æŒ‰é’®æ“ä½œ */
     handleRedo() {
      this.reset();
      this.open = true;
      this.title = "添加捐献器官管理";
    },
     /** ä¿å­˜æŒ‰é’®æ“ä½œ */
     handleSave() {
      this.reset();
      this.open = true;
      this.title = "添加捐献器官管理";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      console.log("修改当前的row", row);
      const id = row.doid || this.ids;
      getDonateorgan(id).then((response) => {
        console.log("当前数据:", response);
        this.form = response.data;
        this.form.organstate = this.form.organstate + "";
        this.open = true;
        this.title = "修改捐献器官管理";
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除捐献器官管理编号为"' + ids + '"的数据项?')
        .then(function () {
          return delDonateorgan(ids);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => { });
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      const queryParams = this.queryParams;
      this.$modal
        .confirm("是否确认导出所有捐献器官管理数据项?")
        .then(() => {
          this.exportLoading = true;
          return exportDonateorgan(queryParams);
        })
        .then((response) => {
          this.$download.name(response.msg);
          this.exportLoading = false;
        })
        .catch(() => { });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.form.id != null) {
            console.log("更新的form内容", this.form);
            updateDonateorgan(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addDonateorgan(this.form).then((response) => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
  },
};
</script>