From a9d2b856e0f6be6475319c2dc36bf405c2f908fc Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 22 九月 2026 14:04:52 +0800
Subject: [PATCH] 测试完成

---
 src/views/patient/archives/maternalHealth/detail.vue |  726 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 490 insertions(+), 236 deletions(-)

diff --git a/src/views/patient/archives/maternalHealth/detail.vue b/src/views/patient/archives/maternalHealth/detail.vue
index 6d723e9..4d0d7db 100644
--- a/src/views/patient/archives/maternalHealth/detail.vue
+++ b/src/views/patient/archives/maternalHealth/detail.vue
@@ -3,253 +3,359 @@
     <template v-if="archive">
       <div class="action-bar">
         <el-button @click="$router.go(-1)" icon="el-icon-back">杩斿洖</el-button>
-        <el-button :type="editing ? 'success' : 'primary'" :icon="editing ? 'el-icon-check' : 'el-icon-edit'" @click="toggleEdit">{{ editing ? '淇濆瓨' : '缂栬緫' }}</el-button>
-        <el-tag :type="archive.subType === 'pregnancy' ? 'success' : 'warning'" style="margin-left:12px">{{ archive.subTypeLabel }}</el-tag>
+        <el-button :type="editing ? 'success' : 'primary'" :icon="editing ? 'el-icon-check' : 'el-icon-edit'" @click="toggleEdit">
+          {{ editing ? '淇濆瓨' : '缂栬緫' }}
+        </el-button>
+        <el-button v-if="archive.closeStatus != 1" type="danger" plain icon="el-icon-circle-close" @click="handleCloseCase">缁撴</el-button>
+        <el-tag :type="archive.closeStatus == 1 ? 'info' : 'success'" style="margin-left:12px">
+          {{ archive.closeStatus == 1 ? '宸茬粨妗�' : '鏈粨妗�' }}
+        </el-tag>
+        <el-tag :type="archive.subType === 'pregnancy' ? 'success' : 'warning'" style="margin-left:8px">{{ archive.subTypeLabel }}</el-tag>
       </div>
 
-      <!-- 鎮h�呭熀鏈俊鎭� -->
-      <el-card class="info-card" shadow="never">
-        <div slot="header" class="card-header"><span>鎮h�呭熀鏈俊鎭�</span></div>
-        <el-row :gutter="20">
-          <el-col :span="6"><InfoField label="濮撳悕" :value="archive.patname" /></el-col>
-          <el-col :span="6"><InfoField label="鎬у埆" :value="archive.sex == 1 ? '鐢�' : '濂�'" /></el-col>
-          <el-col :span="6"><InfoField label="骞撮緞" :value="archive.age" /></el-col>
-          <el-col :span="6"><InfoField label="鐢佃瘽" :value="archive.telcode" /></el-col>
-        </el-row>
-        <el-row :gutter="20" style="margin-top:10px">
-          <el-col :span="6"><InfoField label="绉戝" :value="archive.deptname" /></el-col>
-          <el-col :span="6"><InfoField label="璇婃柇" :value="archive.diagname" /></el-col>
-          <el-col :span="6"><InfoField label="涓绘不鍖荤敓" :value="archive.drname" /></el-col>
-          <el-col :span="6"><InfoField label="鏉ユ簮" :value="sourceLabel" /></el-col>
-        </el-row>
-      </el-card>
+      <el-tabs v-model="mainTab" type="border-card">
+        <el-tab-pane label="妗f璇︽儏" name="detail">
+          <!-- 鎮h�呭熀鏈俊鎭� -->
+          <el-card class="info-card" shadow="never">
+            <div slot="header" class="card-header"><span>鎮h�呭熀鏈俊鎭�</span></div>
+            <el-row :gutter="20">
+              <el-col :span="6"><InfoField label="濮撳悕" :value="archive.patname" /></el-col>
+              <el-col :span="6"><InfoField label="鎬у埆" :value="archive.sex == 1 ? '鐢�' : '濂�'" /></el-col>
+              <el-col :span="6"><InfoField label="骞撮緞" :value="archive.age" /></el-col>
+              <el-col :span="6"><InfoField label="鑱旂郴鐢佃瘽" :value="archive.telcode" /></el-col>
+            </el-row>
+            <el-row :gutter="20" style="margin-top:10px">
+              <el-col :span="6"><InfoField label="绉戝" :value="archive.deptname" /></el-col>
+              <el-col :span="6"><InfoField label="璇婃柇" :value="archive.diagname" /></el-col>
+              <el-col :span="6"><InfoField label="鏉ユ簮" :value="sourceLabel" /></el-col>
+            </el-row>
+          </el-card>
 
-      <!-- 妗f鍩烘湰淇℃伅 -->
-      <el-card class="info-card" shadow="never" style="margin-top:14px">
-        <div slot="header" class="card-header">
-          <span>妗f鍩烘湰淇℃伅</span>
-          <span class="header-sub">{{ archive.createTime ? archive.createTime.substring(0,10) : '-' }} 寤烘。</span>
-        </div>
-        <el-row :gutter="20">
-          <el-col :span="8"><InfoField label="寤烘。绫诲瀷" :value="archive.subTypeLabel" /></el-col>
-          <el-col :span="8"><InfoField label="寤烘。鍖荤敓" :value="archive.archiveForm.doctorName" :editing="editing" v-model="archive.archiveForm.doctorName" /></el-col>
-          <el-col :span="8"><InfoField label="寤烘。鏃堕棿" :value="archive.createTime" /></el-col>
-        </el-row>
-        <!-- 瀛曞涓撳睘 -->
-        <el-row v-if="archive.subType === 'pregnancy'" :gutter="20" style="margin-top:10px">
-          <el-col :span="6"><InfoField label="瀛曞懆" :value="archive.archiveForm.gestationalWeek" :editing="editing" v-model="archive.archiveForm.gestationalWeek" type="number" /></el-col>
-          <el-col :span="6"><InfoField label="瀛曟/浜ф" :value="'G'+(archive.archiveForm.gravidity||1)+'P'+(archive.archiveForm.parity||0)" /></el-col>
-          <el-col :span="6"><InfoField label="棰勪骇鏈�" :value="archive.archiveForm.edd" /></el-col>
-          <el-col :span="6"><InfoField label="楂樺嵄濡婂" :value="archive.archiveForm.highRiskPregnancy ? '鏄�' : '鍚�'" /></el-col>
-        </el-row>
-        <el-row v-if="archive.subType === 'menopause'" :gutter="20" style="margin-top:10px">
-          <el-col :span="8"><InfoField label="鏈堢粡鐘舵��" :value="menstrualLabel" /></el-col>
-          <el-col :span="8"><InfoField label="鏈鏈堢粡" :value="archive.archiveForm.lmp" /></el-col>
-        </el-row>
-      </el-card>
-
-      <!-- ===== 瀛曞闅忚锛�3涓〃鍗� ===== -->
-      <template v-if="archive.subType === 'pregnancy'">
-        <el-card class="info-card" shadow="never" style="margin-top:14px">
-          <div slot="header" class="card-header"><span>瀛曞闅忚绠$悊</span></div>
-          <el-tabs v-model="activeTab" type="border-card">
-            <!-- 1. 瀛曞闅忚绯荤粺闂 -->
-            <el-tab-pane label="瀛曞闅忚绯荤粺闂" name="sysQ">
-              <el-form :model="form.pregSysQ" label-width="150px" size="small" :disabled="!editing">
+          <!-- ===== 瀛曞闅忚锛氭。妗堜俊鎭� + 棣栬瘖淇℃伅 + 濡婂鎯呭喌 鍚堝苟鍖哄潡 ===== -->
+          <el-card v-if="archive.subType === 'pregnancy'" class="info-card" shadow="never" style="margin-top:14px">
+            <div class="sub-section">
+              <div class="sub-title">妗f淇℃伅</div>
+              <el-form :model="archive" label-width="110px" size="small" :disabled="!editing">
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="濉啓鏃ユ湡"><el-date-picker v-model="form.pregSysQ.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="瀛曞懆"><el-input-number v-model="form.pregSysQ.gestWeek" :min="1" :max="42" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="韬唤璇佸彿"><el-input v-model="archive.idcardno" class="w-md" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鍑虹敓鏃ユ湡"><el-date-picker v-model="archive.birthday" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="璇婃柇鏃ユ湡"><el-date-picker v-model="archive.diagnosisDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
                 </el-row>
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="浣撻噸(kg)"><el-input-number v-model="form.pregSysQ.weight" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="琛�鍘�"><el-input v-model="form.pregSysQ.bloodPressure" placeholder="鏀剁缉鍘�/鑸掑紶鍘�" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="瀹珮(cm)"><el-input-number v-model="form.pregSysQ.fundalHeight" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="涓绘不鍖荤敓"><el-input v-model="archive.attendingDoctor" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="缁忕鍖荤敓"><el-input v-model="archive.managingDoctor" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鐧昏浜哄憳"><el-input v-model="archive.registrant" class="w-sm" /></el-form-item></el-col>
                 </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鑳庡績(娆�/鍒�)"><el-input-number v-model="form.pregSysQ.fetalHeart" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="姘磋偪"><el-select v-model="form.pregSysQ.edema" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="+" value="+" /><el-option label="++" value="++" /><el-option label="+++" value="+++" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="灏胯泲鐧�"><el-select v-model="form.pregSysQ.urineProtein" style="width:100%"><el-option label="-" value="-" /><el-option label="卤" value="卤" /><el-option label="+" value="+" /><el-option label="++" value="++" /></el-select></el-form-item></el-col>
