From ade06cfe7a782f9272fa5d4820c589f7b8608935 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 10 四月 2026 14:35:57 +0800
Subject: [PATCH] 维护

---
 src/views/project/donatebaseinfo/EditCaseModal.vue |  362 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 321 insertions(+), 41 deletions(-)

diff --git a/src/views/project/donatebaseinfo/EditCaseModal.vue b/src/views/project/donatebaseinfo/EditCaseModal.vue
index 28efaa4..8ccfa01 100644
--- a/src/views/project/donatebaseinfo/EditCaseModal.vue
+++ b/src/views/project/donatebaseinfo/EditCaseModal.vue
@@ -45,9 +45,12 @@
             <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-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>
@@ -57,9 +60,12 @@
                   v-model="formData.idcardtype"
                   placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
                 >
-                  <el-option label="韬唤璇�" :value="1" />
-                  <el-option label="鍐涗汉璇�" :value="2" />
-                  <el-option label="鎶ょ収" :value="3" />
+                  <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>
@@ -96,7 +102,7 @@
               <el-form-item label="姘戞棌" prop="nation">
                 <el-select v-model="formData.nation" placeholder="璇烽�夋嫨姘戞棌">
                   <el-option
-                    v-for="dict in dictOptions.sys_nation"
+                    v-for="dict in dict.type.sys_nation || []"
                     :key="dict.value"
                     :label="dict.label"
                     :value="dict.value"
@@ -130,7 +136,7 @@
                   placeholder="璇烽�夋嫨瀛﹀巻"
                 >
                   <el-option
-                    v-for="dict in dictOptions.sys_education"
+                    v-for="dict in dict.type.sys_education || []"
                     :key="dict.value"
                     :label="dict.label"
                     :value="dict.value"
@@ -145,7 +151,7 @@
                   placeholder="璇烽�夋嫨鑱屼笟"
                 >
                   <el-option
-                    v-for="dict in dictOptions.sys_occupation"
+                    v-for="dict in dict.type.sys_occupation || []"
                     :key="dict.value"
                     :label="dict.label"
                     :value="dict.value"
@@ -204,14 +210,17 @@
               </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
+                    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>
@@ -222,8 +231,85 @@
                     v-for="dict in dict.type.sys_bloodtype_rhd || []"
                     :key="dict.value"
                     :label="dict.value"
-                  >{{ dict.label }}</el-radio>
+                    >{{ 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-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="鍏朵粬" prop="diseasetypeOther">
+              <el-input
+                v-model="formData.diseasetypeOther"
+                placeholder="璇疯緭鍏ュ叾浠�"
+              />
+            </el-form-item>
+          </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>
@@ -344,6 +430,128 @@
           </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">
@@ -354,7 +562,7 @@
                   placeholder="璇烽�夋嫨鎹愮尞绫诲埆"
                 >
                   <el-option
-                    v-for="dict in dictOptions.sys_DonationCategory"
+                    v-for="dict in dict.type.sys_DonationCategory || []"
                     :key="dict.value"
                     :label="dict.label"
                     :value="dict.value"
@@ -400,6 +608,38 @@
                 <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>
@@ -496,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: {
@@ -564,7 +822,7 @@
         return this.visible;
       },
       set(value) {
-        this.$emit('update:visible', value);
+        this.$emit("update:visible", value);
         if (!value) {
           this.handleClose();
         }
@@ -592,15 +850,15 @@
     }
   },
   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() {
@@ -642,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,
@@ -665,25 +941,22 @@
         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('鍔犺浇缂栬緫鏁版嵁锛宨d:', this.editData.id);
+          console.log("鍔犺浇缂栬緫鏁版嵁锛宨d:", this.editData.id);
           await this.loadEditData();
         } else {
-          console.log('鏂板妯″紡锛屽垵濮嬪寲琛ㄥ崟');
+          console.log("鏂板妯″紡锛屽垵濮嬪寲琛ㄥ崟");
           this.formData = this.getDefaultFormData();
           this.formData.nationality = "涓浗";
           this.formData.bloodtype = "0";
@@ -708,7 +981,7 @@
       try {
         const response = await getDonatebaseinfo(this.editData.id);
         const data = response.data;
-        console.log('鍔犺浇鍒扮殑鏁版嵁:', data);
+        console.log("鍔犺浇鍒扮殑鏁版嵁:", data);
 
         // 澶勭悊鏁扮粍瀛楁
         const arrayFields = [
@@ -721,15 +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);
+        console.log("鍚堝苟鍚庣殑formData:", this.formData);
 
         // 璁剧疆鍦板潃淇℃伅
         if (data.residenceprovince) {
@@ -864,7 +1137,7 @@
     },
 
     handleClose() {
-      console.log('鍏抽棴寮规');
+      console.log("鍏抽棴寮规");
       this.isEdit = false;
       this.submitLoading = false;
       this.formData = this.getDefaultFormData();
@@ -880,12 +1153,14 @@
       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 || "鎿嶄綔澶辫触");
@@ -935,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