WXL
2026-03-11 67ff7fff12b672fb4214488ea606728ba118cf2d
src/views/project/donatebaseinfo/EditCaseModal.vue
@@ -1,464 +1,484 @@
<template>
  <el-dialog
    :title="title"
    :visible.sync="localVisible"
    width="1200px"
    :close-on-click-modal="false"
    @close="handleClose"
  >
    <el-form
      ref="formRef"
      :model="formData"
      :rules="rules"
      label-width="130px"
      label-position="right"
  <div>
    <el-dialog
      :title="title"
      :visible.sync="dialogVisible"
      width="1200px"
      :close-on-click-modal="false"
      @close="handleClose"
    >
      <!-- 基础信息部分 -->
      <el-card header="基础信息" class="form-section">
        <el-row :gutter="20">
          <el-col :span="11">
            <el-form-item label="案例编号" prop="caseNo">
              <el-input
                v-model="formData.caseNo"
                :disabled="isEdit"
                placeholder="系统自动生成"
              />
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item label="捐献者编号" prop="donorno">
              <el-input
                v-model="formData.donorno"
                placeholder="请输入捐献者编号"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="姓名" prop="name">
              <el-input v-model="formData.name" placeholder="必填项" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="性别" prop="sex">
              <el-select v-model="formData.sex" placeholder="请选择性别">
                <el-option label="未知" value="0" />
                <el-option label="男" value="1" />
                <el-option label="女" value="2" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="证件类型" prop="idcardtype">
              <el-select
                v-model="formData.idcardtype"
                placeholder="请选择证件类型"
              >
                <el-option label="身份证" value="1" />
                <el-option label="军人证" value="2" />
                <el-option label="护照" value="3" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="证件号码" prop="idcardno">
              <el-input
                v-model="formData.idcardno"
                placeholder="请输入证件号码"
                @blur="handleIdCardBlur"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="出生日期" prop="birthday">
              <el-date-picker
                v-model="formData.birthday"
                type="date"
                placeholder="选择出生日期"
                value-format="yyyy-MM-dd"
                style="width: 100%"
                @change="calculateAge"
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="年龄" prop="andAge">
              <el-input v-model="formData.andAge" disabled />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="民族" prop="nation">
              <el-select v-model="formData.nation" placeholder="请选择民族">
                <el-option
                  v-for="dict in dictOptions.sys_nation"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
      <el-form
        ref="formRef"
        :model="formData"
        :rules="rules"
        label-width="130px"
        label-position="right"
      >
        <!-- 基础信息部分 -->
        <el-card header="基础信息" class="form-section">
          <el-row :gutter="20">
            <el-col :span="11">
              <el-form-item label="案例编号" prop="caseNo">
                <el-input
                  v-model="formData.caseNo"
                  :disabled="isEdit"
                  placeholder="系统自动生成"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="国籍" prop="nationality">
              <el-input
                v-model="formData.nationality"
                placeholder="请输入国籍"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="6">
            <el-form-item label="联系电话" prop="phone">
              <el-input v-model="formData.phone" placeholder="请输入联系电话" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="学历" prop="education">
              <el-select v-model="formData.education" placeholder="请选择学历">
                <el-option
                  v-for="dict in dictOptions.sys_education"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
              </el-form-item>
            </el-col>
            <el-col :span="11">
              <el-form-item label="捐献者编号" prop="donorno">
                <el-input
                  v-model="formData.donorno"
                  placeholder="请输入捐献者编号"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="职业" prop="occupation">
              <el-select v-model="formData.occupation" placeholder="请选择职业">
                <el-option
                  v-for="dict in dictOptions.sys_occupation"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="籍贯" prop="nativeplace">
              <el-input
                v-model="formData.nativeplace"
                placeholder="请输入籍贯"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-card>
              </el-form-item>
            </el-col>
          </el-row>
      <!-- 医疗信息部分 -->
      <el-card header="医疗信息" class="form-section">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="首诊医院" prop="treatmenthospitalno">
              <org-selecter
                :org-type="'3'"
                v-model="formData.treatmenthospitalno"
                @change="handleHospitalChange"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="科室" prop="treatmentdeptname">
              <el-input
                v-model="formData.treatmentdeptname"
                placeholder="请输入科室"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="住院号" prop="inpatientno">
              <el-input
                v-model="formData.inpatientno"
                placeholder="请输入住院号"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="疾病诊断" prop="diagnosisname">
              <el-input
                v-model="formData.diagnosisname"
                placeholder="请输入疾病诊断名称"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="血型" prop="bloodtype">
              <el-radio-group v-model="formData.bloodtype">
                <el-radio label="1">A型</el-radio>
                <el-radio label="2">B型</el-radio>
                <el-radio label="3">O型</el-radio>
                <el-radio label="4">AB型</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="Rh(D)" 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-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="姓名" prop="name">
                <el-input v-model="formData.name" placeholder="必填项" />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="性别" prop="sex">
                <el-select v-model="formData.sex" placeholder="请选择性别">
                  <el-option label="未知" value="0" />
                  <el-option label="男" value="1" />
                  <el-option label="女" value="2" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="证件类型" prop="idcardtype">
                <el-select
                  v-model="formData.idcardtype"
                  placeholder="请选择证件类型"
                >
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="当前医疗机构" prop="currentMedicalInstitution">
              <el-input
                v-model="formData.currentMedicalInstitution"
                placeholder="请输入当前医疗机构"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="当前医疗机构科室" prop="currentDept">
              <el-input
                v-model="formData.currentDept"
                placeholder="请输入当前医疗机构科室"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="首次医疗机构" prop="firstMedicalInstitution">
              <el-input
                v-model="formData.firstMedicalInstitution"
                placeholder="请输入首次医疗机构"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="首次医疗机构科室" prop="firstDept">
              <el-input
                v-model="formData.firstDept"
                placeholder="请输入首次医疗机构科室"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="GSC评分" prop="gcsScore">
              <el-input
                v-model="formData.gcsScore"
                placeholder="请输入GSC评分"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="协调员编号" prop="coordinatorNo">
              <el-input
                v-model="formData.coordinatorNo"
                placeholder="请输入协调员编号"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="协调员姓名" prop="coordinatorName">
              <el-input
                v-model="formData.coordinatorName"
                placeholder="请输入协调员姓名"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="病情概况" prop="illnessoverview">
              <el-input
                v-model="formData.illnessoverview"
                type="textarea"
                :rows="3"
                placeholder="请输入病情概况"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-card>
      <!-- 地址信息部分 -->
      <el-card header="地址信息" class="form-section">
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="现住地址" prop="residenceaddress">
              <li-area-select
                ref="residenceSelect"
                v-model="residenceAddress"
                @change="handleResidenceAddressChange"
              />
              <el-input
                v-model="formData.residenceaddress"
                placeholder="请输入详细地址"
                style="margin-top: 8px"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="户籍地址" prop="registeraddress">
              <li-area-select
                ref="registerSelect"
                v-model="registerAddress"
                @change="handleRegisterAddressChange"
              />
              <el-input
                v-model="formData.registeraddress"
                placeholder="请输入详细地址"
                style="margin-top: 8px"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-card>
      <!-- 捐献信息部分 -->
      <el-card header="捐献信息" class="form-section">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="捐献类别" prop="donationcategory">
              <el-select
                v-model="formData.donationcategory"
                placeholder="请选择捐献类别"
              >
                <el-option
                  v-for="dict in dictOptions.sys_DonationCategory"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                  <el-option label="身份证" :value="1" />
                  <el-option label="军人证" :value="2" />
                  <el-option label="护照" :value="3" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="证件号码" prop="idcardno">
                <el-input
                  v-model="formData.idcardno"
                  placeholder="请输入证件号码"
                  @blur="handleIdCardBlur"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="案例时间" prop="donatetime">
              <el-date-picker
                v-model="formData.donatetime"
                type="datetime"
                placeholder="选择案例时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="记录状态" prop="recordstate">
              <el-select v-model="formData.recordstate" :disabled="isEdit">
                <el-option label="新建" value="0" />
                <el-option label="已上报" value="1" />
                <el-option label="审核中" value="2" />
                <el-option label="已完成" value="3" />
                <el-option label="已终止" value="99" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
              </el-form-item>
            </el-col>
          </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="获取组织编号" prop="acquisitiontissueno">
              <el-input
                v-model="formData.acquisitiontissueno"
                placeholder="请输入获取组织编号"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="获取组织名称" prop="acquisitiontissuename">
              <el-input
                v-model="formData.acquisitiontissuename"
                placeholder="请输入获取组织名称"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-card>
      <!-- 报告信息部分 -->
      <el-card header="报告信息" class="form-section">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="报告人编号" prop="reporterno">
              <el-select
                v-model="formData.reporterno"
                @change="handleReporterChange"
              >
                <el-option
                  v-for="reporter in reporters"
                  :key="reporter.reportNo"
                  :label="reporter.reportName"
                  :value="reporter.reportNo"
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="出生日期" prop="birthday">
                <el-date-picker
                  v-model="formData.birthday"
                  type="date"
                  placeholder="选择出生日期"
                  value-format="yyyy-MM-dd"
                  style="width: 100%"
                  @change="calculateAge"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="报告人姓名" prop="reportername">
              <el-input
                v-model="formData.reportername"
                placeholder="报告人姓名"
                :disabled="true"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="报告人电话" prop="reporterphone">
              <el-input
                v-model="formData.reporterphone"
                placeholder="报告人联系电话"
              />
            </el-form-item>
          </el-col>
        </el-row>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="年龄" prop="andAge">
                <el-input v-model="formData.andAge" disabled />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="民族" prop="nation">
                <el-select v-model="formData.nation" placeholder="请选择民族">
                  <el-option
                    v-for="dict in dictOptions.sys_nation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="国籍" prop="nationality">
                <el-input
                  v-model="formData.nationality"
                  placeholder="请输入国籍"
                />
              </el-form-item>
            </el-col>
          </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="报告时间" prop="reporttime">
              <el-date-picker
                v-model="formData.reporttime"
                type="datetime"
                placeholder="选择报告时间"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="部门ID" prop="deptid">
              <el-input v-model="formData.deptid" placeholder="请输入部门ID" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-card>
    </el-form>
          <el-row :gutter="20">
            <el-col :span="6">
              <el-form-item label="联系电话" prop="phone">
                <el-input
                  v-model="formData.phone"
                  placeholder="请输入联系电话"
                />
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="学历" prop="education">
                <el-select
                  v-model="formData.education"
                  placeholder="请选择学历"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_education"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="职业" prop="occupation">
                <el-select
                  v-model="formData.occupation"
                  placeholder="请选择职业"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_occupation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="籍贯" prop="nativeplace">
                <el-input
                  v-model="formData.nativeplace"
                  placeholder="请输入籍贯"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
    <div slot="footer" class="dialog-footer">
      <el-button @click="handleClose">取消</el-button>
      <el-button type="primary" @click="handleSubmit" :loading="submitLoading">
        {{ isEdit ? "更新" : "保存" }}
      </el-button>
    </div>
  </el-dialog>
        <!-- 医疗信息部分 -->
        <el-card header="医疗信息" class="form-section">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="首诊医院" prop="treatmenthospitalno">
                <org-selecter
                  :org-type="'3'"
                  v-model="formData.treatmenthospitalno"
                  @change="handleHospitalChange"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="科室" prop="treatmentdeptname">
                <el-input
                  v-model="formData.treatmentdeptname"
                  placeholder="请输入科室"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="住院号" prop="inpatientno">
                <el-input
                  v-model="formData.inpatientno"
                  placeholder="请输入住院号"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="疾病诊断" prop="diagnosisname">
                <el-input
                  v-model="formData.diagnosisname"
                  placeholder="请输入疾病诊断名称"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="血型" prop="bloodtype">
                <el-radio-group v-model="formData.bloodtype">
                  <el-radio label="1">A型</el-radio>
                  <el-radio label="2">B型</el-radio>
                  <el-radio label="3">O型</el-radio>
                  <el-radio label="4">AB型</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="Rh(D)" prop="rhyin">
                <el-radio-group v-model="formData.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 :gutter="20">
            <el-col :span="12">
              <el-form-item
                label="当前医疗机构"
                prop="currentMedicalInstitution"
              >
                <el-input
                  v-model="formData.currentMedicalInstitution"
                  placeholder="请输入当前医疗机构"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="当前医疗机构科室" prop="currentDept">
                <el-input
                  v-model="formData.currentDept"
                  placeholder="请输入当前医疗机构科室"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="首次医疗机构" prop="firstMedicalInstitution">
                <el-input
                  v-model="formData.firstMedicalInstitution"
                  placeholder="请输入首次医疗机构"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="首次医疗机构科室" prop="firstDept">
                <el-input
                  v-model="formData.firstDept"
                  placeholder="请输入首次医疗机构科室"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="GSC评分" prop="gcsScore">
                <el-input
                  v-model="formData.gcsScore"
                  placeholder="请输入GSC评分"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="协调员编号" prop="coordinatorNo">
                <el-input
                  v-model="formData.coordinatorNo"
                  placeholder="请输入协调员编号"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="协调员姓名" prop="coordinatorName">
                <el-input
                  v-model="formData.coordinatorName"
                  placeholder="请输入协调员姓名"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="病情概况" prop="illnessoverview">
                <el-input
                  v-model="formData.illnessoverview"
                  type="textarea"
                  :rows="3"
                  placeholder="请输入病情概况"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
        <!-- 地址信息部分 -->
        <el-card header="地址信息" class="form-section">
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="现住地址" prop="residenceaddress">
                <li-area-select
                  ref="residenceSelect"
                  v-model="residenceAddress"
                  @change="handleResidenceAddressChange"
                />
                <el-input
                  v-model="formData.residenceaddress"
                  placeholder="请输入详细地址"
                  style="margin-top: 8px"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="户籍地址" prop="registeraddress">
                <li-area-select
                  ref="registerSelect"
                  v-model="registerAddress"
                  @change="handleRegisterAddressChange"
                />
                <el-input
                  v-model="formData.registeraddress"
                  placeholder="请输入详细地址"
                  style="margin-top: 8px"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
        <!-- 捐献信息部分 -->
        <el-card header="捐献信息" class="form-section">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="捐献类别" prop="donationcategory">
                <el-select
                  v-model="formData.donationcategory"
                  placeholder="请选择捐献类别"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_DonationCategory"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="案例时间" prop="donatetime">
                <el-date-picker
                  v-model="formData.donatetime"
                  type="datetime"
                  placeholder="选择案例时间"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  style="width: 100%"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="记录状态" prop="recordstate">
                <el-select v-model="formData.recordstate" :disabled="isEdit">
                  <el-option label="新建" value="0" />
                  <el-option label="已上报" value="1" />
                  <el-option label="审核中" value="2" />
                  <el-option label="已完成" value="3" />
                  <el-option label="已终止" value="99" />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="获取组织编号" prop="acquisitiontissueno">
                <el-input
                  v-model="formData.acquisitiontissueno"
                  placeholder="请输入获取组织编号"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="获取组织名称" prop="acquisitiontissuename">
                <el-input
                  v-model="formData.acquisitiontissuename"
                  placeholder="请输入获取组织名称"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
        <!-- 报告信息部分 -->
        <el-card header="报告信息" class="form-section">
          <el-row :gutter="20">
            <el-col :span="8">
              <el-form-item label="报告人编号" prop="reporterno">
                <el-select
                  v-model="formData.reporterno"
                  @change="handleReporterChange"
                >
                  <el-option
                    v-for="reporter in reporters"
                    :key="reporter.reportNo"
                    :label="reporter.reportName"
                    :value="reporter.reportNo"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="报告人姓名" prop="reportername">
                <el-input
                  v-model="formData.reportername"
                  placeholder="报告人姓名"
                  :disabled="true"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="报告人电话" prop="reporterphone">
                <el-input
                  v-model="formData.reporterphone"
                  placeholder="报告人联系电话"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="报告时间" prop="reporttime">
                <el-date-picker
                  v-model="formData.reporttime"
                  type="datetime"
                  placeholder="选择报告时间"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  style="width: 100%"
                />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="部门ID" prop="deptid">
                <el-input
                  v-model="formData.deptid"
                  placeholder="请输入部门ID"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="handleClose">取消</el-button>
        <el-button
          type="primary"
          @click="handleSubmit"
          :loading="submitLoading"
        >
          {{ isEdit ? "更新" : "保存" }}
        </el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
