From 475a352a4bfd7ac3a81e8c7c92d3bb64e2e01037 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 27 二月 2026 15:48:37 +0800
Subject: [PATCH] 青岛维护提交

---
 src/views/project/donatebaseinfo/index.vue | 1943 ++++++++++-----------------------------------------------
 1 files changed, 361 insertions(+), 1,582 deletions(-)

diff --git a/src/views/project/donatebaseinfo/index.vue b/src/views/project/donatebaseinfo/index.vue
index 724e87e..6c29d1c 100644
--- a/src/views/project/donatebaseinfo/index.vue
+++ b/src/views/project/donatebaseinfo/index.vue
@@ -1,5 +1,6 @@
 <template>
   <div class="app-container">
+    <!-- 鎼滅储琛ㄥ崟 -->
     <el-form
       :model="queryParams"
       ref="queryForm"
@@ -9,7 +10,7 @@
     >
       <el-row :gutter="8">
         <el-col :span="5">
-          <el-form-item label="濮撳悕" prop="name">
+          <el-form-item label="鎮h�呭鍚�" prop="name">
             <el-input
               v-model="queryParams.name"
               placeholder="璇疯緭鍏ュ鍚�"
@@ -20,34 +21,16 @@
           </el-form-item>
         </el-col>
         <el-col :span="5">
-          <el-form-item
-            align="left"
-            label="鍖荤枟鏈烘瀯"
-            prop="treatmenthospitalname"
-          >
+          <el-form-item label="棣栬瘖鍖婚櫌" prop="treatmenthospitalname">
             <org-selecter
               ref="orgSelecter"
               :org-type="'3'"
               v-model="queryParams.treatmenthospitalno"
-              @keyup.enter.native="handleQuery"
             />
           </el-form-item>
         </el-col>
-        <el-col :span="5">
-          <el-form-item label="鎹愮尞鍦板競">
-            <el-select v-model="queryParams.city" placeholder="璇烽�夋嫨鍦板競">
-              <el-option
-                v-for="item in provinceData"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
-              </el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
         <el-col :span="9">
-          <el-form-item label="鏃ユ湡">
+          <el-form-item label="涓婃姤鏃堕棿">
             <el-date-picker
               style="width: 100%"
               v-model="selecttime"
@@ -57,69 +40,7 @@
               end-placeholder="缁撴潫鏈堜唤"
               value-format="yyyy-MM-dd"
               @change="getTimeList"
-            >
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="8">
-        <el-col :span="5">
-          <el-form-item label="鎹愮尞杩涘害" prop="workflow">
-            <el-select
-              v-model="queryParams.workflow"
-              placeholder="璇烽�夋嫨褰撳墠杩涘害"
-              clearable
-              size="small"
-            >
-              <el-option
-                v-for="dict in dict.type.sys_donornode"
-                :key="dict.value"
-                :label="dict.label"
-                :value="dict.value"
-              />
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="5">
-          <el-form-item label="鎶ュ憡浜�">
-            <el-select
-              v-model="queryParams.reporterno"
-              placeholder="璇烽�夋嫨鎶ュ憡浜�"
-            >
-              <el-option
-                v-for="item in reportlist"
-                :key="item.index"
-                :label="item.reportername"
-                :value="item.reporterno"
-              >
-              </el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="5">
-          <el-form-item label="鏄惁缁堟路">
-            <el-select
-              v-model="queryParams.terminationCase"
-              placeholder="璇烽�夋嫨鐘舵��"
-            >
-              <el-option
-                v-for="item in terminationCaselist"
-                :key="item.value"
-                :label="item.name"
-                :value="item.value"
-              >
-              </el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="9">
-          <el-form-item label="绫嶈疮">
-            <div>
-              <li_area_select
-                ref="areaSelect"
-                v-model="searchAddress"
-              ></li_area_select>
-            </div>
+            />
           </el-form-item>
         </el-col>
       </el-row>
@@ -131,39 +52,19 @@
               icon="el-icon-search"
               size="mini"
               @click="handleQuery"
-              >鎼滅储</el-button
             >
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
-              >閲嶇疆</el-button
-            >
+              鎼滅储
+            </el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">
+              閲嶇疆
+            </el-button>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
+
+    <!-- 鎿嶄綔鎸夐挳 -->
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['project:donatebaseinfo:add']"
-          >鏂板</el-button
-        >
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['project:donatebaseinfo:edit']"
-          >淇敼</el-button
-        >
-      </el-col> -->
 
       <el-col :span="1.5">
         <el-button
@@ -174,15 +75,14 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['project:donatebaseinfo:export']"
-          >瀵煎嚭</el-button
         >
+          瀵煎嚭
+        </el-button>
       </el-col>
-      <right-toolbar
-        :showSearch.sync="showSearch"
-        @queryTable="getList"
-      ></right-toolbar>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" />
     </el-row>
 
+    <!-- 鏁版嵁琛ㄦ牸 -->
     <el-table
       v-loading="loading"
       :data="donatebaseinfoList"
@@ -190,8 +90,6 @@
       border
       :default-sort="{ prop: 'donatetime', order: 'descending' }"
     >
-      <!-- <el-table-column label="鎶ュ憡鏃堕棿" align="center" prop="id" /> -->
-      <!-- <el-table-column type="selection" width="55" align="center" /> -->
       <el-table-column
         label="妗堜緥鏃堕棿"
         align="center"
@@ -203,9 +101,9 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="鎹愮尞缂栧彿"
+        label="妗堜緥缂栧彿"
         align="center"
-        prop="donorno"
+        prop="caseNo"
         width="200"
       />
       <el-table-column label="濮撳悕" align="center" prop="name" width="100" />
@@ -217,12 +115,27 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="骞撮緞" align="center" prop="age" width="100" />
+      <el-table-column label="骞撮緞" align="center" prop="age" width="100">
+        <template slot-scope="scope">
+          {{
+            `${
+              scope.row.age && scope.row.age !== 0
+                ? `${scope.row.age}${scope.row.ageunit || ""}`
+                : ""
+            } ${
+              scope.row.age2 && scope.row.age2 !== 0
+                ? `${scope.row.age2}${scope.row.ageunit2}`
+                : ""
+            }`.trim()
+          }}
+        </template>
+      </el-table-column>
       <el-table-column
-        label="鍖荤枟鏈烘瀯"
+        label="棣栬瘖鍖婚櫌"
         align="center"
         prop="treatmenthospitalname"
       />
+      <el-table-column label="GSC璇勫垎" align="center" prop="gcsScore" />
       <el-table-column label="琛�鍨�" align="center" prop="bloodtype" width="100">
         <template slot-scope="scope">
           <dict-tag
@@ -231,7 +144,6 @@
           />
         </template>
       </el-table-column>
-
       <el-table-column
         label="鎹愮尞绫诲埆"
         align="center"
@@ -251,27 +163,6 @@
         prop="reportername"
         width="100"
       />
-      <!-- 
-         <el-table-column
-        label="鐜版墍鍦ㄥ湴甯�"
-        align="center"
-        prop="registercityname"
-        width="150"
-      />
-      <el-table-column
-        label="鎹愮尞杩涘害"
-        align="center"
-        prop="recordstate"
-        width="120"
-      >
-        <template slot-scope="scope">
-         <dict-tag
-            :options="dict.type.sys_DonationStatus"
-            :value="scope.row.recordstate"
-          />          
-        </template>
-      </el-table-column>
-      -->
       <el-table-column
         label="鎹愮尞杩涘害"
         align="center"
@@ -285,11 +176,12 @@
               :value="scope.row.workflow"
             />
           </div>
-          <div v-else>浠诲姟缁堟</div>
+          <div v-else><el-button type="danger" plain>浠诲姟缁堟</el-button></div>
         </template>
       </el-table-column>
       <el-table-column
         label="鎿嶄綔"
+        width="190"
         align="center"
         class-name="small-padding fixed-width"
         fixed="right"
