From 96dd34f77d81db58f54e3d0ad4a8cc8082189a61 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 16 四月 2026 13:52:27 +0800
Subject: [PATCH] 考勤相关更改
---
src/views/project/donatebaseinfo/EditCaseModal.vue | 1303 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 816 insertions(+), 487 deletions(-)
diff --git a/src/views/project/donatebaseinfo/EditCaseModal.vue b/src/views/project/donatebaseinfo/EditCaseModal.vue
index e2876c6..8ccfa01 100644
--- a/src/views/project/donatebaseinfo/EditCaseModal.vue
+++ b/src/views/project/donatebaseinfo/EditCaseModal.vue
@@ -1,464 +1,724 @@
<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-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
+ v-for="dict in dict.type.sys_user_sex || []"
+ :key="dict.value"
+ :label="dict.label"
+ :value="parseInt(dict.value)"
+ />
+ </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
+ 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="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="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="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 dict.type.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="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 || []"
+ <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 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-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
+ 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>
+ <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-radio
>
- </el-radio-group>
+ {{ dict.label }}
+ </el-checkbox>
+ </el-checkbox-group>
</el-form-item>
- </el-col>
- </el-row>
+ <el-form-item label="鍏朵粬" prop="diseasetypeOther">
+ <el-input
+ v-model="formData.diseasetypeOther"
+ placeholder="璇疯緭鍏ュ叾浠�"
+ />
+ </el-form-item>
+ </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="璇疯緭鍏SC璇勫垎"
- />
- </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-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-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-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-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-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item
+ label="褰撳墠鍖荤枟鏈烘瀯"
+ prop="currentMedicalInstitution"
>
- <el-option
- v-for="reporter in reporters"
- :key="reporter.reportNo"
- :label="reporter.reportName"
- :value="reporter.reportNo"
+ <el-input
+ v-model="formData.currentMedicalInstitution"
+ placeholder="璇疯緭鍏ュ綋鍓嶅尰鐤楁満鏋�"
/>
- </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="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="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="璇疯緭鍏ラ儴闂↖D" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-card>
- </el-form>
+ <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>
- <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-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="GSC璇勫垎" prop="gcsScore">
+ <el-input
+ v-model="formData.gcsScore"
+ placeholder="璇疯緭鍏SC璇勫垎"
+ />
+ </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>
+ <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.familyrelations"
+ placeholder="璇烽�夋嫨涓庢崘璧犺�呭叧绯�"
+ >
+ <el-option
+ 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-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-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"
+ 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-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-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-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="璇疯緭鍏ラ儴闂↖D"
+ />
+ </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>
@@ -476,7 +736,25 @@
LiAreaSelect
},
- dicts: ["sys_bloodtype_rhd", "sys_BloodType"],
+ // 娣诲姞鎵�鏈夐渶瑕佺殑瀛楀吀绫诲瀷
+ dicts: [
+ "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: {
@@ -498,7 +776,6 @@
},
data() {
return {
- localVisible: this.visible,
isEdit: false,
submitLoading: false,
residenceAddress: {},
@@ -539,31 +816,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() {
@@ -605,14 +900,32 @@
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,
@@ -628,41 +941,47 @@
reporttime: null,
deptid: null,
- // 鏁扮粍瀛楁
- diseasetype: [],
- infectious: [],
- selfwill: [],
- othercases: [],
- infosources: [],
- kinship: [],
- patientstate: []
+ // 鍏朵粬瀛楁
+ diseasetypeOther: null,
+ infectiousOther: null,
+ kinshipOther: null,
+ infosourcesOther: null
};
},
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("鍔犺浇缂栬緫鏁版嵁锛宨d:", 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 = [
@@ -675,14 +994,15 @@
"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);
// 璁剧疆鍦板潃淇℃伅
if (data.residenceprovince) {
@@ -703,13 +1023,13 @@
this.calculateAge(data.birthday);
} catch (error) {
+ console.error("鑾峰彇妗堜緥鏁版嵁澶辫触:", error);
this.$message.error("鑾峰彇妗堜緥鏁版嵁澶辫触");
this.handleClose();
}
},
handleIdCardBlur() {
- // 韬唤璇佽嚜鍔ㄥ~鍏呴�昏緫
this.updateMessage();
},
@@ -817,7 +1137,7 @@
},
handleClose() {
- this.localVisible = false;
+ console.log("鍏抽棴寮规");
this.isEdit = false;
this.submitLoading = false;
this.formData = this.getDefaultFormData();
@@ -833,16 +1153,20 @@
this.submitLoading = true;
try {
const submitData = this.processSubmitData();
+ 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 || "鎿嶄綔澶辫触");
}
} catch (error) {
+ console.error("鎿嶄綔澶辫触:", error);
this.$message.error("鎿嶄綔澶辫触");
} finally {
this.submitLoading = false;
@@ -886,6 +1210,11 @@
"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) {
--
Gitblit v1.9.3