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 | 1822 +++++++++++++++++----------------------------------------
 1 files changed, 557 insertions(+), 1,265 deletions(-)

diff --git a/src/views/project/donatebaseinfo/index.vue b/src/views/project/donatebaseinfo/index.vue
index 6475659..6c29d1c 100644
--- a/src/views/project/donatebaseinfo/index.vue
+++ b/src/views/project/donatebaseinfo/index.vue
@@ -1,1409 +1,695 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      :inline="true"
+      v-show="showSearch"
+      label-width="70px"
+    >
       <el-row :gutter="8">
-        <el-col :span="6">
-          <el-form-item label="濮撳悕" prop="name">
-            <el-input v-model="queryParams.name" placeholder="璇疯緭鍏ュ鍚�" clearable size="small"
-              @keyup.enter.native="handleQuery" />
+        <el-col :span="5">
+          <el-form-item label="鎮h�呭鍚�" prop="name">
+            <el-input
+              v-model="queryParams.name"
+              placeholder="璇疯緭鍏ュ鍚�"
+              clearable
+              size="small"
+              @keyup.enter.native="handleQuery"
+            />
           </el-form-item>
         </el-col>
-        <el-col :span="6">
-          <el-form-item align="left" label="鍖荤枟鏈烘瀯" prop="treatmenthospitalname">
-            <org-selecter ref="orgSelecter" :org-type="'3'" v-model="queryParams.treatmenthospitalno"
-              @keyup.enter.native="handleQuery" />
+        <el-col :span="5">
+          <el-form-item label="棣栬瘖鍖婚櫌" prop="treatmenthospitalname">
+            <org-selecter
+              ref="orgSelecter"
+              :org-type="'3'"
+              v-model="queryParams.treatmenthospitalno"
+            />
           </el-form-item>
         </el-col>
-        <el-col :span="6">
-          <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="6">
-          <el-form-item label="鎹愮尞杩涘害" prop="recordstate">
-            <el-select v-model="queryParams.recordstate" placeholder="璇烽�夋嫨褰撳墠杩涘害" clearable size="small">
-              <el-option v-for="dict in dict.type.sys_DonationStatus" :key="dict.value" :label="dict.label"
-                :value="dict.value" />
-            </el-select>
+        <el-col :span="9">
+          <el-form-item label="涓婃姤鏃堕棿">
+            <el-date-picker
+              style="width: 100%"
+              v-model="selecttime"
+              type="monthrange"
+              range-separator="鑷�"
+              start-placeholder="寮�濮嬫湀浠�"
+              end-placeholder="缁撴潫鏈堜唤"
+              value-format="yyyy-MM-dd"
+              @change="getTimeList"
+            />
           </el-form-item>
         </el-col>
       </el-row>
-      <el-row :gutter="8">
-        <el-col :span="6">
-          <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="12">
-          <el-form-item label="鎶ュ憡鏃ユ湡">
-            <el-date-picker style="width: 100%" v-model="selecttime" type="monthrange" range-separator="鑷�"
-              start-placeholder="寮�濮嬫湀浠�" end-placeholder="缁撴潫鏈堜唤" value-format="yyyy-MM-dd" @change="getTimeList">
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-      </el-row>
-
       <el-row>
-        <el-col :span="14">
-          <el-form-item label="绫嶈疮">
-            <div>
-              <li_area_select ref="areaSelect" v-model="searchAddress"></li_area_select>
-            </div>
-          </el-form-item>
-        </el-col>
-
         <el-col :span="4">
           <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="handleQuery"