-                </el-row>
-                <el-form-item label="鑷鐥囩姸"><el-input v-model="form.pregSysQ.symptoms" type="textarea" :rows="2" placeholder="澶存檿/鐪艰姳/鑳搁椃/鑵圭棝绛�" /></el-form-item>
-                <el-form-item label="澶勭悊鎰忚"><el-input v-model="form.pregSysQ.advice" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="涓嬫闅忚鏃ユ湡"><el-date-picker v-model="form.pregSysQ.nextVisit" value-format="yyyy-MM-dd" style="width:200px" /></el-form-item>
-                <el-form-item label="闅忚鍖荤敓"><el-input v-model="form.pregSysQ.doctor" style="width:200px" /></el-form-item>
               </el-form>
-            </el-tab-pane>
+            </div>
 
-            <!-- 2. 瀛曞棣栬瘖淇℃伅鐧昏琛� -->
-            <el-tab-pane label="涓芥按濡囧辜淇濆仴闄㈠瓡濡囬璇婁俊鎭櫥璁拌〃" name="firstVisit">
-              <el-form :model="form.pregFirst" label-width="160px" size="small" :disabled="!editing">
-                <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
+            <div class="sub-section">
+              <div class="sub-title">瀛曞棣栬瘖淇℃伅鐧昏</div>
+              <el-form :model="pregForm.firstVisit" label-width="120px" size="small" :disabled="!editing">
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="寤烘。鏃ユ湡"><el-date-picker v-model="form.pregFirst.regDate" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="涓堝か濮撳悕"><el-input v-model="form.pregFirst.husbandName" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="涓堝か鐢佃瘽"><el-input v-model="form.pregFirst.husbandPhone" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="灏辫瘖鍙�"><el-input v-model="pregForm.firstVisit.visitNo" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鏈汉鑱旂郴鏂瑰紡"><el-input v-model="pregForm.firstVisit.selfPhone" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鐥呭尯濮撳悕"><el-input v-model="pregForm.firstVisit.wardName" class="w-sm" /></el-form-item></el-col>
                 </el-row>
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鏈鏈堢粡"><el-date-picker v-model="form.pregFirst.lmp" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="棰勪骇鏈�"><el-date-picker v-model="form.pregFirst.edd" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="瀛曟/浜ф"><el-input v-model="form.pregFirst.gp" placeholder="G_P_" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鑱旂郴浜鸿仈绯绘柟寮�"><el-input v-model="pregForm.firstVisit.contactPhone" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="韬唤璇佸彿"><el-input v-model="pregForm.firstVisit.idcardno" class="w-md" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="棣栬瘖鍖荤敓"><el-input v-model="pregForm.firstVisit.firstDoctor" class="w-sm" /></el-form-item></el-col>
                 </el-row>
-                <el-divider content-position="left">鏃㈠線鍙�</el-divider>
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鍓栧浜у彶"><el-select v-model="form.pregFirst.csHistory" style="width:100%"><el-option label="鏃�" :value="0" /><el-option label="鏈�" :value="1" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="娴佷骇鍙�"><el-select v-model="form.pregFirst.abortionHistory" style="width:100%"><el-option label="鏃�" :value="0" /><el-option label="鏈�" :value="1" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="鐤剧梾鍙�"><el-input v-model="form.pregFirst.diseaseHistory" placeholder="楂樿鍘�/绯栧翱鐥�/鐢茬姸鑵虹瓑" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="璇婃柇鍚嶇О"><el-input v-model="pregForm.firstVisit.diagname" class="w-full" /></el-form-item></el-col>
+                  <el-col :span="16"><el-form-item label="灞呬綇鍦板潃"><el-input v-model="pregForm.firstVisit.address" class="w-full" /></el-form-item></el-col>
                 </el-row>
-                <el-divider content-position="left">鏈濡婂鎯呭喌</el-divider>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="韬珮(cm)"><el-input-number v-model="form.pregFirst.height" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="瀛曞墠浣撻噸(kg)"><el-input-number v-model="form.pregFirst.preWeight" :precision="1" /></el-form-item></el-col>
-                </el-row>
-                <el-form-item label="楂樺嵄鍥犵礌璇勪及"><el-input v-model="form.pregFirst.riskAssessment" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="寤哄唽鍖荤敓"><el-input v-model="form.pregFirst.doctor" style="width:200px" /></el-form-item>
               </el-form>
-            </el-tab-pane>
+            </div>
 
