WXL
5 天以前 475a352a4bfd7ac3a81e8c7c92d3bb64e2e01037
src/views/project/donatebaseinfo/index.vue
@@ -1,5 +1,6 @@
<template>
  <div class="app-container">
    <!-- 搜索表单 -->
    <el-form
      :model="queryParams"
      ref="queryForm"
@@ -9,7 +10,7 @@
    >
      <el-row :gutter="8">
        <el-col :span="5">
          <el-form-item label="姓名" prop="name">
          <el-form-item label="患者姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
@@ -20,34 +21,16 @@
          </el-form-item>
        </el-col>
        <el-col :span="5">
          <el-form-item
            align="left"
            label="医疗机构"
            prop="treatmenthospitalname"
          >
          <el-form-item label="首诊医院" prop="treatmenthospitalname">
            <org-selecter
              ref="orgSelecter"
              :org-type="'3'"
              v-model="queryParams.treatmenthospitalno"
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
        </el-col>
        <el-col :span="5">
          <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>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="9">
          <el-form-item label="案例时间">
          <el-form-item label="上报时间">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
@@ -57,69 +40,7 @@
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="5">
          <el-form-item label="捐献进度" prop="workflow">
            <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>
        <el-col :span="5">
          <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-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="5">
          <el-form-item label="是否终止">
            <el-select
              v-model="queryParams.terminationCase"
              placeholder="请选择状态"
            >
              <el-option
                v-for="item in terminationCaselist"
                :key="item.value"
                :label="item.name"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="9">
          <el-form-item label="籍贯">
            <div>
              <li_area_select
                ref="areaSelect"
                v-model="searchAddress"
              ></li_area_select>
            </div>
          </el-form-item>
        </el-col>
      </el-row>
@@ -131,39 +52,19 @@
              icon="el-icon-search"
              size="mini"
              @click="handleQuery"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
              >重置</el-button
            >
              搜索
            </el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
              重置
            </el-button>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <!-- 操作按钮 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['project:donatebaseinfo:add']"
          >新增</el-button
        >
      </el-col>
      <!-- <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['project:donatebaseinfo:edit']"
          >修改</el-button
        >
      </el-col> -->
      <el-col :span="1.5">
        <el-button
@@ -174,15 +75,14 @@
          :loading="exportLoading"
          @click="handleExport"
          v-hasPermi="['project:donatebaseinfo:export']"
          >导出</el-button
        >
          导出
        </el-button>
      </el-col>
      <right-toolbar
        :showSearch.sync="showSearch"
        @queryTable="getList"
      ></right-toolbar>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
    </el-row>
    <!-- 数据表格 -->
    <el-table
      v-loading="loading"
      :data="donatebaseinfoList"
@@ -190,8 +90,6 @@
      border
      :default-sort="{ prop: 'donatetime', order: 'descending' }"
    >
      <!-- <el-table-column label="报告时间" align="center" prop="id" /> -->
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <el-table-column
        label="案例时间"
        align="center"