@@ -301,35 +193,42 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['project:donatebaseinfo:edit']"
-            >璇︽儏</el-button
           >
-          <el-button
-            v-if="scope.row.recordstate == 0"
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['project:donatebaseinfo:remove']"
-            >鍒犻櫎</el-button
-          >
-          <!-- 
-            <el-button v-if="scope.row.recordstate == 0 || scope.row.recordstate == 3" size="mini" type="text"
-            icon="el-icon-thumb" @click="handleapproval(scope.row)">鎻愪氦</el-button>        
-           -->
+            璇︽儏
+          </el-button>
           <el-button
             size="mini"
             type="text"
-            icon="el-icon-refrigerator"
-            @click="handledownload(scope.row)"
-            >涓嬭浇</el-button
+            icon="el-icon-edit"
+            @click="handleOpenEdit(scope.row)"
+            v-hasPermi="['project:donatebaseinfo:edit']"
+            >缂栬緫</el-button
           >
-          <!-- 
-            <el-button size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
-            v-hasPermi="['project:donatebaseinfo:edit']">{{ scope.row.recordstate == 99 ? "鎭㈠": "缁堟"  }}</el-button> 
-          -->
+          <el-button
+            size="mini"
+            type="text"
+            style="color: #f56c6c;"
+            @click="handleTerminate(scope.row)"
+            v-if="
+              scope.row.terminationCase === 0 && scope.row.recordstate !== '99'
+            "
+          >
+            缁堟
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            style="color: #67c23a;"
+            @click="handleRestore(scope.row)"
+            v-if="scope.row.terminationCase === 1"
+          >
+            鎭㈠
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
+
+    <!-- 鍒嗛〉 -->
     <pagination
       v-show="total > 0"
       :total="total"