+            >
+              鎼滅储
+            </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 type="warning" plain icon="el-icon-download" size="mini" :loading="exportLoading" @click="handleExport"
-          v-hasPermi="['project:donatebaseinfo:export']">瀵煎嚭</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          :loading="exportLoading"
+          @click="handleExport"
+          v-hasPermi="['project:donatebaseinfo:export']"
+        >
+          瀵煎嚭
+        </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" @selection-change="handleSelectionChange" border
-      :default-sort="{ prop: 'reporttime', 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" prop="reporttime" width="100">
+    <!-- 鏁版嵁琛ㄦ牸 -->
+    <el-table
+      v-loading="loading"
+      :data="donatebaseinfoList"
+      @selection-change="handleSelectionChange"
+      border
+      :default-sort="{ prop: 'donatetime', order: 'descending' }"
+    >
+      <el-table-column
+        label="妗堜緥鏃堕棿"
+        align="center"
+        prop="donatetime"
+        width="100"
+      >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.reporttime, "{y}-{m}-{d}") }}</span>
+          <span>{{ parseTime(scope.row.donatetime, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
-
+      <el-table-column
+        label="妗堜緥缂栧彿"
+        align="center"
+        prop="caseNo"
+        width="200"
+      />
       <el-table-column label="濮撳悕" align="center" prop="name" width="100" />
-
       <el-table-column label="鎬у埆" align="center" prop="sex" width="100">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_user_sex" :value="parseInt(scope.row.sex)" />
+          <dict-tag
+            :options="dict.type.sys_user_sex"
+            :value="parseInt(scope.row.sex)"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="骞撮緞" align="center" prop="age" width="100" />
-      <el-table-column label="鐜版墍鍦ㄥ湴甯�" align="center" prop="registercityname" width="150" />
-
-      <el-table-column label="鍖荤枟鏈烘瀯" align="center" prop="treatmenthospitalname" />
-      <el-table-column label="鎶ュ憡浜�" align="center" prop="reportername" width="100" />
-
-      <el-table-column label="鎹愮尞杩涘害" align="center" prop="recordstate" width="120">
+      <el-table-column label="骞撮緞" align="center" prop="age" width="100">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_DonationStatus" :value="scope.row.recordstate" />
+          {{
+            `${
+              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="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="200" fixed="right">
+      <el-table-column
+        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">
-          <el-button size="mini" type="text" 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 size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
-            v-hasPermi="['project:donatebaseinfo:edit']">缁堟</el-button>
-          <el-button size="mini" type="text" icon="el-icon-refrigerator" @click="handledownload(scope.row)">涓嬭浇</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>
-          <!-- 鎾ら攢鐢宠 -->
+          <dict-tag
+            :options="dict.type.sys_BloodType"
+            :value="scope.row.bloodtype"
+          />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="鎹愮尞绫诲埆"
+        align="center"
+        prop="donationcategory"
+        width="150"
+      >
+        <template slot-scope="scope">
+          <dict-tag
+            :options="dict.type.sys_DonationCategory"
+            :value="scope.row.donationcategory"
+          />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="鎶ュ憡浜�"
+        align="center"
+        prop="reportername"
+        width="100"
+      />
+      <el-table-column
+        label="鎹愮尞杩涘害"
+        align="center"
+        prop="workflow"
+        width="120"
+      >
+        <template slot-scope="scope">
+          <div v-if="!scope.row.terminationCase">
+            <dict-tag
+              :options="dict.type.sys_donornode"
+              :value="scope.row.workflow"
+            />
+          </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"
+      >
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['project:donatebaseinfo:edit']"
+          >
+            璇︽儏
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleOpenEdit(scope.row)"
+            v-hasPermi="['project:donatebaseinfo:edit']"
+            >缂栬緫</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" :page.sync="queryParams.pageNum" :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="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="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-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="nationality">
-                <el-input v-model="form.nationality" placeholder="璇疯緭鍏ュ浗绫�" />
-              </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-row>
-
-          <el-row>
-            <el-col :span="6">
-              <el-form-item label="骞撮緞" prop="age">
-                <el-input v-model="form.age" placeholder="璇疯緭鍏ュ勾榫�" />
-              </el-form-item>
-            </el-col>
-            <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="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>
+    <!-- 鍒嗛〉 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+    <!-- 妗堜緥缂栬緫寮圭獥 -->
+    <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>
-<style scoped></style>
 <script>
 import { getUserProfile } from "@/api/system/user";
+import TerminateRestoreModal from "@/components/TerminateRestoreModal";
+import EditCaseModal from "./EditCaseModal";
 import {
   listDonatebaseinfo,
-  getDonatebaseinfo,
-  delDonatebaseinfo,
   addDonatebaseinfo,
-  updateDonatebaseinfo,
-  exportDonatebaseinfo,
-  downloadbaseinfo,
-  getdonatorno,
-  // exportProvincemessage,
+  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 {
-  listOrganization,
-  getOrganization,
-  listReportname,
-  listUser,
-} from "@/api/project/organization";
-import ReportName from "@/views/project/components/organizationUser";
+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: "",
-      },
-      // 閬僵灞�
       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: {},
-      //ads
-      reporters: [],
-      users: [],
-
-      // 琛ㄥ崟鏍¢獙
-      rules: {
-        name: [
-          { 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" },
-        ],
-        // 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: "",
-      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" },
-      ],
-    };
-  },
-  created() { },
-
-  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)
-          .add(-1, "month")
-          .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.getTimeList();
-
-    this.getList();
-  },
-
-  methods: {
-    getCurrentUser() {
-      getUserProfile().then((response) => {
-        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";
-      }
-    },
-
-    selectReporters() {
-      //涓撹亴浜哄憳
-      listReportname("zzry").then((res) => {
-        this.reporters = res.data;
-      });
-    },
-
-    getuserlist() {
-      //鐢ㄦ埛鍒楄〃
-      listUser().then((res) => {
-        this.users = res.data;
-      });
-    },
-
-    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: "宸插彇娑堜笂鎶�",
-          });
-        });
-    },
-    resetapproval(row) {
-      this.approvalState = false;
-      //  this.reset();
-      // const id = row.id || this.ids;
-      updateDonatebaseinfo(row).then((response) => {
-        row.recordstate = 0;
-      });
-    },
-
-    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: '',
-
-    // 韬唤璇侀獙璇�
-    //鏍规嵁韬唤璇佸彿鑷姩鐢熸垚鎬у埆銆佸嚭鐢熸棩鏈熷拰骞撮緞
-    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";
-      }
-      this.setState({
-        birthday,
-        sex,
-      });
-    },
-
-    /** 鏌ヨ鎹愮尞鍩虹鍒楄〃 */
-    getList(e) {
-      this.loading = true;
-      this.queryParams.params = {};
-      // if (null != this.daterangeReporttime && "" != this.daterangeReporttime) {
-      //   this.queryParams.params["beginReporttime"] =
-      //     this.daterangeReporttime[0];
-      //   this.queryParams.params["endReporttime"] = this.daterangeReporttime[1];
-      // }
-      // 璺宠浆鏃剁殑榛樿杩涘害
-      if (e != null && e != undefined && !isNaN(e)) {
-        this.queryParams.recordstate = e;
-      }
-
-      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();
-      listDonatebaseinfo(this.queryParams).then((response) => {
-        this.donatebaseinfoList = response.rows;
-        //console.log("listDonatebaseinfo", response.rows);
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 鍙栨秷鎸夐挳
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 琛ㄥ崟閲嶇疆
-    reset() {
-      this.form = {
-        id: null,
+      form: {
         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,
+        rhyin: "0",
         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: "闈掑矝浜轰綋鍣ㄥ畼鑾峰彇缁勭粐"
+      },
+      reporters: [],
+      users: [],
+      rules: {
+        name: [
+          { required: true, message: "璇疯緭鍏ユ崘鐚�呭鍚�", trigger: "blur" }
+        ],
+        birthday: [
+          { required: true, message: "璇烽�夋嫨鍑虹敓鏃ユ湡", trigger: "blur" }
+        ],
+        treatmenthospitalno: [
+          { required: true, message: "璇烽�夋嫨棣栬瘖鍖婚櫌", trigger: "blur" }
+        ],
+        bloodtype: [
+          { required: true, message: "璇烽�夋嫨ABO琛�鍨�", trigger: "blur" }
+        ]
+      },
+      showSaveBtn: true,
+      currentRecord: {},
+      modalVisible: {}
+    };
+  },
+  created() {
+    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()
+    ]);
+
+    this.initializeRouteParams();
+    this.getTimeList();
+    this.getList();
+  },
+  methods: {
+    async getCurrentUser() {
+      const response = await getUserProfile();
+      this.currentuser = response.data;
+    },
+
+    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(" ");
+    },
+
+    handleTerminate(row) {
+      this.currentRecord = { ...row };
+      this.modalVisible = { ...this.modalVisible, terminate: true };
+    },
+
+    handleRestore(row) {
+      this.currentRecord = { ...row };
+      this.modalVisible = { ...this.modalVisible, restore: true };
+    },
+
+    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`;
+    },
+
+    async selectReporters() {
+      const res = await listReportname("zzry");
+      this.reporters = res.data;
+    },
+
+    async getuserlist() {
+      const res = await listUser();
+      this.users = res.data;
+    },
+
+    updateMessage() {
+      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]$/;
+
+      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);
+      }
+    },
+
+    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;
+
+      sessionStorage.setItem(
+        "donatebaseinfo",
+        JSON.stringify(this.queryParams)
+      );
+
+      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 = {
+        name: null,
+        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,
+        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.ids = selection.map(item => item.id);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
-    /** 鏂板鎸夐挳鎿嶄綔 */
+
     handleAdd() {
       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.showSaveBtn = true;
-      const id = row.id || this.ids;
-      //this.$refs.annex.getAnnexList();
-
-      getDonatebaseinfo(id).then((response) => {
-        this.reset();
-
-        this.$nextTick(function () {
-          this.$refs.annex.getAnnexList();
-        });
-        this.form = response.data;
-        response.data.sex = parseInt(response.data.sex);
-        debugger;
-        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;
+      this.$router.push({
+        path: "/case/course",
+        query: { id: row.id, organType: "edit" }
       });
     },
 
-    handletermination(row) {
-      this.reset();
-      this.showSaveBtn = false;
-      this.showTerminationBtn = true;
-      const id = row.id || this.ids;
-      getDonatebaseinfo(id).then((response) => {
-        this.form = response.data;
+    async submitForm() {
+      const valid = await this.$refs.form.validate();
+      if (!valid) return;
 
-        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();
-        });
-      });
+      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("鎿嶄綔澶辫触");
+      }
     },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm() {
-      this.$refs["form"].validate((valid) => {
-        console.log("鎻愪氦鐨勬暟鎹滑锛�", this.form);
-        if (valid) {
-          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;
 
-          this.form.residenceprovince = this.$refs.residenceSelect.getSheng();
-          this.form.residenceprovincename = this.residenceAddresss.sheng;
+    processFormData(data) {
+      const processed = { ...data };
 
-          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;
-
-          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;
-          }
-
-          //灏濊瘯鐢熸垚鎹愮尞缂栧彿锛堝凡缁忕敱addDonatebaseinfo鎺ュ彛涓敓鎴愬彇浠o級
-          // getdonatorno(this.form).then((response) => {
-          //   // alert(JSON.stringify(response));
-          //   this.reset();
-          // });
-
-          if (this.form.id != null) {
-            updateDonatebaseinfo(this.form).then((response) => {
-              this.$modal.msgSuccess("淇敼鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            this.form.recordstate = 0;
-            addDonatebaseinfo(this.form).then((response) => {
-              if (response.code == 200) {
-                this.$modal.msgSuccess("鏂板鎴愬姛");
-                this.open = false;
-                this.getList();
-              } else {
-                this.$modal.msgError("鏂板澶辫触锛�" + response.msg);
-              }
-            });
-          }
+      // 澶勭悊鏁扮粍瀛楁
+      const arrayFields = [
+        "diseasetype",
+        "infectious",
+        "selfwill",
+        "othercases",
+        "infosources",
+        "kinship",
+        "patientstate"
+      ];
+      arrayFields.forEach(field => {
+        if (Array.isArray(processed[field])) {
+          processed[field] = processed[field].join(",");
         }
       });
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    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;
+      // 澶勭悊鏃ユ湡瀛楁
+      if (processed.birthday) {
+        processed.birthday = this.$moment(processed.birthday).format(
+          "YYYY-MM-DD HH:mm:ss"
+        );
       }
-      return strs != "" ? strs.substr(0, strs.length - 1) : "";
+
+      processed.donatetime = processed.reporttime;
+      processed.workflow = 0;
+      processed.recordstate = 0;
+
+      return processed;
     },
-    //瀛楃涓叉牴鎹寚瀹氬瓧绗︿覆鍒嗛殧
-    stringToList(str, separator) {
-      separator = separator || ",";
-      let tempList = [];
-      if (str != null && str != undefined && str != "") {
-        tempList = str.split(separator);
+
+    async handleExport() {
+      try {
+        await this.$modal.confirm("鏄惁纭瀵煎嚭鎵�鏈夋崘鐚熀纭�鏁版嵁椤癸紵");
+        this.exportLoading = true;
+
+        const response = await exportDonatebaseinfo(this.queryParams);
+        this.$download.name(response.msg);
+      } catch (error) {
+        if (error !== "cancel") {
+          this.$modal.msgError("瀵煎嚭澶辫触");
+        }
+      } finally {
+        this.exportLoading = false;
       }
-      return tempList;
-    },
-
-    //涓嬭浇娼滃湪鐧昏琛�
-    handledownload(row) {
-      const id = row.id || this.ids;
-
-      downloadbaseinfo(id).then((response) => {
-        var fileUrl = response;
-        //鑾峰彇褰撳墠缃戝潃
-        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"];
-        aEle.click();
-      });
-    },
-  },
+    }
+  }
 };
 </script>
 
@@ -1413,4 +699,10 @@
   margin: auto !important;
   padding-bottom: 0px !important;
 }
-</style>
\ No newline at end of file
+::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