-            <!-- 3. 鏃╁瓡闅忚鐧昏琛� -->
-            <el-tab-pane label="涓芥按濡囧辜淇濆仴闄㈡棭瀛曢殢璁跨櫥璁拌〃" name="earlyFollow">
-              <el-form :model="form.pregEarly" label-width="150px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="闅忚鏃ユ湡"><el-date-picker v-model="form.pregEarly.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="瀛曞懆"><el-input-number v-model="form.pregEarly.gestWeek" :min="1" :max="14" /></el-form-item></el-col>
+            <div class="sub-section">
+              <div class="sub-title">濡婂鎯呭喌</div>
+              <el-form label-width="0" size="small" :disabled="!editing">
+                <el-row :gutter="24" class="preg-cascade">
+                  <el-col :span="8">
+                    <div class="cascade-col">
+                      <div class="cascade-label">濡婂鎯呭喌</div>
+                      <el-radio-group v-model="pregForm.pregnancy.status" @change="onPregnancyStatusChange">
+                        <el-radio v-for="(opt, key) in PREGNANCY_OPTIONS" :key="key" :label="key">{{ opt.label }}</el-radio>
+                      </el-radio-group>
+                    </div>
+                  </el-col>
+                  <el-col :span="8">
+                    <div class="cascade-col">
+                      <div class="cascade-label">鍏蜂綋鎯呭喌</div>
+                      <el-checkbox-group v-model="pregForm.pregnancy.details" :disabled="!pregForm.pregnancy.status">
+                        <el-checkbox v-for="d in pregnancySubOptions" :key="d" :label="d">{{ d }}</el-checkbox>
+                      </el-checkbox-group>
+                      <div v-if="!pregForm.pregnancy.status" class="cascade-empty">璇峰厛閫夋嫨濡婂鎯呭喌</div>
+                    </div>
+                  </el-col>
+                  <el-col :span="8">
+                    <div class="cascade-col">
+                      <div class="cascade-label">澶勭悊寤鸿</div>
+                      <el-checkbox-group v-model="pregForm.pregnancy.hint" :disabled="!pregForm.pregnancy.status">
+                        <el-checkbox v-for="h in pregnancyHintOptions" :key="h" :label="h">{{ h }}</el-checkbox>
+                      </el-checkbox-group>
+                      <div v-if="!pregForm.pregnancy.status" class="cascade-empty">璇峰厛閫夋嫨濡婂鎯呭喌</div>
+                    </div>
+                  </el-col>
                 </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鏃╁瓡鍙嶅簲"><el-select v-model="form.pregEarly.morningSickness" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="杞诲害" value="杞诲害" /><el-option label="涓害" value="涓害" /><el-option label="閲嶅害" value="閲嶅害" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="闃撮亾鍑鸿"><el-select v-model="form.pregEarly.bleeding" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="鏈�" value="鏈�" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="鑵圭棝"><el-select v-model="form.pregEarly.abdominalPain" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="鏈�" value="鏈�" /></el-select></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="琛�甯歌"><el-input v-model="form.pregEarly.bloodRoutine" placeholder="Hb/PLT绛�" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="灏垮父瑙�"><el-input v-model="form.pregEarly.urineRoutine" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="B瓒呮鏌�"><el-input v-model="form.pregEarly.ultrasound" placeholder="CRL/NT绛�" /></el-form-item></el-col>
-                </el-row>
-                <el-form-item label="鍙堕吀琛ュ厖"><el-select v-model="form.pregEarly.folicAcid" style="width:200px"><el-option label="瑙勫緥鏈嶇敤" value="瑙勫緥鏈嶇敤" /><el-option label="鍋跺皵鏈嶇敤" value="鍋跺皵鏈嶇敤" /><el-option label="鏈湇鐢�" value="鏈湇鐢�" /></el-select></el-form-item>
-                <el-form-item label="鎸囧鎰忚"><el-input v-model="form.pregEarly.advice" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="闅忚鍖荤敓"><el-input v-model="form.pregEarly.doctor" style="width:200px" /></el-form-item>
               </el-form>
-            </el-tab-pane>
-          </el-tabs>
-        </el-card>
-      </template>
+            </div>
+          </el-card>
 
-      <!-- ===== 鏇村勾鏈熼殢璁匡細6涓〃鍗� ===== -->
-      <template v-if="archive.subType === 'menopause'">
-        <el-card class="info-card" shadow="never" style="margin-top:14px">
-          <div slot="header" class="card-header"><span>鏇村勾鏈熼殢璁跨鐞�</span></div>
-          <el-tabs v-model="activeTab" type="border-card">
-            <!-- 1. 鏇村勾鏈熼殢璁跨郴缁熼棶棰樿〃 -->
-            <el-tab-pane label="鏇村勾鏈熼殢璁跨郴缁熼棶棰樿〃" name="sysQ">
-              <el-form :model="form.menoSysQ" label-width="150px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="濉啓鏃ユ湡"><el-date-picker v-model="form.menoSysQ.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="骞撮緞"><el-input-number v-model="form.menoSysQ.age" /></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鏈堢粡鎯呭喌"><el-input v-model="form.menoSysQ.menstruation" placeholder="鍛ㄦ湡/缁忔湡/缁忛噺" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="鏈鏈堢粡"><el-date-picker v-model="form.menoSysQ.lmp" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="缁濈粡骞撮緞"><el-input-number v-model="form.menoSysQ.menopauseAge" /></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="6"><el-form-item label="娼儹鍑烘睏"><el-select v-model="form.menoSysQ.hotFlash" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="澶辩湢"><el-select v-model="form.menoSysQ.insomnia" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="鎯呯华娉㈠姩"><el-select v-model="form.menoSysQ.mood" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="鐤蹭箯"><el-select v-model="form.menoSysQ.fatigue" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="6"><el-form-item label="鍏宠妭鐥�"><el-select v-model="form.menoSysQ.jointPain" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="蹇冩偢"><el-select v-model="form.menoSysQ.palpitation" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="闃撮亾骞叉订"><el-select v-model="form.menoSysQ.dryness" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                  <el-col :span="6"><el-form-item label="鎬ф鍑忛��"><el-select v-model="form.menoSysQ.libido" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
-                </el-row>
-                <el-form-item label="鍏朵粬鐥囩姸"><el-input v-model="form.menoSysQ.otherSymptoms" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="澶勭悊鎰忚"><el-input v-model="form.menoSysQ.advice" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="鍖荤敓"><el-input v-model="form.menoSysQ.doctor" style="width:200px" /></el-form-item>
-              </el-form>
-            </el-tab-pane>
+          <!-- 鏄惁寤哄唽锛堝瓡濡囬殢璁匡級 -->
+          <el-card v-if="archive.subType === 'pregnancy'" class="info-card" shadow="never" style="margin-top:14px">
+            <div slot="header" class="card-header"><span>鏄惁寤哄唽</span></div>
+            <el-form :model="pregForm.registration" label-width="120px" size="small" :disabled="!editing">
+              <el-row :gutter="20">
+                <el-col :span="8"><el-form-item label="鏄惁寤哄唽">
+                  <el-radio-group v-model="pregForm.registration.isRegistered">
+                    <el-radio label="鏄�">鏄�</el-radio><el-radio label="鍚�">鍚�</el-radio>
+                  </el-radio-group>
+                </el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="棰勪骇鏈�"><el-date-picker v-model="pregForm.registration.edd" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="璁板綍鑰�"><el-input v-model="pregForm.registration.recorder" class="w-sm" /></el-form-item></el-col>
+              </el-row>
+              <el-form-item v-if="pregForm.registration.isRegistered === '鍚�'" label="鏈缓妗e師鍥�">
+                <el-input v-model="pregForm.registration.unregisteredReason" type="textarea" :rows="2" class="w-lg" />
+              </el-form-item>
+            </el-form>
+          </el-card>
 
