| | |
| | | <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> |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | localVisible: this.visible, |
| | | isEdit: false, |
| | | submitLoading: false, |
| | | residenceAddress: {}, |
| | |
| | | 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() { |
| | |
| | | }, |
| | | |
| | | 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 = [ |
| | |
| | | }); |
| | | |
| | | this.formData = { ...this.getDefaultFormData(), ...data }; |
| | | console.log('合并后的formData:', this.formData); |
| | | |
| | | // 设置地址信息 |
| | | if (data.residenceprovince) { |
| | |
| | | |
| | | this.calculateAge(data.birthday); |
| | | } catch (error) { |
| | | console.error("获取案例数据失败:", error); |
| | | this.$message.error("获取案例数据失败"); |
| | | this.handleClose(); |
| | | } |
| | | }, |
| | | |
| | | handleIdCardBlur() { |
| | | // 身份证自动填充逻辑 |
| | | this.updateMessage(); |
| | | }, |
| | | |
| | |
| | | }, |
| | | |
| | | handleClose() { |
| | | this.localVisible = false; |
| | | console.log('关闭弹框'); |
| | | this.isEdit = false; |
| | | this.submitLoading = false; |
| | | this.formData = this.getDefaultFormData(); |
| | |
| | | this.submitLoading = true; |
| | | try { |
| | | const submitData = this.processSubmitData(); |
| | | console.log('提交数据:', submitData); |
| | | |
| | | const result = await updateDonatebaseinfo(submitData); |
| | | if (result.code === 200) { |
| | |
| | | this.$message.error(result.msg || "操作失败"); |
| | | } |
| | | } catch (error) { |
| | | console.error("操作失败:", error); |
| | | this.$message.error("操作失败"); |
| | | } finally { |
| | | this.submitLoading = false; |