yxh
yxh
8 天以前 8022f7036945b75f82f2dfc43055623f81ed98f6
src/views/project/organallocation/index.vue
@@ -13,13 +13,13 @@
        <el-col :span="6">
          <el-form-item label="捐献进度" prop="recordstate">
            <el-select
              v-model="queryParams.recordstate"
              v-model="queryParams.workflow"
              placeholder="请选择捐献进度"
              clearable
              size="small"
            >
              <el-option
                v-for="dict in dict.type.sys_DonationStatus"
                v-for="dict in dict.type.sys_donornode"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
@@ -67,12 +67,14 @@
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="6">
          <el-form-item label="报告人">
            <el-select v-model="queryParams.reporterno" placeholder="请选择报告人">
            <el-select
              v-model="queryParams.reporterno"
              placeholder="请选择报告人"
            >
              <el-option
                v-for="item in reportlist"
                :key="item.index"
@@ -85,7 +87,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="报告日期">
          <el-form-item label="案例时间">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
@@ -118,31 +120,76 @@
    </el-form>
    <el-row :gutter="20">
      <el-col :span="8">
      <el-col :span="24">
        <el-card shadow="never">
          <!-- 捐献案例列表 -->
          <el-table
            v-loading="loading"
            border
            :data="donationCaseTableData"
            @row-click="selectDonotor"
          >
            <el-table-column label="姓名" align="center" prop="name" />
            <el-table-column label="性别" align="center" prop="sex">
          <el-table v-loading="loading" border :data="donationCaseTableData">
            <el-table-column
              label="案例时间"
              align="center"
              prop="donatetime"
              width="150"
            >
              <template slot-scope="scope">
                <span>{{
                  parseTime(scope.row.donatetime, "{y}-{m}-{d}")
                }}</span>
              </template>
            </el-table-column>
            <el-table-column
              label="姓名"
              align="center"
              prop="name"
              width="120"
            />
            <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"
                  :value="parseInt(scope.row.sex)"
                />
              </template>
            </el-table-column>
            <el-table-column
              label="医疗机构"
              label="年龄"
              align="center"
              prop="age"
              width="100"
            />
            <el-table-column
              label="报告人"
              align="center"
              prop="reportername"
              width="120"
            />
            <el-table-column
              label="案例归属"
              align="center"
              width="200px"
              prop="deptname"
            />
            <el-table-column
              label="医疗机构"
              align="center"
              prop="treatmenthospitalname"
            />
            <el-table-column
              label="操作"
              align="center"
              class-name="small-padding fixed-width"
              width="200"
              fixed="right"
            >
              <template slot-scope="scope">
                <el-button
                  size="mini"
                  type="text"
                  icon="el-icon-edit"
                  @click="selectDonotor(scope.row)"
                  >捐献详情</el-button
                >
              </template>
            </el-table-column>
          </el-table>
          <!-- hide-on-single-page -->
          <pagination
@@ -156,30 +203,19 @@
          />
        </el-card>
      </el-col>
      <el-col :span="16">
        <!-- <div class="grid-content bg-purple-dark" style="width:100%;height:800px;background-color:purple">
       </div> -->
      <!-- <el-col :span="16">
        <el-card shadow="never">
          <el-form ref="infoForm" :model="organalForm" label-width="80px">
            <el-row>
              <el-col :span="12">
                <el-form-item label="捐献编号" prop="donorno">
                  <el-input
                    v-model="curdonorno"
                    disabled
                    placeholder="请选择捐献案例"
                  />
                  <el-input v-model="curdonorno" disabled placeholder="请选择捐献案例" />
                </el-form-item>
              </el-col>
              <el-col :span="6">
                <el-form-item label="姓名" prop="donorname">
                  <el-input
                    v-model="curdonorname"
                    disabled
                    placeholder="请选择捐献案例"
                  />
                </el-form-item> </el-col
              ><el-col :span="6">
                  <el-input v-model="curdonorname" disabled placeholder="请选择捐献案例" />
                </el-form-item> </el-col><el-col :span="6">
                <el-form-item label="年龄" align="center" prop="age">
                  <el-input v-model="curage" disabled />
                </el-form-item>