-            <!-- 2. MHT棣栬瘖鐥呭巻琛� -->
-            <el-tab-pane label="MHT棣栬瘖鐥呭巻琛�" name="mhtFirst">
-              <el-form :model="form.mhtFirst" label-width="160px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="灏辫瘖鏃ユ湡"><el-date-picker v-model="form.mhtFirst.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="涓昏瘔"><el-input v-model="form.mhtFirst.chiefComplaint" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="缁濈粡骞撮檺"><el-input-number v-model="form.mhtFirst.menopauseYears" :precision="1" /></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="韬珮(cm)"><el-input-number v-model="form.mhtFirst.height" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="浣撻噸(kg)"><el-input-number v-model="form.mhtFirst.weight" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="BMI"><el-input-number v-model="form.mhtFirst.bmi" :precision="1" disabled /></el-form-item></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="琛�鍘�"><el-input v-model="form.mhtFirst.bloodPressure" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="琛�绯�"><el-input-number v-model="form.mhtFirst.glucose" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="琛�鑴�"><el-input v-model="form.mhtFirst.lipid" placeholder="TC/TG/LDL/HDL" /></el-form-item></el-col>
-                </el-row>
-                <el-form-item label="鏃㈠線鍙�"><el-input v-model="form.mhtFirst.pastHistory" type="textarea" :rows="2" placeholder="楂樿鍘�/绯栧翱鐥�/琛�鏍�/涔宠吅鐧�/瀛愬鑲岀槫绛�" /></el-form-item>
-                <el-form-item label="濡囩妫�鏌�"><el-input v-model="form.mhtFirst.gynExam" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="涔宠吅妫�鏌�"><el-input v-model="form.mhtFirst.breastExam" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="杈呭姪妫�鏌�"><el-input v-model="form.mhtFirst.auxExam" type="textarea" :rows="2" placeholder="B瓒�/楠ㄥ瘑搴�/婵�绱犳按骞崇瓑" /></el-form-item>
-                <el-form-item label="MHT鏂规"><el-input v-model="form.mhtFirst.mhtPlan" type="textarea" :rows="2" placeholder="鑽墿鍚嶇О/鍓傞噺/鐢ㄦ硶/鐤楃▼" /></el-form-item>
-                <el-form-item label="鍖荤敓"><el-input v-model="form.mhtFirst.doctor" style="width:200px" /></el-form-item>
-              </el-form>
-            </el-tab-pane>
+          <!-- ===== 鍥寸粷缁忔湡MHI锛氭。妗堜俊鎭紙鍚殢璁垮懆鏈熸鏁帮級 ===== -->
+          <el-card v-if="archive.subType === 'menopause'" class="info-card" shadow="never" style="margin-top:14px">
+            <div slot="header" class="card-header">
+              <span>妗f淇℃伅</span>
+              <span class="header-sub">{{ archive.createTime ? archive.createTime.substring(0,10) : '-' }} 寤烘。</span>
+            </div>
+            <el-form :model="archive" label-width="110px" size="small" :disabled="!editing">
+              <el-row :gutter="20">
+                <el-col :span="8"><el-form-item label="韬唤璇佸彿"><el-input v-model="archive.idcardno" class="w-md" /></el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="鍑虹敓鏃ユ湡"><el-date-picker v-model="archive.birthday" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="璇婃柇鏃ユ湡"><el-date-picker v-model="archive.diagnosisDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="8"><el-form-item label="涓绘不鍖荤敓"><el-input v-model="archive.attendingDoctor" class="w-sm" /></el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="缁忕鍖荤敓"><el-input v-model="archive.managingDoctor" class="w-sm" /></el-form-item></el-col>
+                <el-col :span="8"><el-form-item label="鐧昏浜哄憳"><el-input v-model="archive.registrant" class="w-sm" /></el-form-item></el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="8"><el-form-item label="闅忚鍛ㄦ湡(娆℃暟)"><el-input v-model="archive.followupCycles" class="w-xs" /></el-form-item></el-col>
+              </el-row>
+            </el-form>
+          </el-card>
 
-            <!-- 3. MHT澶嶈瘖鐥呭巻琛� -->
-            <el-tab-pane label="MHT澶嶈瘖鐥呭巻琛�" name="mhtFollow">
-              <el-form :model="form.mhtFollow" label-width="160px" size="small" :disabled="!editing">
+          <!-- ===== 瀛曞闅忚锛氭棭瀛曢殢璁胯〃 + 璇勫垎琛紙閫変腑銆岀粡鍜ㄨ鎸囧鍚庣户缁濞犲苟鍦ㄤ骇绉戝缓妗c�嶅悗鍑虹幇锛� ===== -->
+          <template v-if="archive.subType === 'pregnancy' && showFollowUp">
+            <el-card class="info-card" shadow="never" style="margin-top:14px">
+              <div slot="header" class="card-header"><span>鏃╁瓡闅忚琛�</span></div>
+              <el-form :model="pregForm.earlyFollow" label-width="140px" size="small" :disabled="!editing">
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="澶嶈瘖鏃ユ湡"><el-date-picker v-model="form.mhtFollow.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="鐢ㄨ嵂渚濅粠鎬�"><el-select v-model="form.mhtFollow.compliance" style="width:100%"><el-option label="鑹ソ" value="鑹ソ" /><el-option label="涓�鑸�" value="涓�鑸�" /><el-option label="宸�" value="宸�" /></el-select></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="濮撳悕"><el-input v-model="pregForm.earlyFollow.name" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="骞撮緞"><el-input v-model="pregForm.earlyFollow.age" class="w-xs" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="灏辫瘖鍙�"><el-input v-model="pregForm.earlyFollow.visitNo" class="w-sm" /></el-form-item></el-col>
                 </el-row>
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="鐥囩姸鏀瑰杽"><el-select v-model="form.mhtFollow.symptomImprove" style="width:100%"><el-option label="鏄庢樉" value="鏄庢樉" /><el-option label="閮ㄥ垎" value="閮ㄥ垎" /><el-option label="鏃犲彉鍖�" value="鏃犲彉鍖�" /></el-select></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="涓嶈壇鍙嶅簲"><el-input v-model="form.mhtFollow.sideEffect" placeholder="濡備钩鎴胯儉鐥�/闃撮亾鍑鸿绛�" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="闃撮亾鍑鸿"><el-select v-model="form.mhtFollow.bleeding" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="鐐规淮" value="鐐规淮" /><el-option label="灏戦噺" value="灏戦噺" /><el-option label="涓噺" value="涓噺" /></el-select></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鑱旂郴鏂瑰紡(寰俊)"><el-input v-model="pregForm.earlyFollow.wechat" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="鎴风睄"><el-input v-model="pregForm.earlyFollow.household" class="w-sm" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="瀛曚骇鍙�"><el-input v-model="pregForm.earlyFollow.gravidaPara" placeholder="G_P_" class="w-xs" /></el-form-item></el-col>
                 </el-row>
                 <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="浣撻噸(kg)"><el-input-number v-model="form.mhtFollow.weight" :precision="1" /></el-form-item></el-col>
-                  <el-col :span="8"><el-form-item label="琛�鍘�"><el-input v-model="form.mhtFollow.bloodPressure" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="濠氬Щ鐘跺喌">
+                    <el-select v-model="pregForm.earlyFollow.maritalStatus" class="w-sm">
+                      <el-option label="鏈" value="鏈" /><el-option label="宸插" value="宸插" /><el-option label="涓嶈" value="涓嶈" />
+                    </el-select>
+                  </el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="寤鸿〃鏃ユ湡"><el-date-picker v-model="pregForm.earlyFollow.buildDate" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                  <el-col :span="8"><el-form-item label="棰勪骇鏈�"><el-date-picker v-model="pregForm.earlyFollow.edd" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
                 </el-row>
