| | |
| | | <!-- 基础信息部分 --> |
| | | <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-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-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-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="当前医疗机构" |
| | |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="首次医疗机构" prop="firstMedicalInstitution"> |
| | | <el-form-item label="首诊医疗机构" prop="firstMedicalInstitution"> |
| | | <el-input |
| | | v-model="formData.firstMedicalInstitution" |
| | | placeholder="请输入首次医疗机构" |
| | | placeholder="请输入首诊医疗机构" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="首次医疗机构科室" prop="firstDept"> |
| | | <el-form-item label="首诊医疗机构科室" prop="firstDept"> |
| | | <el-input |
| | | v-model="formData.firstDept" |
| | | placeholder="请输入首次医疗机构科室" |
| | | 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"> |
| | | <el-form-item label="捐献编号" prop="caseNo"> |
| | | <el-input |
| | | v-model="formData.caseNo" |
| | | placeholder="请输入捐献编号" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="上报医院" prop="treatmenthospitalname"> |
| | | <el-input |
| | | v-model="formData.treatmenthospitalname" |
| | | 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="8"> |
| | | <el-form-item label="姓名" prop="name"> |
| | | <el-input v-model="formData.name" placeholder="必填项" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="性别" prop="sex"> |
| | | <el-select v-model="formData.sex" placeholder="请选择性别"> |
| | | <el-option label="男" value="1" /> |
| | | <el-option label="女" value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <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="8"> |
| | | <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="8"> |
| | | <el-form-item label="年龄" prop="andAge"> |
| | | <el-input v-model="formData.andAge" disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="民族" prop="nation"> |
| | | <el-select v-model="formData.nation" placeholder="请选择民族"> |
| | | <el-option |
| | | v-for="dict in dict.type.sys_nation || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="证件类型" prop="idcardtype"> |
| | | <el-select |
| | | v-model="formData.idcardtype" |
| | | placeholder="请选择证件类型" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.sys_IDType || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="parseInt(dict.value)" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <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="education"> |
| | | <el-select |
| | | v-model="formData.education" |
| | | placeholder="请选择学历" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.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 dict.type.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-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="现居住地" prop="residenceaddress"> |
| | | <li-area-select |
| | | ref="residenceSelect" |
| | | v-model="residenceAddress" |
| | |
| | | v-model="formData.residenceaddress" |
| | | placeholder="请输入详细地址" |
| | | style="margin-top: 8px" |
| | | @blur="handleResidenceDetailBlur" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="户籍地址" prop="registeraddress"> |
| | | <el-form-item label="住址" prop="registeraddress"> |
| | | <li-area-select |
| | | ref="registerSelect" |
| | | v-model="registerAddress" |
| | |
| | | </el-row> |
| | | </el-card> |
| | | |
| | | <!-- 捐献信息部分 --> |
| | | <el-card header="捐献信息" class="form-section"> |
| | | <!-- 医疗信息部分 --> |
| | | <el-card header="医疗信息" class="form-section"> |
| | | <el-row :gutter="20"> |
| | | <!-- <el-col :span="8"> |
| | | <el-form-item label="入院时间" prop="Reporttothehospital"> |
| | | <el-date-picker |
| | | v-model="formData.entryTime" |
| | | 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="donationcategory"> |
| | | <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="bloodtype"> |
| | | <el-radio-group v-model="formData.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"> |
| | | <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="diagnosisname"> |
| | | <el-input |
| | | v-model="formData.diagnosisname" |
| | | placeholder="请输入疾病诊断名称" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 疾病类型 --> |
| | | <el-row> |
| | | <el-col :span="16"> |
| | | <el-form-item label="疾病类型" align="left"> |
| | | <el-checkbox-group v-model="formData.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-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="其他" prop="diseasetypeOther"> |
| | | <el-input |
| | | v-model="formData.diseasetypeOther" |
| | | placeholder="请输入其他" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 传染病 --> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item align="left" label="传染病"> |
| | | <el-checkbox-group v-model="formData.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="formData.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="formData.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="formData.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> |
| | | |
| | | <!-- <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="GCS评分" prop="gcsScore"> |
| | | <el-input |
| | | v-model="formData.gcsScore" |
| | | placeholder="请输入GCS评分" |
| | | /> |
| | | </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> |
| | | <el-col :span="24"> |
| | | <el-form-item align="left" label="本人意愿 "> |
| | | <el-checkbox-group v-model="formData.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="kinship" |
| | | class="relation" |
| | | align="left" |
| | | > |
| | | <el-checkbox-group v-model="formData.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="formData.kinshipOther" |
| | | placeholder="请输入其他" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 主要亲属 --> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="主要亲属" prop="majorrelatives"> |
| | | <el-input |
| | | v-model="formData.majorrelatives" |
| | | placeholder="请输入主要亲属" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="与潜在捐献者关系" prop="familyrelations"> |
| | | <el-select |
| | | v-model="formData.donationcategory" |
| | | placeholder="请选择捐献类别" |
| | | v-model="formData.familyrelations" |
| | | placeholder="请选择与捐献者关系" |
| | | > |
| | | <el-option |
| | | v-for="dict in dictOptions.sys_DonationCategory" |
| | | v-for="dict in dict.type.sys_FamilyRelation || []" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 信息来源 --> |
| | | </el-card> |
| | | <!-- 地址信息部分 --> |
| | | <!-- <el-card header="地址信息" class="form-section"> |
| | | |
| | | </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-row> |
| | | <el-col :span="12"> |
| | | <el-form-item align="left" label="信息来源"> |
| | | <el-checkbox-group v-model="formData.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="formData.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="formData.infoName" |
| | | placeholder="请输入信息员" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="联系电话" prop="infophone"> |
| | | <el-input |
| | | v-model="formData.infophone" |
| | | placeholder="请输入信息员联系电话" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="案例时间" prop="donatetime"> |
| | | <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="date" |
| | | placeholder="选择报告时间" |
| | | value-format="yyyy-MM-dd " |
| | | 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-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 dict.type.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" |
| | |
| | | </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="formData.redorganno" |
| | | /> --> |
| | | <el-select |
| | | v-model="formData.redorganname" |
| | | placeholder="请选择红十字会机构名称" |
| | | > |
| | | <el-option |
| | | v-for="dict in dict.type.sys_redcrossagency" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="联系人" prop="contactperson"> |
| | | <el-input |
| | | v-model="formData.contactperson" |
| | | placeholder="请输入联系人" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="联系时间" prop="contacttime"> |
| | | <el-date-picker |
| | | v-model="formData.contacttime" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择报告时间" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <!-- <el-col :span="12"> |
| | | <el-form-item label="获取组织编号" prop="acquisitiontissueno"> |
| | | <el-input |
| | | v-model="formData.acquisitiontissueno" |
| | | placeholder="请输入获取组织编号" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col> --> |
| | | <el-col :span="12"> |
| | | <el-form-item label="获取组织名称" prop="acquisitiontissuename"> |
| | | <el-input |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </el-card> |
| | | <!-- 上报阶段附件 --> |
| | | <el-card v-if="reportAttachments && reportAttachments.length > 0" class="form-section" shadow="never"> |
| | | <div slot="header" class="section-header"> |
| | | <i class="el-icon-paperclip" style="color: #409EFF; margin-right: 8px;"></i> |
| | | <span>上报阶段附件</span> |
| | | </div> |
| | | <div class="attachment-list"> |
| | | <el-tabs v-model="reportActiveTab" type="border-card"> |
| | | <el-tab-pane |
| | | v-for="category in reportCategories" |
| | | :key="category" |
| | | :label="category + '(' + getReportCategoryCount(category) + ')'" |
| | | :name="category" |
| | | > |
| | | <el-table :data="getReportCategoryFiles(category)" style="width: 100%" size="small" border> |
| | | <el-table-column label="文件名" min-width="200"> |
| | | <template #default="scope"> |
| | | <i class="el-icon-document" style="margin-right: 8px; color: #409EFF;"></i> |
| | | <span class="file-name">{{ scope.row.fileName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="文件类型" width="100"> |
| | | <template #default="scope"> |
| | | <el-tag size="small">{{ getFileType(scope.row.fileName) }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="创建时间" width="160"> |
| | | <template #default="scope"> |
| | | <span>{{ formatDateTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="120"> |
| | | <template #default="scope"> |
| | | <el-button size="mini" type="primary" @click="handleReportPreview(scope.row)">预览</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </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-card v-else-if="reportAttachmentLoading" class="form-section" shadow="never"> |
| | | <div slot="header" class="section-header"> |
| | | <i class="el-icon-paperclip" style="color: #409EFF; margin-right: 8px;"></i> |
| | | <span>上报阶段附件</span> |
| | | </div> |
| | | <div style="text-align:center; padding:20px;">加载附件中...</div> |
| | | </el-card> |
| | | |
| | | <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> |
| | | <!-- 有 reportId 但无附件 --> |
| | | <el-card v-else-if="editData.reportId" class="form-section" shadow="never"> |
| | | <div slot="header" class="section-header"> |
| | | <i class="el-icon-paperclip" style="color: #409EFF; margin-right: 8px;"></i> |
| | | <span>上报阶段附件</span> |
| | | </div> |
| | | <div style="text-align:center; padding:20px; color:#909399;">暂无上报附件</div> |
| | | </el-card> |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | |
| | | updateDonatebaseinfo |
| | | } from "@/api/project/donatebaseinfo"; |
| | | import OrgSelecter from "@/views/project/components/orgselect"; |
| | | import { donateInfo } from "@/api/businessApi/index"; |
| | | import LiAreaSelect from "@/components/Address"; |
| | | |
| | | export default { |
| | |
| | | LiAreaSelect |
| | | }, |
| | | |
| | | dicts: ["sys_bloodtype_rhd", "sys_BloodType"], |
| | | // 添加所有需要的字典类型 |
| | | dicts: [ |
| | | "sys_redcrossagency", |
| | | "sys_bloodtype_rhd", |
| | | "sys_BloodType", |
| | | "sys_user_sex", |
| | | "sys_IDType", |
| | | "sys_nation", |
| | | "sys_education", |
| | | "sys_occupation", |
| | | "sys_DiseaseType", |
| | | "sys_Infectious", |
| | | "sys_patientstate", |
| | | "sys_OtherCases", |
| | | "sys_SelfWill", |
| | | "sys_Kinship", |
| | | "sys_FamilyRelation", |
| | | "sys_InfoSources", |
| | | "sys_DonationCategory" |
| | | ], |
| | | |
| | | props: { |
| | | visible: { |
| | |
| | | residenceAddress: {}, |
| | | registerAddress: {}, |
| | | formData: this.getDefaultFormData(), |
| | | reportAttachments: [], // 上报阶段的附件列表 |
| | | reportAttachmentLoading: false, // 加载状态 |
| | | reportActiveTab: "登记表附件", // 当前激活的附件分类 Tab |
| | | presetCategories: ["登记表附件", "证件照", "疾病诊断治疗"], // 预设分类 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: "请输入捐献者姓名", trigger: "blur" } |
| | | ], |
| | | caseNo: [ |
| | | { required: true, message: "请输入捐献者编号", trigger: "blur" } |
| | | ], |
| | | sex: [{ required: true, message: "请选择性别", trigger: "change" }], |
| | | idcardtype: [ |
| | |
| | | ], |
| | | reporttime: [ |
| | | { required: true, message: "请选择报告时间", trigger: "change" } |
| | | ], |
| | | residenceaddress: [ |
| | | { required: true, message: "请输入现居住地详细地址", trigger: "blur" } |
| | | ], |
| | | registeraddress: [ |
| | | { required: true, message: "请输入住址详细地址", trigger: "blur" } |
| | | ] |
| | | } |
| | | }; |
| | |
| | | return this.visible; |
| | | }, |
| | | set(value) { |
| | | this.$emit('update:visible', value); |
| | | this.$emit("update:visible", value); |
| | | if (!value) { |
| | | this.handleClose(); |
| | | } |
| | | } |
| | | }, |
| | | reportCategories() { |
| | | if (!this.reportAttachments || this.reportAttachments.length === 0) |
| | | return []; |
| | | const cats = new Set(); |
| | | this.reportAttachments.forEach(item => { |
| | | const type = item.fileType || item.filetype || ""; |
| | | if (this.presetCategories.includes(type)) { |
| | | cats.add(type); |
| | | } else { |
| | | cats.add("未分类"); |
| | | } |
| | | }); |
| | | const order = ["登记表附件", "证件照", "疾病诊断治疗", "未分类"]; |
| | | return order.filter(c => cats.has(c)); |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | this.handleClose(); |
| | | } |
| | | }, |
| | | "editData.reportId": { |
| | | immediate: true, |
| | | handler(newVal) { |
| | | if (newVal) { |
| | | this.loadReportAttachments(newVal); |
| | | } else { |
| | | this.reportAttachments = []; |
| | | } |
| | | } |
| | | }, |
| | | editData: { |
| | | immediate: true, |
| | | deep: true, |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | console.log('EditCaseModal created'); |
| | | console.log('visible:', this.visible); |
| | | console.log('editData:', this.editData); |
| | | 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); |
| | | console.log("EditCaseModal mounted"); |
| | | console.log("visible:", this.visible); |
| | | console.log("editData:", this.editData); |
| | | console.log("isEdit:", this.isEdit); |
| | | }, |
| | | methods: { |
| | | getDefaultFormData() { |
| | |
| | | illnessoverview: null, |
| | | coordinatorNo: null, |
| | | coordinatorName: null, |
| | | diseasetype: [], |
| | | infectious: [], |
| | | patientstate: [], |
| | | othercases: [], |
| | | |
| | | // 地址信息 |
| | | residenceaddress: null, |
| | | residenceprovince: null, |
| | | residencecity: null, |
| | | residencetown: null, |
| | | registeraddress: null, |
| | | registerprovince: null, |
| | | registercity: null, |
| | | registertown: null, |
| | | |
| | | // 意愿和亲属信息 |
| | | selfwill: [], |
| | | kinship: [], |
| | | majorrelatives: null, |
| | | familyrelations: null, |
| | | infosources: [], |
| | | infoName: null, |
| | | infophone: null, |
| | | redorganno: null, |
| | | contactperson: null, |
| | | contacttime: null, |
| | | |
| | | // 捐献信息 |
| | | donationcategory: null, |
| | | donatetime: null, |
| | | recordstate: "0", |
| | | acquisitiontissueno: "ZJOPO", |
| | | acquisitiontissuename: "浙江省人体器官获取组织", |
| | | acquisitiontissuename: "青岛大学附属医院", |
| | | |
| | | // 报告信息 |
| | | reporterno: null, |
| | |
| | | reporttime: null, |
| | | deptid: null, |
| | | |
| | | // 数组字段 |
| | | diseasetype: [], |
| | | infectious: [], |
| | | selfwill: [], |
| | | othercases: [], |
| | | infosources: [], |
| | | kinship: [], |
| | | patientstate: [] |
| | | // 其他字段 |
| | | diseasetypeOther: null, |
| | | infectiousOther: null, |
| | | kinshipOther: null, |
| | | infosourcesOther: null |
| | | }; |
| | | }, |
| | | |
| | | async initForm() { |
| | | console.log('初始化表单,isEdit:', this.isEdit); |
| | | console.log("初始化表单,isEdit:", this.isEdit); |
| | | try { |
| | | if (this.isEdit && this.editData && this.editData.id) { |
| | | console.log('加载编辑数据,id:', this.editData.id); |
| | | console.log("加载编辑数据,id:", this.editData.id); |
| | | await this.loadEditData(); |
| | | } else { |
| | | console.log('新增模式,初始化表单'); |
| | | 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 = "浙江省人体器官获取组织"; |
| | | this.formData.acquisitiontissuename = "青岛大学附属医院"; |
| | | |
| | | // 设置信息员和电话默认值 |
| | | this.formData.infoName = "孙文月"; |
| | | this.formData.infophone = "18661808259"; |
| | | } |
| | | } catch (error) { |
| | | console.error("初始化表单失败:", error); |
| | |
| | | async loadEditData() { |
| | | try { |
| | | const response = await getDonatebaseinfo(this.editData.id); |
| | | response.data.firstMedicalInstitution = |
| | | response.data.treatmenthospitalname; |
| | | const data = response.data; |
| | | console.log('加载到的数据:', data); |
| | | console.log("加载到的数据:", data); |
| | | |
| | | // 处理数组字段 |
| | | const arrayFields = [ |
| | |
| | | "patientstate" |
| | | ]; |
| | | arrayFields.forEach(field => { |
| | | if (data[field]) { |
| | | if (data[field] && typeof data[field] === "string") { |
| | | data[field] = data[field].split(","); |
| | | } else { |
| | | } else if (!data[field]) { |
| | | data[field] = []; |
| | | } |
| | | }); |
| | | |
| | | this.formData = { ...this.getDefaultFormData(), ...data }; |
| | | console.log('合并后的formData:', this.formData); |
| | | console.log("合并后的formData:", this.formData); |
| | | this.formData.infoName = "孙文月"; |
| | | this.formData.infophone = "18661808259"; |
| | | if (!this.formData.currentMedicalInstitution) |
| | | this.formData.currentMedicalInstitution = "青岛大学附属医院"; |
| | | |
| | | // 设置地址信息 |
| | | if (data.residenceprovince) { |
| | | if (!this.formDatacurrentDept) this.formData.currentDept = "器官捐献科"; |
| | | // 根据返回数据设置地址展示信息 |
| | | if (data.residenceprovincename) { |
| | | this.residenceAddress = { |
| | | sheng: data.residenceprovincename, |
| | | shi: data.residencecityname, |
| | | qu: data.residencetownname |
| | | shi: data.residencecountyname, |
| | | qu: data.residencecommunityname |
| | | }; |
| | | } |
| | | |
| | | // 户籍地址 |
| | | if (data.registerprovince) { |
| | | this.registerAddress = { |
| | | sheng: data.registerprovincename, |
| | | sheng: data.registerprovince, |
| | | shi: data.registercityname, |
| | | qu: data.registertownname |
| | | qu: data.registercommunityname |
| | | }; |
| | | } |
| | | console.log(this.registerAddress, "registerAddress12"); |
| | | |
| | | this.calculateAge(data.birthday); |
| | | } catch (error) { |
| | |
| | | }, |
| | | |
| | | handleResidenceAddressChange(address) { |
| | | this.formData.residenceprovince = address.sheng; |
| | | this.formData.residencecity = address.shi; |
| | | this.formData.residencetown = address.qu; |
| | | }, |
| | | this.formData.residenceprovincename = address.sheng; |
| | | this.formData.residencecountyname = address.shi; |
| | | this.formData.residencecommunityname = address.qu; |
| | | |
| | | // 每次现住址省市区变化时,如果户籍地址的省市区完全为空,则自动填充 |
| | | const registerProvinceEmpty = !this.formData.registerprovince; |
| | | const registerCityEmpty = !this.formData.registercityname; |
| | | const registerTownEmpty = !this.formData.registercommunityname; |
| | | |
| | | if (registerProvinceEmpty || registerCityEmpty || registerTownEmpty) { |
| | | this.formData.registerprovince = address.sheng; |
| | | this.formData.registercityname = address.shi; |
| | | this.formData.registercommunityname = address.qu; |
| | | this.registerAddress = { |
| | | sheng: address.sheng, |
| | | shi: address.shi, |
| | | qu: address.qu |
| | | }; |
| | | } |
| | | }, |
| | | // 现居住地详细地址失焦时,如果住址详细地址为空则自动填充 |
| | | handleResidenceDetailBlur() { |
| | | if (this.formData.residenceaddress && !this.formData.registeraddress) { |
| | | this.formData.registeraddress = this.formData.residenceaddress; |
| | | } |
| | | }, |
| | | handleRegisterAddressChange(address) { |
| | | console.log(this.registerAddress, "registerAddress11"); |
| | | |
| | | this.formData.registerprovince = address.sheng; |
| | | this.formData.registercity = address.shi; |
| | | this.formData.registertown = address.qu; |
| | | this.formData.registercityname = address.shi; |
| | | this.formData.registercommunityname = address.qu; |
| | | }, |
| | | |
| | | handleClose() { |
| | | console.log('关闭弹框'); |
| | | console.log("关闭弹框"); |
| | | this.isEdit = false; |
| | | this.submitLoading = false; |
| | | this.formData = this.getDefaultFormData(); |
| | |
| | | |
| | | async handleSubmit() { |
| | | const valid = await this.$refs.formRef.validate().catch(() => false); |
| | | if (!valid) return; |
| | | |
| | | if (!valid) { |
| | | this.$message.error("请确认表单必填信息完整后提交"); |
| | | return; |
| | | } |
| | | // 额外校验现居住地和住址的省市区是否已选择 |
| | | if ( |
| | | !this.formData.residenceprovincename || |
| | | !this.formData.residencecountyname |
| | | ) { |
| | | this.$message.error("请完善现居住地的省市区信息"); |
| | | return; |
| | | } |
| | | if (!this.formData.registerprovince || !this.formData.registercityname) { |
| | | this.$message.error("请完善住址的省市区信息"); |
| | | return; |
| | | } |
| | | this.submitLoading = true; |
| | | try { |
| | | const submitData = this.processSubmitData(); |
| | | console.log('提交数据:', submitData); |
| | | console.log("提交数据:", submitData); |
| | | |
| | | const result = await updateDonatebaseinfo(submitData); |
| | | if (result.code === 200) { |
| | | this.$message.success(this.isEdit ? "更新成功" : "新增成功"); |
| | | this.$emit("success", result.data); |
| | | console.log(1122); |
| | | |
| | | this.handleClose(); |
| | | } else { |
| | | this.$message.error(result.msg || "操作失败"); |
| | |
| | | "YYYY-MM-DD HH:mm:ss" |
| | | ); |
| | | } |
| | | if (data.contacttime) { |
| | | data.contacttime = this.$moment(data.contacttime).format( |
| | | "YYYY-MM-DD HH:mm:ss" |
| | | ); |
| | | } |
| | | |
| | | // 设置默认值 |
| | | if (!data.recordstate) { |
| | |
| | | } |
| | | |
| | | return data; |
| | | }, |
| | | /** 加载上报案例附件 */ |
| | | async loadReportAttachments(reportId) { |
| | | this.reportAttachmentLoading = true; |
| | | try { |
| | | const res = await donateInfo(reportId); |
| | | const data = res.data || res; |
| | | this.reportAttachments = (data.annexfilesList || []).map(item => ({ |
| | | ...item, |
| | | fileType: item.fileType || item.filetype || "" // 兼容字段大小写 |
| | | })); |
| | | } catch (error) { |
| | | console.error("加载上报附件失败:", error); |
| | | this.$message.error("加载上报附件失败"); |
| | | } finally { |
| | | this.reportAttachmentLoading = false; |
| | | } |
| | | }, |
| | | |
| | | /** 获取某分类文件数量 */ |
| | | getReportCategoryCount(category) { |
| | | return this.reportAttachments.filter(item => { |
| | | const type = item.fileType || ""; |
| | | if (category === "未分类") { |
| | | return !this.presetCategories.includes(type); |
| | | } |
| | | return type === category; |
| | | }).length; |
| | | }, |
| | | |
| | | /** 获取某分类文件列表 */ |
| | | getReportCategoryFiles(category) { |
| | | return this.reportAttachments.filter(item => { |
| | | const type = item.fileType || ""; |
| | | if (category === "未分类") { |
| | | return !this.presetCategories.includes(type); |
| | | } |
| | | return type === category; |
| | | }); |
| | | }, |
| | | |
| | | /** 预览上报附件(直接在新窗口打开) */ |
| | | handleReportPreview(file) { |
| | | const url = file.fileUrl || file.path; |
| | | if (url) { |
| | | window.open(url, "_blank"); |
| | | } else { |
| | | this.$message.warning("文件地址不存在"); |
| | | } |
| | | }, |
| | | |
| | | /** 获取文件类型(用于标签显示) */ |
| | | getFileType(fileName) { |
| | | if (!fileName) return "other"; |
| | | const extension = fileName |
| | | .split(".") |
| | | .pop() |
| | | .toLowerCase(); |
| | | const imageTypes = ["jpg", "jpeg", "png", "gif", "bmp", "webp"]; |
| | | const pdfTypes = ["pdf"]; |
| | | const officeTypes = ["doc", "docx", "xls", "xlsx"]; |
| | | if (imageTypes.includes(extension)) return "image"; |
| | | if (pdfTypes.includes(extension)) return "pdf"; |
| | | if (officeTypes.includes(extension)) return "office"; |
| | | return "other"; |
| | | }, |
| | | |
| | | /** 日期时间格式化(复用) */ |
| | | formatDateTime(dateTime) { |
| | | if (!dateTime) return ""; |
| | | return this.$moment |
| | | ? this.$moment(dateTime).format("YYYY-MM-DD HH:mm:ss") |
| | | : dateTime; |
| | | } |
| | | } |
| | | }; |
| | |
| | | .form-section { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .form-section:last-child { |
| | | margin-bottom: 0; |
| | | } |