@@ -498,7 +518,6 @@
  },
  data() {
    return {
      localVisible: this.visible,
      isEdit: false,
      submitLoading: false,
      residenceAddress: {},
@@ -539,31 +558,49 @@
  computed: {
    title() {
      return this.isEdit ? "编辑案例信息" : "新增捐献案例";
    },
    dialogVisible: {
      get() {
        return this.visible;
      },
      set(value) {
        this.$emit('update:visible', value);
        if (!value) {
          this.handleClose();
        }
      }
    }
  },
  watch: {
    visible(newVal) {
      this.localVisible = newVal;
      console.log("visible变化:", newVal);
      if (newVal) {
        this.initForm();
        this.$nextTick(() => {
          this.initForm();
        });
      } else {
        this.handleClose();
      }
    },
    localVisible(newVal) {
      this.$emit("update:visible", newVal);
    },
    editData: {
      handler(newVal) {
        if (newVal && newVal.id) {
          this.isEdit = true;
          this.$nextTick(() => {
            // 确保 DOM 已经更新后再进行表单操作
            this.initForm(newVal);
          });
        }
      },
      immediate: true,
      deep: true,
      immediate: true
      handler(newVal) {
        console.log("editData变化:", newVal);
        this.isEdit = !!(newVal && newVal.id);
      }
    }
  },
  created() {
    console.log('EditCaseModal created');
    console.log('visible:', this.visible);
    console.log('editData:', this.editData);
  },
  mounted() {
    console.log('EditCaseModal mounted');
    console.log('visible:', this.visible);
    console.log('editData:', this.editData);
    console.log('isEdit:', this.isEdit);
  },
  methods: {
    getDefaultFormData() {
@@ -640,29 +677,38 @@
    },
    async initForm() {
      console.log(this.isEdit);
      if (this.isEdit) {
        await this.loadEditData();
      } else {
        this.formData = this.getDefaultFormData();
        // 设置默认值
        this.formData.nationality = "中国";
        this.formData.bloodtype = "0";
        this.formData.rhyin = "0";
        this.formData.recordstate = "0";
        this.formData.acquisitiontissueno = "ZJOPO";
        this.formData.acquisitiontissuename = "浙江省人体器官获取组织";
      console.log('初始化表单,isEdit:', this.isEdit);
      try {
        if (this.isEdit && this.editData && this.editData.id) {
          console.log('加载编辑数据,id:', this.editData.id);
          await this.loadEditData();
        } else {
          console.log('新增模式,初始化表单');
          this.formData = this.getDefaultFormData();
          this.formData.nationality = "中国";
          this.formData.bloodtype = "0";
          this.formData.rhyin = "0";
          this.formData.recordstate = "0";
          this.formData.acquisitiontissueno = "ZJOPO";
          this.formData.acquisitiontissuename = "浙江省人体器官获取组织";
        }
      } catch (error) {
        console.error("初始化表单失败:", error);
        this.$message.error("初始化表单失败");
      } finally {
        this.$nextTick(() => {
          if (this.$refs.formRef) {
            this.$refs.formRef.clearValidate();
          }
        });
      }
      this.$nextTick(() => {
        this.$refs.formRef?.clearValidate();
      });
    },
    async loadEditData() {
      try {
        const response = await getDonatebaseinfo(this.editData.id);
        const data = response.data;
        console.log('加载到的数据:', data);
        // 处理数组字段
        const arrayFields = [
@@ -683,6 +729,7 @@
        });
        this.formData = { ...this.getDefaultFormData(), ...data };
        console.log('合并后的formData:', this.formData);
        // 设置地址信息
        if (data.residenceprovince) {
@@ -703,13 +750,13 @@
        this.calculateAge(data.birthday);
      } catch (error) {
        console.error("获取案例数据失败:", error);
        this.$message.error("获取案例数据失败");
        this.handleClose();
      }
    },
    handleIdCardBlur() {
      // 身份证自动填充逻辑
      this.updateMessage();
    },
@@ -817,7 +864,7 @@
    },
    handleClose() {
      this.localVisible = false;
      console.log('关闭弹框');
      this.isEdit = false;
      this.submitLoading = false;
      this.formData = this.getDefaultFormData();
@@ -833,6 +880,7 @@
      this.submitLoading = true;
      try {
        const submitData = this.processSubmitData();
        console.log('提交数据:', submitData);
        const result = await updateDonatebaseinfo(submitData);
        if (result.code === 200) {
@@ -843,6 +891,7 @@
          this.$message.error(result.msg || "操作失败");
        }
      } catch (error) {
        console.error("操作失败:", error);
        this.$message.error("操作失败");
      } finally {
        this.submitLoading = false;