@@ -221,7 +119,9 @@
        <template slot-scope="scope">
           {{
            `${
              scope.row.age && scope.row.age !== 0 ? `${scope.row.age}${scope.row.ageunit?scope.row.ageunit:''}` : ""
              scope.row.age && scope.row.age !== 0
                ? `${scope.row.age}${scope.row.ageunit || ""}`
                : ""
            } ${
              scope.row.age2 && scope.row.age2 !== 0
                ? `${scope.row.age2}${scope.row.ageunit2}`
@@ -231,15 +131,11 @@
        </template>
      </el-table-column>
      <el-table-column
        label="医疗机构"
        label="首诊医院"
        align="center"
        prop="treatmenthospitalname"
      />
      <el-table-column
        label="GSC评分"
        align="center"
        prop="gcsScore"
      />
      <el-table-column label="GSC评分" align="center" prop="gcsScore" />
      <el-table-column label="血型" align="center" prop="bloodtype" width="100">
        <template slot-scope="scope">
          <dict-tag
@@ -248,7 +144,6 @@
          />
        </template>
      </el-table-column>
      <el-table-column
        label="捐献类别"
        align="center"
@@ -268,27 +163,6 @@
        prop="reportername"
        width="100"
      />
      <!--
         <el-table-column
        label="现所在地市"
        align="center"
        prop="registercityname"
        width="150"
      />
      <el-table-column
        label="捐献进度"
        align="center"
        prop="recordstate"
        width="120"
      >
        <template slot-scope="scope">
         <dict-tag
            :options="dict.type.sys_DonationStatus"
            :value="scope.row.recordstate"
          />
        </template>
      </el-table-column>
      -->
      <el-table-column
        label="捐献进度"
        align="center"
@@ -302,11 +176,12 @@
              :value="scope.row.workflow"
            />
          </div>
          <div v-else>任务终止</div>
          <div v-else><el-button type="danger" plain>任务终止</el-button></div>
        </template>
      </el-table-column>
      <el-table-column
        label="操作"
        width="190"
        align="center"
        class-name="small-padding fixed-width"
        fixed="right"
@@ -318,35 +193,42 @@
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']"
            >详情</el-button
          >
          <el-button
            v-if="scope.row.recordstate == 0"
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['project:donatebaseinfo:remove']"
            >删除</el-button
          >
          <!--
            <el-button v-if="scope.row.recordstate == 0 || scope.row.recordstate == 3" size="mini" type="text"
            icon="el-icon-thumb" @click="handleapproval(scope.row)">提交</el-button>
           -->
            详情
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-refrigerator"
            @click="handledownload(scope.row)"
            >下载</el-button
            icon="el-icon-edit"
            @click="handleOpenEdit(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']"
            >编辑</el-button
          >
          <!--
            <el-button size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']">{{ scope.row.recordstate == 99 ? "恢复": "终止"  }}</el-button>
          -->
          <el-button
            size="mini"
            type="text"
            style="color: #f56c6c;"
            @click="handleTerminate(scope.row)"
            v-if="
              scope.row.terminationCase === 0 && scope.row.recordstate !== '99'
            "
          >
            终止
          </el-button>
          <el-button
            size="mini"
            type="text"
            style="color: #67c23a;"
            @click="handleRestore(scope.row)"
            v-if="scope.row.terminationCase === 1"
          >
            恢复
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页 -->
    <pagination
      v-show="total > 0"
      :total="total"
@@ -354,1051 +236,165 @@
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- 添加或修改捐献基础对话框 -->
    <el-dialog
      :title="title"
      align="center"
      :visible.sync="open"
      :close-on-click-modal="false"
      width="1100px"
    >
      <el-form
        ref="form"
        :model="form"
        :rules="rules"
        label-width="130px"
        label-position="right"
      >
        <div
          style="
                border-bottom: 1px solid #ddd;
                border-top: 1px solid #ddd;
                padding-right: 60px;
              "
        >
          <el-row style="margin-top: 40px">
            <el-col :span="8">
              <el-form-item label="案例编号" prop="caseNo">
                <el-input v-model="form.caseNo" disabled />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item
                align="left"
                label="医疗机构"
                prop="treatmenthospitalno"
              >
                <org-selecter
                  ref="addOrgSelect"
                  :org-type="'3'"
                  v-model="form.treatmenthospitalno"
    <!-- 案例编辑弹窗 -->
    <edit-case-modal
      :visible="editModalVisible"
      :editData="currentEditData"
      :dict-options="dict.type"
      @update:visible="editModalVisible = $event"
      @success="handleEditSuccess"
      @closed="handleEditClosed"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="科室" prop="treatmentdeptno">
                <el-input
                  v-model="form.treatmentdeptname"
                  placeholder="请输入科室"
    <!-- 终止/恢复弹框 -->
    <terminate-restore-modal
      :current-record="currentRecord"
      :visible="modalVisible"
      :titles="modalTitles"
      @update:visible="handleModalVisibleChange"
      @operation-success="handleOperationSuccess"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item align="left" label="姓名" prop="name">
                <el-input v-model="form.name" placeholder="必填项" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="民族" prop="nation">
                <el-select v-model="form.nation" placeholder="请选择民族">
                  <el-option
                    v-for="dict in dict.type.sys_nation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="籍贯" prop="nativeplace">
                <el-input v-model="form.nativeplace" placeholder="请输入国籍" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="国籍" prop="nationality">
                <el-input v-model="form.nationality" placeholder="请输入国籍" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="证件类型" prop="idcardtype">
                <el-select
                  v-model="form.idcardtype"
                  placeholder="请选择证件类型"
                >
                  <el-option
                    v-for="dict in dict.type.sys_IDType"
                    :key="dict.value"
                    :label="dict.label"
                    :value="parseInt(dict.value)"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="证件号码" prop="idcardno">
                <el-input
                  style="width: 174px"
                  ref="updateBSvalue"
                  class="sfzcode"
                  v-model="form.idcardno"
                  placeholder="请输入证件号码"
                  @blur="updateMessage"
                />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="性别" prop="sex">
                <el-select v-model="form.sex" placeholder="请输入性别">
                  <el-option
                    v-for="dict in dict.type.sys_user_sex"
                    :key="dict.label"
                    :label="dict.label"
                    :value="parseInt(dict.value)"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="学历" prop="education">
                <el-select v-model="form.education" placeholder="请选择学历">
                  <el-option
                    v-for="dict in dict.type.sys_education"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="出生日期" prop="birthday">
                <el-date-picker
                  clearable
                  size="small"
                  v-model="form.birthday"
                  type="date"
                  style="width: 174px"
                  @change="calculateAge"
                  value-format="yyyy-MM-dd"
                  placeholder="选择出生日期"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <!-- <el-form-item label="年龄" prop="age">
                <el-input v-model="form.age" placeholder="请输入年龄" />
              </el-form-item> -->
              <el-form-item label="年龄" prop="age">
                <el-input v-model="form.andAge" disabled> </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="职业" prop="occupation">
                <el-select v-model="form.occupation" placeholder="请选择职业">
                  <el-option
                    v-for="dict in dict.type.sys_occupation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
                    <el-row>
            <el-col :span="12">
              <el-form-item
                label="所在医疗机构"
                prop="currentMedicalInstitution"
              >
                <el-input
                  v-model="form.currentMedicalInstitution"
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item
                label-width="150px"
                label="所在医疗机构科室"
                prop="currentDept"
              >
                <el-input v-model="form.currentDept" placeholder="请输入" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="首次医疗机构" prop="firstMedicalInstitution">
                <el-input
                  v-model="form.firstMedicalInstitution"
                  placeholder="请输入"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item
                label-width="150px"
                label="首次医疗机构科室"
                prop="firstDept"
              >
                <el-input v-model="form.firstDept" placeholder="请输入" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="住址" prop="residenceaddress">
                <div>
                  <li_area_select
                    ref="residenceSelect"
                    v-model="residenceAddresss"
                  ></li_area_select>
                  <!-- <div>{{defultAddress}}</div> -->
                </div>
              </el-form-item>
            </el-col>
            <el-col :span="11" :push="1">
              <el-input
                v-model="form.residenceaddress"
                placeholder="请输入内容"
              />
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="现所在地" prop="registeraddress">
                <div>
                  <li_area_select
                    ref="registerSelect"
                    v-model="registerAddresss"
                  ></li_area_select>
                  <!-- <div>{{defultAddress}}</div> -->
                </div>
              </el-form-item>
            </el-col>
            <el-col :span="11" :push="1">
              <el-input
                v-model="form.registeraddress"
                placeholder="请输入内容"
              />
            </el-col>
          </el-row>
        </div>
        <div
          style="
                border-bottom: 1px solid #ddd;
                margin-top: 20px;
                padding-right: 60px;
              "
        >
          <el-row>
            <el-col :span="8">
              <el-form-item label="案例编号" prop="inpatientno">
                <el-input v-model="form.inpatientno" placeholder="案例编号" />
              </el-form-item>
            </el-col>
            <el-col :span="16">
              <el-form-item label="疾病诊断" prop="diagnosisname">
                <el-input
                  v-model="form.diagnosisname"
                  placeholder="请输入疾病诊断名称"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item align="left" label="血型" prop="bloodtype">
                <el-radio-group v-model="form.bloodtype">
                  <el-radio
                    v-for="dict in dict.type.sys_BloodType"
                    :key="dict.value"
                    :label="dict.value"
                    >{{ dict.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12" :pull="1">
              <el-form-item label="Rh(D)" align="left" prop="rhyin">
                <el-radio-group v-model="form.rhyin">
                  <el-radio
                    v-for="dict in dict.type.sys_bloodtype_rhd"
                    :key="dict.value"
                    :label="dict.value"
                    >{{ dict.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-form-item label="疾病类型" align="left">
              <el-checkbox-group v-model="form.diseasetype">
                <el-checkbox
                  v-for="dict in dict.type.sys_DiseaseType"
                  :key="dict.value"
                  :label="dict.value"
                >
                  {{ dict.label }}
                </el-checkbox>
              </el-checkbox-group>
            </el-form-item>
            <el-form-item label="其他" prop="diseasetypeOther">
              <el-input
                v-model="form.diseasetypeOther"
                placeholder="请输入其他"
              />
            </el-form-item>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item align="left" label="传染病">
                <el-checkbox-group v-model="form.infectious">
                  <el-checkbox
                    v-for="dict in dict.type.sys_Infectious"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item align="left" label="其他" prop="infectiousOther">
                <el-input
                  v-model="form.infectiousOther"
                  placeholder="请输入其他"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="9">
              <el-form-item align="left" label="病人状况">
                <el-checkbox-group v-model="form.patientstate">
                  <el-checkbox
                    v-for="dict in dict.type.sys_patientstate"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="15" align="left">
              <el-form-item label="其他情况">
                <el-checkbox-group v-model="form.othercases">
                  <el-checkbox
                    v-for="dict in dict.type.sys_OtherCases"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
        </div>
        <div
          style="
                border-bottom: 1px solid #ddd;
                padding-right: 60px;
                margin-top: 20px;
              "
        >
          <el-row>
            <div display="flex">
              <el-row>
                <el-col :span="12">
                  <el-form-item
                    label="亲属状况"
                    prop="kinship"
                    class="relation"
                    align="left"
                  >
                    <el-checkbox-group v-model="form.kinship">
                      <el-checkbox
                        v-for="dict in dict.type.sys_Kinship"
                        :key="dict.value"
                        :label="dict.value"
                      >
                        {{ dict.label }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="其他" prop="kinshipOther">
                    <el-input
                      v-model="form.kinshipOther"
                      placeholder="请输入其他"
                    />
                  </el-form-item>
                </el-col>
              </el-row>
            </div>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item align="left" label="本人意愿 ">
                <el-checkbox-group v-model="form.selfwill">
                  <el-checkbox
                    v-for="dict in dict.type.sys_SelfWill"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="主要亲属" prop="majorrelatives">
                <el-input
                  v-model="form.majorrelatives"
                  placeholder="请输入主要亲属"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="与捐赠者关系" prop="familyrelations">
                <el-select
                  v-model="form.familyrelations"
                  placeholder="请选择与捐赠者关系"
                >
                  <el-option
                    v-for="dict in dict.type.sys_FamilyRelation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item align="left" label="信息来源">
                <el-checkbox-group v-model="form.infosources">
                  <el-checkbox
                    v-for="dict in dict.type.sys_InfoSources"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="其他" prop="infosourcesOther">
                <el-input
                  v-model="form.infosourcesOther"
                  placeholder="请输入信息来源其他"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="信息员" prop="infoname">
                <el-input v-model="form.infoname" placeholder="请输入信息员" />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系电话" prop="infophone">
                <el-input
                  v-model="form.infophone"
                  placeholder="请输入信息员联系电话"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item align="left" label="红十字会" prop="redorganno">
                <org-selecter
                  ref="addCrossOrgSelect"
                  :org-type="'2'"
                  v-model="form.redorganno"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系人" prop="contactperson">
                <el-input
                  v-model="form.contactperson"
                  placeholder="请输入联系人"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系时间" prop="contacttime">
                <el-date-picker
                  clearable
                  size="small"
                  style="width: 190px"
                  v-model="form.contacttime"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="选择报告时间"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item
                align="left"
                label="获取组织"
                prop="acquisitiontissuename"
              >
                <org-selecter
                  style="width: 260px"
                  ref="orgSelecter"
                  :org-type="'1'"
                  v-model="form.acquisitiontissueno"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="报告人" prop="reporterno">
                <el-select
                  ref="getReportname"
                  v-model="form.reporterno"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in reporters"
                    :key="item.reportNo"
                    :label="item.reportName"
                    :value="item.reportNo"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系电话" prop="reporterphone">
                <el-input
                  v-model="form.reporterphone"
                  placeholder="请输入联系电话"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="报告时间" align="left" prop="reporttime">
                <el-date-picker
                  clearable
                  size="small"
                  style="width: 190px"
                  v-model="form.reporttime"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="选择报告时间"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
          </el-row>
        </div>
        <!-- <div style="padding-right: 60px; margin-top: 20px">
          <el-row>
            <el-form-item label="附件" align="left" prop="annexfile">
              <annex-upload ref="annex" :infoid="form.id" :caseNo="form.caseNo" :flowname="flowname"
                :annexno="annexno" />
            </el-form-item>
          </el-row>
        </div> -->
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button v-show="showSaveBtn" type="primary" @click="submitForm"
          >保存并前往案例工作台</el-button
        >
        <el-button
          v-show="showTerminationBtn"
          type="primary"
          @click="submitForm"
          >终止案例</el-button
        >
        <el-button @click="cancel">取 消</el-button>
        <!-- <el-button @click="handleapproval">提交审核</el-button> -->
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { getUserProfile } from "@/api/system/user";
import TerminateRestoreModal from "@/components/TerminateRestoreModal";
import EditCaseModal from "./EditCaseModal";
import {
  listDonatebaseinfo,
  getDonatebaseinfo,
  delDonatebaseinfo,
  addDonatebaseinfo,
  updateDonatebaseinfo,
  exportDonatebaseinfo,
  downloadbaseinfo,
  getDonationNumber,
  getdonatorno
  exportDonatebaseinfo
} from "@/api/project/donatebaseinfo";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import AnnexUpload from "@/views/project/components/annexupload";
import ReportName from "@/views/project/components/organizationUser";
import { getToken } from "@/utils/auth";
import {
  listOrganization,
  getOrganization,
  listReportname,
  listUser
} from "@/api/project/organization";
import { listReportname, listUser } from "@/api/project/organization";
export default {
  name: "Donatebaseinfo",
  components: {
    Li_area_select,
    OrgSelecter,
    AnnexUpload,
    ReportName
    TerminateRestoreModal,
    EditCaseModal
  },
  name: "Donatebaseinfo",
  dicts: [
    "sys_Reporter",
    "sys_redcrossagency",
    "sys_nation",
    "sys_occupation",
    "sys_education",
    "sys_OrganizationType",
    "sys_HospitalNature",
    "sys_RegionalLevel",
    "country",
    "sys_user_sex",
    "sys_IDType",
    "sys_AgeUnit",
    "sys_BloodType",
    "sys_0_1",
    "sys_patientstate",
    "sys_DonationCategory",
    "sys_Kinship",
    "sys_Infectious",
    "sys_bloodtype_rhd",
    "sys_InfoSources",
    "sys_OtherCases",
    "sys_DonationStatus",
    "sys_DiseaseType",
    "sys_SelfWill",
    "sys_FamilyRelation",
    "sys_donornode"
  ],
  data() {
    return {
      tempRecordState: null,
      approvalState: false,
      countyname: "",
      cuuntry: "",
      organizationname: "",
      selecttime: "",
      //省市区
      //默认值设置,可为空
      searchAddress: {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      residenceAddresss: { sheng: "山东省", shi: "", qu: "" },
      registerAddresss: { sheng: "山东省", shi: "", qu: "" },
      modalTitles: {
        terminate: "终止捐献进程",
        restore: "恢复捐献进程"
      },
      residenceAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      registerAddresss: {
        sheng: "浙江省",
        shi: "",
        qu: ""
      },
      terminationCaselist: [
        { name: "终止状态", value: 1 },
        { name: "正常状态", value: 0 }
      ],
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 选中数组
      editModalVisible: false,
      currentEditData: {},
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 捐献基础表格数据
      donatebaseinfoList: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 获取组织名称时间范围
      daterangeReporttime: [],
      //用户信息
      currentuser: {},
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        caseNo: null,
        recordstate: null,
        // treatmenthospitalno: null,
        treatmenthospitalname: null,
        name: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        treatmenthospitalno: null,
        starttime: null,
        endtime: null,
        city: null,
        reportno: null
        // organizationname: null,
        // organizationtype: null,
        // idcardno: null,
        // reporterno: null,
        // reporttime: null,
        endtime: null
      },
      // 表单参数
      form: {
        id: null,
        name: null,
        sex: null,
        idcardtype: null,
        idcardno: null,
        age: null, // 年龄(年)
        age: null,
        andAge: "",
        ageunit: "年", // 单位,通常固定为“年”
        age2: null, // 年龄(月或天)
        ageunit2: "月", // 单位,根据计算决定是“月”还是“天”
        ageunit: null,
        ageunit: "年",
        age2: null,
        ageunit2: "月",
        birthday: null,
        phone: null,
        residenceaddress: null,
        nationality: "中国",
        nativeplace: null,
        residenceprovince: null,
        nation: null,
        residenceprovincename: null,
        occupation: null,
        residencecity: null,
        education: null,
        residencecityname: null,
        residencetown: null,
        residencetownname: null,
        residencecommunity: null,
        residencecommunityname: null,
        residencecountycode: null,
        residencecountyname: null,
        registeraddress: null,
        registerprovince: null,
        registerprovincename: null,
        registercity: null,
        registercityname: null,
        registertown: null,
        registertownname: null,
        registercommunity: null,
        registercommunityname: null,
        registercountycode: null,
        registercountyname: null,
        recordstate: null,
        treatmenthospitalno: null,
        treatmenthospitalname: null,
        treatmentdeptname: null,
        diagnosisno: null,
        diagnosisname: null,
        bloodtype: "0",
        inpatientno: null,
        rhyin: "0",
        caseNo: null,
        donationcategory: null,
        illnessoverview: null,
        diseasetype: [],
        infectious: [],
        selfwill: [],
        diseasetypeOther: null,
        othercases: [],
        kinshipwill: 0,
        infosources: [],
        kinship: [],
        redorganno: null,
        redorganname: null,
        contactperson: null,
        infectiousOther: null,
        contactnumber: null,
        contacttime: null,
        reporterno: null,
        reportername: null,
        patientstate: [],
        reporterphone: null,
        infosourcesOther: null,
        reporttime: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        kinshipOther: null,
        majorrelatives: null,
        familyrelations: null,
        acquisitiontissueno: "ZJOPO",
        acquisitiontissuename: "浙江省人体器官获取组织"
        acquisitiontissuename: "青岛人体器官获取组织"
      },
      //ads
      reporters: [],
      users: [],
      // 表单校验
     rules: {
        name: [
          { required: true, message: "请输入捐献者姓名", trigger: "blur" }
        ],
        nationality: [
          { required: true, message: "请输入国籍", trigger: "blur" }
        ],
        currentMedicalInstitution: [
          { required: true, message: "请输入所在医疗机构", trigger: "blur" }
        ],
        currentDept: [
          { required: true, message: "所在医疗机构科室", trigger: "blur" }
        ],
        firstMedicalInstitution: [
          { required: true, message: "请输入首次医疗机构", trigger: "blur" }
        ],
        firstDept: [
          { required: true, message: "请输入首次医疗机构科室", trigger: "blur" }
        ],
        birthday: [
          { required: true, message: "请选择出生日期", trigger: "blur" }
        ],
        idcardtype: [
          { required: true, message: "请选择证件类型", trigger: "blur" }
        ],
        residenceaddress: [
          { required: true, message: "请输入住址", trigger: "blur" }
        ],
        registerAddresss: [
          { required: true, message: "请输入现居住地址", trigger: "blur" }
        ],
        diseasetype: [
          { required: true, message: "请选择疾病类型", trigger: "blur" }
        ],
        infectious: [
          { required: true, message: "请选择传染病类型", trigger: "blur" }
        ],
        patientstate: [
          { required: true, message: "请选择病人状况", trigger: "blur" }
        ],
        kinship: [
          { required: true, message: "请选择亲属情况", trigger: "blur" }
        ],
        majorrelatives: [
          { required: true, message: "请输入主要亲属", trigger: "blur" }
        ],
        selfwill: [
          { required: true, message: "请选择本人意愿", trigger: "blur" }
        ],
        registerAddresss: [
          { required: true, message: "请输入现所在地", trigger: "blur" }
        ],
        familyrelations: [
          { required: true, message: "请选择亲属与捐献者关系", trigger: "blur" }
        ],
        infosources: [
          { required: true, message: "请选择信息来源", trigger: "blur" }
        ],
        idcardno: [
          { required: true, message: "请正确输入证件号码", trigger: "blur" }
        ],
        sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
        age: [{ required: true, message: "请输入年龄", trigger: "blur" }],
        treatmenthospitalno: [
          { required: true, message: "请选择医疗机构", trigger: "blur" }
          { required: true, message: "请选择首诊医院", trigger: "blur" }
        ],
        bloodtype: [
          { required: true, message: "请选择ABO血型", trigger: "blur" }
        ],
        rhyin: [{ required: true, message: "请选择RHD血型", trigger: "blur" }],
        diseasetype: [
          { required: true, message: "请选择RHD血型", trigger: "blur" }
        ],
        inpatientno: [
          { required: true, message: "输入案例编号", trigger: "blur" }
        ],
        diagnosisname: [
          { required: true, message: "疾病诊断不能为空", trigger: "blur" }
        ],
        infoname: [
          { required: true, message: "请输入信息员姓名", trigger: "blur" }
        ],
        infophone: [
          { required: true, message: "请输入信息员联系电话", trigger: "blur" }
        ],
        acquisitiontissueno: [
          { required: true, message: "器官获取组织不能为空", trigger: "blur" }
        ],
        reporterno: [
          { required: true, message: "请选择报告人", trigger: "blur" }
        ],
        reporttime: [
          { required: true, message: "请输入报告时间", trigger: "blur" }
        ],
        reporterphone: [
          { required: true, message: "请输入报告人联系电话", trigger: "blur" }
        ]
      },
      //是否显示保存按钮
      showSaveBtn: true,
      showTerminationBtn: false,
      //流程名称
      flowname: "潜在捐献登记",
      annexno: "PotentialDonationRegistration",
      starttime: "",
      endtime: "",
      reportlist: [],
      reportervalue: "",
      headers: {
        Authorization: "Bearer " + getToken()
      },
      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" }
      ]
      currentRecord: {},
      modalVisible: {}
    };
  },
  created() {
    if (sessionStorage.getItem("donatebaseinfo")) {
      this.queryParams = JSON.parse(sessionStorage.getItem("donatebaseinfo"));
      console.log(this.queryParams, "queryParams");
    const savedParams = sessionStorage.getItem("donatebaseinfo");
    if (savedParams) {
      this.queryParams = { ...this.queryParams, ...JSON.parse(savedParams) };
    }
  },
  async mounted() {
    await Promise.all([
      this.getCurrentUser(),
      this.getuserlist(),
      this.selectReporters()
    ]);
  mounted(e) {
    // let idd = this.$route.query.userid
    // console.log('chuanzhi',idd);
    this.getCurrentUser();
    this.getuserlist();
    this.selectReporters();
    this.LoadReportList();
    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).format("YYYY-MM-DD")
      ];
    }
    if (this.$route.params.reporterno != "") {
      this.reporterno = this.$route.params.reporterno;
    }
    this.queryParams.terminationcase = this.$route.params.terminationcase;
    if (
      this.$route.params.tempRecordState != "" &&
      this.$route.params.tempRecordState != undefined
    ) {
      this.queryParams.recordstate = "" + this.$route.params.tempRecordState;
    }
    if (this.$route.params.reporterno != "") {
      this.reportervalue = this.$route.params.reporterno;
    }
    if (!this.$route.params.shen != "") {
      this.searchAddress.sheng = this.$route.params.shen;
      if (!this.$route.params.shi != "") {
        this.searchAddress.shi = this.$route.params.shi;
      }
      if (!this.$route.params.qu) {
        this.searchAddress.qu = this.$route.params.qu;
      }
    }
    if (this.$route.params.city != "") {
      this.queryParams.city = this.$route.params.city;
    } else {
      this.queryParams.city = "";
    }
    this.initializeRouteParams();
    this.getTimeList();
    this.getList();
  },
  methods: {
    getCurrentUser() {
      getUserProfile().then(response => {
    async getCurrentUser() {
      const response = await getUserProfile();
        this.currentuser = response.data;
      });
    },
    calculateAge(birthday) {
      if (!birthday) {
        // 清空年龄字段
        this.form.age = null;
        this.form.age2 = null;
        // this.form.age3 = null;
        this.form.age = this.form.age2 = null;
        return;
      }
      const birthDate = new Date(birthday);
      const today = new Date();
      // 计算总月份差异
      let yearDiff = today.getFullYear() - birthDate.getFullYear();
      let monthDiff = today.getMonth() - birthDate.getMonth();
      let dayDiff = today.getDate() - birthDate.getDate();
      // 如果当前日期的天数小于出生日期的天数,则借月
      if (dayDiff < 0) {
        monthDiff--;
        // 获取上个月的最后一天
        const lastDayOfMonth = new Date(
          today.getFullYear(),
          today.getMonth(),
@@ -1407,683 +403,291 @@
        dayDiff += lastDayOfMonth;
      }
      // 如果月份差为负,则借年
      if (monthDiff < 0) {
        yearDiff--;
        monthDiff += 12;
      }
      // 赋值年部分
      this.form.age = yearDiff;
      this.form.ageunit = "岁";
      // 赋值月部分(或者您也可以选择显示剩余的天数)
      this.form.age2 = monthDiff;
      this.form.ageunit2 = "月";
      // 如果您还想显示天数
      // this.form.age3 = dayDiff;
      // this.form.ageunit3 = '天';
      // 如果年龄小于1岁,可能您希望用月或天来表示主年龄
      // 这里是一个简单的逻辑,您可以根据需求调整
      if (yearDiff === 0) {
        if (monthDiff === 0) {
          // 小于1个月,用天表示
          this.form.age = dayDiff;
          this.form.ageunit = "天";
          this.form.age2 = null; // 清空第二字段
          // this.form.age3 = null;
          this.form.age2 = null;
        } else {
          // 小于1年,用月表示
          this.form.age = monthDiff;
          this.form.ageunit = "月";
          this.form.age2 = dayDiff; // 第二字段显示天
          this.form.age2 = dayDiff;
          this.form.ageunit2 = "天";
        }
      }
      this.form.andAge = `${
      this.form.andAge = [
        this.form.age && this.form.age !== 0
          ? `${this.form.age}${this.form.ageunit}`
          : ""
      } ${
          : "",
        this.form.age2 && this.form.age2 !== 0
          ? `${this.form.age2}${this.form.ageunit2}`
          : ""
      }`.trim();
      this.$forceUpdate(); // 强制更新
      console.log(this.form.andAge);
    },
    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;
        }
      });
      ]
        .filter(Boolean)
        .join(" ");
    },
    resetArr(Arr) {
      var hash = {};
      Arr = Arr.reduce(function(arr, current) {
        hash[current.reporterno]
          ? ""
          : (hash[current.reporterno] = true && arr.push(current));
        return arr;
      }, []);
      return Arr;
    handleTerminate(row) {
      this.currentRecord = { ...row };
      this.modalVisible = { ...this.modalVisible, terminate: true };
    },
    getTimeList(e) {
      console.log(this.selecttime);
      if (this.selecttime != null) {
        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";
        }
      } else {
        this.starttime = "1998-01-01 00:00:00";
        this.endtime = "2998-01-01 00:00:00";
      }
    handleRestore(row) {
      this.currentRecord = { ...row };
      this.modalVisible = { ...this.modalVisible, restore: true };
    },
    selectReporters() {
      //专职人员
      listReportname("zzry").then(res => {
    getTimeList() {
      if (!this.selecttime) {
        // this.queryParams.starttime = "1998-01-01 00:00:00";
        // this.queryParams.endtime = "2998-01-01 00:00:00";
        return;
      }
      const [start, end] = this.selecttime;
      this.queryParams.starttime = `${start} 00:00:00`;
      const monthNum = Number(end.slice(5, 7));
      const nextMonth = monthNum < 9 ? `0${monthNum + 1}` : monthNum + 1;
      this.queryParams.endtime = `${end.slice(0, 5)}${nextMonth}-01 00:00:00`;
    },
    async selectReporters() {
      const res = await listReportname("zzry");
        this.reporters = res.data;
      });
    },
    getuserlist() {
      //用户列表
      listUser().then(res => {
    async getuserlist() {
      const res = await listUser();
        this.users = res.data;
      });
    },
    handleapproval(row) {
      this.$confirm("是否确认将案例上报审核?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          row.recordstate = 1;
          updateDonatebaseinfo(row).then(response => {
            this.$modal.msgSuccess("上报审核成功");
            this.getList();
          });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消上报"
          });
        });
    },
    resetapproval(row) {
      this.approvalState = false;
      //  this.reset();
      // const id = row.id || this.ids;
      updateDonatebaseinfo(row).then(response => {
        row.recordstate = 0;
      });
    },
    updateMessage() {
      try {
        const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
        if (reg.test(this.form.idcardno)) {
          // 身份证号码是否合法
          var org_birthday = this.form.idcardno.substring(6, 14);
          var org_gender = this.form.idcardno.substring(16, 17);
          var sex = org_gender % 2 == 1 ? 1 : 2;
          var birthday =
            org_birthday.substring(0, 4) +
            "-" +
            org_birthday.substring(4, 6) +
            "-" +
            org_birthday.substring(6, 8);
          var birthdays = new Date(birthday.replace(/-/g, "/"));
          let d = new Date();
          let age =
            d.getFullYear() -
            birthdays.getFullYear() -
            (d.getMonth() < birthdays.getMonth() ||
            (d.getMonth() == birthdays.getMonth() &&
              d.getDate() < birthdays.getDate())
              ? 1
              : 0);
          // 赋值给表格
      const idCardReg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
      if (idCardReg.test(this.form.idcardno)) {
        const orgBirthday = this.form.idcardno.substring(6, 14);
        const orgGender = this.form.idcardno.substring(16, 17);
        const sex = orgGender % 2 == 1 ? 1 : 2;
        const birthday = `${orgBirthday.substring(
          0,
          4
        )}-${orgBirthday.substring(4, 6)}-${orgBirthday.substring(6, 8)}`;
          this.form.sex = sex;
          this.form.birthday = birthday;
          this.calculateAge(birthday);
          // this.form.age = age;
        } else {
        }
      } catch {}
    },
    // sheng: '浙江省',
    //   shi: '',
    //   qu: '',
    // 身份证验证
    //根据身份证号自动生成性别、出生日期和年龄
    inputChange() {
      const idCard = this.props.form.getFieldValue("idCard");
      let birthday = "";
      let sex = "0";
      if (idCard.length === 15) {
        birthday = `19${idCard.substring(6, 8)}-${idCard.substring(
          9,
          10
        )}-${idCard.substring(11, 12)}`;
        sex = idCard[14] % 2 === 0 ? "0" : "1";
      } else {
        birthday = `${idCard.substring(6, 10)}-${idCard.substring(
          11,
          12
        )}-${idCard.substring(13, 14)}`;
        sex = idCard[16] % 2 === 0 ? "0" : "1";
      }
      this.setState({
        birthday,
        sex
    initializeRouteParams() {
      const { params } = this.$route;
      const routeParams = {
        starttime: params.starttime,
        endtime: params.endtime,
        reporterno: params.reporterno,
        terminationcase: params.terminationcase,
        tempRecordState: params.tempRecordState,
        city: params.city
      };
      Object.entries(routeParams).forEach(([key, value]) => {
        if (value) this.queryParams[key] = value;
      });
      if (params.starttime && params.endtime) {
        this.selecttime = [
          this.$moment(params.starttime).format("YYYY-MM-DD"),
          this.$moment(params.endtime).format("YYYY-MM-DD")
        ];
      }
    },
    /** 查询捐献基础列表 */
    getList() {
    async getList() {
      this.loading = true;
      this.queryParams.params = {};
      sessionStorage.removeItem("donatebaseinfo");
      sessionStorage.setItem(
        "donatebaseinfo",
        JSON.stringify(this.queryParams)
      );
      // 跳转时的默认进度
      if (this.reportervalue != "") {
        this.queryParams.reportno = this.reportervalue;
      }
      if (this.starttime != "") {
        this.queryParams.starttime = this.starttime;
      } else {
        this.queryParams.starttime = "";
      }
      if (this.endtime != "") {
        this.queryParams.endtime = this.endtime;
      } else {
        this.queryParams.endtime = "";
      }
      this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng();
      this.queryParams.residencecity = this.$refs.areaSelect.getShi();
      this.queryParams.residencetown = this.$refs.areaSelect.getQu();
      console.log(this.queryParams);
      listDonatebaseinfo(this.queryParams).then(response => {
        this.donatebaseinfoList = response.rows;
        //console.log("listDonatebaseinfo", response.rows);
      try {
        const response = await listDonatebaseinfo(this.queryParams);
        this.donatebaseinfoList = response.data;
        this.total = response.total;
      } catch (error) {
        console.error("获取列表失败:", error);
      } finally {
        this.loading = false;
      });
      }
    },
    // 取消按钮
    /** 打开编辑弹窗 */
    handleOpenEdit(row) {
      this.currentEditData = { ...row };
      console.log(this.currentEditData, "this.currentEditData");
      this.editModalVisible = true;
    },
    /** 处理编辑成功 */
    handleEditSuccess(updatedData) {
      this.$modal.msgSuccess("编辑成功");
      this.getList(); // 刷新列表
    },
    /** 处理编辑弹窗关闭 */
    handleEditClosed() {
      this.currentEditData = {};
    },
    handleModalVisibleChange(newVisible) {
      this.modalVisible = { ...newVisible };
    },
    handleOperationSuccess({ type, record }) {
      console.log(`${type}操作成功:`, record);
      this.getList();
    },
    cancel() {
      this.open = false;
      this.reset();
    },
    // 表单重置
    reset() {
      this.form = {
        id: null,
        name: null,
        sex: null,
        idcardtype: null,
        idcardno: null,
        age: null,
        ageunit: null,
        birthday: null,
        phone: null,
        residenceaddress: null,
        nationality: "中国",
        nativeplace: null,
        residenceprovince: null,
        nation: null,
        residenceprovincename: null,
        occupation: null,
        residencecity: null,
        education: null,
        residencecityname: null,
        residencetown: null,
        residencetownname: null,
        residencecommunity: null,
        residencecommunityname: null,
        residencecountycode: null,
        residencecountyname: null,
        registeraddress: null,
        registerprovince: null,
        registerprovincename: null,
        registercity: null,
        registercityname: null,
        registertown: null,
        registertownname: null,
        registercommunity: null,
        registercommunityname: null,
        registercountycode: null,
        registercountyname: null,
        recordstate: null,
        treatmenthospitalno: null,
        treatmenthospitalname: null,
        treatmentdeptname: null,
        diagnosisno: null,
        diagnosisname: null,
        bloodtype: "0",
        inpatientno: null,
        rhyin: 0,
        caseNo: null,
        donationcategory: null,
        illnessoverview: null,
        diseasetype: [],
        infectious: [],
        selfwill: [],
        diseasetypeOther: null,
        othercases: [],
        kinshipwill: 0,
        infosources: [],
        kinship: [],
        redorganno: null,
        redorganname: null,
        contactperson: null,
        infectiousOther: null,
        contactnumber: null,
        contacttime: null,
        reporterno: null,
        reportername: null,
        patientstate: [],
        reporterphone: null,
        infosourcesOther: null,
        reporttime: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        kinshipOther: null,
        majorrelatives: null,
        familyrelations: null,
        acquisitiontissueno: "ZJOPO",
        acquisitiontissuename: "浙江省人体器官获取组织"
        sex: null
        // ... 保留必要的字段初始值
      };
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.daterangeReporttime = [];
      this.reportervalue = "";
      this.queryParams = {
        doname: null,
        pageNum: 1,
        pageSize: 10,
        name: null,
        idcardno: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        // "2"
        recordstate: null,
        treatmenthospitalname: null,
        caseNo: null,
        acquisitiontissueno: null,
        reportername: null,
        reporttime: null,
        city: null,
        treatmenthospitalno: null
        treatmenthospitalno: null,
        starttime: null,
        endtime: null
      };
      this.selecttime = [];
      this.getTimeList();
      this.searchAddress = {
        sheng: "",
        shi: "",
        qu: "",
        organizationname: null
      };
      //this.$refs.areaSelect.clean();
      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.$router.push({
      //   path: "/organ/donationdetails/",
      //   query: {
      //     organType: "add",
      //   }
      // });
      this.reset();
      //设置报告人和部门/组
      this.form.reporterno = this.currentuser.userName;
      this.form.reportername = this.currentuser.nickName;
      this.form.deptid = this.currentuser.deptid;
      this.showSaveBtn = true;
      //this.$refs.annex.getAnnexList();
      this.open = true;
      // this.$nextTick(function() {
      //   this.$refs.annex.getAnnexList();
      // });
      this.title = "人体器官潜在捐献者登记表";
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.$router.push({
        path: "/case/course",
        query: {
          id: row.id,
          organType: "edit"
        }
      });
      // this.showSaveBtn = true;
      // const id = row.id || this.ids;
      // //this.$refs.annex.getAnnexList();
      // getDonatebaseinfo(id).then((response) => {
      //   this.reset();
      //   this.$nextTick(function () {
      //     this.$refs.annex.getAnnexList();
      //   });
      //   this.form = response.data;
      //   response.data.sex = parseInt(response.data.sex);
      //   this.form.id = response.data.id;
      //   this.form.diseasetype = this.form.diseasetype.split(",");
      //   this.form.infectious = this.form.infectious.split(",");
      //   this.form.selfwill = this.form.selfwill.split(",");
      //   this.form.othercases = this.form.othercases.split(",");
      //   this.form.infosources = this.form.infosources.split(",");
      //   this.form.kinship = this.form.kinship.split(",");
      //   this.form.patientstate = this.form.patientstate.split(",");
      //   this.open = true;
      //   this.title = "人体器官潜在捐献者登记表";
      //   this.registerAddresss.sheng = response.data.registerprovincename;
      //   this.residenceAddresss.sheng = response.data.residenceprovincename;
      //   this.registerAddresss.shi = response.data.registercityname;
      //   this.residenceAddresss.shi = response.data.residencecityname;
      //   this.residenceAddresss.qu = response.data.residencetownname;
      //   this.registerAddresss.qu = response.data.registertownname;
      // });
    },
    // 终止案例
    handletermination(row) {
      this.reset();
      this.showSaveBtn = false;
      this.showTerminationBtn = true;
      const id = row.id || this.ids;
      getDonatebaseinfo(id).then(response => {
        this.form = response.data;
        this.form.diseasetype = this.form.diseasetype.split(",");
        this.form.infectious = this.form.infectious.split(",");
        this.form.selfwill = this.form.selfwill.split(",");
        this.form.othercases = this.form.othercases.split(",");
        this.form.infosources = this.form.infosources.split(",");
        this.form.kinship = this.form.kinship.split(",");
        this.form.patientstate = this.form.patientstate.split(",");
        this.registerAddresss.sheng = response.data.registerprovincename;
        this.residenceAddresss.sheng = response.data.residenceprovincename;
        this.registerAddresss.shi = response.data.registercityname;
        this.residenceAddresss.shi = response.data.residencecityname;
        this.residenceAddresss.qu = response.data.residencetownname;
        this.registerAddresss.qu = response.data.registertownname;
        this.open = true;
        this.title = "人体器官潜在捐献者登记表";
        this.form.recordstate = 99;
        // this.$nextTick(function() {
        //   this.$refs.annex.getAnnexList();
        // });
        query: { id: row.id, organType: "edit" }
      });
    },
    /** 提交按钮 */
    submitForm() {
      console.log(this.form);
      this.$refs["form"].validate(valid => {
        if (valid) {
          const date = { ...this.form };
          console.log(date, "date");
          this.form.birthday = this.$moment(this.form.birthday).format(
            "YYYY-MM-DD HH:mm:ss"
          );
          this.form.diseasetype = this.form.diseasetype.join(",");
          this.form.infectious = this.form.infectious.join(",");
          this.form.selfwill = this.form.selfwill.join(",");
          this.form.othercases = this.form.othercases.join(",");
          this.form.infosources = this.form.infosources.join(",");
          this.form.kinship = this.form.kinship.join(",");
          this.form.patientstate = this.form.patientstate.join(",");
          this.form.registerprovince = this.$refs.registerSelect.getSheng();
          this.form.registerprovincename = this.registerAddresss.sheng;
          this.form.residenceprovince = this.$refs.residenceSelect.getSheng();
          this.form.residenceprovincename = this.residenceAddresss.sheng;
    async submitForm() {
      const valid = await this.$refs.form.validate();
      if (!valid) return;
          this.form.registercity = this.$refs.registerSelect.getShi();
          this.form.registercityname = this.registerAddresss.shi;
      const formData = { ...this.form };
          this.form.residencecity = this.$refs.residenceSelect.getShi();
          this.form.residencecityname = this.residenceAddresss.shi;
          this.form.residencetown = this.$refs.residenceSelect.getQu();
          this.form.residencetownname = this.residenceAddresss.qu;
          this.form.registertown = this.$refs.registerSelect.getQu();
          this.form.registertownname = this.registerAddresss.qu;
          this.form.reportername = this.$refs.getReportname.$data.selectedLabel;
          this.form.donatetime = this.form.reporttime;
      // 处理表单数据
      const processedData = this.processFormData(formData);
          try {
            this.form.treatmenthospitalname = this.$refs.addOrgSelect.getOptionByValue(
              this.form.treatmenthospitalno
            ).organizationname;
          } catch {
            this.form.treatmenthospitalname = this.form.treatmenthospitalno;
          }
          try {
            this.form.redorganname = this.$refs.addCrossOrgSelect.getOptionByValue(
              this.form.redorganno
            ).organizationname;
          } catch {
            this.form.redorganname = this.form.redorganno;
          }
          this.form.workflow = 0;
          this.form.recordstate = 0;
          addDonatebaseinfo(this.form).then(res => {
            console.log("22");
            console.log(res.code);
            if (res.code == 200) {
        const res = await addDonatebaseinfo(processedData);
        if (res.code === 200) {
              this.$modal.msgSuccess("新增成功");
              this.$router.push({
                path: "/organ/donationdetails/",
                query: {
                  id: res.data.id,
                  organType: "edit"
                }
            query: { id: res.data.id, organType: "edit" }
              });
              this.open = false;
            } else {
              console.log("1");
              this.form = date;
              console.log(this.form, "form");
              this.$modal.msgError("新增失败:" + res.msg);
            }
          });
      } catch (error) {
        this.$modal.msgError("操作失败");
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal
        .confirm('是否确认删除捐献基础编号为"' + ids + '"的数据项?')
        .then(function() {
          return delDonatebaseinfo(ids);
        })
        .then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        })
        .catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      const queryParams = this.queryParams;
      this.$modal
        .confirm("是否确认导出所有捐献基础数据项?")
        .then(() => {
    processFormData(data) {
      const processed = { ...data };
      // 处理数组字段
      const arrayFields = [
        "diseasetype",
        "infectious",
        "selfwill",
        "othercases",
        "infosources",
        "kinship",
        "patientstate"
      ];
      arrayFields.forEach(field => {
        if (Array.isArray(processed[field])) {
          processed[field] = processed[field].join(",");
        }
      });
      // 处理日期字段
      if (processed.birthday) {
        processed.birthday = this.$moment(processed.birthday).format(
          "YYYY-MM-DD HH:mm:ss"
        );
      }
      processed.donatetime = processed.reporttime;
      processed.workflow = 0;
      processed.recordstate = 0;
      return processed;
    },
    async handleExport() {
      try {
        await this.$modal.confirm("是否确认导出所有捐献基础数据项?");
          this.exportLoading = true;
          return exportDonatebaseinfo(queryParams);
        })
        .then(response => {
        const response = await exportDonatebaseinfo(this.queryParams);
          this.$download.name(response.msg);
      } catch (error) {
        if (error !== "cancel") {
          this.$modal.msgError("导出失败");
        }
      } finally {
          this.exportLoading = false;
        })
        .catch(() => {});
    },
    // 对象转成指定字符串分隔
    listToString(list, separator) {
      let strs = "";
      separator = separator || ",";
      for (let i in list) {
        strs += list[i] + separator;
      }
      return strs != "" ? strs.substr(0, strs.length - 1) : "";
    },
    //字符串根据指定字符串分隔
    stringToList(str, separator) {
      separator = separator || ",";
      let tempList = [];
      if (str != null && str != undefined && str != "") {
        tempList = str.split(separator);
      }
      return tempList;
    },
    //下载潜在登记表
    handledownload(row) {
      const id = row.id || this.ids;
      downloadbaseinfo(id).then(res => {
        var fileUrl = res;
        //获取当前网址
        var urlBase = process.env.VUE_APP_BASE_API;
        var curWWWPath = window.document.location.href;
        var pos = curWWWPath.indexOf(window.document.location.pathname);
        // 创建a标签
        var aEle = document.createElement("a");
        aEle.href =
          curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"];
        console.log(aEle.href);
        // 添加Authorization头部
        fetch(aEle.href, {
          headers: this.headers
        })
          .then(response => {
            // 将文件下载链接作为blob对象进行下载
            return response.blob();
          })
          .then(blob => {
            const url = window.URL.createObjectURL(new Blob([blob]));
            console.log(url);
            const link = document.createElement("a");
            link.href = url;
            const name = fileUrl["downloadName"];
            link.setAttribute("download", name); // 替换file.pdf为实际的文件名
            document.body.appendChild(link);
            link.click();
            link.parentNode.removeChild(link);
          });
      });
    }
  }
};