@@ -187,88 +223,38 @@
            </el-row>
            <el-form-item label="选择器官">
              <el-checkbox-group v-model="organalForm.organname">
                <el-checkbox
                  v-for="dict in dict.type.sys_Organ"
                  :key="dict.value"
                  :label="dict.value"
                  @click="changeorganState(dict.value)"
                  @change="changeorganState(dict.value)"
                >
                <el-checkbox v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.value"
                  @change="changeorganState(dict.value)">
                  {{ dict.label }}
                </el-checkbox>
              </el-checkbox-group>
            </el-form-item>
            <el-form-item label="器官分配">
              <el-table v-loading="loading" border :data="organalTableData">
                <el-table-column
                  label="器官名称"
                  align="center"
                  width="90"
                  prop="organname"
                />
                <el-table-column
                  label="器官编号"
                  align="center"
                  width="80"
                  prop="organno"
                />
                <el-table-column
                  label="分配状态"
                  align="center"
                  width="90"
                  prop="organstate"
                >
                <el-table-column label="器官名称" align="center" width="90" prop="organname" />
                <el-table-column label="器官编号" align="center" width="80" prop="organno" />
                <el-table-column label="分配状态" align="center" width="90" prop="organstate">
                  <template slot-scope="scope">
                    <dict-tag
                      :options="dict.type.sys_organstate"
                      :value="scope.row.organstate"
                    />
                    <dict-tag :options="dict.type.sys_organstate" :value="scope.row.organstate" />
                  </template>
                </el-table-column>
                <el-table-column
                  label="移植医院"
                  align="center"
                  prop="transplanthospitalname"
                >
                <el-table-column label="移植医院" align="center" prop="transplanthospitalname">
                </el-table-column>
                <el-table-column
                  label="操作"
                  width="200"
                  align="center"
                  class-name="small-padding fixed-width"
                >
                <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width">
                  <template slot-scope="scope">
                    <el-button
                      size="mini"
                      v-if="scope.row.id == null"
                      type="text"
                      icon="el-icon-copy-document"
                      @click="distributionDialog(scope.row)"
                      >分配</el-button
                    >
                    <el-button
                      size="mini"
                      v-else
                      type="text"
                      icon="el-icon-copy-document"
                      @click="distributionDialog(scope.row)"
                      >修改</el-button
                    >
                    <el-button
                      size="mini"
                      v-if="scope.row.organstate != 99"
                      type="text"
                      icon="el-icon-copy-document"
                      @click="redistribution(scope.row)"
                      >重新分配</el-button
                    >
                    <el-button size="mini" v-if="scope.row.id == null" type="text" icon="el-icon-copy-document"
                      @click="distributionDialog(scope.row)">分配</el-button>
                    <el-button size="mini" v-else type="text" icon="el-icon-copy-document"
                      @click="distributionDialog(scope.row)">修改</el-button>
                    <el-button size="mini" v-if="scope.row.organstate != 99" type="text" icon="el-icon-copy-document"
                      @click="redistribution(scope.row)">重新分配</el-button>
                  </template>
                </el-table-column>
              </el-table>
            </el-form-item>
          </el-form>
        </el-card>
      </el-col>
      </el-col> -->
    </el-row>
    <!-- 添加或修改器官分配对话框 -->
@@ -350,8 +336,8 @@
              >
              </el-date-picker>
            </el-form-item> </el-col
          ><el-col :span="8">
            <el-form-item label="移植机构" prop="treatmenthospitalno">
          ><el-col :span="16">
            <el-form-item label="移植医院" prop="treatmenthospitalno">
              <org-selecter
                ref="tranHosSelect"
                :org-type="'4'"
@@ -361,8 +347,8 @@
            </el-form-item> </el-col></el-row
        ><el-row>
          <el-col :span="8">
            <el-form-item label="受体姓名" prop="name">
              <el-input v-model="form.name" placeholder="姓名" />
            <el-form-item label="受体姓氏" prop="name">
              <el-input v-model="form.name" placeholder="姓氏" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
@@ -401,7 +387,7 @@
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';
import {
  listDonatebaseinfo,
  listDonatebaseinfo
  // exportProvincemessage,
} from "@/api/project/donatebaseinfo";
import OrgSelecter from "@/views/project/components/orgselect";
@@ -411,21 +397,21 @@
  addDonateorgan,
  delDonateorgan,
  getDonateorgan,
  updateDonateorgan,
  updateDonateorgan
} from "@/api/project/donateorgan";
import {
  listOrganallocation,
  getOrganallocation,
  addOrganallocation,
  delOrganallocation,
  updateOrganallocation,
  updateOrganallocation
} from "@/api/project/organallocation";
import Li_area_select from "@/components/Address";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
    Li_area_select,
    OrgSelecter,
    OrgSelecter
  },
  name: "Organallocation",
