From c8e9849cb5f24848df0174c13bfbbff37bb08a5a Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 七月 2026 15:45:30 +0800
Subject: [PATCH] 维护

---
 src/views/project/donatebaseinfo/EditCaseModal.vue |  845 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 530 insertions(+), 315 deletions(-)

diff --git a/src/views/project/donatebaseinfo/EditCaseModal.vue b/src/views/project/donatebaseinfo/EditCaseModal.vue
index 8669cb9..e0cae19 100644
--- a/src/views/project/donatebaseinfo/EditCaseModal.vue
+++ b/src/views/project/donatebaseinfo/EditCaseModal.vue
@@ -17,32 +17,79 @@
         <!-- 鍩虹淇℃伅閮ㄥ垎 -->
         <el-card header="鍩虹淇℃伅" class="form-section">
           <el-row :gutter="20">
-            <el-col :span="11">
-              <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
+            <el-col :span="12">
+              <el-form-item
+                label="褰撳墠鍖荤枟鏈烘瀯"
+                prop="currentMedicalInstitution"
+              >
                 <el-input
-                  v-model="formData.caseNo"
-                  :disabled="isEdit"
-                  placeholder="绯荤粺鑷姩鐢熸垚"
+                  v-model="formData.currentMedicalInstitution"
+                  placeholder="璇疯緭鍏ュ綋鍓嶅尰鐤楁満鏋�"
                 />
               </el-form-item>
             </el-col>
-            <el-col :span="11">
-              <el-form-item label="鎹愮尞鑰呯紪鍙�" prop="donorno">
+            <el-col :span="12">
+              <el-form-item label="褰撳墠鍖荤枟鏈烘瀯绉戝" prop="currentDept">
                 <el-input
-                  v-model="formData.donorno"
-                  placeholder="璇疯緭鍏ユ崘鐚�呯紪鍙�"
+                  v-model="formData.currentDept"
+                  placeholder="璇疯緭鍏ュ綋鍓嶅尰鐤楁満鏋勭瀹�"
                 />
               </el-form-item>
             </el-col>
           </el-row>
 
           <el-row :gutter="20">
-            <el-col :span="6">
+            <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="12">
+              <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="6">
+            <el-col :span="8">
               <el-form-item label="鎬у埆" prop="sex">
                 <el-select v-model="formData.sex" placeholder="璇烽�夋嫨鎬у埆">
                   <el-option label="鐢�" value="1" />
@@ -50,7 +97,48 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="6">
+            <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"
@@ -65,7 +153,7 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="6">
+            <el-col :span="12">
               <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
                 <el-input
                   v-model="formData.idcardno"
@@ -76,55 +164,8 @@
             </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-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
@@ -163,45 +204,59 @@
                 />
               </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"
+                  @change="handleResidenceAddressChange"
+                />
+                <el-input
+                  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">
+                <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="treatmenthospitalno">
-                <org-selecter
-                  :org-type="'3'"
-                  v-model="formData.treatmenthospitalno"
-                  @change="handleHospitalChange"
+            <!-- <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="treatmentdeptname">
-                <el-input
-                  v-model="formData.treatmentdeptname"
-                  placeholder="璇疯緭鍏ョ瀹�"
-                />
-              </el-form-item>
-            </el-col>
+            </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>
@@ -233,26 +288,39 @@
               </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-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-form-item label="鍏朵粬" prop="diseasetypeOther">
-              <el-input
-                v-model="formData.diseasetypeOther"
-                placeholder="璇疯緭鍏ュ叾浠�"
-              />
-            </el-form-item>
+            <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>
 
           <!-- 浼犳煋鐥� -->
@@ -310,48 +378,7 @@
             </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-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="GCS璇勫垎" prop="gcsScore">
                 <el-input
@@ -360,14 +387,7 @@
                 />
               </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
@@ -376,9 +396,9 @@
                 />
               </el-form-item>
             </el-col>
-          </el-row>
+          </el-row> -->
 
-          <el-row>
+          <!-- <el-row>
             <el-col :span="24">
               <el-form-item label="鐥呮儏姒傚喌" prop="illnessoverview">
                 <el-input
@@ -389,43 +409,8 @@
                 />
               </el-form-item>
             </el-col>
-          </el-row>
+          </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">
           <!-- 鏈汉鎰忔効 -->
@@ -486,10 +471,10 @@
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="涓庢崘璧犺�呭叧绯�" prop="familyrelations">
+              <el-form-item label="涓庢綔鍦ㄦ崘鐚�呭叧绯�" prop="familyrelations">
                 <el-select
                   v-model="formData.familyrelations"
-                  placeholder="璇烽�夋嫨涓庢崘璧犺�呭叧绯�"
+                  placeholder="璇烽�夋嫨涓庢崘鐚�呭叧绯�"
                 >
                   <el-option
                     v-for="dict in dict.type.sys_FamilyRelation || []"
@@ -503,55 +488,118 @@
           </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-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="reportername">
+                <el-input
+                  v-model="formData.reportername"
+                  placeholder="鎶ュ憡浜哄鍚�"
+                  :disabled="true"
+                />
               </el-form-item>
             </el-col>
             <el-col :span="8">
-              <el-form-item label="鍏朵粬" prop="infosourcesOther">
+              <el-form-item label="鑱旂郴鐢佃瘽" prop="reporterphone">
                 <el-input
-                  v-model="formData.infosourcesOther"
-                  placeholder="璇疯緭鍏ヤ俊鎭潵婧愬叾浠�"
+                  v-model="formData.reporterphone"
+                  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-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="8">
-              <el-form-item label="鑱旂郴鐢佃瘽" prop="infophone">
+            <!-- <el-col :span="12">
+              <el-form-item label="閮ㄩ棬ID" prop="deptid">
                 <el-input