@@ -337,789 +236,108 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-    <!-- 娣诲姞鎴栦慨鏀规崘鐚熀纭�瀵硅瘽妗� -->
-    <el-dialog
-      :title="title"
-      align="center"
-      :visible.sync="open"
-      :close-on-click-modal="false"
-      width="1100px"
-    >
-      <el-form
-        ref="form"
-        :model="form"
-        :rules="rules"
-        label-width="130px"
-        label-position="right"
-      >
-        <div
-          style="
-                border-bottom: 1px solid #ddd;
-                border-top: 1px solid #ddd;
-                padding-right: 60px;
-              "
-        >
-          <el-row style="margin-top: 40px">
-            <el-col :span="8">
-              <el-form-item label="鎹愮尞缂栧彿" prop="donorno">
-                <el-input v-model="form.donorno" disabled />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item
-                align="left"
-                label="鍖荤枟鏈烘瀯"
-                prop="treatmenthospitalno"
-              >
-                <org-selecter
-                  ref="addOrgSelect"
-                  :org-type="'3'"
-                  v-model="form.treatmenthospitalno"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="绉戝" prop="treatmentdeptno">
-                <el-input
-                  v-model="form.treatmentdeptname"
-                  placeholder="璇疯緭鍏ョ瀹�"
-                />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="6">
-              <el-form-item align="left" label="濮撳悕" prop="name">
-                <el-input v-model="form.name" placeholder="蹇呭~椤�" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="姘戞棌" prop="nation">
-                <el-select v-model="form.nation" placeholder="璇烽�夋嫨姘戞棌">
-                  <el-option
-                    v-for="dict in dict.type.sys_nation"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="绫嶈疮" prop="nativeplace">
-                <el-input v-model="form.nativeplace" placeholder="璇疯緭鍏ュ浗绫�" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="鍥界睄" prop="nationality">
-                <el-input v-model="form.nationality" placeholder="璇疯緭鍏ュ浗绫�" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="6">
-              <el-form-item label="璇佷欢绫诲瀷" prop="idcardtype">
-                <el-select
-                  v-model="form.idcardtype"
-                  placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
-                >
-                  <el-option
-                    v-for="dict in dict.type.sys_IDType"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="parseInt(dict.value)"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
-                <el-input
-                  style="width: 174px"
-                  ref="updateBSvalue"
-                  class="sfzcode"
-                  v-model="form.idcardno"
-                  placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�"
-                  @blur="updateMessage"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="鎬у埆" prop="sex">
-                <el-select v-model="form.sex" placeholder="璇疯緭鍏ユ�у埆">
-                  <el-option
-                    v-for="dict in dict.type.sys_user_sex"
-                    :key="dict.label"
-                    :label="dict.label"
-                    :value="parseInt(dict.value)"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="骞撮緞" prop="age">
-                <el-input v-model="form.age" placeholder="璇疯緭鍏ュ勾榫�" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="6">
-              <el-form-item label="鍑虹敓鏃ユ湡" prop="birthday">
-                <el-date-picker
-                  clearable
-                  size="small"
-                  v-model="form.birthday"
-                  type="date"
-                  style="width: 174px"
-                  value-format="yyyy-MM-dd HH:mm:ss"
-                  placeholder="閫夋嫨鍑虹敓鏃ユ湡"
-                >
-                </el-date-picker>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="鑱屼笟" prop="occupation">
-                <el-select v-model="form.occupation" placeholder="璇烽�夋嫨鑱屼笟">
-                  <el-option
-                    v-for="dict in dict.type.sys_occupation"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="瀛﹀巻" prop="education">
-                <el-select v-model="form.education" placeholder="璇烽�夋嫨瀛﹀巻">
-                  <el-option
-                    v-for="dict in dict.type.sys_education"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="12">
-              <el-form-item label="浣忓潃" prop="residenceaddress">
-                <div>
-                  <li_area_select
-                    ref="residenceSelect"
-                    v-model="residenceAddresss"
-                  ></li_area_select>
-                  <!-- <div>{{defultAddress}}</div> -->
-                </div>
-              </el-form-item>
-            </el-col>
-            <el-col :span="11" :push="1">
-              <el-input
-                v-model="form.residenceaddress"
-                placeholder="璇疯緭鍏ュ唴瀹�"
-              />
-            </el-col>
-          </el-row>
-
-          <el-row>
-            <el-col :span="12">
-              <el-form-item label="鐜版墍鍦ㄥ湴" prop="registeraddress">
-                <div>
-                  <li_area_select
-                    ref="registerSelect"
-                    v-model="registerAddresss"
-                  ></li_area_select>
-                  <!-- <div>{{defultAddress}}</div> -->
-                </div>
-              </el-form-item>
-            </el-col>
-            <el-col :span="11" :push="1">
-              <el-input
-                v-model="form.registeraddress"
-                placeholder="璇疯緭鍏ュ唴瀹�"
-              />
-            </el-col>
-          </el-row>
-        </div>
-
-        <div
-          style="
-                border-bottom: 1px solid #ddd;
-                margin-top: 20px;
-                padding-right: 60px;
-              "
-        >
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="浣忛櫌鍙�" prop="inpatientno">
-                <el-input v-model="form.inpatientno" placeholder="浣忛櫌鍙�" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="16">
-              <el-form-item label="鐤剧梾璇婃柇" prop="diagnosisname">
-                <el-input
-                  v-model="form.diagnosisname"
-                  placeholder="璇疯緭鍏ョ柧鐥呰瘖鏂悕绉�"
-                />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="12">
-              <el-form-item align="left" label="琛�鍨�" prop="bloodtype">
-                <el-radio-group v-model="form.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" :pull="1">
-              <el-form-item label="Rh(D)" align="left" prop="rhyin">
-                <el-radio-group v-model="form.rhyin">
-                  <el-radio
-                    v-for="dict in dict.type.sys_bloodtype_rhd"
-                    :key="dict.value"
-                    :label="dict.value"
-                    >{{ dict.label }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-form-item label="鐤剧梾绫诲瀷" align="left">
-              <el-checkbox-group v-model="form.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="form.diseasetypeOther"
-                placeholder="璇疯緭鍏ュ叾浠�"
-              />
-            </el-form-item>
-          </el-row>
-          <el-row>
-            <el-col :span="12">
-              <el-form-item align="left" label="浼犳煋鐥�">
-                <el-checkbox-group v-model="form.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="form.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="form.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="form.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>
-        </div>
-
-        <div
-          style="
-                border-bottom: 1px solid #ddd;
-                padding-right: 60px;
-                margin-top: 20px;
-              "
-        >
-          <el-row>
-            <div display="flex">
-              <el-row>
-                <el-col :span="12">
-                  <el-form-item
-                    label="浜插睘鐘跺喌"
-                    prop="kinship"
-                    class="relation"
-                    align="left"
-                  >
-                    <el-checkbox-group v-model="form.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="form.kinshipOther"
-                      placeholder="璇疯緭鍏ュ叾浠�"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </div>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item align="left" label="鏈汉鎰忔効 ">
-                <el-checkbox-group v-model="form.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="majorrelatives">
-                <el-input
-                  v-model="form.majorrelatives"
-                  placeholder="璇疯緭鍏ヤ富瑕佷翰灞�"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="涓庢崘璧犺�呭叧绯�" prop="familyrelations">
-                <el-select
-                  v-model="form.familyrelations"
-                  placeholder="璇烽�夋嫨涓庢崘璧犺�呭叧绯�"
-                >
-                  <el-option
-                    v-for="dict in dict.type.sys_FamilyRelation"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </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="form.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="form.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="form.infoname" placeholder="璇疯緭鍏ヤ俊鎭憳" />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="鑱旂郴鐢佃瘽" prop="infophone">
-                <el-input
-                  v-model="form.infophone"
-                  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="form.redorganno"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="鑱旂郴浜�" prop="contactperson">
-                <el-input
-                  v-model="form.contactperson"
-                  placeholder="璇疯緭鍏ヨ仈绯讳汉"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="鑱旂郴鏃堕棿" prop="contacttime">
-                <el-date-picker
-                  clearable
-                  size="small"
-                  style="width: 190px"
-                  v-model="form.contacttime"
-                  type="datetime"
-                  value-format="yyyy-MM-dd HH:mm:ss"
-                  placeholder="閫夋嫨鎶ュ憡鏃堕棿"
-                >
-                </el-date-picker>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item
-                align="left"
-                label="鑾峰彇缁勭粐"
-                prop="acquisitiontissuename"
-              >
-                <org-selecter
-                  style="width: 260px"
-                  ref="orgSelecter"
-                  :org-type="'1'"
-                  v-model="form.acquisitiontissueno"
-                />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="8">
-              <el-form-item label="鎶ュ憡浜�" prop="reporterno">
-                <el-select
-                  ref="getReportname"
-                  v-model="form.reporterno"
-                  placeholder="璇烽�夋嫨"
-                >
-                  <el-option
-                    v-for="item in reporters"
-                    :key="item.reportNo"
-                    :label="item.reportName"
-                    :value="item.reportNo"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="鑱旂郴鐢佃瘽" prop="reporterphone">
-                <el-input
-                  v-model="form.reporterphone"
-                  placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
-                />
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item label="鎶ュ憡鏃堕棿" align="left" prop="reporttime">
-                <el-date-picker
-                  clearable
-                  size="small"
-                  style="width: 190px"
-                  v-model="form.reporttime"
-                  type="datetime"
-                  value-format="yyyy-MM-dd HH:mm:ss"
-                  placeholder="閫夋嫨鎶ュ憡鏃堕棿"
-                >
-                </el-date-picker>
-              </el-form-item>
-            </el-col>
-          </el-row>
-        </div>
-        <!-- <div style="padding-right: 60px; margin-top: 20px">
-          <el-row>
-            <el-form-item label="闄勪欢" align="left" prop="annexfile">
-              <annex-upload ref="annex" :infoid="form.id" :donorno="form.donorno" :flowname="flowname"
-                :annexno="annexno" />
-            </el-form-item>
-          </el-row>
-        </div> -->
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button v-show="showSaveBtn" type="primary" @click="submitForm"
-          >淇濆瓨骞跺墠寰�妗堜緥宸ヤ綔鍙�</el-button
-        >
-        <el-button
-          v-show="showTerminationBtn"
-          type="primary"
-          @click="submitForm"
-          >缁堟妗堜緥</el-button
-        >
-        <el-button @click="cancel">鍙� 娑�</el-button>
-        <!-- <el-button @click="handleapproval">鎻愪氦瀹℃牳</el-button> -->
-      </div>
-    </el-dialog>
+    <!-- 妗堜緥缂栬緫寮圭獥 -->
+    <edit-case-modal
+      :visible="editModalVisible"
+      :editData="currentEditData"
+      :dict-options="dict.type"
+      @update:visible="editModalVisible = $event"
+      @success="handleEditSuccess"
+      @closed="handleEditClosed"
+    />
+    <!-- 缁堟/鎭㈠寮规 -->
+    <terminate-restore-modal
+      :current-record="currentRecord"
+      :visible="modalVisible"
+      :titles="modalTitles"
+      @update:visible="handleModalVisibleChange"
+      @operation-success="handleOperationSuccess"
+    />
   </div>
 </template>
 <script>
 import { getUserProfile } from "@/api/system/user";
+import TerminateRestoreModal from "@/components/TerminateRestoreModal";
+import EditCaseModal from "./EditCaseModal";
 import {
   listDonatebaseinfo,
-  getDonatebaseinfo,
-  delDonatebaseinfo,
   addDonatebaseinfo,
-  updateDonatebaseinfo,
-  exportDonatebaseinfo,
-  downloadbaseinfo,
-  getDonationNumber,
-  getdonatorno
+  exportDonatebaseinfo
 } from "@/api/project/donatebaseinfo";
 import Li_area_select from "@/components/Address";
 import OrgSelecter from "@/views/project/components/orgselect";
-import AnnexUpload from "@/views/project/components/annexupload";
-import ReportName from "@/views/project/components/organizationUser";
-import { getToken } from "@/utils/auth";
-import {
-  listOrganization,
-  getOrganization,
-  listReportname,
-  listUser
-} from "@/api/project/organization";
+import { listReportname, listUser } from "@/api/project/organization";
+
 export default {
+  name: "Donatebaseinfo",
   components: {
     Li_area_select,
     OrgSelecter,
-    AnnexUpload,
-    ReportName
+    TerminateRestoreModal,
+    EditCaseModal
   },
-  name: "Donatebaseinfo",
   dicts: [
-    "sys_Reporter",
-    "sys_redcrossagency",
-    "sys_nation",
-    "sys_occupation",
-    "sys_education",
-    "sys_OrganizationType",
-    "sys_HospitalNature",
-    "sys_RegionalLevel",
-    "country",
     "sys_user_sex",
-    "sys_IDType",
-    "sys_AgeUnit",
     "sys_BloodType",
-    "sys_0_1",
-    "sys_patientstate",
     "sys_DonationCategory",
-    "sys_Kinship",
-    "sys_Infectious",
-    "sys_bloodtype_rhd",
-    "sys_InfoSources",
-    "sys_OtherCases",
-    "sys_DonationStatus",
-    "sys_DiseaseType",
-    "sys_SelfWill",
-    "sys_FamilyRelation",
     "sys_donornode"
   ],
   data() {
     return {
-      tempRecordState: null,
-      approvalState: false,
-      countyname: "",
-      cuuntry: "",
-      organizationname: "",
       selecttime: "",
-
-      //鐪佸競鍖�
-      //榛樿鍊艰缃紝鍙负绌�
-      searchAddress: {
-        sheng: "",
-        shi: "",
-        qu: "",
-        organizationname: null
+      residenceAddresss: { sheng: "灞变笢鐪�", shi: "", qu: "" },
+      registerAddresss: { sheng: "灞变笢鐪�", shi: "", qu: "" },
+      modalTitles: {
+        terminate: "缁堟鎹愮尞杩涚▼",
+        restore: "鎭㈠鎹愮尞杩涚▼"
       },
-      residenceAddresss: {
-        sheng: "娴欐睙鐪�",
-        shi: "",
-        qu: ""
-      },
-      registerAddresss: {
-        sheng: "娴欐睙鐪�",
-        shi: "",
-        qu: ""
-      },
-      terminationCaselist: [
-        { name: "缁堟鐘舵��", value: 1 },
-        { name: "姝e父鐘舵��", value: 0 }
-      ],
-      // 閬僵灞�
       loading: true,
-      // 瀵煎嚭閬僵灞�
       exportLoading: false,
-      // 閫変腑鏁扮粍
+      editModalVisible: false,
+      currentEditData: {},
       ids: [],
-      // 闈炲崟涓鐢�
       single: true,
-      // 闈炲涓鐢�
       multiple: true,
-      // 鏄剧ず鎼滅储鏉′欢
       showSearch: true,
-      // 鎬绘潯鏁�
       total: 0,
-      // 鎹愮尞鍩虹琛ㄦ牸鏁版嵁
       donatebaseinfoList: [],
-      // 寮瑰嚭灞傛爣棰�
       title: "",
-      // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
-      // 鑾峰彇缁勭粐鍚嶇О鏃堕棿鑼冨洿
-      daterangeReporttime: [],
-      //鐢ㄦ埛淇℃伅
       currentuser: {},
-
-      // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        donorno: null,
-        recordstate: null,
-        // treatmenthospitalno: null,
-        treatmenthospitalname: null,
         name: null,
-        residenceprovince: null,
-        residencecity: null,
-        residencetown: null,
+        treatmenthospitalno: null,
         starttime: null,
-        endtime: null,
-        city: null,
-        reportno: null
-        // organizationname: null,
-        // organizationtype: null,
-        // idcardno: null,
-        // reporterno: null,
-        // reporttime: null,
+        endtime: null
       },
-      // 琛ㄥ崟鍙傛暟
       form: {
-        id: null,
         name: null,
         sex: null,
         idcardtype: null,
         idcardno: null,
         age: null,
-        ageunit: null,
+        andAge: "",
+        ageunit: "骞�",
+        age2: null,
+        ageunit2: "鏈�",
         birthday: null,
-        phone: null,
-        residenceaddress: null,
         nationality: "涓浗",
-        nativeplace: null,
-        residenceprovince: null,
-        nation: null,
-        residenceprovincename: null,
-        occupation: null,
-        residencecity: null,
-        education: null,
-        residencecityname: null,
-        residencetown: null,
-        residencetownname: null,
-        residencecommunity: null,
-        residencecommunityname: null,
-        residencecountycode: null,
-        residencecountyname: null,
-        registeraddress: null,
-        registerprovince: null,
-        registerprovincename: null,
-        registercity: null,
-        registercityname: null,
-        registertown: null,
-        registertownname: null,
-        registercommunity: null,
-        registercommunityname: null,
-        registercountycode: null,
-        registercountyname: null,
-        recordstate: null,
-        treatmenthospitalno: null,
-        treatmenthospitalname: null,
-        treatmentdeptname: null,
-        diagnosisno: null,
-        diagnosisname: null,
         bloodtype: "0",
-        inpatientno: null,
         rhyin: "0",
-        donorno: null,
-        donationcategory: null,
-        illnessoverview: null,
         diseasetype: [],
         infectious: [],
         selfwill: [],
-        diseasetypeOther: null,
         othercases: [],
-        kinshipwill: 0,
         infosources: [],
         kinship: [],
-        redorganno: null,
-        redorganname: null,
-        contactperson: null,
-        infectiousOther: null,
-        contactnumber: null,
-        contacttime: null,
-        reporterno: null,
-        reportername: null,
         patientstate: [],
-        reporterphone: null,
-        infosourcesOther: null,
-        reporttime: null,
-        delFlag: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
-        kinshipOther: null,
-        majorrelatives: null,
-        familyrelations: null,
         acquisitiontissueno: "ZJOPO",
-        acquisitiontissuename: "娴欐睙鐪佷汉浣撳櫒瀹樿幏鍙栫粍缁�"
+        acquisitiontissuename: "闈掑矝浜轰綋鍣ㄥ畼鑾峰彇缁勭粐"
       },
-      //ads
       reporters: [],
       users: [],
-
-      // 琛ㄥ崟鏍¢獙
       rules: {
         name: [
           { required: true, message: "璇疯緭鍏ユ崘鐚�呭鍚�", trigger: "blur" }
@@ -1127,794 +345,349 @@
         birthday: [
           { required: true, message: "璇烽�夋嫨鍑虹敓鏃ユ湡", trigger: "blur" }
         ],
-        idcardtype: [
-          { required: true, message: "璇烽�夋嫨璇佷欢绫诲瀷", trigger: "blur" }
-        ],
-        residenceaddress: [
-          { required: true, message: "璇疯緭鍏ヤ綇鍧�", trigger: "blur" }
-        ],
-        contacttime: [
-          {
-            required: true,
-            message: "璇疯緭鍏ョ孩鍗佸瓧浼氳仈绯绘椂闂�",
-            trigger: "blur"
-          }
-        ],
-        idcardno: [
-          { required: true, message: "璇锋纭緭鍏ヨ瘉浠跺彿鐮�", trigger: "blur" }
-        ],
-        sex: [{ required: true, message: "鎬у埆涓嶈兘涓虹┖", trigger: "blur" }],
-        age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
         treatmenthospitalno: [
-          { required: true, message: "璇烽�夋嫨鍖荤枟鏈烘瀯", trigger: "blur" }
+          { required: true, message: "璇烽�夋嫨棣栬瘖鍖婚櫌", trigger: "blur" }
         ],
-        // treatmenthospitalno: [{ required: true, message: "璇烽�夋嫨鍖荤枟鏈烘瀯", trigger: "change" }],
         bloodtype: [
           { required: true, message: "璇烽�夋嫨ABO琛�鍨�", trigger: "blur" }
-        ],
-        rhyin: [{ required: true, message: "璇烽�夋嫨RHD琛�鍨�", trigger: "blur" }],
-        diseasetype: [
-          { required: true, message: "璇烽�夋嫨RHD琛�鍨�", trigger: "blur" }
-        ],
-
-        inpatientno: [
-          { required: true, message: "杈撳叆浣忛櫌鍙�", trigger: "blur" }
-        ],
-
-        diagnosisname: [
-          { required: true, message: "鐤剧梾璇婃柇涓嶈兘涓虹┖", trigger: "blur" }
-        ],
-        infoname: [
-          { required: true, message: "璇疯緭鍏ヤ俊鎭憳濮撳悕", trigger: "blur" }
-        ],
-        infophone: [
-          { required: true, message: "璇疯緭鍏ヤ俊鎭憳鑱旂郴鐢佃瘽", trigger: "blur" }
-        ],
-        redorganno: [
-          { required: true, message: "璇烽�夋嫨绾㈠崄瀛椾細鏈烘瀯", trigger: "blur" }
-        ],
-        contactperson: [
-          {
-            required: true,
-            message: "绾㈠崄瀛椾細鑱旂郴浜轰笉鑳戒负绌�",
-            trigger: "blur"
-          }
-        ],
-        // contactnumber: [{required: true,message: "璇疯緭鍏ョ孩鍗佸瓧浼氳仈绯荤數璇�",trigger: "change"}],
-        acquisitiontissueno: [
-          { required: true, message: "鍣ㄥ畼鑾峰彇缁勭粐涓嶈兘涓虹┖", trigger: "blur" }
-        ],
-        reporterno: [
-          { required: true, message: "璇烽�夋嫨鎶ュ憡浜�", trigger: "blur" }
-        ],
-        reporttime: [
-          { required: true, message: "璇疯緭鍏ユ姤鍛婃椂闂�", trigger: "blur" }
-        ],
-        reporterphone: [
-          { required: true, message: "璇疯緭鍏ユ姤鍛婁汉鑱旂郴鐢佃瘽", trigger: "blur" }
         ]
       },
-      //鏄惁鏄剧ず淇濆瓨鎸夐挳
       showSaveBtn: true,
-      showTerminationBtn: false,
-      //娴佺▼鍚嶇О
-      flowname: "娼滃湪鎹愮尞鐧昏",
-      annexno: "PotentialDonationRegistration",
-      starttime: "",
-      endtime: "",
-      reportlist: [],
-      reportervalue: "",
-      headers: {
-        Authorization: "Bearer " + getToken()
-      },
-      provinceData: [
-        { label: "鍏ㄩ儴", value: "" },
-        { label: "鏉窞甯�", value: "1" },
-        { label: "瀹佹尝甯�", value: "2" },
-        { label: "娓╁窞甯�", value: "3" },
-        { label: "鍢夊叴甯�", value: "4" },
-        { label: "婀栧窞甯�", value: "5" },
-        { label: "缁嶅叴甯�", value: "6" },
-        { label: "閲戝崕甯�", value: "7" },
-        { label: "琛㈠窞甯�", value: "8" },
-        { label: "鑸熷北甯�", value: "9" },
-        { label: "鍙板窞甯�", value: "A" },
-        { label: "涓芥按甯�", value: "B" }
-      ]
+      currentRecord: {},
+      modalVisible: {}
     };
   },
   created() {
-    if (sessionStorage.getItem("donatebaseinfo")) {
-      this.queryParams = JSON.parse(sessionStorage.getItem("donatebaseinfo"));
-      console.log(this.queryParams, "queryParams");
+    const savedParams = sessionStorage.getItem("donatebaseinfo");
+    if (savedParams) {
+      this.queryParams = { ...this.queryParams, ...JSON.parse(savedParams) };
     }
   },
+  async mounted() {
+    await Promise.all([
+      this.getCurrentUser(),
+      this.getuserlist(),
+      this.selectReporters()
+    ]);
 
-  mounted(e) {
-    // let idd = this.$route.query.userid
-    // console.log('chuanzhi',idd);
-
-    this.getCurrentUser();
-    this.getuserlist();
-    this.selectReporters();
-
-    this.LoadReportList();
-
-    if (this.$route.params.starttime != null && this.$route.params.endtime) {
-      this.selecttime = [
-        this.$moment(this.$route.params.starttime).format("YYYY-MM-DD"),
-        this.$moment(this.$route.params.endtime).format("YYYY-MM-DD")
-      ];
-    }
-    if (this.$route.params.reporterno != "") {
-      this.reporterno = this.$route.params.reporterno;
-    }
-    if (
-      this.$route.params.tempRecordState != "" &&
-      this.$route.params.tempRecordState != undefined
-    ) {
-      this.queryParams.recordstate = "" + this.$route.params.tempRecordState;
-    }
-    if (this.$route.params.reporterno != "") {
-      this.reportervalue = this.$route.params.reporterno;
-    }
-    if (!this.$route.params.shen != "") {
-      this.searchAddress.sheng = this.$route.params.shen;
-      if (!this.$route.params.shi != "") {
-        this.searchAddress.shi = this.$route.params.shi;
-      }
-      if (!this.$route.params.qu) {
-        this.searchAddress.qu = this.$route.params.qu;
-      }
-    }
-
-    if (this.$route.params.city != "") {
-      this.queryParams.city = this.$route.params.city;
-    } else {
-      this.queryParams.city = "";
-    }
-
+    this.initializeRouteParams();
     this.getTimeList();
-
     this.getList();
   },
-
   methods: {
-    getCurrentUser() {
-      getUserProfile().then(response => {
-        this.currentuser = response.data;
-      });
+    async getCurrentUser() {
+      const response = await getUserProfile();
+      this.currentuser = response.data;
     },
 
-    LoadReportList() {
-      listDonatebaseinfo().then(res => {
-        let list = res.rows;
-        let reportlist = [];
-        reportlist.push({ reporterno: "", reportername: "鍏ㄩ儴" });
-        list.forEach(element => {
-          reportlist.push({
-            reporterno: element.reporterno,
-            reportername: element.reportername
-          });
-        });
-
-        if (reportlist != 0) {
-          reportlist = this.resetArr(reportlist);
-          this.reportlist = reportlist;
-        }
-      });
-    },
-
-    resetArr(Arr) {
-      var hash = {};
-      Arr = Arr.reduce(function(arr, current) {
-        hash[current.reporterno]
-          ? ""
-          : (hash[current.reporterno] = true && arr.push(current));
-        return arr;
-      }, []);
-      return Arr;
-    },
-
-    getTimeList(e) {
-      console.log(this.selecttime);
-      if (this.selecttime != null) {
-        if (this.selecttime != 0) {
-          this.endtime = this.selecttime[1];
-          this.starttime = this.selecttime[0];
-          // if (this.endtime == this.starttime) {
-          let num = Number(this.endtime.slice(5, 7));
-          if (num < 9) {
-            let mon = Number(this.endtime.slice(6, 7));
-            this.endtime =
-              this.endtime.slice(0, 5) +
-              "0" +
-              (mon + 1) +
-              "-" +
-              "01" +
-              " " +
-              "00" +
-              ":" +
-              "00" +
-              ":" +
-              "00";
-          }
-          // this.endtime=this.endtime.slice(0,5)骞�
-          else if (num >= 10) {
-            this.endtime =
-              this.endtime.slice(0, 5) +
-              (num + 1) +
-              "-" +
-              "01" +
-              " " +
-              "00" +
-              ":" +
-              "00" +
-              ":" +
-              "00";
-          } else {
-            this.endtime =
-              this.endtime.slice(0, 5) +
-              "10" +
-              "-" +
-              "01" +
-              " " +
-              "00" +
-              ":" +
-              "00" +
-              ":" +
-              "00";
-          }
-          this.starttime =
-            this.starttime + " " + "00" + ":" + "00" + ":" + "00";
-          // }
-        } else {
-          this.starttime = "1998-01-01 00:00:00";
-          this.endtime = "2998-01-01 00:00:00";
-        }
-      } else {
-        this.starttime = "1998-01-01 00:00:00";
-        this.endtime = "2998-01-01 00:00:00";
+    calculateAge(birthday) {
+      if (!birthday) {
+        this.form.age = this.form.age2 = null;
+        return;
       }
+
+      const birthDate = new Date(birthday);
+      const today = new Date();
+
+      let yearDiff = today.getFullYear() - birthDate.getFullYear();
+      let monthDiff = today.getMonth() - birthDate.getMonth();
+      let dayDiff = today.getDate() - birthDate.getDate();
+
+      if (dayDiff < 0) {
+        monthDiff--;
+        const lastDayOfMonth = new Date(
+          today.getFullYear(),
+          today.getMonth(),
+          0
+        ).getDate();
+        dayDiff += lastDayOfMonth;
+      }
+
+      if (monthDiff < 0) {
+        yearDiff--;
+        monthDiff += 12;
+      }
+
+      this.form.age = yearDiff;
+      this.form.ageunit = "宀�";
+      this.form.age2 = monthDiff;
+      this.form.ageunit2 = "鏈�";
+
+      if (yearDiff === 0) {
+        if (monthDiff === 0) {
+          this.form.age = dayDiff;
+          this.form.ageunit = "澶�";
+          this.form.age2 = null;
+        } else {
+          this.form.age = monthDiff;
+          this.form.ageunit = "鏈�";
+          this.form.age2 = dayDiff;
+          this.form.ageunit2 = "澶�";
+        }
+      }
+
+      this.form.andAge = [
+        this.form.age && this.form.age !== 0
+          ? `${this.form.age}${this.form.ageunit}`
+          : "",
+        this.form.age2 && this.form.age2 !== 0
+          ? `${this.form.age2}${this.form.ageunit2}`
+          : ""
+      ]
+        .filter(Boolean)
+        .join(" ");
     },
 
-    selectReporters() {
-      //涓撹亴浜哄憳
-      listReportname("zzry").then(res => {
-        this.reporters = res.data;
-      });
+    handleTerminate(row) {
+      this.currentRecord = { ...row };
+      this.modalVisible = { ...this.modalVisible, terminate: true };
     },
 
-    getuserlist() {
-      //鐢ㄦ埛鍒楄〃
-      listUser().then(res => {
-        this.users = res.data;
-      });
+    handleRestore(row) {
+      this.currentRecord = { ...row };
+      this.modalVisible = { ...this.modalVisible, restore: true };
     },
 
-    handleapproval(row) {
-      this.$confirm("鏄惁纭灏嗘渚嬩笂鎶ュ鏍革紵", "鎻愮ず", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          row.recordstate = 1;
-          updateDonatebaseinfo(row).then(response => {
-            this.$modal.msgSuccess("涓婃姤瀹℃牳鎴愬姛");
-            this.getList();
-          });
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "宸插彇娑堜笂鎶�"
-          });
-        });
+    getTimeList() {
+      if (!this.selecttime) {
+        // this.queryParams.starttime = "1998-01-01 00:00:00";
+        // this.queryParams.endtime = "2998-01-01 00:00:00";
+        return;
+      }
+
+      const [start, end] = this.selecttime;
+      this.queryParams.starttime = `${start} 00:00:00`;
+
+      const monthNum = Number(end.slice(5, 7));
+      const nextMonth = monthNum < 9 ? `0${monthNum + 1}` : monthNum + 1;
+      this.queryParams.endtime = `${end.slice(0, 5)}${nextMonth}-01 00:00:00`;
     },
-    resetapproval(row) {
-      this.approvalState = false;
-      //  this.reset();
-      // const id = row.id || this.ids;
-      updateDonatebaseinfo(row).then(response => {
-        row.recordstate = 0;
-      });
+
+    async selectReporters() {
+      const res = await listReportname("zzry");
+      this.reporters = res.data;
+    },
+
+    async getuserlist() {
+      const res = await listUser();
+      this.users = res.data;
     },
 
     updateMessage() {
-      try {
-        const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
-        if (reg.test(this.form.idcardno)) {
-          // 韬唤璇佸彿鐮佹槸鍚﹀悎娉�
-          var org_birthday = this.form.idcardno.substring(6, 14);
-          var org_gender = this.form.idcardno.substring(16, 17);
-          var sex = org_gender % 2 == 1 ? 1 : 2;
-          var birthday =
-            org_birthday.substring(0, 4) +
-            "-" +
-            org_birthday.substring(4, 6) +
-            "-" +
-            org_birthday.substring(6, 8);
-          var birthdays = new Date(birthday.replace(/-/g, "/"));
-          let d = new Date();
-          let age =
-            d.getFullYear() -
-            birthdays.getFullYear() -
-            (d.getMonth() < birthdays.getMonth() ||
-            (d.getMonth() == birthdays.getMonth() &&
-              d.getDate() < birthdays.getDate())
-              ? 1
-              : 0);
-          // 璧嬪�肩粰琛ㄦ牸
-          this.form.sex = sex;
-          this.form.birthday = birthday;
-          this.form.age = age;
-        } else {
-        }
-      } catch {}
-    },
-    // sheng: '娴欐睙鐪�',
-    //   shi: '',
-    //   qu: '',
+      const idCardReg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
 
-    // 韬唤璇侀獙璇�
-    //鏍规嵁韬唤璇佸彿鑷姩鐢熸垚鎬у埆銆佸嚭鐢熸棩鏈熷拰骞撮緞
-    inputChange() {
-      const idCard = this.props.form.getFieldValue("idCard");
-      let birthday = "";
-      let sex = "0";
-      if (idCard.length === 15) {
-        birthday = `19${idCard.substring(6, 8)}-${idCard.substring(
-          9,
-          10
-        )}-${idCard.substring(11, 12)}`;
-        sex = idCard[14] % 2 === 0 ? "0" : "1";
-      } else {
-        birthday = `${idCard.substring(6, 10)}-${idCard.substring(
-          11,
-          12
-        )}-${idCard.substring(13, 14)}`;
-        sex = idCard[16] % 2 === 0 ? "0" : "1";
+      if (idCardReg.test(this.form.idcardno)) {
+        const orgBirthday = this.form.idcardno.substring(6, 14);
+        const orgGender = this.form.idcardno.substring(16, 17);
+
+        const sex = orgGender % 2 == 1 ? 1 : 2;
+        const birthday = `${orgBirthday.substring(
+          0,
+          4
+        )}-${orgBirthday.substring(4, 6)}-${orgBirthday.substring(6, 8)}`;
+
+        this.form.sex = sex;
+        this.form.birthday = birthday;
+        this.calculateAge(birthday);
       }
-      this.setState({
-        birthday,
-        sex
-      });
     },
 
-    /** 鏌ヨ鎹愮尞鍩虹鍒楄〃 */
-    getList() {
+    initializeRouteParams() {
+      const { params } = this.$route;
+      const routeParams = {
+        starttime: params.starttime,
+        endtime: params.endtime,
+        reporterno: params.reporterno,
+        terminationcase: params.terminationcase,
+        tempRecordState: params.tempRecordState,
+        city: params.city
+      };
+
+      Object.entries(routeParams).forEach(([key, value]) => {
+        if (value) this.queryParams[key] = value;
+      });
+
+      if (params.starttime && params.endtime) {
+        this.selecttime = [
+          this.$moment(params.starttime).format("YYYY-MM-DD"),
+          this.$moment(params.endtime).format("YYYY-MM-DD")
+        ];
+      }
+    },
+
+    async getList() {
       this.loading = true;
-      this.queryParams.params = {};
-      sessionStorage.removeItem("donatebaseinfo");
+
       sessionStorage.setItem(
         "donatebaseinfo",
         JSON.stringify(this.queryParams)
       );
-      // 璺宠浆鏃剁殑榛樿杩涘害
 
-      if (this.reportervalue != "") {
-        this.queryParams.reportno = this.reportervalue;
-      }
-
-      if (this.starttime != "") {
-        this.queryParams.starttime = this.starttime;
-      } else {
-        this.queryParams.starttime = "";
-      }
-      if (this.endtime != "") {
-        this.queryParams.endtime = this.endtime;
-      } else {
-        this.queryParams.endtime = "";
-      }
-      this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng();
-      this.queryParams.residencecity = this.$refs.areaSelect.getShi();
-      this.queryParams.residencetown = this.$refs.areaSelect.getQu();
-      console.log(this.queryParams);
-
-      listDonatebaseinfo(this.queryParams).then(response => {
-        this.donatebaseinfoList = response.rows;
-        //console.log("listDonatebaseinfo", response.rows);
+      try {
+        const response = await listDonatebaseinfo(this.queryParams);
+        this.donatebaseinfoList = response.data;
         this.total = response.total;
+      } catch (error) {
+        console.error("鑾峰彇鍒楄〃澶辫触:", error);
+      } finally {
         this.loading = false;
-      });
+      }
     },
-    // 鍙栨秷鎸夐挳
+    /** 鎵撳紑缂栬緫寮圭獥 */
+    handleOpenEdit(row) {
+      this.currentEditData = { ...row };
+      console.log(this.currentEditData, "this.currentEditData");
+      this.editModalVisible = true;
+    },
+
+    /** 澶勭悊缂栬緫鎴愬姛 */
+    handleEditSuccess(updatedData) {
+      this.$modal.msgSuccess("缂栬緫鎴愬姛");
+      this.getList(); // 鍒锋柊鍒楄〃
+    },
+
+    /** 澶勭悊缂栬緫寮圭獥鍏抽棴 */
+    handleEditClosed() {
+      this.currentEditData = {};
+    },
+
+    handleModalVisibleChange(newVisible) {
+      this.modalVisible = { ...newVisible };
+    },
+
+    handleOperationSuccess({ type, record }) {
+      console.log(`${type}鎿嶄綔鎴愬姛:`, record);
+      this.getList();
+    },
+
     cancel() {
       this.open = false;
       this.reset();
     },
-    // 琛ㄥ崟閲嶇疆
+
     reset() {
       this.form = {
-        id: null,
         name: null,
-        sex: null,
-        idcardtype: null,
-        idcardno: null,
-        age: null,
-        ageunit: null,
-        birthday: null,
-        phone: null,
-        residenceaddress: null,
-        nationality: "涓浗",
-        nativeplace: null,
-        residenceprovince: null,
-        nation: null,
-        residenceprovincename: null,
-        occupation: null,
-        residencecity: null,
-        education: null,
-        residencecityname: null,
-        residencetown: null,
-        residencetownname: null,
-        residencecommunity: null,
-        residencecommunityname: null,
-        residencecountycode: null,
-        residencecountyname: null,
-        registeraddress: null,
-        registerprovince: null,
-        registerprovincename: null,
-        registercity: null,
-        registercityname: null,
-        registertown: null,
-        registertownname: null,
-        registercommunity: null,
-        registercommunityname: null,
-        registercountycode: null,
-        registercountyname: null,
-        recordstate: null,
-        treatmenthospitalno: null,
-        treatmenthospitalname: null,
-        treatmentdeptname: null,
-        diagnosisno: null,
-        diagnosisname: null,
-        bloodtype: "0",
-        inpatientno: null,
-        rhyin: 0,
-        donorno: null,
-        donationcategory: null,
-        illnessoverview: null,
-        diseasetype: [],
-        infectious: [],
-        selfwill: [],
-        diseasetypeOther: null,
-        othercases: [],
-        kinshipwill: 0,
-        infosources: [],
-        kinship: [],
-        redorganno: null,
-        redorganname: null,
-        contactperson: null,
-        infectiousOther: null,
-        contactnumber: null,
-        contacttime: null,
-        reporterno: null,
-        reportername: null,
-        patientstate: [],
-        reporterphone: null,
-        infosourcesOther: null,
-        reporttime: null,
-        delFlag: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
-        kinshipOther: null,
-        majorrelatives: null,
-        familyrelations: null,
-        acquisitiontissueno: "ZJOPO",
-        acquisitiontissuename: "娴欐睙鐪佷汉浣撳櫒瀹樿幏鍙栫粍缁�"
+        sex: null
+        // ... 淇濈暀蹇呰鐨勫瓧娈靛垵濮嬪��
       };
-
       this.resetForm("form");
     },
-    /** 鎼滅储鎸夐挳鎿嶄綔 */
+
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.getList();
     },
-    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+
     resetQuery() {
-      this.daterangeReporttime = [];
-
-      this.reportervalue = "";
-
       this.queryParams = {
-        doname: null,
         pageNum: 1,
         pageSize: 10,
         name: null,
-        idcardno: null,
-        residenceprovince: null,
-        residencecity: null,
-        residencetown: null,
-        // "2"
-        recordstate: null,
-        treatmenthospitalname: null,
-        donorno: null,
-        acquisitiontissueno: null,
-        reportername: null,
-        reporttime: null,
-        city: null,
-        treatmenthospitalno: null
+        treatmenthospitalno: null,
+        starttime: null,
+        endtime: null
       };
       this.selecttime = [];
       this.getTimeList();
-      this.searchAddress = {
-        sheng: "",
-        shi: "",
-        qu: "",
-        organizationname: null
-      };
-      //this.$refs.areaSelect.clean();
-
       this.resetForm("queryForm");
       this.handleQuery();
     },
-    // 澶氶�夋閫変腑鏁版嵁
+
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
-    /** 鏂板鎸夐挳鎿嶄綔 */
+
     handleAdd() {
-      // this.$router.push({
-      //   path: "/organ/donationdetails/",
-      //   query: {
-      //     organType: "add",
-      //   }
-      // });
       this.reset();
-      //璁剧疆鎶ュ憡浜哄拰閮ㄩ棬/缁�
       this.form.reporterno = this.currentuser.userName;
       this.form.reportername = this.currentuser.nickName;
-      this.form.deptid = this.currentuser.deptid;
-
-      this.showSaveBtn = true;
-      //this.$refs.annex.getAnnexList();
       this.open = true;
-      // this.$nextTick(function() {
-      //   this.$refs.annex.getAnnexList();
-      // });
-
       this.title = "浜轰綋鍣ㄥ畼娼滃湪鎹愮尞鑰呯櫥璁拌〃";
     },
-    /** 淇敼鎸夐挳鎿嶄綔 */
 
     handleUpdate(row) {
       this.$router.push({
-        path: "/organ/donationdetails/",
-        query: {
-          id: row.id,
-          organType: "edit"
+        path: "/case/course",
+        query: { id: row.id, organType: "edit" }
+      });
+    },
+
+    async submitForm() {
+      const valid = await this.$refs.form.validate();
+      if (!valid) return;
+
+      const formData = { ...this.form };
+
+      // 澶勭悊琛ㄥ崟鏁版嵁
+      const processedData = this.processFormData(formData);
+
+      try {
+        const res = await addDonatebaseinfo(processedData);
+        if (res.code === 200) {
+          this.$modal.msgSuccess("鏂板鎴愬姛");
+          this.$router.push({
+            path: "/organ/donationdetails/",
+            query: { id: res.data.id, organType: "edit" }
+          });
+          this.open = false;
+        } else {
+          this.$modal.msgError("鏂板澶辫触锛�" + res.msg);
+        }
+      } catch (error) {
+        this.$modal.msgError("鎿嶄綔澶辫触");
+      }
+    },
+
+    processFormData(data) {
+      const processed = { ...data };
+
+      // 澶勭悊鏁扮粍瀛楁
+      const arrayFields = [
+        "diseasetype",
+        "infectious",
+        "selfwill",
+        "othercases",
+        "infosources",
+        "kinship",
+        "patientstate"
+      ];
+      arrayFields.forEach(field => {
+        if (Array.isArray(processed[field])) {
+          processed[field] = processed[field].join(",");
         }
       });
-      // this.showSaveBtn = true;
-      // const id = row.id || this.ids;
-      // //this.$refs.annex.getAnnexList();
 
-      // getDonatebaseinfo(id).then((response) => {
-      //   this.reset();
+      // 澶勭悊鏃ユ湡瀛楁
+      if (processed.birthday) {
+        processed.birthday = this.$moment(processed.birthday).format(
+          "YYYY-MM-DD HH:mm:ss"
+        );
+      }
 
-      //   this.$nextTick(function () {
-      //     this.$refs.annex.getAnnexList();
-      //   });
-      //   this.form = response.data;
-      //   response.data.sex = parseInt(response.data.sex);
-      //   this.form.id = response.data.id;
-      //   this.form.diseasetype = this.form.diseasetype.split(",");
-      //   this.form.infectious = this.form.infectious.split(",");
-      //   this.form.selfwill = this.form.selfwill.split(",");
-      //   this.form.othercases = this.form.othercases.split(",");
-      //   this.form.infosources = this.form.infosources.split(",");
-      //   this.form.kinship = this.form.kinship.split(",");
-      //   this.form.patientstate = this.form.patientstate.split(",");
-      //   this.open = true;
-      //   this.title = "浜轰綋鍣ㄥ畼娼滃湪鎹愮尞鑰呯櫥璁拌〃";
-      //   this.registerAddresss.sheng = response.data.registerprovincename;
-      //   this.residenceAddresss.sheng = response.data.residenceprovincename;
-      //   this.registerAddresss.shi = response.data.registercityname;
-      //   this.residenceAddresss.shi = response.data.residencecityname;
-      //   this.residenceAddresss.qu = response.data.residencetownname;
-      //   this.registerAddresss.qu = response.data.registertownname;
-      // });
+      processed.donatetime = processed.reporttime;
+      processed.workflow = 0;
+      processed.recordstate = 0;
+
+      return processed;
     },
-    // 缁堟妗堜緥
-    handletermination(row) {
-      this.reset();
-      this.showSaveBtn = false;
-      this.showTerminationBtn = true;
-      const id = row.id || this.ids;
-      getDonatebaseinfo(id).then(response => {
-        this.form = response.data;
 
-        this.form.diseasetype = this.form.diseasetype.split(",");
-        this.form.infectious = this.form.infectious.split(",");
-        this.form.selfwill = this.form.selfwill.split(",");
-        this.form.othercases = this.form.othercases.split(",");
-        this.form.infosources = this.form.infosources.split(",");
-        this.form.kinship = this.form.kinship.split(",");
-        this.form.patientstate = this.form.patientstate.split(",");
-        this.registerAddresss.sheng = response.data.registerprovincename;
-        this.residenceAddresss.sheng = response.data.residenceprovincename;
-        this.registerAddresss.shi = response.data.registercityname;
-        this.residenceAddresss.shi = response.data.residencecityname;
-        this.residenceAddresss.qu = response.data.residencetownname;
-        this.registerAddresss.qu = response.data.registertownname;
-        this.open = true;
-        this.title = "浜轰綋鍣ㄥ畼娼滃湪鎹愮尞鑰呯櫥璁拌〃";
-        this.form.recordstate = 99;
-        // this.$nextTick(function() {
-        //   this.$refs.annex.getAnnexList();
-        // });
-      });
-    },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm() {
-      console.log(this.form);
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          const date = { ...this.form };
-          console.log(date, "date");
-          this.form.birthday = this.$moment(this.form.birthday).format(
-            "YYYY-MM-DD HH:mm:ss"
-          );
-          this.form.diseasetype = this.form.diseasetype.join(",");
-          this.form.infectious = this.form.infectious.join(",");
-          this.form.selfwill = this.form.selfwill.join(",");
-          this.form.othercases = this.form.othercases.join(",");
-          this.form.infosources = this.form.infosources.join(",");
-          this.form.kinship = this.form.kinship.join(",");
-          this.form.patientstate = this.form.patientstate.join(",");
-          this.form.registerprovince = this.$refs.registerSelect.getSheng();
-          this.form.registerprovincename = this.registerAddresss.sheng;
+    async handleExport() {
+      try {
+        await this.$modal.confirm("鏄惁纭瀵煎嚭鎵�鏈夋崘鐚熀纭�鏁版嵁椤癸紵");
+        this.exportLoading = true;
 
-          this.form.residenceprovince = this.$refs.residenceSelect.getSheng();
-          this.form.residenceprovincename = this.residenceAddresss.sheng;
-
-          this.form.registercity = this.$refs.registerSelect.getShi();
-          this.form.registercityname = this.registerAddresss.shi;
-
-          this.form.residencecity = this.$refs.residenceSelect.getShi();
-          this.form.residencecityname = this.residenceAddresss.shi;
-
-          this.form.residencetown = this.$refs.residenceSelect.getQu();
-          this.form.residencetownname = this.residenceAddresss.qu;
-
-          this.form.registertown = this.$refs.registerSelect.getQu();
-          this.form.registertownname = this.registerAddresss.qu;
-
-          this.form.reportername = this.$refs.getReportname.$data.selectedLabel;
-          this.form.donatetime = this.form.reporttime;
-
-          try {
-            this.form.treatmenthospitalname = this.$refs.addOrgSelect.getOptionByValue(
-              this.form.treatmenthospitalno
-            ).organizationname;
-          } catch {
-            this.form.treatmenthospitalname = this.form.treatmenthospitalno;
-          }
-
-          try {
-            this.form.redorganname = this.$refs.addCrossOrgSelect.getOptionByValue(
-              this.form.redorganno
-            ).organizationname;
-          } catch {
-            this.form.redorganname = this.form.redorganno;
-          }
-
-          this.form.workflow = 0;
-          this.form.recordstate = 0;
-          addDonatebaseinfo(this.form).then(res => {
-            console.log("22");
-            console.log(res.code);
-            if (res.code == 200) {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.$router.push({
-                path: "/organ/donationdetails/",
-                query: {
-                  id: res.data.id,
-                  organType: "edit"
-                }
-              });
-              this.open = false;
-            } else {
-              console.log("1");
-              this.form = date;
-              console.log(this.form, "form");
-              this.$modal.msgError("鏂板澶辫触锛�" + res.msg);
-            }
-          });
+        const response = await exportDonatebaseinfo(this.queryParams);
+        this.$download.name(response.msg);
+      } catch (error) {
+        if (error !== "cancel") {
+          this.$modal.msgError("瀵煎嚭澶辫触");
         }
-      });
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal
-        .confirm('鏄惁纭鍒犻櫎鎹愮尞鍩虹缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�')
-        .then(function() {
-          return delDonatebaseinfo(ids);
-        })
-        .then(() => {
-          this.getList();
-          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        })
-        .catch(() => {});
-    },
-
-    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
-    handleExport() {
-      const queryParams = this.queryParams;
-      this.$modal
-        .confirm("鏄惁纭瀵煎嚭鎵�鏈夋崘鐚熀纭�鏁版嵁椤癸紵")
-        .then(() => {
-          this.exportLoading = true;
-          return exportDonatebaseinfo(queryParams);
-        })
-        .then(response => {
-          this.$download.name(response.msg);
-          this.exportLoading = false;
-        })
-        .catch(() => {});
-    },
-
-    // 瀵硅薄杞垚鎸囧畾瀛楃涓插垎闅�
-    listToString(list, separator) {
-      let strs = "";
-      separator = separator || ",";
-      for (let i in list) {
-        strs += list[i] + separator;
+      } finally {
+        this.exportLoading = false;
       }
-      return strs != "" ? strs.substr(0, strs.length - 1) : "";
-    },
-    //瀛楃涓叉牴鎹寚瀹氬瓧绗︿覆鍒嗛殧
-    stringToList(str, separator) {
-      separator = separator || ",";
-      let tempList = [];
-      if (str != null && str != undefined && str != "") {
-        tempList = str.split(separator);
-      }
-      return tempList;
-    },
-
-    //涓嬭浇娼滃湪鐧昏琛�
-    handledownload(row) {
-      const id = row.id || this.ids;
-
-      downloadbaseinfo(id).then(res => {
-        var fileUrl = res;
-        //鑾峰彇褰撳墠缃戝潃
-        var urlBase = process.env.VUE_APP_BASE_API;
-        var curWWWPath = window.document.location.href;
-        var pos = curWWWPath.indexOf(window.document.location.pathname);
-        // 鍒涘缓a鏍囩
-        var aEle = document.createElement("a");
-        aEle.href =
-          curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"];
-        console.log(aEle.href);
-        // 娣诲姞Authorization澶撮儴
-        fetch(aEle.href, {
-          headers: this.headers
-        })
-          .then(response => {
-            // 灏嗘枃浠朵笅杞介摼鎺ヤ綔涓篵lob瀵硅薄杩涜涓嬭浇
-            return response.blob();
-          })
-          .then(blob => {
-            const url = window.URL.createObjectURL(new Blob([blob]));
-            console.log(url);
-            const link = document.createElement("a");
-            link.href = url;
-            const name = fileUrl["downloadName"];
-            link.setAttribute("download", name); // 鏇挎崲file.pdf涓哄疄闄呯殑鏂囦欢鍚�
-            document.body.appendChild(link);
-            link.click();
-            link.parentNode.removeChild(link);
-          });
-      });
     }
   }
 };
@@ -1926,4 +699,10 @@
   margin: auto !important;
   padding-bottom: 0px !important;
 }
+::v-deep .el-input.is-disabled .el-input__inner {
+  background-color: #fff;
+  border-color: #dfe4ed;
+  color: #000;
+  cursor: not-allowed;
+}
 </style>

--
Gitblit v1.9.3