@@ -435,7 +421,7 @@
    "sys_user_sex",
    "sys_IDType",
    "sys_AgeUnit",
    "sys_DonationStatus",
    "sys_donornode"
  ],
  data() {
    //这里存放数据
@@ -462,13 +448,13 @@
        { label: "衢州市", value: "8" },
        { label: "舟山市", value: "9" },
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" },
        { label: "丽水市", value: "B" }
      ],
      searchAddress: {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null,
        organizationname: null
      },
      //搜索参数
@@ -484,7 +470,7 @@
        endtime: null,
        endReporttime: null,
        reportervalue: null,
        city: null,
        city: null
      },
      //当前选中捐献案例编号
@@ -504,7 +490,7 @@
      //选择器官表单
      organalForm: {
        //器官列表
        organname: [],
        organname: []
      },
      //器官分配列表
      organalTableData: [],
@@ -516,18 +502,18 @@
      defultAddress: {
        sheng: "浙江省",
        shi: "",
        qu: "",
        qu: ""
      },
      form: {},
      rules: {
        applicanttime: [
          { required: true, message: "请输入捐献者姓名", trigger: "blur" },
        ],
          { required: true, message: "请输入接收时间", trigger: "blur" }
        ]
      },
      // 遮罩层
      loading: true,
      title: "",
      selectedRow: null,
      selectedRow: null
    };
  },
  //监听属性 类似于data概念
@@ -545,9 +531,7 @@
    if (this.$route.params.starttime != null && this.$route.params.endtime) {
      this.selecttime = [
        this.$moment(this.$route.params.starttime).format("YYYY-MM-DD"),
        this.$moment(this.$route.params.endtime)
          .add(-1, "month")
          .format("YYYY-MM-DD"),
        this.$moment(this.$route.params.endtime).format("YYYY-MM-DD")
      ];
    }
    if (this.$route.params.reporterno != "") {
@@ -582,14 +566,14 @@
  //方法集合
  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);
@@ -601,7 +585,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));
@@ -664,49 +648,49 @@
        this.endtime = "2998-01-01 00:00:00";
      }
    },
    updateStatus(data) {
      getDonateorgan(data.id).then((res) => {
        let obj = res.data;
        obj.organstate = 99;
        updateDonateorgan(obj).then((res) => {
          console.log("重新分配的", res);
          // if(res.code === 200){
          this.form.organstate = data.organstate;
          this.form.organno = data.organno;
          this.form.organnumber = data.organno;
          let loactionSearcParam = {
            organid: data.id,
          };
          listOrganallocation(loactionSearcParam).then((res) => {
            console.log("allocation数据", res.rows);
            if (res.rows != 0) {
              let list = res.rows[0];
              // this.form.ageunit = list.ageunit;
              this.form.applicanttime = list.applicanttime;
              // this.form.treatmenthospitalno = list.treatmenthospitalno;
              // this.form.transplanthospitalname = list.transplanthospitalname
              console.log("ididididid", this.form.id);
            }
          });
          // }
        });
      });
    },
    //重新分配
    redistribution(data) {
      console.log("重新分配", data);
      //弹窗
      this.showDistributionForm = true;
      this.reset();
      this.updateStatus(data);
      getDonateorgan(data.id).then(res => {
        let obj = res.data;
        obj.organstate = 99;
        updateDonateorgan(obj).then(res => {
          // if(res.code === 200){
          this.form.organstate = data.organstate;
          this.form.organno = data.organno;
          this.form.organnumber = data.organno;
          let loactionSearcParam = {
            organid: data.id
          };
          listOrganallocation(loactionSearcParam).then(res => {
            if (res.rows != 0) {
              let list = res.rows[0];
              // this.form.ageunit = list.ageunit;
              this.form.applicanttime = list.applicanttime;
              // this.form.treatmenthospitalno = list.treatmenthospitalno;
              // this.form.transplanthospitalname = list.transplanthospitalname
            }
          });
          console.log("Organallocation", this.form);
        });
      });
    },
    /** 查询捐献基础列表 */
    getBaseInfoList(e) {
      this.loading = true;
      sessionStorage.removeItem("organallocation");
      sessionStorage.setItem(
        "organallocation",
        JSON.stringify(this.queryParams)
      );
      if (this.queryParams.recordstate == "") {
        this.queryParams.recordstate = null;
      }
@@ -729,8 +713,9 @@
        // this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng();
        // this.queryParams.residencecity = this.$refs.areaSelect.getShi();
        // this.queryParams.residencetown = this.$refs.areaSelect.getQu();
        listDonatebaseinfo(this.queryParams).then((response) => {
        listDonatebaseinfo(this.queryParams).then(response => {
          this.donationCaseTableData = response.rows;
          console.log(this.donationCaseTableData, "Donation");
          this.total = response.total;
          this.loading = false;
        });
@@ -758,7 +743,7 @@
        reportername: null,
        reporttime: null,
        city: null,
        treatmenthospitalno: null,
        treatmenthospitalno: null
      };
      this.selecttime = [];
      this.getTimeList();
@@ -766,7 +751,7 @@
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null,
        organizationname: null
      };
      //this.$refs.areaSelect.clean();
@@ -784,7 +769,7 @@
            this.organalTableData.push({
              organname: this.dict.type.sys_Organ[i].label,
              organno: this.dict.type.sys_Organ[i].value,
              id: null,
              id: null
            });
          }
        }