-                  v-model="formData.infophone"
-                  placeholder="璇疯緭鍏ヤ俊鎭憳鑱旂郴鐢佃瘽"
+                  v-model="formData.deptid"
+                  placeholder="璇疯緭鍏ラ儴闂↖D"
                 />
               </el-form-item>
-            </el-col>
+            </el-col> -->
           </el-row>
         </el-card>
 
         <!-- 鎹愮尞淇℃伅閮ㄥ垎 -->
         <el-card header="鎹愮尞淇℃伅" class="form-section">
           <el-row :gutter="20">
-            <el-col :span="8">
+            <!-- <el-col :span="8">
               <el-form-item label="鎹愮尞绫诲埆" prop="donationcategory">
                 <el-select
                   v-model="formData.donationcategory"
@@ -565,9 +613,9 @@
                   />
                 </el-select>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <el-col :span="8">
-              <el-form-item label="妗堜緥鏃堕棿" prop="donatetime">
+              <el-form-item label="妗堜緥涓婃姤鏃堕棿" prop="donatetime">
                 <el-date-picker
                   v-model="formData.donatetime"
                   type="datetime"
@@ -590,34 +638,26 @@
             </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
+                <!-- <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">
@@ -640,67 +680,84 @@
               </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-col :span="12">
+              <el-form-item label="鑾峰彇缁勭粐缂栧彿" prop="acquisitiontissueno">
                 <el-input
-                  v-model="formData.reportername"
-                  placeholder="鎶ュ憡浜哄鍚�"
-                  :disabled="true"
+                  v-model="formData.acquisitiontissueno"
+                  placeholder="璇疯緭鍏ヨ幏鍙栫粍缁囩紪鍙�"
                 />
               </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> -->
             <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-form-item label="鑾峰彇缁勭粐鍚嶇О" prop="acquisitiontissuename">
                 <el-input
-                  v-model="formData.deptid"
-                  placeholder="璇疯緭鍏ラ儴闂↖D"
+                  v-model="formData.acquisitiontissuename"
+                  placeholder="璇疯緭鍏ヨ幏鍙栫粍缁囧悕绉�"
                 />
               </el-form-item>
             </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 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>
+
+<!-- 鏈� 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">
@@ -723,6 +780,7 @@
   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 {
@@ -734,6 +792,7 @@
 
   // 娣诲姞鎵�鏈夐渶瑕佺殑瀛楀吀绫诲瀷
   dicts: [
+    "sys_redcrossagency",
     "sys_bloodtype_rhd",
     "sys_BloodType",
     "sys_user_sex",
@@ -777,9 +836,16 @@
       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: [
@@ -805,6 +871,12 @@
         ],
         reporttime: [
           { required: true, message: "璇烽�夋嫨鎶ュ憡鏃堕棿", trigger: "change" }
+        ],
+        residenceaddress: [
+          { required: true, message: "璇疯緭鍏ョ幇灞呬綇鍦拌缁嗗湴鍧�", trigger: "blur" }
+        ],
+        registeraddress: [
+          { required: true, message: "璇疯緭鍏ヤ綇鍧�璇︾粏鍦板潃", trigger: "blur" }
         ]
       }
     };
@@ -823,6 +895,21 @@
           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: {
@@ -834,6 +921,16 @@
         });
       } else {
         this.handleClose();
+      }
+    },
+    "editData.reportId": {
+      immediate: true,
+      handler(newVal) {
+        if (newVal) {
+          this.loadReportAttachments(newVal);
+        } else {
+          this.reportAttachments = [];
+        }
       }
     },
     editData: {
@@ -917,7 +1014,7 @@
         majorrelatives: null,
         familyrelations: null,
         infosources: [],
-        infoname: null,
+        infoName: null,
         infophone: null,
         redorganno: null,
         contactperson: null,
@@ -927,8 +1024,7 @@
         donationcategory: null,
         donatetime: null,
         recordstate: "0",
-        acquisitiontissueno: "ZJOPO",
-        acquisitiontissuename: "娴欐睙鐪佷汉浣撳櫒瀹樿幏鍙栫粍缁�",
+        acquisitiontissuename: "闈掑矝澶у闄勫睘鍖婚櫌",
 
         // 鎶ュ憡淇℃伅
         reporterno: null,
@@ -958,8 +1054,11 @@
           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);
@@ -976,6 +1075,8 @@
     async loadEditData() {
       try {
         const response = await getDonatebaseinfo(this.editData.id);
+        response.data.firstMedicalInstitution =
+          response.data.treatmenthospitalname;
         const data = response.data;
         console.log("鍔犺浇鍒扮殑鏁版嵁:", data);
 
@@ -999,23 +1100,29 @@
 
         this.formData = { ...this.getDefaultFormData(), ...data };
         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) {
@@ -1121,15 +1228,38 @@
     },
 
     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() {
@@ -1148,7 +1278,18 @@
         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();
@@ -1224,6 +1365,79 @@
       }
 
       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;
+      });
+    },
+
+    /** 棰勮涓婃姤闄勪欢锛堢洿鎺ュ湪鏂扮獥鍙f墦寮�锛� */
+    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;
     }
   }
 };
@@ -1233,6 +1447,7 @@
 .form-section {
   margin-bottom: 20px;
 }
+
 .form-section:last-child {
   margin-bottom: 0;
 }

--
Gitblit v1.9.3