-                <el-form-item label="澶嶆煡缁撴灉"><el-input v-model="form.mhtFollow.reExamResult" type="textarea" :rows="2" placeholder="B瓒�/涔宠吅/婵�绱犵瓑妫�鏌ョ粨鏋�" /></el-form-item>
-                <el-form-item label="鏂规璋冩暣"><el-input v-model="form.mhtFollow.planAdjust" type="textarea" :rows="2" /></el-form-item>
-                <el-form-item label="涓嬫澶嶈瘖"><el-date-picker v-model="form.mhtFollow.nextVisit" value-format="yyyy-MM-dd" style="width:200px" /></el-form-item>
-                <el-form-item label="鍖荤敓"><el-input v-model="form.mhtFollow.doctor" style="width:200px" /></el-form-item>
+                <el-form-item label="璁″垝娴佷骇涓昏鍘熷洜(鍙閫�)">
+                  <el-checkbox-group v-model="pregForm.earlyFollow.abortionReasons">
+                    <el-checkbox label="宸叉湁澶氬" /><el-checkbox label="缁忔祹鍥犵礌" /><el-checkbox label="鑽墿鏆撮湶" />
+                    <el-checkbox label="鏈揪缁撳骞撮緞" /><el-checkbox label="韬綋鍥犵礌" /><el-checkbox label="瀹跺涵鏀寔涓嶈冻" />
+                    <el-checkbox label="鑷韩涓嶆効鐢熻偛" /><el-checkbox label="鍏朵粬" />
+                  </el-checkbox-group>
+                  <el-input v-if="pregForm.earlyFollow.abortionReasons.includes('鍏朵粬')" v-model="pregForm.earlyFollow.otherReason" placeholder="鍏朵粬鍘熷洜" class="w-md" style="margin-top:8px" />
+                </el-form-item>
+                <el-form-item label="缁х画濡婂">
+                  <el-radio-group v-model="pregForm.earlyFollow.continuePregnancy">
+                    <el-radio label="鏄�">鏄�</el-radio><el-radio label="鍚�">鍚�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-row :gutter="20">
+                  <el-col :span="16"><el-form-item label="鏃╁瓡寤哄唽鍗曚綅"><el-input v-model="pregForm.earlyFollow.registrationUnit" class="w-full" /></el-form-item></el-col>
+                </el-row>
               </el-form>
-            </el-tab-pane>
 