@@ -806,10 +791,10 @@
      if (data.id != null) {
        //搜索器官分配记录
        let loactionSearcParam = {
          organid: data.id,
          organid: data.id
        };
        this.showDistributionForm = true;
        listOrganallocation(loactionSearcParam).then((response) => {
        listOrganallocation(loactionSearcParam).then(response => {
          if (response.rows.length == 1) {
            let resData = response.rows[0];
            resData.organstate = data.organstate;
@@ -834,22 +819,29 @@
    },
    //点击捐献案例列表触发方法
    selectDonotor(row, column, event) {
      this.selectedRow = row;
      this.curdonorno = row.donorno;
      this.curdonorname = row.name;
      this.curage = row.age;
      this.curInfoid = row.id;
      this.distributionForm.donorno = row.donorno;
      this.GetDonortedList();
      this.$router.push({
        path: "/organ/donationdetails/",
        query: {
          id: row.id,
          organType: "edit"
        }
      });
      // this.selectedRow = row;
      // this.curdonorno = row.donorno;
      // this.curdonorname = row.name;
      // this.curage = row.age;
      // this.curInfoid = row.id;
      // this.distributionForm.donorno = row.donorno;
      // this.GetDonortedList();
    },
    //获取病人已捐献的器官列表
    GetDonortedList() {
      this.loading = true;
      let oraganqueryParam = {
        infoid: this.curInfoid,
        infoid: this.curInfoid
      };
      // donorno: this.curdonorno,
      listDonateorgan(oraganqueryParam).then((response) => {
      listDonateorgan(oraganqueryParam).then(response => {
        this.loading = false;
        if (response.code == 200) {
          this.organalTableData = [];
@@ -862,7 +854,7 @@
              organname: response.rows[i].organname,
              transplanthospitalno: response.rows[i].transplanthospitalno,
              transplanthospitalname: response.rows[i].transplanthospitalname,
              organstate: response.rows[i].organstate,
              organstate: response.rows[i].organstate
            });
          }
        } else {
@@ -874,16 +866,14 @@
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate((valid) => {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            //更新捐献器官表
            this.form.allocationstatus = this.form.organstate;
            updateOrganallocation(this.form).then((response) => {
              this.$modal.msgSuccess("修改成功");
            });
            updateOrganallocation(this.form).then(response => {});
            //获取器官信息
            getDonateorgan(this.form.organid).then((response2) => {
            getDonateorgan(this.form.organid).then(response2 => {
              let organData = response2.data;
              (organData.organname = this.$refs.organNameSelect.selectedLabel),
                (organData.organstate = this.form.allocationstatus);
@@ -891,16 +881,15 @@
              organData.transplanthospitalno = this.form.transplanthospitalno;
              try {
                organData.transplanthospitalname =
                  this.$refs.tranHosSelect.getOptionByValue(
                    organData.transplanthospitalno
                  ).organizationname;
                organData.transplanthospitalname = this.$refs.tranHosSelect.getOptionByValue(
                  organData.transplanthospitalno
                ).organizationname;
              } catch {
                organData.transplanthospitalname =
                  organData.transplanthospitalno;
              }
              //更新捐献器官表
              updateDonateorgan(organData).then((response3) => {
              updateDonateorgan(organData).then(response3 => {
                this.$modal.msgSuccess("修改器官信息成功");
                this.GetDonortedList();
                this.showDistributionForm = false;
@@ -919,43 +908,46 @@
              organstate: this.form.organstate,
              transplanthospitalno: this.form.transplanthospitalno,
              transplanthospitalname: null,
              transplantdoct: this.form.transplantdoct,
              transplantdoct: this.form.transplantdoct
            };
            try {
              organaManageForm.transplanthospitalname =
                this.$refs.tranHosSelect.getOptionByValue(
                  organaManageForm.transplanthospitalno
                ).organizationname;
              organaManageForm.transplanthospitalname = this.$refs.tranHosSelect.getOptionByValue(
                organaManageForm.transplanthospitalno
              ).organizationname;
            } catch {
              organaManageForm.transplanthospitalname =
                organaManageForm.transplanthospitalno;
            }
            addDonateorgan(organaManageForm).then((response) => {
            addDonateorgan(organaManageForm).then(response => {
              this.loading = false;
              if (response.code === 200) {
                //查询获取新增的器官表id
                let organSearchParam = {
                  donorno: this.curdonorno,
                  donorname: this.curdonorname,
                  organname: this.$refs.organNameSelect.label,
                  organno: this.form.organnumber,
                  infoid: this.curInfoid,
                  // donorno: this.curdonorno,
                  organno: this.form.organnumber
                  //donorname: this.curdonorname,
                  //organname: this.$refs.organNameSelect.label,
                };
                this.loading = false;
                listDonateorgan(organSearchParam).then((response2) => {
                  this.showDistributionForm = false;
                  if (response2.code == 200 && response2.rows.length == 1) {
                    this.form.organid = response2.rows[0].id;
                    this.form.residenceprovincename = this.defultAddress.sheng;
                    this.form.residencecityname = this.defultAddress.shi;
                    this.form.residencetownname = this.defultAddress.qu;
                    addOrganallocation(this.form).then((response) => {
                      //this.$modal.msgSuccess("新增成功");
                      this.loading = false;
                      this.GetDonortedList();
                      this.showDistributionForm = false;
                    });
                listDonateorgan(organSearchParam).then(response2 => {
                  if (response2.code == 200 && response2.rows.length > 0) {
                    for (let i = 0; i < response2.rows.length; i++) {
                      if (response2.rows[i].organstate == "2") {
                        this.form.organid = response2.rows[i].id;
                        // this.form.residenceprovincename = this.defultAddress.sheng;
                        // this.form.residencecityname = this.defultAddress.shi;
                        // this.form.residencetownname = this.defultAddress.qu;
                        addOrganallocation(this.form).then(response => {
                          this.$modal.msgSuccess("捐献器官分配信息保存成功!");
                        });
                      }
                    }
                  }
                  this.GetDonortedList();
                  this.showDistributionForm = false;
                });
              }
            });
@@ -1004,7 +996,7 @@
        updateTime: null,
        //移植医院
        transplanthospitalno: null,
        transplanthospitalname: null,
        transplanthospitalname: null
      };
      this.distributionForm.donorno = this.curdonorno;
    },
@@ -1046,7 +1038,7 @@
        updateBy: null,
        updateTime: null,
        transplanthospitalno: null,
        organstate: null,
        organstate: null
      };
      this.resetForm("form");
    },
@@ -1054,7 +1046,7 @@
    changeorganState(value) {
      //organalTableData
      let organIndex = this.organalTableData.findIndex(
        (item) => item.organno == value
        item => item.organno == value
      );
      //判断当前选中值是否在数组中
      if (organIndex == -1) {
@@ -1073,26 +1065,27 @@
            id: null,
            transplanthospitalname: null,
            transplanthospitalno: null,
            organstate: null,
            organstate: "2"
          });
        }
      } else {
        this.$confirm("是否确认删除器官分配记录", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
          type: "warning"
        })
          .then(() => {
            if (organIndex != -1) {
              let tempOrgan = this.organalTableData[organIndex];
              if (tempOrgan.organstate != 1 && tempOrgan.id > 0) {
                this.$modal.msgWarning("只有未分配器官可进行删除");
                this.$modal.msgWarning("只有未分配器官可进行删除!");
                this.organalForm.organname.push(value);
                return;
              }
              if (tempOrgan.id > 0) {
                //查找器官表记录,判断器官状态
                this.loading = true;
                delDonateorgan(tempOrgan.id).then((delLocationRes) => {
                delDonateorgan(tempOrgan.id).then(delLocationRes => {
                  //调用删除器官记录api
                  // delDonateorgan(searchedOrganData.id).then(
                  //   (delOrganRes) => {
@@ -1112,13 +1105,17 @@
            this.selectDonotor(this.selectedRow);
          });
      }
    },
    }
  },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    if (sessionStorage.getItem("organallocation")) {
      this.queryParams = JSON.parse(sessionStorage.getItem("organallocation"));
      console.log(this.queryParams, "queryParams");
    }
    this.getBaseInfoList();
    this.resetForm();
  },
  }
  //生命周期 - 挂载完成(可以访问DOM元素)
  // mounted() {},
  // beforeCreate() {}, //生命周期 - 创建之前
@@ -1130,6 +1127,6 @@
  // activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
//@import url(); 引入公共css类
</style>
</style>