-            <!-- 4. 鏀硅壇Kupperman璇勫垎鏍囧噯琛� -->
-            <el-tab-pane label="鏀硅壇Kupperman璇勫垎鏍囧噯琛�" name="kupperman">
-              <el-form :model="form.kupperman" label-width="160px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.kupperman.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                </el-row>
-                <KuppermanScoreTable v-model="form.kupperman" :editing="editing" />
-              </el-form>
-            </el-tab-pane>
+              <div class="sub-section">
+                <div class="sub-title">杈呭鍐呭</div>
+                <el-table :data="pregForm.counseling" border size="small">
+                  <el-table-column label="杈呭娆℃暟" width="120" align="center">
+                    <template slot-scope="scope">{{ ['绗竴娆¤緟瀵�','绗簩娆¤緟瀵�','绗笁娆¤緟瀵�','绗洓娆¤緟瀵�'][scope.$index] }}</template>
+                  </el-table-column>
+                  <el-table-column label="杈呭鏃ユ湡" width="160" align="center">
+                    <template slot-scope="scope">
+                      <el-date-picker v-if="editing" v-model="scope.row.date" value-format="yyyy-MM-dd" size="small" style="width:100%" />
+                      <span v-else>{{ scope.row.date || '-' }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="杈呭鍐呭" align="center">
+                    <template slot-scope="scope">
+                      <el-input v-if="editing" v-model="scope.row.content" size="small" />
+                      <span v-else>{{ scope.row.content || '-' }}</span>
+                    </template>
+                  </el-table-column>
+                  <el-table-column label="杈呭浜哄憳" width="140" align="center">
+                    <template slot-scope="scope">
+                      <el-input v-if="editing" v-model="scope.row.person" size="small" />
+                      <span v-else>{{ scope.row.person || '-' }}</span>
+                    </template>
+                  </el-table-column>
+                </el-table>
+              </div>
 
-            <!-- 5. 鏇村勾鏈熻瘎鍒嗛噺琛�(MRS) -->
-            <el-tab-pane label="鏇村勾鏈熻瘎鍒嗛噺琛紙MRS锛�" name="mrs">
-              <el-form :model="form.mrs" label-width="160px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.mrs.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                </el-row>
-                <MRSScoreTable v-model="form.mrs" :editing="editing" />
-              </el-form>
-            </el-tab-pane>
+              <div class="sub-section">
+                <div class="sub-title">璇勫垎琛�</div>
+                <el-form :model="pregForm.score" label-width="140px" size="small" :disabled="!editing" inline>
+                  <el-form-item label="璇勫垎鎬诲垎"><el-input-number v-model="pregForm.score.total" :controls="false" style="width:140px" /></el-form-item>
+                  <el-form-item label="璇勪及缁撴灉"><el-input v-model="pregForm.score.result" class="w-lg" /></el-form-item>
+                </el-form>
+              </div>
+            </el-card>
 
-            <!-- 6. 鍖瑰吂鍫$潯鐪犺川閲忚瘎鍒嗛噺琛�(PSQI) -->
-            <el-tab-pane label="鍖瑰吂鍫$潯鐪犺川閲忚瘎鍒嗛噺琛紙PSQI锛�" name="psqi">
-              <el-form :model="form.psqi" label-width="160px" size="small" :disabled="!editing">
-                <el-row :gutter="20">
-                  <el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.psqi.date" value-format="yyyy-MM-dd" style="width:100%" /></el-form-item></el-col>
-                </el-row>
-                <PSQIScoreTable v-model="form.psqi" :editing="editing" />
-              </el-form>
-            </el-tab-pane>
-          </el-tabs>
-        </el-card>
-      </template>
+            <!-- 闅忚鍛ㄦ湡 -->
+            <el-card class="info-card" shadow="never" style="margin-top:14px">
+              <div slot="header" class="card-header"><span>闅忚鍛ㄦ湡</span></div>
+              <EditableTable :data.sync="pregForm.followupCycle" :editing="editing" :columns="followupColumns" />
+            </el-card>
+
+            <!-- 褰撳墠鎮h�呴殢璁胯褰曡〃 -->
+            <el-card class="info-card" shadow="never" style="margin-top:14px">
+              <div slot="header" class="card-header"><span>褰撳墠鎮h�呴殢璁胯褰曡〃</span></div>
+              <el-table :data="currentFollowRecords" border size="small">
+                <el-table-column type="index" label="搴忓彿" width="60" align="center" />
+                <el-table-column prop="planDate" label="鎷熼殢璁挎棩鏈�" width="130" align="center" />
+                <el-table-column prop="status" label="鐘跺喌" width="100" align="center" />
+                <el-table-column prop="method" label="闅忚鏂瑰紡" width="110" align="center" />
+                <el-table-column prop="situation" label="闅忚鎯呭喌" align="center" show-overflow-tooltip />
+                <el-table-column prop="followDate" label="闅忚鏃ユ湡" width="130" align="center" />
+                <el-table-column prop="staff" label="闅忚浜哄憳" width="110" align="center" />
+              </el-table>
+            </el-card>
+          </template>
+
+          <!-- ===== 鍥寸粷缁忔湡MHI锛�6 涓噺琛� tab ===== -->
+          <template v-if="archive.subType === 'menopause'">
+            <el-card class="info-card" shadow="never" style="margin-top:14px">
+              <div slot="header" class="card-header"><span>鍥寸粷缁忔湡MHI绠$悊</span></div>
+              <el-tabs v-model="activeTab" type="border-card">
+                <el-tab-pane label="鏇村勾鏈熼殢璁跨郴缁熼棶棰樿〃" name="sysQ">
+                  <el-form :model="form.menoSysQ" label-width="150px" size="small" :disabled="!editing">
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="濉啓鏃ユ湡"><el-date-picker v-model="form.menoSysQ.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="骞撮緞"><el-input-number v-model="form.menoSysQ.age" /></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="鏈堢粡鎯呭喌"><el-input v-model="form.menoSysQ.menstruation" placeholder="鍛ㄦ湡/缁忔湡/缁忛噺" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="鏈鏈堢粡"><el-date-picker v-model="form.menoSysQ.lmp" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="缁濈粡骞撮緞"><el-input-number v-model="form.menoSysQ.menopauseAge" /></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="6"><el-form-item label="娼儹鍑烘睏"><el-select v-model="form.menoSysQ.hotFlash" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="澶辩湢"><el-select v-model="form.menoSysQ.insomnia" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="鎯呯华娉㈠姩"><el-select v-model="form.menoSysQ.mood" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="鐤蹭箯"><el-select v-model="form.menoSysQ.fatigue" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="6"><el-form-item label="鍏宠妭鐥�"><el-select v-model="form.menoSysQ.jointPain" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="蹇冩偢"><el-select v-model="form.menoSysQ.palpitation" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="闃撮亾骞叉订"><el-select v-model="form.menoSysQ.dryness" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                      <el-col :span="6"><el-form-item label="鎬ф鍑忛��"><el-select v-model="form.menoSysQ.libido" style="width:100%"><el-option :value="0" label="鏃�" /><el-option :value="1" label="杞�" /><el-option :value="2" label="涓�" /><el-option :value="3" label="閲�" /></el-select></el-form-item></el-col>
+                    </el-row>
+                    <el-form-item label="鍏朵粬鐥囩姸"><el-input v-model="form.menoSysQ.otherSymptoms" type="textarea" :rows="2" /></el-form-item>
+                    <el-form-item label="澶勭悊鎰忚"><el-input v-model="form.menoSysQ.advice" type="textarea" :rows="2" /></el-form-item>
+                    <el-form-item label="鍖荤敓"><el-input v-model="form.menoSysQ.doctor" class="w-sm" /></el-form-item>
+                  </el-form>
+                </el-tab-pane>
+
+                <el-tab-pane label="MHT棣栬瘖鐥呭巻琛�" name="mhtFirst">
+                  <el-form :model="form.mhtFirst" label-width="160px" size="small" :disabled="!editing">
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="灏辫瘖鏃ユ湡"><el-date-picker v-model="form.mhtFirst.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="涓昏瘔"><el-input v-model="form.mhtFirst.chiefComplaint" class="w-sm" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="缁濈粡骞撮檺"><el-input-number v-model="form.mhtFirst.menopauseYears" :precision="1" /></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="韬珮(cm)"><el-input-number v-model="form.mhtFirst.height" :precision="1" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="浣撻噸(kg)"><el-input-number v-model="form.mhtFirst.weight" :precision="1" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="BMI"><el-input-number v-model="form.mhtFirst.bmi" :precision="1" disabled /></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="琛�鍘�"><el-input v-model="form.mhtFirst.bloodPressure" class="w-xs" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="琛�绯�"><el-input-number v-model="form.mhtFirst.glucose" :precision="1" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="琛�鑴�"><el-input v-model="form.mhtFirst.lipid" placeholder="TC/TG/LDL/HDL" class="w-md" /></el-form-item></el-col>
+                    </el-row>
+                    <el-form-item label="鏃㈠線鍙�"><el-input v-model="form.mhtFirst.pastHistory" type="textarea" :rows="2" placeholder="楂樿鍘�/绯栧翱鐥�/琛�鏍�/涔宠吅鐧�/瀛愬鑲岀槫绛�" /></el-form-item>
+                    <el-form-item label="濡囩妫�鏌�"><el-input v-model="form.mhtFirst.gynExam" type="textarea" :rows="2" /></el-form-item>
+                    <el-form-item label="涔宠吅妫�鏌�"><el-input v-model="form.mhtFirst.breastExam" type="textarea" :rows="2" /></el-form-item>
+                    <el-form-item label="杈呭姪妫�鏌�"><el-input v-model="form.mhtFirst.auxExam" type="textarea" :rows="2" placeholder="B瓒�/楠ㄥ瘑搴�/婵�绱犳按骞崇瓑" /></el-form-item>
+                    <el-form-item label="MHT鏂规"><el-input v-model="form.mhtFirst.mhtPlan" type="textarea" :rows="2" placeholder="鑽墿鍚嶇О/鍓傞噺/鐢ㄦ硶/鐤楃▼" /></el-form-item>
+                    <el-form-item label="鍖荤敓"><el-input v-model="form.mhtFirst.doctor" class="w-sm" /></el-form-item>
+                  </el-form>
+                </el-tab-pane>
+
+                <el-tab-pane label="MHT澶嶈瘖鐥呭巻琛�" name="mhtFollow">
+                  <el-form :model="form.mhtFollow" label-width="160px" size="small" :disabled="!editing">
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="澶嶈瘖鏃ユ湡"><el-date-picker v-model="form.mhtFollow.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="鐢ㄨ嵂渚濅粠鎬�"><el-select v-model="form.mhtFollow.compliance" style="width:100%"><el-option label="鑹ソ" value="鑹ソ" /><el-option label="涓�鑸�" value="涓�鑸�" /><el-option label="宸�" value="宸�" /></el-select></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="鐥囩姸鏀瑰杽"><el-select v-model="form.mhtFollow.symptomImprove" style="width:100%"><el-option label="鏄庢樉" value="鏄庢樉" /><el-option label="閮ㄥ垎" value="閮ㄥ垎" /><el-option label="鏃犲彉鍖�" value="鏃犲彉鍖�" /></el-select></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="涓嶈壇鍙嶅簲"><el-input v-model="form.mhtFollow.sideEffect" placeholder="濡備钩鎴胯儉鐥�/闃撮亾鍑鸿绛�" class="w-md" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="闃撮亾鍑鸿"><el-select v-model="form.mhtFollow.bleeding" style="width:100%"><el-option label="鏃�" value="鏃�" /><el-option label="鐐规淮" value="鐐规淮" /><el-option label="灏戦噺" value="灏戦噺" /><el-option label="涓噺" value="涓噺" /></el-select></el-form-item></el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                      <el-col :span="8"><el-form-item label="浣撻噸(kg)"><el-input-number v-model="form.mhtFollow.weight" :precision="1" /></el-form-item></el-col>
+                      <el-col :span="8"><el-form-item label="琛�鍘�"><el-input v-model="form.mhtFollow.bloodPressure" class="w-xs" /></el-form-item></el-col>
+                    </el-row>
+                    <el-form-item label="澶嶆煡缁撴灉"><el-input v-model="form.mhtFollow.reExamResult" type="textarea" :rows="2" placeholder="B瓒�/涔宠吅/婵�绱犵瓑妫�鏌ョ粨鏋�" /></el-form-item>
+                    <el-form-item label="鏂规璋冩暣"><el-input v-model="form.mhtFollow.planAdjust" type="textarea" :rows="2" /></el-form-item>
+                    <el-form-item label="涓嬫澶嶈瘖"><el-date-picker v-model="form.mhtFollow.nextVisit" value-format="yyyy-MM-dd" class="w-md" /></el-form-item>
+                    <el-form-item label="鍖荤敓"><el-input v-model="form.mhtFollow.doctor" class="w-sm" /></el-form-item>
+                  </el-form>
+                </el-tab-pane>
+
+                <el-tab-pane label="鏀硅壇Kupperman璇勫垎鏍囧噯琛�" name="kupperman">
+                  <el-form :model="form.kupperman" label-width="160px" size="small" :disabled="!editing">
+                    <el-row :gutter="20"><el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.kupperman.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col></el-row>
+                    <KuppermanScoreTable v-model="form.kupperman" :editing="editing" />
+                  </el-form>
+                </el-tab-pane>
+
+                <el-tab-pane label="鏇村勾鏈熻瘎鍒嗛噺琛紙MRS锛�" name="mrs">
+                  <el-form :model="form.mrs" label-width="160px" size="small" :disabled="!editing">
+                    <el-row :gutter="20"><el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.mrs.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col></el-row>
+                    <MRSScoreTable v-model="form.mrs" :editing="editing" />
+                  </el-form>
+                </el-tab-pane>
+
+                <el-tab-pane label="鍖瑰吂鍫$潯鐪犺川閲忚瘎鍒嗛噺琛紙PSQI锛�" name="psqi">
+                  <el-form :model="form.psqi" label-width="160px" size="small" :disabled="!editing">
+                    <el-row :gutter="20"><el-col :span="8"><el-form-item label="璇勪及鏃ユ湡"><el-date-picker v-model="form.psqi.date" value-format="yyyy-MM-dd" class="w-md" /></el-form-item></el-col></el-row>
+                    <PSQIScoreTable v-model="form.psqi" :editing="editing" />
+                  </el-form>
+                </el-tab-pane>
+              </el-tabs>
+            </el-card>
+          </template>
+        </el-tab-pane>
+
+        <el-tab-pane label="鏈嶅姟璁板綍" name="service">
+          <ServiceRecords :patid="archive.patid" />
+        </el-tab-pane>
+      </el-tabs>
     </template>
     <div v-else class="empty-wrap">妗f涓嶅瓨鍦ㄦ垨宸插垹闄�</div>
   </div>
@@ -257,20 +363,48 @@
 
 <script>
 import InfoField from "../childHealth/InfoField.vue";
+import EditableTable from "../components/EditableTable.vue";
+import ServiceRecords from "../components/ServiceRecords.vue";
 import KuppermanScoreTable from "./KuppermanScoreTable.vue";
 import MRSScoreTable from "./MRSScoreTable.vue";
 import PSQIScoreTable from "./PSQIScoreTable.vue";
+import { loadArchives, saveArchives } from "../types";
+
+const PREGNANCY_OPTIONS = {
+  planBirth: { label: "棣栬瘖鎷熺敓鑲�", details: ["鍏堝厗娴佷骇"], hints: ["鍖诲澶勭疆鍚庣户缁濞犲苟鍦ㄤ骇绉戝缓妗�"] },
+  earlyAbnormal: { label: "棣栬瘖鏃╁瓡寮傚父", details: ["鑷劧娴佷骇", "鑳氳儙鍋滆偛"], hints: ["涓哄コ鎬у啀娆″濞犳彁渚涘瀛曟寚瀵�"] },
+  planAbortion: { label: "棣栬瘖鎷熶汉宸ユ祦浜�", details: ["鑽墿娴佷骇", "鎵嬫湳娴佷骇"], hints: ["缁忓挩璇㈡寚瀵煎悗缁х画濡婂骞跺湪浜х寤烘。"] },
+};
 
 export default {
   name: "MaternalHealthArchiveDetail",
-  components: { InfoField, KuppermanScoreTable, MRSScoreTable, PSQIScoreTable },
+  components: { InfoField, EditableTable, ServiceRecords, KuppermanScoreTable, MRSScoreTable, PSQIScoreTable },
   data() {
     return {
-      loading: false, archive: null, editing: false, activeTab: "sysQ",
+      PREGNANCY_OPTIONS,
+      loading: false, archive: null, editing: true, activeTab: "sysQ", mainTab: "detail",
+      followupColumns: [
+        { prop: "seq", label: "搴忓彿", width: 60 },
+        { prop: "planDate", label: "鎷熼殢璁挎棩鏈�", width: 130, type: "date" },
+        { prop: "status", label: "鐘跺喌", width: 100, type: "select", options: ["宸插畬鎴�", "鏈畬鎴�"] },
+        { prop: "method", label: "闅忚鏂瑰紡", width: 110 },
+        { prop: "situation", label: "闅忚鎯呭喌", minWidth: 160 },
+        { prop: "followDate", label: "闅忚鏃ユ湡", width: 130, type: "date" },
+        { prop: "staff", label: "闅忚浜哄憳", width: 110 },
+      ],
+      pregForm: {
+        firstVisit: { visitNo: "", selfPhone: "", wardName: "", contactPhone: "", idcardno: "", address: "", diagname: "", firstDoctor: "" },
+        pregnancy: { status: "", details: [], hint: [] },
+        earlyFollow: { name: "", age: "", visitNo: "", wechat: "", household: "", gravidaPara: "", maritalStatus: "", buildDate: "", abortionReasons: [], otherReason: "", continuePregnancy: "", edd: "", registrationUnit: "" },
+        counseling: [
+          { date: "", content: "", person: "" }, { date: "", content: "", person: "" },
+          { date: "", content: "", person: "" }, { date: "", content: "", person: "" },
+        ],
+        score: { total: null, result: "" },
+        registration: { isRegistered: "", unregisteredReason: "", edd: "", recorder: "" },
+        followupCycle: [],
+      },
       form: {
-        pregSysQ: { date:"", gestWeek:null, weight:null, bloodPressure:"", fundalHeight:null, fetalHeart:null, edema:"鏃�", urineProtein:"-", symptoms:"", advice:"", nextVisit:"", doctor:"" },
-        pregFirst: { regDate:"", husbandName:"", husbandPhone:"", lmp:"", edd:"", gp:"", csHistory:0, abortionHistory:0, diseaseHistory:"", height:null, preWeight:null, riskAssessment:"", doctor:"" },
-        pregEarly: { date:"", gestWeek:null, morningSickness:"鏃�", bleeding:"鏃�", abdominalPain:"鏃�", bloodRoutine:"", urineRoutine:"", ultrasound:"", folicAcid:"瑙勫緥鏈嶇敤", advice:"", doctor:"" },
         menoSysQ: { date:"", age:null, menstruation:"", lmp:"", menopauseAge:null, hotFlash:0, insomnia:0, mood:0, fatigue:0, jointPain:0, palpitation:0, dryness:0, libido:0, otherSymptoms:"", advice:"", doctor:"" },
         mhtFirst: { date:"", chiefComplaint:"", menopauseYears:null, height:null, weight:null, bmi:null, bloodPressure:"", glucose:null, lipid:"", pastHistory:"", gynExam:"", breastExam:"", auxExam:"", mhtPlan:"", doctor:"" },
         mhtFollow: { date:"", compliance:"鑹ソ", symptomImprove:"閮ㄥ垎", sideEffect:"", bleeding:"鏃�", weight:null, bloodPressure:"", reExamResult:"", planAdjust:"", nextVisit:"", doctor:"" },
@@ -282,48 +416,168 @@
   },
   computed: {
     sourceLabel() { const m={standalone:"鐙珛寤烘。",outpatient:"闂ㄨ瘖璁板綍",inpatient:"鍦ㄩ櫌璁板綍"}; return m[this.archive?.sourcePage]||this.archive?.sourcePage||"-"; },
-    menstrualLabel() { const m={irregular:"鏈堢粡绱婁贡",amenorrhea_short:"闂粡锛�<12涓湀锛�",menopause:"缁濈粡锛堚墺12涓湀锛�",surgical:"浜哄伐缁濈粡"}; return m[this.archive?.archiveForm?.menstrualStatus]||"-"; },
+    pregnancySubOptions() {
+      const opt = PREGNANCY_OPTIONS[this.pregForm.pregnancy.status];
+      return opt ? opt.details : [];
+    },
+    pregnancyHintOptions() {
+      const opt = PREGNANCY_OPTIONS[this.pregForm.pregnancy.status];
+      return opt ? opt.hints : [];
+    },
+    showFollowUp() {
+      return this.pregForm.pregnancy.status === "planAbortion" &&
+        this.pregForm.pregnancy.hint.includes("缁忓挩璇㈡寚瀵煎悗缁х画濡婂骞跺湪浜х寤烘。");
+    },
+    currentFollowRecords() {
+      return (this.pregForm.followupCycle || []).filter((r) => r.status === "宸插畬鎴�");
+    },
   },
   created() {
     const id = this.$route.query.id;
-    if (id) this.loadArchive(id);
+    if (id) this.loadArchive(id, this.$route.query.edit == 1);
   },
   methods: {
-    loadArchive(id) {
+    loadArchive(id, autoEdit) {
       this.loading = true;
-      const all = JSON.parse(localStorage.getItem("patientArchives") || "[]");
-      this.archive = all.find(item => item.id === id) || null;
+      this.archive = loadArchives().find((item) => item.id === id) || null;
       if (this.archive) {
-        if (this.archive.subType === 'pregnancy') this.activeTab = "sysQ";
-        else if (this.archive.subType === 'menopause') this.activeTab = "sysQ";
-        if (this.archive.formData) {
-          Object.keys(this.form).forEach(k => {
-            if (this.archive.formData[k]) Object.assign(this.form[k], this.archive.formData[k]);
-          });
+        if (this.archive.subType === "pregnancy") {
+          if (this.archive.pregFormData) {
+            const saved = JSON.parse(JSON.stringify(this.archive.pregFormData));
+            this.pregForm = Object.assign({}, this.pregForm, saved);
+            if (!this.pregForm.pregnancy) this.pregForm.pregnancy = { status: "", details: [], hint: [] };
+          }
+        } else if (this.archive.subType === "menopause") {
+          if (this.archive.formData) {
+            Object.keys(this.form).forEach((k) => {
+              if (this.archive.formData[k]) Object.assign(this.form[k], this.archive.formData[k]);
+            });
+          }
         }
       }
+      if (autoEdit) this.editing = true;
       this.loading = false;
+    },
+    onPregnancyStatusChange() {
+      this.pregForm.pregnancy.details = [];
+      this.pregForm.pregnancy.hint = [];
+      const opt = PREGNANCY_OPTIONS[this.pregForm.pregnancy.status];
+      if (this.archive) this.archive.pregnancyStatus = opt ? opt.label : "";
     },
     toggleEdit() {
       if (this.editing) {
-        this.archive.formData = JSON.parse(JSON.stringify(this.form));
-        this.archive.updateTime = new Date().toISOString().replace("T"," ").substring(0,19);
-        const all = JSON.parse(localStorage.getItem("patientArchives") || "[]");
-        const idx = all.findIndex(item => item.id === this.archive.id);
+        if (this.archive.subType === "pregnancy") this.archive.pregFormData = JSON.parse(JSON.stringify(this.pregForm));
+        if (this.archive.subType === "menopause") this.archive.formData = JSON.parse(JSON.stringify(this.form));
+        this.archive.updateTime = new Date().toISOString().replace("T", " ").substring(0, 19);
+        const all = loadArchives();
+        const idx = all.findIndex((item) => item.id === this.archive.id);
         if (idx >= 0) all[idx] = JSON.parse(JSON.stringify(this.archive));
-        localStorage.setItem("patientArchives", JSON.stringify(all));
+        saveArchives(all);
         this.$message.success("淇濆瓨鎴愬姛");
       }
       this.editing = !this.editing;
+    },
+    handleCloseCase() {
+      this.$modal.confirm("纭灏嗚妗f缁撴锛熺粨妗堝悗鍙湪鍒楄〃椤垫煡鐪嬬粨妗堢姸鎬併��").then(() => {
+        this.archive.closeStatus = 1;
+        this.archive.updateTime = new Date().toISOString().replace("T", " ").substring(0, 19);
+        const all = loadArchives();
+        const idx = all.findIndex((item) => item.id === this.archive.id);
+        if (idx >= 0) all[idx] = JSON.parse(JSON.stringify(this.archive));
+        saveArchives(all);
+        this.$message.success("宸茬粨妗�");
+      }).catch(() => {});
     },
   },
 };
 </script>
 
 <style lang="scss" scoped>
+$primary: #3f6ef0;
+
+// 杈撳叆妗嗗搴︼紙鎸夊瓧娈甸暱鐭尯鍒嗭級
+.w-xs { width: 90px; }
+.w-sm { width: 150px; }
+.w-md { width: 200px; }
+.w-lg { width: 280px; }
+.w-full { width: 100%; }
+
 .action-bar { margin-bottom: 16px; }
 .info-card { margin-bottom: 0; }
 .card-header { display: flex; justify-content: space-between; align-items: center; font-size: 16px; font-weight: 600; }
 .header-sub { font-size: 13px; color: #909399; font-weight: normal; }
 .empty-wrap { text-align: center; padding: 100px 0; color: #c0c4cc; font-size: 16px; }
+
+// 钃濊壊鍒嗗壊绾� + 灏忔爣棰�
+.sub-section {
+  & + .sub-section {
+    margin-top: 24px;
+  }
+}
+.sub-title {
+  position: relative;
+  padding-left: 12px;
+  margin-bottom: 16px;
+  font-size: 15px;
+  font-weight: 600;
+  color: #303133;
+  line-height: 1.2;
+
+  &::before {
+    content: "";
+    position: absolute;
+    left: 0;
+    top: 1px;
+    bottom: 1px;
+    width: 3px;
+    border-radius: 2px;
+    background: $primary;
+  }
+
+  &::after {
+    content: "";
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: -7px;
+    border-bottom: 1px solid #dbe5ff;
+  }
+}
+
+// 濡婂鎯呭喌 涓夌骇鍕鹃��
+.preg-cascade {
+  .cascade-col {
+    padding: 14px 16px;
+    min-height: 120px;
+    border: 1px solid #e6ecfb;
+    border-radius: 8px;
+    background: #fafbff;
+
+    .el-radio-group,
+    .el-checkbox-group {
+      display: flex;
+      flex-direction: column;
+      align-items: flex-start;
+
+      .el-radio,
+      .el-checkbox {
+        margin-right: 0;
+        margin-bottom: 8px;
+      }
+    }
+  }
+
+  .cascade-label {
+    margin-bottom: 10px;
+    font-size: 13px;
+    font-weight: 600;
+    color: $primary;
+  }
+
+  .cascade-empty {
+    padding: 10px 0;
+    font-size: 12px;
+    color: #c0c4cc;
+  }
+}
 </style>

--
Gitblit v1.9.3