From a5cba9ab040f6f97558046885dce3017f9bab7e9 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 11 八月 2026 14:12:29 +0800
Subject: [PATCH] 提交

---
 src/views/followvisit/Continue/ContinueFordetails.vue | 1576 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 709 insertions(+), 867 deletions(-)

diff --git a/src/views/followvisit/Continue/ContinueFordetails.vue b/src/views/followvisit/Continue/ContinueFordetails.vue
index c07bcef..827db3c 100644
--- a/src/views/followvisit/Continue/ContinueFordetails.vue
+++ b/src/views/followvisit/Continue/ContinueFordetails.vue
@@ -3,9 +3,7 @@
   <div class="ContinuityCarePage" id="app-container">
     <!-- 绗竴閮ㄥ垎锛氭偅鑰呭熀纭�淇℃伅 -->
     <div class="patient-info-section">
-      <div class="headline">
-        <div>鎮h�呭熀纭�淇℃伅</div>
-      </div>
+      <div class="headline"><div>鎮h�呭熀纭�淇℃伅</div></div>
       <div class="patient-info-form">
         <el-form
           ref="patientForm"
@@ -21,7 +19,7 @@
                   placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
                   maxlength="30"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -31,8 +29,8 @@
                   placeholder="璇烽�夋嫨"
                   clearable
                 >
-                  <el-option label="鐢�" :value="1"></el-option>
-                  <el-option label="濂�" :value="2"></el-option>
+                  <el-option label="鐢�" :value="1" />
+                  <el-option label="濂�" :value="2" />
                 </el-select>
               </el-form-item>
             </el-col>
@@ -43,11 +41,10 @@
                   placeholder="璇疯緭鍏ュ勾榫�"
                   maxlength="3"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
           </el-row>
-
           <el-row :gutter="20">
             <el-col :span="8">
               <el-form-item label="鑱旂郴鐢佃瘽" prop="telcode">
@@ -56,7 +53,7 @@
                   placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
                   maxlength="20"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -66,7 +63,7 @@
                   placeholder="璇疯緭鍏ヤ綇闄㈠彿"
                   maxlength="50"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
             <el-col :span="8">
@@ -77,12 +74,10 @@
                   placeholder="閫夋嫨鍑洪櫌鏃ユ湡"
                   value-format="yyyy-MM-dd"
                   style="width: 100%"
-                >
-                </el-date-picker>
+                />
               </el-form-item>
             </el-col>
           </el-row>
-
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="璇婃柇鍚嶇О" prop="diagnosis">
@@ -91,7 +86,7 @@
                   placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
                   maxlength="100"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -101,11 +96,10 @@
                   placeholder="璇疯緭鍏ヨ矗浠绘姢澹�"
                   maxlength="50"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
           </el-row>
-
           <el-row :gutter="20">
             <el-col :span="24">
               <el-form-item label="灞呬綇鍦板潃" prop="address">
@@ -114,11 +108,10 @@
                   placeholder="璇疯緭鍏ヨ缁嗗眳浣忓湴鍧�"
                   maxlength="200"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
           </el-row>
-
           <el-row :gutter="20">
             <el-col :span="12">
               <el-form-item label="浜插睘濮撳悕" prop="relativeName">
@@ -127,7 +120,7 @@
                   placeholder="璇疯緭鍏ヤ翰灞炲鍚�"
                   maxlength="30"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -137,31 +130,29 @@
                   placeholder="璇疯緭鍏ヤ翰灞炵數璇�"
                   maxlength="20"
                   clearable
-                ></el-input>
+                />
               </el-form-item>
             </el-col>
           </el-row>
-
-          <!-- 寤剁画鎶ょ悊姹囨�讳俊鎭� -->
           <el-row :gutter="20" v-if="continuitySummary.continueCount > 0">
             <el-col :span="24">
               <el-form-item label="寤剁画鎶ょ悊姹囨��">
                 <div class="continuity-summary">
                   <div class="summary-item">
-                    <span class="label">寤剁画娆℃暟锛�</span>
-                    <span class="value"
+                    <span class="label">寤剁画娆℃暟锛�</span
+                    ><span class="value"
                       >{{ continuitySummary.continueCount }} 娆�</span
                     >
                   </div>
                   <div class="summary-item">
-                    <span class="label">鏈�鏂版湇鍔★細</span>
-                    <span class="value">{{
+                    <span class="label">鏈�鏂版湇鍔★細</span
+                    ><span class="value">{{
                       formatDisplayTime(continuitySummary.continueTimeNow)
                     }}</span>
                   </div>
                   <div class="summary-item">
-                    <span class="label">涓嬫鏈嶅姟锛�</span>
-                    <span class="value">{{
+                    <span class="label">涓嬫鏈嶅姟锛�</span
+                    ><span class="value">{{
                       formatDisplayTime(continuitySummary.continueTimeNext)
                     }}</span>
                   </div>
@@ -169,31 +160,27 @@
               </el-form-item>
             </el-col>
           </el-row>
-
-          <!-- 鎿嶄綔鎸夐挳 -->
           <el-form-item>
             <el-button
               type="primary"
               @click="savePatientInfo"
               :loading="savingPatientInfo"
+              >淇濆瓨鎮h�呬俊鎭�</el-button
             >
-              淇濆瓨鎮h�呬俊鎭�
-            </el-button>
             <el-button @click="resetPatientInfo">閲嶇疆</el-button>
           </el-form-item>
         </el-form>
       </div>
     </div>
+
     <!-- 绗簩閮ㄥ垎锛氭湇鍔″熀纭�淇℃伅 -->
     <div class="basic-info-section">
-      <div class="headline">
-        <div>鏈嶅姟鍩虹淇℃伅</div>
-      </div>
+      <div class="headline"><div>鏈嶅姟鍩虹淇℃伅</div></div>
       <div class="basic-info-container">
         <!-- 宸﹀崐閮ㄥ垎锛氬綋鍓嶆湇鍔¢殢璁垮唴瀹癸紙鍙锛� -->
         <div class="followup-content readonly-content">
           <div class="sub-headline">
-            <i class="el-icon-document"></i> 褰撳墠鏈嶅姟闅忚鍐呭锛堝彧璇伙級
+            <i class="el-icon-document" /> 褰撳墠鏈嶅姟闅忚鍐呭锛堝彧璇伙級
             <el-button
               type="text"
               size="small"
@@ -203,7 +190,6 @@
               {{ showQuestionSelector ? "闅愯棌闂閫夊彇" : "閫夊彇寤剁画闂" }}
             </el-button>
           </div>
-
           <!-- 闂閫夊彇闈㈡澘 -->
           <div v-if="showQuestionSelector" class="question-selector-panel">
             <div class="selector-header">
@@ -212,14 +198,13 @@
                 type="primary"
                 size="small"
                 @click="confirmQuestionSelection"
+                >纭閫夊彇</el-button
               >
-                纭閫夊彇
-              </el-button>
             </div>
             <div class="question-list">
               <el-checkbox-group v-model="selectedQuestionIds">
                 <div
-                  v-for="(question, index) in availableQuestions"
+                  v-for="(question, idx) in availableQuestions"
                   :key="question.id"
                   class="question-item"
                 >
@@ -239,7 +224,7 @@
             <el-tabs v-model="activeName" type="border-card">
               <el-tab-pane name="wj">
                 <span slot="label"
-                  ><i class="el-icon-notebook-1"></i> 闂嵎闅忚缁撴灉</span
+                  ><i class="el-icon-notebook-1" /> 闂嵎闅忚缁撴灉</span
                 >
                 <div class="CONTENT">
                   <div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
@@ -252,11 +237,10 @@
                       <!-- 鍗曢�� -->
                       <div
                         :class="getTopicClass(item)"
-                        :key="index"
                         v-if="item.scriptType == 1 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -264,10 +248,10 @@
                           <el-radio-group v-model="item.scriptResult" disabled>
                             <el-radio
                               v-for="(
-                                items, indexs
+                                items, idx
                               ) in item.svyTaskTemplateTargetoptions"
                               :class="getOptionClass(items)"
-                              :key="indexs"
+                              :key="idx"
                               :label="items.optioncontent"
                               >{{ items.optioncontent }}</el-radio
                             >
@@ -283,11 +267,10 @@
                             placeholder="璇疯緭鍏ュ叿浣撲俊鎭�"
                             v-model="item.answerps"
                             readonly
-                          ></el-input>
+                          />
                         </div>
                         <div v-show="item.prompt">
-                          <el-alert :title="item.prompt" type="warning">
-                          </el-alert>
+                          <el-alert :title="item.prompt" type="warning" />
                         </div>
                       </div>
                       <!-- 澶氶�� -->
@@ -297,11 +280,10 @@
                             ? 'scriptTopic-isabnormal'
                             : 'scriptTopic-dev'
                         "
-                        :key="index"
                         v-if="item.scriptType == 2 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕澶氶�塢<span>{{
+                          {{ index + 1 }}. [澶氶�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -313,31 +295,30 @@
                             <el-checkbox
                               :class="items.isabnormal ? 'red-star' : ''"
                               v-for="(
-                                items, indexs
+                                items, idx
                               ) in item.svyTaskTemplateTargetoptions"
-                              :key="indexs"
+                              :key="idx"
                               :label="items.optioncontent"
+                              >{{ items.optioncontent }}</el-checkbox
                             >
-                              {{ items.optioncontent }}
-                            </el-checkbox>
                           </el-checkbox-group>
                         </div>
                         <div v-show="item.prompt && item.scriptResult[0]">
-                          <el-alert :title="item.prompt" type="warning">
-                          </el-alert>
+                          <el-alert :title="item.prompt" type="warning" />
                         </div>
                       </div>
                       <!-- 濉┖ -->
                       <div
                         class="scriptTopic-dev"
-                        :key="index"
                         v-if="item.scriptType == 4 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
-                          }}</span>
-                          <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
+                          }}</span
+                          ><span v-if="item.valueType == 3"
+                            >(鍙兘杈撳叆鏁板瓧)</span
+                          >
                         </div>
                         <div class="dev-xx" v-if="item.valueType == 3">
                           <el-input
@@ -345,8 +326,7 @@
                             placeholder="璇疯緭鍏ョ瓟妗�"
                             v-model="item.scriptResult"
                             readonly
-                          >
-                          </el-input>
+                          />
                         </div>
                         <div class="dev-xx" v-else>
                           <el-input
@@ -355,8 +335,7 @@
                             placeholder="璇疯緭鍏ョ瓟妗�"
                             v-model="item.scriptResult"
                             readonly
-                          >
-                          </el-input>
+                          />
                         </div>
                       </div>
                     </div>
@@ -369,15 +348,15 @@
                     >
                       <div v-if="item.targetvalue">
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.questiontext
                           }}</span>
                         </div>
                         <div class="dev-xx">
                           <el-radio-group v-model="item.matchedtext" disabled>
                             <el-radio
-                              v-for="(items, index) in item.scriptResult"
-                              :key="index"
+                              v-for="(items, idx) in item.scriptResult"
+                              :key="idx"
                               :label="items"
                               :class="items.isabnormal ? 'red-star' : ''"
                               >{{ items }}</el-radio
@@ -385,16 +364,17 @@
                           </el-radio-group>
                         </div>
                         <div v-show="item.prompt">
-                          <el-alert :title="item.prompt" type="warning">
-                          </el-alert>
+                          <el-alert :title="item.prompt" type="warning" />
                         </div>
                       </div>
-                      <div class="scriptTopic-dev" :key="index" v-else>
+                      <div class="scriptTopic-dev" v-else>
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
-                          }}</span>
-                          <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
+                          }}</span
+                          ><span v-if="item.valueType == 3"
+                            >(鍙兘杈撳叆鏁板瓧)</span
+                          >
                         </div>
                         <div class="dev-xx" v-if="item.valueType == 3">
                           <el-input
@@ -402,8 +382,7 @@
                             placeholder="璇疯緭鍏ョ瓟妗�"
                             v-model="item.scriptResult"
                             readonly
-                          >
-                          </el-input>
+                          />
                         </div>
                         <div class="dev-xx" v-else>
                           <el-input
@@ -412,8 +391,7 @@
                             placeholder="璇疯緭鍏ョ瓟妗�"
                             v-model="item.scriptResult"
                             readonly
-                          >
-                          </el-input>
+                          />
                         </div>
                       </div>
                     </div>
@@ -422,33 +400,33 @@
               </el-tab-pane>
               <el-tab-pane name="yy">
                 <span slot="label"
-                  ><i class="el-icon-headset"></i> 璇煶闅忚璇︽儏</span
+                  ><i class="el-icon-headset" /> 璇煶闅忚璇︽儏</span
                 >
                 <div class="borderdiv">
                   <div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
                   <div class="voice-audio">
-                    瀹屾暣璇煶锛�
-                    <mini-audio
+                    瀹屾暣璇煶锛�<mini-audio
                       :audio-source="
                         voice ? voice : '@assets/order/example.mp3'
                       "
-                    ></mini-audio>
+                    />
                   </div>
                   <div class="preview-left">
-                    <div v-for="item in voiceDatatop">
+                    <div v-for="item in voiceDatatop" :key="item.id">
                       <div class="leftside">
-                        <i class="el-icon-phone-outline"></i
-                        ><span>{{ item.questiontext }}</span>
+                        <i class="el-icon-phone-outline" /><span>{{
+                          item.questiontext
+                        }}</span>
                       </div>
                       <div class="offside">
-                        <i class="el-icon-user"></i>
+                        <i class="el-icon-user" />
                         <div class="offside-value">
                           <el-input
                             type="textarea"
                             :autosize="{ minRows: 1 }"
                             v-model="item.asrtext"
                             readonly
-                          ></el-input>
+                          />
                           <div>
                             <mini-audio
                               :audio-source="
@@ -456,7 +434,7 @@
                                   ? item.questionvoice
                                   : '@assets/order/example.mp3'
                               "
-                            ></mini-audio>
+                            />
                           </div>
                         </div>
                       </div>
@@ -469,10 +447,9 @@
         </div>
 
         <!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
-        <!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
         <div class="continuity-history">
           <div class="sub-headline">
-            <i class="el-icon-time"></i> 鍘嗘寤剁画鎶ょ悊鏈嶅姟
+            <i class="el-icon-time" /> 鍘嗘寤剁画鎶ょ悊鏈嶅姟
             <el-button
               type="primary"
               size="small"
@@ -501,9 +478,7 @@
                     :ref="'continuityForm' + index"
                     :model="item.form"
                     :rules="continuityRules"
-                    label-width="120px"
                   >
-                    <!-- 寤剁画闂琛ㄥ崟 -->
                     <el-form-item label="寤剁画闂" prop="continuityProblems">
                       <div class="continuity-problems-form">
                         <div class="problems-header">
@@ -513,12 +488,17 @@
                             size="small"
                             icon="el-icon-plus"
                             @click="addContinuityProblem(index)"
+                            >鏂板闂锛堜粠宸叉湁閫夋嫨锛�</el-button
                           >
-                            鏂板闂
-                          </el-button>
+                          <el-button
+                            type="text"
+                            size="small"
+                            icon="el-icon-edit"
+                            @click="addCustomProblem(index)"
+                            >鑷畾涔夐棶棰�</el-button
+                          >
                         </div>
-
-                        <!-- 宸查�夊彇鐨勯棶棰樺垪琛� -->
+                        <!-- 闂鍒楄〃 -->
                         <div
                           v-if="
                             item.form.continuityProblems &&
@@ -539,7 +519,7 @@
                                 >
                                 <el-select
                                   v-model="problem.questionId"
-                                  placeholder="閫夋嫨闂"
+                                  placeholder="閫夋嫨宸叉湁闂"
                                   size="small"
                                   style="width: 300px; margin: 0 10px"
                                   @change="
@@ -549,6 +529,7 @@
                                       $event
                                     )
                                   "
+                                  :disabled="problem.isCustom"
                                 >
                                   <el-option
                                     v-for="q in availableQuestions"
@@ -562,7 +543,6 @@
                                     >
                                   </el-option>
                                 </el-select>
-                                <!-- 淇锛氫紶閫掓纭殑绱㈠紩 -->
                                 <el-button
                                   type="danger"
                                   icon="el-icon-delete"
@@ -571,34 +551,146 @@
                                   @click="
                                     removeContinuityProblem(index, problemIndex)
                                   "
-                                >
-                                </el-button>
+                                />
                               </div>
 
-                              <!-- 闂嵎寮忛棶棰樺睍绀哄尯鍩� -->
+                              <!-- ========== 鑷畾涔夐棶棰樼紪杈戝尯 ========== -->
                               <div
-                                v-if="problem.questionId"
+                                v-if="problem.isCustom"
+                                class="custom-editor"
+                              >
+                                <el-form-item
+                                  label="棰樼洰鍐呭"
+                                  style="margin-bottom: 10px"
+                                >
+                                  <el-input
+                                    v-model="problem.customText"
+                                    placeholder="璇疯緭鍏ラ棶棰樺唴瀹�"
+                                    size="small"
+                                    clearable
+                                  />
+                                </el-form-item>
+                                <el-form-item
+                                  label="棰樺瀷"
+                                  style="margin-bottom: 10px"
+                                >
+                                  <el-radio-group
+                                    v-model="problem.customType"
+                                    size="small"
+                                  >
+                                    <el-radio-button :label="1"
+                                      >鍗曢�夐</el-radio-button
+                                    >
+                                    <el-radio-button :label="2"
+                                      >澶氶�夐</el-radio-button
+                                    >
+                                    <el-radio-button :label="4"
+                                      >闂瓟棰�</el-radio-button
+                                    >
+                                  </el-radio-group>
+                                </el-form-item>
+                                <el-form-item
+                                  v-if="
+                                    problem.customType === 1 ||
+                                    problem.customType === 2
+                                  "
+                                  label="閫夐」"
+                                  style="margin-bottom: 10px"
+                                >
+                                  <div
+                                    v-for="(opt, idx) in problem.customOptions"
+                                    :key="idx"
+                                    class="option-row"
+                                  >
+                                    <el-input
+                                      v-model="opt.optioncontent"
+                                      placeholder="璇疯緭鍏ラ�夐」鍐呭"
+                                      size="small"
+                                      style="width: 200px; margin-right: 10px"
+                                    />
+                                    <el-button
+                                      type="danger"
+                                      size="mini"
+                                      icon="el-icon-delete"
+                                      @click="
+                                        removeCustomOption(
+                                          index,
+                                          problemIndex,
+                                          idx
+                                        )
+                                      "
+                                    />
+                                  </div>
+                                  <el-button
+                                    type="primary"
+                                    size="mini"
+                                    @click="
+                                      addCustomOption(index, problemIndex)
+                                    "
+                                    >娣诲姞閫夐」</el-button
+                                  >
+                                </el-form-item>
+                                <el-form-item label="绛旀">
+                                  <!-- 鍗曢�� -->
+                                  <el-radio-group
+                                    v-if="problem.customType === 1"
+                                    v-model="problem.customAnswer"
+                                  >
+                                    <el-radio
+                                      v-for="opt in problem.customOptions"
+                                      :key="opt.optioncontent"
+                                      :label="opt.optioncontent"
+                                    >
+                                      {{ opt.optioncontent }}
+                                    </el-radio>
+                                  </el-radio-group>
+                                  <!-- 澶氶�� -->
+                                  <el-checkbox-group
+                                    v-else-if="problem.customType === 2"
+                                    v-model="problem.customAnswer"
+                                  >
+                                    <el-checkbox
+                                      v-for="opt in problem.customOptions"
+                                      :key="opt.optioncontent"
+                                      :label="opt.optioncontent"
+                                    >
+                                      {{ opt.optioncontent }}
+                                    </el-checkbox>
+                                  </el-checkbox-group>
+                                  <!-- 闂瓟 -->
+                                  <el-input
+                                    v-else-if="problem.customType === 4"
+                                    v-model="problem.customAnswer"
+                                    placeholder="璇疯緭鍏ョ瓟妗�"
+                                    size="small"
+                                    style="width: 300px"
+                                  />
+                                  <span v-else style="color: #999"
+                                    >璇峰厛閫夋嫨棰樺瀷</span
+                                  >
+                                </el-form-item>
+                              </div>
+
+                              <!-- ========== 闈炶嚜瀹氫箟锛氬睍绀哄凡鏈夐棶棰� ========== -->
+                              <div
+                                v-else-if="
+                                  problem.questionId &&
+                                  getQuestionOriginalData(problem.questionId)
+                                "
                                 class="question-display-area"
                               >
-                                <!-- 鏍规嵁闂绫诲瀷鍔ㄦ�佹覆鏌� -->
-                                <div
-                                  v-if="
-                                    getQuestionOriginalData(problem.questionId)
-                                  "
-                                  class="question-render"
-                                >
-                                  <!-- 鍗曢�夌被鍨� -->
+                                <div class="question-item-render">
+                                  <!-- 鍗曢�� -->
                                   <div
                                     v-if="
                                       getQuestionOriginalData(
                                         problem.questionId
                                       ).scriptType == 1
                                     "
-                                    class="question-item-render"
                                   >
                                     <div class="question-text">
-                                      <strong>[鍗曢�塢</strong>
-                                      <span>{{
+                                      <strong>[鍗曢�塢</strong
+                                      ><span>{{
                                         getQuestionOriginalData(
                                           problem.questionId
                                         ).scriptContent
@@ -609,44 +701,39 @@
                                         v-model="problem.selectedOption"
                                       >
                                         <el-radio
-                                          v-for="option in getQuestionOriginalData(
+                                          v-for="opt in getQuestionOriginalData(
                                             problem.questionId
                                           ).svyTaskTemplateTargetoptions"
-                                          :key="option.optioncontent"
-                                          :label="option.optioncontent"
-                                          :class="getOptionClass(option)"
+                                          :key="opt.optioncontent"
+                                          :label="opt.optioncontent"
+                                          :class="getOptionClass(opt)"
+                                          >{{ opt.optioncontent }}</el-radio
                                         >
-                                          {{ option.optioncontent }}
-                                        </el-radio>
                                       </el-radio-group>
                                     </div>
-                                    <!-- 闄勫姞杈撳叆妗� -->
                                     <div
                                       v-if="problem.showAppendInput"
                                       class="append-input"
-                                      style="margin-top: 10px"
                                     >
                                       <el-input
                                         type="textarea"
                                         :rows="2"
                                         placeholder="璇疯緭鍏ュ叿浣撲俊鎭�"
                                         v-model="problem.appendInput"
-                                      ></el-input>
+                                      />
                                     </div>
                                   </div>
-
-                                  <!-- 澶氶�夌被鍨� -->
+                                  <!-- 澶氶�� -->
                                   <div
                                     v-else-if="
                                       getQuestionOriginalData(
                                         problem.questionId
                                       ).scriptType == 2
                                     "
-                                    class="question-item-render"
                                   >
                                     <div class="question-text">
-                                      <strong>[澶氶�塢</strong>
-                                      <span>{{
+                                      <strong>[澶氶�塢</strong
+                                      ><span>{{
                                         getQuestionOriginalData(
                                           problem.questionId
                                         ).scriptContent
@@ -657,38 +744,35 @@
                                         v-model="problem.selectedOptions"
                                       >
                                         <el-checkbox
-                                          v-for="option in getQuestionOriginalData(
+                                          v-for="opt in getQuestionOriginalData(
                                             problem.questionId
                                           ).svyTaskTemplateTargetoptions"
-                                          :key="option.optioncontent"
-                                          :label="option.optioncontent"
+                                          :key="opt.optioncontent"
+                                          :label="opt.optioncontent"
                                           :class="
-                                            option.isabnormal ? 'red-star' : ''
+                                            opt.isabnormal ? 'red-star' : ''
                                           "
+                                          >{{ opt.optioncontent }}</el-checkbox
                                         >
-                                          {{ option.optioncontent }}
-                                        </el-checkbox>
                                       </el-checkbox-group>
                                     </div>
                                   </div>
-
-                                  <!-- 濉┖/闂瓟绫诲瀷 -->
+                                  <!-- 闂瓟 -->
                                   <div
                                     v-else-if="
                                       getQuestionOriginalData(
                                         problem.questionId
                                       ).scriptType == 4
                                     "
-                                    class="question-item-render"
                                   >
                                     <div class="question-text">
-                                      <strong>[闂瓟]</strong>
-                                      <span>{{
+                                      <strong>[闂瓟]</strong
+                                      ><span>{{
                                         getQuestionOriginalData(
                                           problem.questionId
                                         ).scriptContent
-                                      }}</span>
-                                      <span
+                                      }}</span
+                                      ><span
                                         v-if="
                                           getQuestionOriginalData(
                                             problem.questionId
@@ -708,7 +792,7 @@
                                         placeholder="璇疯緭鍏ョ瓟妗�"
                                         v-model="problem.answer"
                                         style="width: 200px"
-                                      ></el-input>
+                                      />
                                       <el-input
                                         v-else
                                         type="textarea"
@@ -716,16 +800,13 @@
                                         placeholder="璇疯緭鍏ョ瓟妗�"
                                         v-model="problem.answer"
                                         style="width: 100%"
-                                      ></el-input>
+                                      />
                                     </div>
                                   </div>
                                 </div>
-                                <div v-else class="no-question-data">
-                                  闂鏁版嵁鍔犺浇涓�...
-                                </div>
                               </div>
 
-                              <!-- 鍘熸湁鐨勯棶棰樻弿杩扮瓑瀛楁 -->
+                              <!-- 闂鐘舵�佸拰瑙e喅鏃ユ湡 -->
                               <div class="problem-detail">
                                 <div class="detail-row">
                                   <span class="detail-label">褰撳墠鐘舵�侊細</span>
@@ -735,31 +816,26 @@
                                     size="small"
                                     style="width: 120px; margin-right: 20px"
                                   >
-                                    <el-option
-                                      label="鏈鐞�"
-                                      value="pending"
-                                    ></el-option>
+                                    <el-option label="鏈鐞�" value="pending" />
                                     <el-option
                                       label="澶勭悊涓�"
                                       value="processing"
-                                    ></el-option>
+                                    />
                                     <el-option
                                       label="宸茶В鍐�"
                                       value="resolved"
-                                    ></el-option>
+                                    />
                                     <el-option
                                       label="鎸佺画鍏虫敞"
                                       value="watching"
-                                    ></el-option>
+                                    />
                                   </el-select>
-
                                   <span
-                                    class="detail-label"
                                     v-if="problem.status === 'resolved'"
+                                    class="detail-label"
                                     style="margin-left: 20px"
+                                    >瑙e喅鏃ユ湡锛�</span
                                   >
-                                    瑙e喅鏃ユ湡锛�
-                                  </span>
                                   <el-date-picker
                                     v-if="problem.status === 'resolved'"
                                     v-model="problem.resolvedDate"
@@ -767,29 +843,19 @@
                                     placeholder="閫夋嫨瑙e喅鏃ユ湡"
                                     value-format="yyyy-MM-dd"
                                     size="small"
-                                    style="width: 150px; margin-left: 10px"
-                                  ></el-date-picker>
+                                    style="width: 150px"
+                                  />
                                 </div>
-
-                                <!-- <div class="detail-row">
-                                  <span class="detail-label">闂鎻忚堪锛�</span>
-                                  <el-input
-                                    type="textarea"
-                                    :rows="2"
-                                    v-model="problem.description"
-                                    placeholder="璇疯缁嗘弿杩拌寤剁画闂锛堝彲璁板綍璇勪及缁撴灉銆佸鐞嗗缓璁瓑锛�"
-                                    size="small"
-                                    style="flex: 1"
-                                  ></el-input>
-                                </div> -->
                               </div>
                             </div>
                           </div>
                         </div>
+                        <div v-else class="empty-problems">
+                          鏆傛棤寤剁画闂锛岃鐐瑰嚮涓婃柟鎸夐挳娣诲姞
+                        </div>
                       </div>
                     </el-form-item>
 
-                    <!-- 寤剁画鎬ф姢鐞嗚褰� -->
                     <el-form-item label="鎶ょ悊璁板綍" prop="careRecord">
                       <el-input
                         type="textarea"
@@ -797,10 +863,8 @@
                         v-model="item.form.careRecord"
                         placeholder="璇疯緭鍏ュ欢缁�ф姢鐞嗚褰�"
                         clearable
-                      ></el-input>
+                      />
                     </el-form-item>
-
-                    <!-- 璐d换鎶ゅ+銆佸洖璁垮舰寮忋�佹湇鍔℃椂闂� -->
                     <el-row :gutter="20">
                       <el-col :span="12">
                         <el-form-item label="璐d换鎶ゅ+" prop="dutyNurse">
@@ -808,7 +872,7 @@
                             v-model="item.form.dutyNurse"
                             placeholder="璇疯緭鍏ヨ矗浠绘姢澹�"
                             clearable
-                          ></el-input>
+                          />
                         </el-form-item>
                       </el-col>
                       <el-col :span="12">
@@ -819,23 +883,11 @@
                             style="width: 100%"
                             clearable
                           >
-                            <el-option
-                              label="鐢佃瘽鍥炶"
-                              value="phone"
-                            ></el-option>
-                            <el-option
-                              label="涓婇棬鍥炶"
-                              value="home"
-                            ></el-option>
-                            <el-option
-                              label="闂ㄨ瘖鍥炶"
-                              value="clinic"
-                            ></el-option>
-                            <el-option
-                              label="寰俊鍥炶"
-                              value="wechat"
-                            ></el-option>
-                            <el-option label="鍏朵粬" value="other"></el-option>
+                            <el-option label="鐢佃瘽鍥炶" value="phone" />
+                            <el-option label="涓婇棬鍥炶" value="home" />
+                            <el-option label="闂ㄨ瘖鍥炶" value="clinic" />
+                            <el-option label="寰俊鍥炶" value="wechat" />
+                            <el-option label="鍏朵粬" value="other" />
                           </el-select>
                         </el-form-item>
                       </el-col>
@@ -852,14 +904,15 @@
                             placeholder="閫夋嫨涓嬫寤剁画鏈嶅姟鏃堕棿"
                             value-format="yyyy-MM-dd HH:mm:ss"
                             style="width: 100%"
-                          >
-                          </el-date-picker>
+                          />
                           <div
                             class="time-tip"
                             v-if="item.form.nextServiceTime"
                           >
                             璺濅笅娆℃湇鍔¤繕鏈�
-                            {{ calculateDaysLeft(item.form.nextServiceTime) }}
+                            {{
+                              calculateDaysLeft(item.form.nextServiceTime)
+                            }}
                             澶�
                           </div>
                         </el-form-item>
@@ -872,26 +925,20 @@
                             placeholder="閫夋嫨鏈嶅姟鏃堕棿"
                             value-format="yyyy-MM-dd HH:mm:ss"
                             style="width: 100%"
-                          >
-                          </el-date-picker>
+                          />
                         </el-form-item>
                       </el-col>
                     </el-row>
-
-                    <!-- 涓嬫寤剁画鏈嶅姟鏃堕棿 -->
-
-                    <!-- 鎿嶄綔鎸夐挳 -->
                     <el-form-item>
                       <el-button
                         type="primary"
                         @click="saveContinuityTab(index)"
                         :loading="item.saving"
+                        >淇濆瓨</el-button
                       >
-                        淇濆瓨
-                      </el-button>
-                      <el-button @click="resetContinuityTab(index)">
-                        閲嶇疆
-                      </el-button>
+                      <el-button @click="resetContinuityTab(index)"
+                        >閲嶇疆</el-button
+                      >
                     </el-form-item>
                   </el-form>
                 </div>
@@ -903,6 +950,7 @@
     </div>
   </div>
 </template>
+
 <script>
 import {
   getsearchrResults,
@@ -920,7 +968,6 @@
   dicts: ["sys_yujing"],
   data() {
     return {
-      // 璺敱鍙傛暟
       taskid: "",
       id: "",
       sendname: "",
@@ -928,7 +975,6 @@
       Voicetype: 0,
       serviceType: "",
 
-      // 闅忚鍐呭鐩稿叧
       activeName: "wj",
       taskname: "",
       voice: "",
@@ -936,10 +982,10 @@
       voiceDatatop: [],
       form: {},
       userform: {},
-      // 鏂板锛氶棶棰橀�夋嫨鐩稿叧
+
       showQuestionSelector: false,
       selectedQuestionIds: [],
-      // 鎮h�呭熀纭�淇℃伅琛ㄥ崟
+
       patientForm: {
         name: "",
         sex: "",
@@ -970,12 +1016,10 @@
       },
       savingPatientInfo: false,
 
-      // 寤剁画鎶ょ悊鐩稿叧
       activeContinuityTab: "continuity-0",
       continuityTabs: [],
       continuityTabIndex: 0,
       continuityRules: {
-        // 绉婚櫎continuityProblems鐨勯獙璇佽鍒�
         careRecord: [
           { required: true, message: "璇疯緭鍏ユ姢鐞嗚褰�", trigger: "blur" },
         ],
@@ -988,15 +1032,10 @@
         serviceTime: [
           { required: true, message: "璇烽�夋嫨鏈嶅姟鏃堕棿", trigger: "change" },
         ],
-        nextServiceTime: [
-          { required: true, message: "璇烽�夋嫨涓嬫鏈嶅姟鏃堕棿", trigger: "change" },
-        ],
       },
 
-      // 鍙�夌殑寤剁画闂锛堜粠宸︿晶闂嵎涓彁鍙栵級
       availableQuestions: [],
 
-      // 寤剁画鎶ょ悊姹囨�讳俊鎭�
       continuitySummary: {
         continueCount: 0,
         continueTimeNow: "",
@@ -1004,7 +1043,6 @@
         continueContent: "",
       },
 
-      // 鍏朵粬
       logsheetlist: [],
     };
   },
@@ -1015,34 +1053,21 @@
     this.patid = this.$route.query.patid;
     this.Voicetype = this.$route.query.Voicetype || 0;
     this.serviceType = this.$route.query.serviceType;
-
     this.getTaskservelist(this.id);
   },
   methods: {
-    // 鑾峰彇涓婚鏍峰紡绫�
     getTopicClass(item) {
-      console.log(item.isabnormal, "getTopicClass");
-
-      if (item.isabnormal == 1) {
-        return "scriptTopic-isabnormal";
-      } else if (item.isabnormal == 2) {
-        return "scriptTopic-warning";
-      } else {
-        return "scriptTopic-dev";
-      }
+      if (item.isabnormal == 1) return "scriptTopic-isabnormal";
+      else if (item.isabnormal == 2) return "scriptTopic-warning";
+      else return "scriptTopic-dev";
     },
-
-    // 鑾峰彇閫夐」鏍峰紡绫�
     getOptionClass(items) {
-      if (items.isabnormal == 1) {
-        return "red-star";
-      } else if (items.isabnormal == 2) {
-        return "yellow-star";
-      }
+      if (items.isabnormal == 1) return "red-star";
+      else if (items.isabnormal == 2) return "yellow-star";
       return "";
     },
 
-    // 鑾峰彇闂嵎鏁版嵁
+    // ---- 闂嵎鏁版嵁鍔犺浇 ----
     getsearchrResults(id) {
       getsearchrResults({
         taskid: this.taskid,
@@ -1052,7 +1077,6 @@
       }).then((res) => {
         if (res.code === 200) {
           this.tableDatatop = res.data.scriptResult;
-
           this.tableDatatop.forEach((item) => {
             if (item.scriptType == 2) item.scriptResult = [];
             if (item.scriptResultId && item.scriptType != 2) {
@@ -1065,18 +1089,18 @@
           });
           this.taskname = res.data.taskName;
           this.overdata();
-          // 鎻愬彇鍙�夌殑寤剁画闂
           this.extractAvailableQuestions();
+          // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊锛堟鏃� availableQuestions 宸插氨缁級
+          this.loadContinuityHistory();
         }
       });
     },
     overdata() {
       this.tableDatatop.forEach((item, index) => {
-        var obj = item.svyTaskTemplateTargetoptions.find(
+        const obj = item.svyTaskTemplateTargetoptions.find(
           (items) => items.optioncontent == item.scriptResult
         );
         if (obj) {
-          console.log(obj, "obj");
           if (obj.isabnormal) {
             this.tableDatatop[index].isabnormal = obj.isabnormal;
           }
@@ -1084,7 +1108,6 @@
         }
       });
     },
-    // 鎻愬彇鍙�夌殑寤剁画闂
     extractAvailableQuestions() {
       this.availableQuestions = this.tableDatatop
         .filter(
@@ -1096,136 +1119,29 @@
           text: item.scriptContent,
           originalIndex: index,
         }));
-    }, // 鍒囨崲闂閫夋嫨闈㈡澘鏄剧ず
+    },
+
+    // ---- 闂閫夊彇 ----
     toggleQuestionSelection() {
       this.showQuestionSelector = !this.showQuestionSelector;
-      if (this.showQuestionSelector) {
-        // 閲嶇疆閫夋嫨
-        this.selectedQuestionIds = [];
-      }
+      if (this.showQuestionSelector) this.selectedQuestionIds = [];
     },
-    // 娣诲姞寤剁画闂
-    addContinuityProblem(tabIndex) {
-      this.continuityTabs[tabIndex].form.continuityProblems.push({
-        questionId: "",
-        status: "pending",
-        description: "",
-        resolvedDate: "",
-        createTime: new Date().toISOString(),
-        // 鏂板瀛楁锛岀敤浜庨棶鍗峰紡浜や簰
-        selectedOption: "", // 鍗曢�夌瓟妗�
-        selectedOptions: [], // 澶氶�夌瓟妗�
-        answer: "", // 濉┖绛旀
-        showAppendInput: false, // 鏄惁鏄剧ず闄勫姞杈撳叆妗�
-        appendInput: "", // 闄勫姞杈撳叆鍐呭
-      });
-    },
-    // 鏍规嵁闂ID鑾峰彇鍘熷闂鏁版嵁
-    getQuestionOriginalData(questionId) {
-      if (!questionId) return null;
-      const originalIndex = this.availableQuestions.find(
-        (q) => q.id === questionId
-      )?.originalIndex;
-      if (originalIndex !== undefined && this.tableDatatop[originalIndex]) {
-        return this.tableDatatop[originalIndex];
-      }
-      return null;
-    },
-    // 绉婚櫎寤剁画闂
-    removeContinuityProblem(tabIndex, problemIndex) {
-      this.continuityTabs[tabIndex].form.continuityProblems.splice(
-        problemIndex,
-        1
-      );
-    },
-
-    // 澶勭悊闂閫夋嫨鍙樻洿
-    handleProblemChange(tabIndex, problemIndex, questionId) {
-      const problem =
-        this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
-
-      if (!questionId) {
-        problem.description = "";
-        // 娓呯┖绛旀瀛楁
-        problem.selectedOption = "";
-        problem.selectedOptions = [];
-        problem.answer = "";
-        problem.showAppendInput = false;
-        problem.appendInput = "";
-        return;
-      }
-
-      // 鑷姩濉厖闂鎻忚堪
-      const question = this.availableQuestions.find((q) => q.id === questionId);
-      if (question) {
-        problem.description = `闂锛�${question.text}`;
-      }
-
-      // 鏍规嵁闂绫诲瀷鍒濆鍖栫瓟妗堝瓧娈�
-      const originalData = this.getQuestionOriginalData(questionId);
-      if (originalData) {
-        // 鍒濆鍖栧崟閫夌瓟妗�
-        if (originalData.scriptType === 1) {
-          problem.selectedOption = originalData.scriptResult || "";
-          // 妫�鏌ユ槸鍚﹂渶瑕佹樉绀洪檮鍔犺緭鍏ユ
-          problem.showAppendInput = originalData.showAppendInput || false;
-          problem.appendInput = originalData.answerps || "";
-        }
-        // 鍒濆鍖栧閫夌瓟妗�
-        else if (originalData.scriptType === 2) {
-          problem.selectedOptions = Array.isArray(originalData.scriptResult)
-            ? [...originalData.scriptResult]
-            : originalData.scriptResult
-            ? originalData.scriptResult.split("&")
-            : [];
-        }
-        // 鍒濆鍖栧~绌虹瓟妗�
-        else if (originalData.scriptType === 4) {
-          problem.answer = originalData.scriptResult || "";
-        }
-      }
-    },
-
-    // 鏍规嵁闂ID鑾峰彇闂鏂囨湰
-    getQuestionText(questionId) {
-      if (!questionId) return "鏈�夋嫨闂";
-      const question = this.availableQuestions.find((q) => q.id === questionId);
-      return question
-        ? `${question.index + 1}. ${question.text}`
-        : "闂宸插垹闄�";
-    },
-
-    // 鎴柇鏂囨湰
-    truncateText(text, length) {
-      if (!text) return "";
-      return text.length > length ? text.substring(0, length) + "..." : text;
-    },
-    // 纭闂閫夋嫨
     confirmQuestionSelection() {
       if (this.selectedQuestionIds.length === 0) {
         this.$modal.msgWarning("璇疯嚦灏戦�夋嫨涓�涓欢缁棶棰�");
         return;
       }
-
-      // 鑾峰彇褰撳墠婵�娲荤殑鏍囩椤电储寮�
       const activeTabIndex = this.continuityTabs.findIndex(
         (tab) => tab.name === this.activeContinuityTab
       );
-
       if (activeTabIndex === -1) {
         this.$modal.msgError("鏈壘鍒版縺娲荤殑寤剁画鎶ょ悊鏍囩椤�");
         return;
       }
-
-      // 娣诲姞閫変腑鐨勯棶棰樺埌褰撳墠鏍囩椤�
       this.selectedQuestionIds.forEach((questionId) => {
-        // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓闂
         const exists = this.continuityTabs[
           activeTabIndex
-        ].form.continuityProblems.some(
-          (problem) => problem.questionId === questionId
-        );
-
+        ].form.continuityProblems.some((p) => p.questionId === questionId);
         if (!exists) {
           this.continuityTabs[activeTabIndex].form.continuityProblems.push({
             questionId: questionId,
@@ -1233,35 +1149,31 @@
             description: "",
             resolvedDate: "",
             createTime: new Date().toISOString(),
+            isCustom: false,
+            customText: "",
+            customType: null,
+            customOptions: [],
+            customAnswer: "",
+            selectedOption: "",
+            selectedOptions: [],
+            answer: "",
+            showAppendInput: false,
+            appendInput: "",
           });
         }
       });
-
-      // 鍏抽棴閫夋嫨闈㈡澘
       this.showQuestionSelector = false;
       this.selectedQuestionIds = [];
-
-      this.$modal.msgSuccess(
-        `宸叉坊鍔� ${this.selectedQuestionIds.length} 涓欢缁棶棰榒
-      );
+      this.$modal.msgSuccess("宸叉坊鍔犻�変腑鐨勫欢缁棶棰�");
     },
 
-    // 绉婚櫎寤剁画闂
-    removeContinuityProblem(tabIndex, problemIndex) {
-      this.continuityTabs[tabIndex].form.continuityProblems.splice(
-        problemIndex,
-        1
-      );
-    },
-
-    // 鑾峰彇璇煶鏁版嵁
+    // ---- 璇煶鏁版嵁 ----
     getPersonVoices(id) {
-      let obj = {
+      const obj = {
         taskid: this.taskid,
         patid: this.patid,
         subId: id ? id : this.id,
       };
-
       getPersonVoices(obj).then((res) => {
         if (res.code == 200) {
           this.voiceDatatop = res.data.serviceSubtaskDetails;
@@ -1276,27 +1188,22 @@
               item.scriptResult = [];
             }
           });
-
-          // 鎻愬彇鍙�夌殑寤剁画闂
           this.extractAvailableQuestions();
+          this.loadContinuityHistory();
         }
       });
     },
 
-    // 鑾峰彇鍩虹淇℃伅
+    // ---- 鎮h�呬俊鎭� ----
     getuserinfo() {
-      const queryParams = {
-        pid: Number(this.patid),
-        allhosp: "0",
-      };
-
-      messagelistpatient(queryParams).then((response) => {
-        if (response.rows[0]) {
-          this.userform = response.rows[0];
-          this.initPatientForm();
+      messagelistpatient({ pid: Number(this.patid), allhosp: "0" }).then(
+        (response) => {
+          if (response.rows[0]) {
+            this.userform = response.rows[0];
+            this.initPatientForm();
+          }
         }
-      });
-
+      );
       listcontactinformation({ patid: this.patid }).then((response) => {
         this.tableData = response.rows;
         if (this.tableData.length) {
@@ -1305,8 +1212,6 @@
         }
       });
     },
-
-    // 鍒濆鍖栨偅鑰呰〃鍗�
     initPatientForm() {
       if (this.userform) {
         this.patientForm.name = this.userform.name || "";
@@ -1316,7 +1221,6 @@
         this.patientForm.address = this.userform.placeOfResidence || "";
         this.patientForm.hospitalNumber = this.userform.medicalRecordNo || "";
       }
-
       if (this.form) {
         this.patientForm.dischargeDate =
           this.formatTime(this.form.endtime) || "";
@@ -1325,59 +1229,116 @@
       }
     },
 
-    // 鑾峰彇鎮h�呰褰�
+    // ---- 涓绘暟鎹姞杞� ----
     getTaskservelist(id) {
-      getTaskservelist({
-        patid: this.patid,
-        subId: id,
-        pageSize: 100,
-      }).then((res) => {
-        if (res.code == 200) {
-          this.form = res.rows[0].serviceSubtaskList.find(
-            (item) => item.id == this.id
-          );
-          this.logsheetlist = res.rows[0].serviceSubtaskList;
-
-          // 鍒濆鍖栨偅鑰呬俊鎭�
-          this.initPatientForm();
-
-          // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊鏁版嵁
-          this.loadContinuityHistory();
-          this.getuserinfo();
+      getTaskservelist({ patid: this.patid, subId: id, pageSize: 100 }).then(
+        (res) => {
+          if (res.code == 200) {
+            this.form = res.rows[0].serviceSubtaskList.find(
+              (item) => item.id == this.id
+            );
+            this.logsheetlist = res.rows[0].serviceSubtaskList;
+            this.initPatientForm();
+            this.getuserinfo();
+          }
+          if (this.Voicetype) {
+            this.getPersonVoices();
+          } else {
+            this.getsearchrResults();
+          }
         }
-
-        if (this.Voicetype) {
-          this.getPersonVoices();
-        } else {
-          this.getsearchrResults();
-        }
-      });
+      );
     },
 
-    // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊鏁版嵁
+    // ---- 寤剁画鎶ょ悊鍘嗗彶鍔犺浇锛堝吋瀹硅嚜瀹氫箟锛� ----
     loadContinuityHistory() {
       if (this.form && this.form.continueContent) {
         try {
           const historyData = JSON.parse(this.form.continueContent);
-          this.continuityTabs = historyData.map((item, index) => ({
-            name: `continuity-${index}`,
-            title: `寤剁画鎶ょ悊${index + 1}`,
-            form: {
-              continuityProblems: item.continuityProblems || [],
-              careRecord: item.careRecord || "",
-              dutyNurse: item.dutyNurse || "",
-              visitType: item.visitType || "",
-              serviceTime: item.serviceTime || "",
-              nextServiceTime: item.nextServiceTime || "",
-            },
-            saving: false,
-          }));
+          this.continuityTabs = historyData.map((item, index) => {
+            const problems = (item.continuityProblems || []).map((problem) => {
+              // 澶勭悊鑷畾涔夐棶棰樺洖鏄�
+              const isCustom =
+                problem.questionId === "__CUSTOM__" ||
+                problem.isCustom === true;
+              if (isCustom) {
+                problem.isCustom = true;
+                problem.questionId = "__CUSTOM__";
+                if (!problem.customText && problem.description) {
+                  const match =
+                    problem.description.match(/鑷畾涔夐棶棰榌锛�:]\s*(.*)/);
+                  if (match) problem.customText = match[1];
+                }
+                if (!problem.customText) problem.customText = "锛堣嚜瀹氫箟闂锛�";
+                // 纭繚閫夐」鏁扮粍瀛樺湪
+                if (!Array.isArray(problem.customOptions))
+                  problem.customOptions = [];
+                if (!problem.customType) problem.customType = 1; // 榛樿鍗曢��
+                if (problem.customAnswer === undefined)
+                  problem.customAnswer = "";
+              } else if (
+                problem.customText &&
+                this.availableQuestions.length > 0
+              ) {
+                // 鏈夎嚜瀹氫箟鏂囨湰浣嗘湭鏍囪锛屼笖涓嶅湪宸叉湁鍒楄〃涓紝瑙嗕负鑷畾涔�
+                const exists = this.availableQuestions.some(
+                  (q) => q.id === problem.questionId
+                );
+                if (!exists) {
+                  problem.isCustom = true;
+                  problem.questionId = "__CUSTOM__";
+                  if (!problem.customText && problem.description) {
+                    const match =
+                      problem.description.match(/鑷畾涔夐棶棰榌锛�:]\s*(.*)/);
+                    if (match) problem.customText = match[1];
+                  }
+                  if (!problem.customText)
+                    problem.customText = "锛堣嚜瀹氫箟闂锛�";
+                  if (!Array.isArray(problem.customOptions))
+                    problem.customOptions = [];
+                  if (!problem.customType) problem.customType = 1;
+                  if (problem.customAnswer === undefined)
+                    problem.customAnswer = "";
+                }
+              }
+              // 纭繚瀛楁瀹屾暣
+              if (!problem.hasOwnProperty("selectedOption"))
+                problem.selectedOption = "";
+              if (!problem.hasOwnProperty("selectedOptions"))
+                problem.selectedOptions = [];
+              if (!problem.hasOwnProperty("answer")) problem.answer = "";
+              if (!problem.hasOwnProperty("showAppendInput"))
+                problem.showAppendInput = false;
+              if (!problem.hasOwnProperty("appendInput"))
+                problem.appendInput = "";
+              if (!problem.hasOwnProperty("status")) problem.status = "pending";
+              if (!problem.hasOwnProperty("description"))
+                problem.description = "";
+              if (!problem.hasOwnProperty("resolvedDate"))
+                problem.resolvedDate = "";
+              if (!problem.hasOwnProperty("createTime"))
+                problem.createTime = new Date().toISOString();
+              return problem;
+            });
+
+            return {
+              name: `continuity-${index}`,
+              title: `寤剁画鎶ょ悊${index + 1}`,
+              form: {
+                continuityProblems: problems,
+                careRecord: item.careRecord || "",
+                dutyNurse: item.dutyNurse || "",
+                visitType: item.visitType || "",
+                serviceTime: item.serviceTime || "",
+                nextServiceTime: item.nextServiceTime || "",
+              },
+              saving: false,
+            };
+          });
 
           if (this.continuityTabs.length > 0) {
             this.activeContinuityTab = this.continuityTabs[0].name;
           }
-
-          // 鏇存柊姹囨�讳俊鎭�
           this.updateContinuitySummary();
         } catch (error) {
           console.error("瑙f瀽寤剁画鎶ょ悊鍘嗗彶鏁版嵁澶辫触:", error);
@@ -1385,26 +1346,9 @@
       }
     },
 
-    // 鏇存柊寤剁画鎶ょ悊姹囨�讳俊鎭�
-    updateContinuitySummary() {
-      if (this.form) {
-        this.continuitySummary.continueCount = this.form.continueCount || 0;
-        this.continuitySummary.continueTimeNow =
-          this.form.continueTimeNow || "";
-        this.continuitySummary.continueTimeNext =
-          this.form.continueTimeNext || "";
-        this.continuitySummary.continueContent =
-          this.form.continueContent || "";
-      }
-    },
-
-    // 娣诲姞寤剁画鎶ょ悊鏍囩椤�
+    // ---- 寤剁画鎶ょ悊 Tab 绠$悊 ----
     addContinuityTab() {
-      console.log(this.continuityTabs.length);
-      if (this.continuityTabs.length) {
-        this.continuityTabIndex = this.continuityTabs.length;
-      }
-      const newIndex = this.continuityTabIndex + 1;
+      const newIndex = this.continuityTabs.length + 1;
       const newTab = {
         name: `continuity-${newIndex}`,
         title: `寤剁画鎶ょ悊${newIndex}`,
@@ -1418,153 +1362,234 @@
         },
         saving: false,
       };
-
       this.continuityTabs.push(newTab);
-      this.continuityTabIndex = newIndex;
       this.activeContinuityTab = newTab.name;
     },
-
-    // 绉婚櫎寤剁画鎶ょ悊鏍囩椤�
     removeContinuityTab(targetName) {
-      const tabs = this.continuityTabs;
       let activeName = this.activeContinuityTab;
-
       if (activeName === targetName) {
+        const tabs = this.continuityTabs;
         tabs.forEach((tab, index) => {
           if (tab.name === targetName) {
             const nextTab = tabs[index + 1] || tabs[index - 1];
-            if (nextTab) {
-              activeName = nextTab.name;
-            }
+            if (nextTab) activeName = nextTab.name;
           }
         });
       }
-
       this.activeContinuityTab = activeName;
-      this.continuityTabs = tabs.filter((tab) => tab.name !== targetName);
+      this.continuityTabs = this.continuityTabs.filter(
+        (tab) => tab.name !== targetName
+      );
     },
-
-    // 澶勭悊鏍囩椤电偣鍑�
     handleTabClick(tab) {
       this.activeContinuityTab = tab.name;
     },
 
-    // 璁$畻璺濈涓嬫鏈嶅姟杩樻湁澶氬皯澶�
-    calculateDaysLeft(nextServiceTime) {
-      if (!nextServiceTime) return 0;
-
-      const nextTime = new Date(nextServiceTime);
-      const now = new Date();
-      const diffTime = nextTime - now;
-      const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
-
-      return diffDays > 0 ? diffDays : 0;
+    // ---- 寤剁画闂绠$悊锛堝凡鏈夐棶棰橈級 ----
+    addContinuityProblem(tabIndex) {
+      this.continuityTabs[tabIndex].form.continuityProblems.push({
+        questionId: "",
+        status: "pending",
+        description: "",
+        resolvedDate: "",
+        createTime: new Date().toISOString(),
+        isCustom: false,
+        customText: "",
+        customType: null,
+        customOptions: [],
+        customAnswer: "",
+        selectedOption: "",
+        selectedOptions: [],
+        answer: "",
+        showAppendInput: false,
+        appendInput: "",
+      });
+    },
+    removeContinuityProblem(tabIndex, problemIndex) {
+      this.continuityTabs[tabIndex].form.continuityProblems.splice(
+        problemIndex,
+        1
+      );
+    },
+    handleProblemChange(tabIndex, problemIndex, questionId) {
+      const problem =
+        this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+      // 濡傛灉鍒囨崲涓哄凡鏈夐棶棰橈紝娓呴櫎鑷畾涔夌姸鎬�
+      if (questionId) {
+        problem.isCustom = false;
+        problem.customText = "";
+        problem.customType = null;
+        problem.customOptions = [];
+        problem.customAnswer = "";
+        // 鑷姩濉厖鎻忚堪
+        const question = this.availableQuestions.find(
+          (q) => q.id === questionId
+        );
+        if (question) problem.description = `闂锛�${question.text}`;
+        // 鍒濆鍖栫瓟妗堝瓧娈�
+        const originalData = this.getQuestionOriginalData(questionId);
+        if (originalData) {
+          if (originalData.scriptType === 1) {
+            problem.selectedOption = originalData.scriptResult || "";
+            problem.showAppendInput = originalData.showAppendInput || false;
+            problem.appendInput = originalData.answerps || "";
+          } else if (originalData.scriptType === 2) {
+            problem.selectedOptions = Array.isArray(originalData.scriptResult)
+              ? [...originalData.scriptResult]
+              : originalData.scriptResult
+              ? originalData.scriptResult.split("&")
+              : [];
+          } else if (originalData.scriptType === 4) {
+            problem.answer = originalData.scriptResult || "";
+          }
+        }
+      } else {
+        // 鏈�夋嫨闂
+        problem.description = "";
+        problem.selectedOption = "";
+        problem.selectedOptions = [];
+        problem.answer = "";
+        problem.showAppendInput = false;
+        problem.appendInput = "";
+      }
     },
 
-    // 淇濆瓨寤剁画鎶ょ悊鏍囩椤�
+    // ---- 鑷畾涔夐棶棰樼浉鍏� ----
+    addCustomProblem(tabIndex) {
+      this.continuityTabs[tabIndex].form.continuityProblems.push({
+        questionId: "__CUSTOM__",
+        isCustom: true,
+        customText: "",
+        customType: 1, // 榛樿鍗曢��
+        customOptions: [{ optioncontent: "" }],
+        customAnswer: "",
+        status: "pending",
+        description: "",
+        resolvedDate: "",
+        createTime: new Date().toISOString(),
+        selectedOption: "",
+        selectedOptions: [],
+        answer: "",
+        showAppendInput: false,
+        appendInput: "",
+      });
+    },
+    addCustomOption(tabIndex, problemIndex) {
+      const problem =
+        this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+      problem.customOptions.push({ optioncontent: "" });
+    },
+    removeCustomOption(tabIndex, problemIndex, optionIndex) {
+      const problem =
+        this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+      problem.customOptions.splice(optionIndex, 1);
+    },
+
+    // ---- 杈呭姪鏂规硶 ----
+    getQuestionOriginalData(questionId) {
+      if (!questionId) return null;
+      const found = this.availableQuestions.find((q) => q.id === questionId);
+      if (found && this.tableDatatop[found.originalIndex]) {
+        return this.tableDatatop[found.originalIndex];
+      }
+      return null;
+    },
+    truncateText(text, length) {
+      if (!text) return "";
+      return text.length > length ? text.substring(0, length) + "..." : text;
+    },
+
+    // ---- 淇濆瓨寤剁画鎶ょ悊 ----
     saveContinuityTab(index) {
       const formRef = this.$refs[`continuityForm${index}`];
       if (!formRef) return;
-
-      // 楠岃瘉鍩烘湰琛ㄥ崟
       formRef[0].validate((valid) => {
         if (valid) {
-          // 楠岃瘉寤剁画闂鏄惁瀹屾暣
           const problems = this.continuityTabs[index].form.continuityProblems;
           let hasError = false;
-
-          problems.forEach((problem, problemIndex) => {
-            if (!problem.questionId) {
-              hasError = true;
-              this.$modal.msgError(`绗�${problemIndex + 1}涓欢缁棶棰樻湭閫夋嫨`);
+          problems.forEach((problem, pIdx) => {
+            if (problem.isCustom) {
+              // 鑷畾涔夐棶棰樻牎楠�
+              if (!problem.customText || !problem.customText.trim()) {
+                hasError = true;
+                this.$modal.msgError(`绗�${pIdx + 1}涓嚜瀹氫箟闂鍐呭涓虹┖`);
+              }
+              if (
+                (problem.customType === 1 || problem.customType === 2) &&
+                problem.customOptions.some((opt) => !opt.optioncontent.trim())
+              ) {
+                hasError = true;
+                this.$modal.msgError(`绗�${pIdx + 1}涓嚜瀹氫箟闂瀛樺湪绌洪�夐」`);
+              }
+              if (problem.customType === 1 && !problem.customAnswer) {
+                hasError = true;
+                this.$modal.msgError(
+                  `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堝崟閫夛級鏈�夋嫨绛旀`
+                );
+              }
+              if (
+                problem.customType === 2 &&
+                (!problem.customAnswer || problem.customAnswer.length === 0)
+              ) {
+                hasError = true;
+                this.$modal.msgError(
+                  `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堝閫夛級鏈�夋嫨绛旀`
+                );
+              }
+              if (problem.customType === 4 && !problem.customAnswer) {
+                hasError = true;
+                this.$modal.msgError(
+                  `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堥棶绛旓級鏈~鍐欑瓟妗坄
+                );
+              }
+            } else {
+              // 宸叉湁闂鏍¢獙
+              if (!problem.questionId) {
+                hasError = true;
+                this.$modal.msgError(`绗�${pIdx + 1}涓欢缁棶棰樻湭閫夋嫨`);
+              }
             }
           });
-
-          if (hasError) {
-            return false;
-          }
+          if (hasError) return;
 
           this.continuityTabs[index].saving = true;
-
-          // 鏇存柊姹囨�讳俊鎭�
           this.updateContinuitySummaryFromTabs();
-
-          // 璋冪敤淇濆瓨API
           this.saveContinuityData();
         } else {
           this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
-          return false;
         }
       });
     },
-
-    // 鏇存柊寤剁画鎶ょ悊姹囨�讳俊鎭�
     updateContinuitySummaryFromTabs() {
       if (this.continuityTabs.length === 0) return;
-
-      // 鎵惧埌鏈�鏂扮殑鏈嶅姟鏃堕棿
-      let latestTime = "";
-      let nextTime = "";
-      let totalProblems = 0;
-
+      let latestTime = "",
+        nextTime = "";
       this.continuityTabs.forEach((tab) => {
-        if (tab.form.serviceTime) {
-          if (
-            !latestTime ||
-            new Date(tab.form.serviceTime) > new Date(latestTime)
-          ) {
-            latestTime = tab.form.serviceTime;
-          }
+        if (
+          tab.form.serviceTime &&
+          (!latestTime || new Date(tab.form.serviceTime) > new Date(latestTime))
+        ) {
+          latestTime = tab.form.serviceTime;
         }
-        if (tab.form.nextServiceTime) {
-          if (
-            !nextTime ||
-            new Date(tab.form.nextServiceTime) < new Date(nextTime)
-          ) {
-            nextTime = tab.form.nextServiceTime;
-          }
+        if (
+          tab.form.nextServiceTime &&
+          (!nextTime || new Date(tab.form.nextServiceTime) < new Date(nextTime))
+        ) {
+          nextTime = tab.form.nextServiceTime;
         }
-
-        // 缁熻闂鏁伴噺
-        totalProblems += tab.form.continuityProblems.length;
       });
-
       this.continuitySummary.continueCount = this.continuityTabs.length;
       this.continuitySummary.continueTimeNow = latestTime;
       this.continuitySummary.continueTimeNext = nextTime;
-
-      // 鏋勫缓瀹屾暣鐨勫欢缁姢鐞嗘暟鎹�
       const continuityData = this.continuityTabs.map((tab) => ({
         ...tab.form,
         tabTitle: tab.title,
         tabName: tab.name,
       }));
-
       this.continuitySummary.continueContent = JSON.stringify(continuityData);
-      this.continuitySummary.totalProblems = totalProblems;
     },
-
-    // 淇濆瓨寤剁画鎶ょ悊鏁版嵁
     saveContinuityData() {
       const vm = this;
-
-      // 楠岃瘉姣忎釜闂鐨剄uestionId鏄惁宸查�夋嫨
-      let hasEmptyQuestion = false;
-      this.continuityTabs.forEach((tab, tabIndex) => {
-        tab.form.continuityProblems.forEach((problem, problemIndex) => {
-          if (!problem.questionId) {
-            hasEmptyQuestion = true;
-            vm.$modal.msgError(
-              `绗�${tabIndex + 1}涓爣绛鹃〉鐨勭${problemIndex + 1}涓棶棰樻湭閫夋嫨`
-            );
-          }
-        });
-      });
-
-      if (hasEmptyQuestion) {
-        return;
-      }
-
       const formData = {
         id: vm.id,
         patid: vm.patid,
@@ -1574,29 +1599,12 @@
         continueTimeNow: vm.continuitySummary.continueTimeNow,
         continueTimeNext: vm.continuitySummary.continueTimeNext,
         continueContent: vm.continuitySummary.continueContent,
-        // 鍙互娣诲姞闂嵎绛旀鐨勬暣鍚�
-        // questionnaireAnswers: vm.continuityTabs.map((tab) => ({
-        //   tabName: tab.name,
-        //   problems: tab.form.continuityProblems.map((problem) => ({
-        //     questionId: problem.questionId,
-        //     answer:
-        //       problem.selectedOption ||
-        //       problem.selectedOptions ||
-        //       problem.answer,
-        //     status: problem.status,
-        //     description: problem.description,
-        //   })),
-        // })),
       };
-
       Editsingletaskson(formData)
         .then((res) => {
           if (res.code === 200) {
             vm.$modal.msgSuccess("寤剁画鎶ょ悊璁板綍淇濆瓨鎴愬姛");
-            // 閲嶇疆淇濆瓨鐘舵��
-            vm.continuityTabs.forEach((tab) => {
-              tab.saving = false;
-            });
+            vm.continuityTabs.forEach((tab) => (tab.saving = false));
           } else {
             vm.$modal.msgError("淇濆瓨澶辫触");
           }
@@ -1604,13 +1612,9 @@
         .catch((error) => {
           console.error("淇濆瓨澶辫触:", error);
           vm.$modal.msgError("淇濆瓨澶辫触");
-          vm.continuityTabs.forEach((tab) => {
-            tab.saving = false;
-          });
+          vm.continuityTabs.forEach((tab) => (tab.saving = false));
         });
     },
-
-    // 閲嶇疆寤剁画鎶ょ悊鏍囩椤�
     resetContinuityTab(index) {
       this.continuityTabs[index].form = {
         continuityProblems: [],
@@ -1623,13 +1627,11 @@
       this.$refs[`continuityForm${index}`][0].clearValidate();
     },
 
-    // 淇濆瓨鎮h�呬俊鎭�
+    // ---- 鎮h�呬俊鎭繚瀛� ----
     savePatientInfo() {
       this.$refs.patientForm.validate((valid) => {
         if (valid) {
           this.savingPatientInfo = true;
-
-          // 鏇存柊userform鏁版嵁
           const updatedUserform = {
             ...this.userform,
             name: this.patientForm.name,
@@ -1639,7 +1641,6 @@
             placeOfResidence: this.patientForm.address,
             medicalRecordNo: this.patientForm.hospitalNumber,
           };
-
           alterpatient(updatedUserform)
             .then((res) => {
               if (res.code == 200) {
@@ -1657,47 +1658,56 @@
             });
         } else {
           this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
-          return false;
         }
       });
     },
-
-    // 閲嶇疆鎮h�呬俊鎭�
     resetPatientInfo() {
       this.initPatientForm();
       this.$refs.patientForm.clearValidate();
     },
 
-    // 鏃堕棿鏍煎紡鍖�
+    // ---- 宸ュ叿鏂规硶 ----
     formatTime(time) {
       if (!time) return "";
       return time.split(" ")[0];
     },
-
-    // 鏍煎紡鍖栨樉绀烘椂闂�
     formatDisplayTime(time) {
       if (!time) return "鏈缃�";
       return time.replace(" ", " ");
     },
-
-    // 寮傚父鍒楁覆鏌�
-    tableRowClassName({ row }) {
-      if (row.id == this.id) {
-        return "warning-row";
+    calculateDaysLeft(nextServiceTime) {
+      if (!nextServiceTime) return 0;
+      const diff = new Date(nextServiceTime) - new Date();
+      const days = Math.ceil(diff / (1000 * 60 * 60 * 24));
+      return days > 0 ? days : 0;
+    },
+    updateContinuitySummary() {
+      if (this.form) {
+        this.continuitySummary.continueCount = this.form.continueCount || 0;
+        this.continuitySummary.continueTimeNow =
+          this.form.continueTimeNow || "";
+        this.continuitySummary.continueTimeNext =
+          this.form.continueTimeNext || "";
+        this.continuitySummary.continueContent =
+          this.form.continueContent || "";
       }
+    },
+    tableRowClassName({ row }) {
+      if (row.id == this.id) return "warning-row";
       return "";
     },
   },
 };
 </script>
+
 <style lang="scss" scoped>
+/* 鍘熸湁鏍峰紡淇濇寔涓嶅彉锛屼粎澧炲姞鑷畾涔夌紪杈戠浉鍏虫牱寮� */
 .ContinuityCarePage {
   margin: 10px;
   display: flex;
   flex-direction: column;
   gap: 20px;
 }
-
 .headline {
   font-size: 20px;
   height: 40px;
@@ -1709,7 +1719,6 @@
   color: #333;
   font-weight: 600;
 }
-
 .sub-headline {
   font-size: 16px;
   height: 36px;
@@ -1721,14 +1730,11 @@
   font-weight: 500;
   border-bottom: 2px solid #e4e7ed;
   padding-bottom: 8px;
-
   i {
     margin-right: 8px;
     font-size: 18px;
   }
 }
-
-/* 绗竴閮ㄥ垎锛氭湇鍔″熀纭�淇℃伅 */
 .basic-info-section {
   margin: 0 10px;
   padding: 20px;
@@ -1736,43 +1742,35 @@
   border: 1px solid #dcdfe6;
   box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
   border-radius: 4px;
-
   .basic-info-container {
     display: flex;
     gap: 20px;
     min-height: 1000px;
-
     @media screen and (max-width: 1200px) {
       flex-direction: column;
     }
   }
-
   .followup-content {
     flex: 1;
     min-width: 0;
-
     &.readonly-content {
       background: #f8f9fa;
       border-radius: 8px;
       padding: 15px;
       border: 1px solid #e4e7ed;
     }
-
     .content-container {
       height: calc(1000px - 60px);
       overflow: hidden;
       display: flex;
       flex-direction: column;
-
       ::v-deep .el-tabs {
         flex: 1;
         display: flex;
         flex-direction: column;
-
         .el-tabs__content {
           flex: 1;
           overflow: hidden;
-
           .el-tab-pane {
             height: 100%;
             overflow: hidden;
@@ -1783,7 +1781,6 @@
       }
     }
   }
-
   .continuity-history {
     flex: 1;
     min-width: 0;
@@ -1792,41 +1789,28 @@
     padding: 15px;
     border: 1px solid #e4e7ed;
     box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
-
     .history-content {
       height: calc(1000px - 60px);
       overflow: hidden;
       display: flex;
       flex-direction: column;
-
       ::v-deep .el-tabs {
         flex: 1;
         display: flex;
         flex-direction: column;
-
+        min-height: 0;
         .el-tabs__content {
           flex: 1;
           overflow-y: auto;
+            min-height: 0;           // 鍏抽敭锛氶厤鍚� flex
           padding: 15px 0;
-
           .continuity-form {
             padding: 0 10px;
-
-            .el-form {
-              .selected-problems {
-                margin-top: 10px;
-                padding: 10px;
-                background: #f5f7fa;
-                border-radius: 4px;
-                border: 1px solid #e4e7ed;
-              }
-
-              .time-tip {
-                margin-top: 5px;
-                font-size: 12px;
-                color: #67c23a;
-                font-style: italic;
-              }
+            .el-form .time-tip {
+              margin-top: 5px;
+              font-size: 12px;
+              color: #67c23a;
+              font-style: italic;
             }
           }
         }
@@ -1834,7 +1818,6 @@
     }
   }
 }
-
 .patient-info-section {
   margin: 0 10px 20px 10px;
   padding: 20px;
@@ -1842,40 +1825,31 @@
   border: 1px solid #dcdfe6;
   box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
   border-radius: 4px;
-
-  .patient-info-form {
-    .continuity-summary {
-      padding: 15px;
-      background: #ddf0f8;
-      border-radius: 8px;
-      border: 1px solid #b3e0f2;
-
-      .summary-item {
-        display: inline-block;
-        margin-right: 30px;
-        margin-bottom: 8px;
-
-        .label {
-          font-weight: 500;
-          color: #333;
-        }
-
-        .value {
-          color: #409eff;
-          font-weight: 500;
-        }
+  .patient-info-form .continuity-summary {
+    padding: 15px;
+    background: #ddf0f8;
+    border-radius: 8px;
+    border: 1px solid #b3e0f2;
+    .summary-item {
+      display: inline-block;
+      margin-right: 30px;
+      margin-bottom: 8px;
+      .label {
+        font-weight: 500;
+        color: #333;
+      }
+      .value {
+        color: #409eff;
+        font-weight: 500;
       }
     }
   }
 }
-
-/* 鍏变韩鏍峰紡 */
 .CONTENT {
   padding: 10px;
   height: 100%;
   display: flex;
   flex-direction: column;
-
   .title {
     font-size: 18px;
     font-weight: bold;
@@ -1884,7 +1858,6 @@
     color: #333;
   }
 }
-
 .preview-left {
   margin: 10px;
   padding: 20px;
@@ -1894,11 +1867,9 @@
   overflow-y: auto;
   background: #fff;
   flex: 1;
-
   .topic-dev {
     margin-bottom: 20px;
     font-size: 16px;
-
     .dev-text {
       margin-bottom: 10px;
       font-weight: 500;
@@ -1906,7 +1877,6 @@
     }
   }
 }
-
 .scriptTopic-dev {
   padding: 15px;
   border-radius: 4px;
@@ -1914,7 +1884,6 @@
   border: 1px solid #e4e7ed;
   margin-bottom: 15px;
 }
-
 .scriptTopic-isabnormal {
   padding: 15px;
   border-radius: 4px;
@@ -1923,7 +1892,6 @@
   color: #f56c6c;
   margin-bottom: 15px;
 }
-
 .scriptTopic-warning {
   padding: 15px;
   border-radius: 4px;
@@ -1932,14 +1900,10 @@
   color: #e6a23c;
   margin-bottom: 15px;
 }
-
-.red-star {
-  ::v-deep.el-radio__label {
-    position: relative;
-    padding-right: 10px;
-  }
-
-  ::v-deep.el-radio__label::after {
+.red-star ::v-deep.el-radio__label {
+  position: relative;
+  padding-right: 10px;
+  &::after {
     content: "*";
     color: #f56c6c;
     position: absolute;
@@ -1947,14 +1911,10 @@
     top: 0;
   }
 }
-
-.yellow-star {
-  ::v-deep.el-radio__label {
-    position: relative;
-    padding-right: 10px;
-  }
-
-  ::v-deep.el-radio__label::after {
+.yellow-star ::v-deep.el-radio__label {
+  position: relative;
+  padding-right: 10px;
+  &::after {
     content: "*";
     color: #e6a23c;
     position: absolute;
@@ -1963,20 +1923,17 @@
     font-weight: bold;
   }
 }
-
 .borderdiv {
   height: 100%;
   padding: 10px;
   display: flex;
   flex-direction: column;
-
   .title {
     font-size: 18px;
     font-weight: bold;
     margin-bottom: 20px;
     text-align: center;
   }
-
   .voice-audio {
     display: flex;
     align-items: center;
@@ -1986,14 +1943,11 @@
     background: #f5f7fa;
     border-radius: 4px;
   }
-
   .preview-left {
     flex: 1;
     margin: 0;
-
     .leftside {
       margin: 15px 0;
-
       span {
         display: inline-block;
         padding: 8px 12px;
@@ -2004,12 +1958,10 @@
         margin-left: 10px;
       }
     }
-
     .offside {
       display: flex;
       flex-direction: row-reverse;
       margin: 15px 0;
-
       .offside-value {
         padding: 8px 12px;
         background: #67c23a;
@@ -2021,48 +1973,37 @@
     }
   }
 }
-
-/* 鍝嶅簲寮忚璁� */
 @media (max-width: 768px) {
   .ContinuityCarePage {
     margin: 5px;
     gap: 10px;
   }
-
   .basic-info-section,
   .patient-info-section {
     margin: 0 5px;
     padding: 10px;
   }
-
   .basic-info-container {
     gap: 10px !important;
   }
-
-  .patient-info-form {
-    .el-row {
-      flex-direction: column;
-    }
-
-    .el-col {
-      width: 100% !important;
-      margin-bottom: 10px;
-    }
+  .patient-info-form .el-row {
+    flex-direction: column;
   }
-
+  .patient-info-form .el-col {
+    width: 100% !important;
+    margin-bottom: 10px;
+  }
   .preview-left {
     margin: 5px;
     padding: 10px;
   }
 }
-/* 闂閫夋嫨鍣ㄩ潰鏉� */
 .question-selector-panel {
   margin-bottom: 20px;
   padding: 15px;
   background: #f8f9fa;
   border: 1px solid #e4e7ed;
   border-radius: 8px;
-
   .selector-header {
     display: flex;
     justify-content: space-between;
@@ -2070,18 +2011,15 @@
     margin-bottom: 15px;
     padding-bottom: 10px;
     border-bottom: 1px solid #e4e7ed;
-
     span {
       font-weight: 500;
       color: #333;
     }
   }
-
   .question-list {
     max-height: 200px;
     overflow-y: auto;
     padding-right: 10px;
-
     .question-item {
       margin-bottom: 10px;
       padding: 8px 12px;
@@ -2089,22 +2027,18 @@
       border-radius: 6px;
       border: 1px solid #e4e7ed;
       transition: all 0.3s;
-
       &:hover {
         border-color: #409eff;
         background: #f0f7ff;
       }
-
       .question-content {
         display: flex;
         align-items: flex-start;
-
         .question-index {
           font-weight: 600;
           color: #409eff;
           min-width: 30px;
         }
-
         .question-text {
           flex: 1;
           line-height: 1.5;
@@ -2113,8 +2047,6 @@
     }
   }
 }
-
-/* 寤剁画闂琛ㄥ崟 */
 .continuity-problems-form {
   .problems-header {
     display: flex;
@@ -2123,131 +2055,112 @@
     margin-bottom: 15px;
     padding-bottom: 10px;
     border-bottom: 1px solid #e4e7ed;
-
     span {
       font-weight: 500;
       color: #333;
     }
   }
-
-  .problems-list {
-    .problem-item {
-      margin-bottom: 20px;
-      padding: 15px;
-      background: #f8f9fa;
-      border-radius: 8px;
-      border: 1px solid #e4e7ed;
-
-      &:last-child {
-        margin-bottom: 0;
+  .problems-list-container {
+    // max-height: 680px;
+    // overflow-y: auto;
+    padding-right: 10px;
+    margin-bottom: 15px;
+    &::-webkit-scrollbar {
+      width: 6px;
+    }
+    &::-webkit-scrollbar-track {
+      background: #f1f1f1;
+      border-radius: 3px;
+    }
+    &::-webkit-scrollbar-thumb {
+      background: #c1c1c1;
+      border-radius: 3px;
+      &:hover {
+        background: #a8a8a8;
       }
-
-      .problem-content {
-        .problem-meta {
+    }
+  }
+  .problem-item {
+    margin-bottom: 20px;
+    padding: 15px;
+    background: #f8f9fa;
+    border-radius: 8px;
+    border: 1px solid #e4e7ed;
+    .problem-content {
+      .problem-meta {
+        display: flex;
+        align-items: center;
+        margin-bottom: 15px;
+        padding-bottom: 10px;
+        border-bottom: 1px dashed #e4e7ed;
+        .problem-index {
+          font-weight: 500;
+          color: #409eff;
+          min-width: 80px;
+        }
+      }
+      .custom-editor {
+        padding: 10px 0;
+        .option-row {
+          display: flex;
+          align-items: center;
+          margin-bottom: 6px;
+        }
+      }
+      .problem-detail {
+        margin-top: 5px;
+        padding-top: 5px;
+        padding-bottom: 20px;
+        margin-bottom: 10px;
+        border-bottom: 1px dashed #6e9af4;
+        .detail-row {
           display: flex;
           align-items: center;
           margin-bottom: 15px;
-          padding-bottom: 10px;
-          border-bottom: 1px dashed #e4e7ed;
-
-          .problem-index {
-            font-weight: 500;
-            color: #409eff;
-            min-width: 80px;
+          &:last-child {
+            margin-bottom: 0;
           }
-        }
-
-        .problem-detail {
-          .detail-row {
-            display: flex;
-            align-items: flex-start;
-            margin-bottom: 10px;
-
-            &:last-child {
-              margin-bottom: 0;
-            }
-
-            .detail-label {
-              font-weight: 500;
-              color: #666;
-              min-width: 100px;
-              line-height: 32px;
-            }
-
-            .detail-value {
-              flex: 1;
-              line-height: 1.5;
-              color: #333;
-              padding: 5px 0;
-            }
+          .detail-label {
+            font-weight: 500;
+            color: #666;
+            min-width: 80px;
+            white-space: nowrap;
           }
         }
       }
     }
   }
-
   .empty-problems {
     text-align: center;
     padding: 30px 0;
     background: #fafafa;
     border-radius: 8px;
     border: 1px dashed #e4e7ed;
+    color: #999;
   }
 }
-/* 寤剁画闂鍒楄〃瀹瑰櫒 - 娣诲姞婊氬姩 */
-.problems-list-container {
-  max-height: 400px; /* 鎺у埗鏈�澶ч珮搴� */
-  overflow-y: auto;
-  padding-right: 10px;
-  margin-bottom: 15px;
-
-  &::-webkit-scrollbar {
-    width: 6px;
-  }
-
-  &::-webkit-scrollbar-track {
-    background: #f1f1f1;
-    border-radius: 3px;
-  }
-
-  &::-webkit-scrollbar-thumb {
-    background: #c1c1c1;
-    border-radius: 3px;
-
-    &:hover {
-      background: #a8a8a8;
-    }
-  }
-}
-
-/* 闂嵎寮忛棶棰樺睍绀� */
 .question-display-area {
   margin: 15px 0;
   padding: 15px;
   background: #fff;
   border-radius: 8px;
   border: 1px solid #e4e7ed;
-
   .question-item-render {
     .question-text {
       margin-bottom: 15px;
       font-size: 14px;
       line-height: 1.5;
       color: #333;
-
       strong {
         color: #409eff;
         margin-right: 5px;
       }
-
       span {
         color: #666;
       }
     }
-
     .question-options {
       margin-left: 20px;
-
       .el-radio,
       .el-checkbox {
         display: block;
@@ -2255,132 +2168,61 @@
         margin-right: 20px;
       }
     }
-
     .append-input {
       margin-left: 20px;
       margin-top: 10px;
     }
   }
-
-  .no-question-data {
-    text-align: center;
-    color: #999;
-    padding: 20px;
-    font-style: italic;
-  }
 }
-
-/* 璋冩暣闂璇︽儏甯冨眬 */
-.problem-detail {
-  margin-top: 5px;
-  padding-top: 5px;
-  padding-bottom: 20px;
-  margin-bottom: 10px;
-  border-bottom: 1px dashed #6e9af4;
-
-  .detail-row {
-    display: flex;
-    align-items: center;
-    margin-bottom: 15px;
-
-    &:last-child {
-      margin-bottom: 0;
-    }
-
-    .detail-label {
-      font-weight: 500;
-      color: #666;
-      min-width: 80px;
-      white-space: nowrap;
-    }
-  }
-}
-
-/* 鍝嶅簲寮忚皟鏁� */
 @media (max-width: 768px) {
   .problems-list-container {
     max-height: 300px;
   }
-
-  .problem-detail {
-    .detail-row {
-      flex-direction: column;
-      align-items: flex-start;
-
-      .detail-label {
-        margin-bottom: 5px;
-        min-width: auto;
-      }
-
-      .el-select,
-      .el-date-picker {
-        width: 100% !important;
-        margin: 5px 0 !important;
-      }
+  .problem-detail .detail-row {
+    flex-direction: column;
+    align-items: flex-start;
+    .detail-label {
+      margin-bottom: 5px;
+      min-width: auto;
+    }
+    .el-select,
+    .el-date-picker {
+      width: 100% !important;
+      margin: 5px 0 !important;
     }
   }
-}
-/* 鍝嶅簲寮忚皟鏁� */
-@media (max-width: 768px) {
   .question-selector-panel {
     padding: 10px;
-
-    .question-list {
-      .question-item {
-        padding: 6px 8px;
-      }
+    .question-list .question-item {
+      padding: 6px 8px;
     }
   }
-
-  .continuity-problems-form {
-    .problems-list {
-      .problem-item {
-        padding: 10px;
-
-        .problem-content {
-          .problem-meta {
-            flex-direction: column;
-            align-items: flex-start;
-
-            .el-select {
-              width: 100% !important;
-              margin: 10px 0;
-            }
-          }
-
-          .problem-detail {
-            .detail-row {
-              flex-direction: column;
-              align-items: flex-start;
-
-              .detail-label {
-                margin-bottom: 5px;
-                min-width: auto;
-              }
-            }
-          }
-        }
-      }
+  .continuity-problems-form
+    .problems-list
+    .problem-item
+    .problem-content
+    .problem-meta {
+    flex-direction: column;
+    align-items: flex-start;
+    .el-select {
+      width: 100% !important;
+      margin: 10px 0;
     }
   }
 }
-/* 婊氬姩鏉$編鍖� */
 .preview-left,
 .history-content .el-tabs__content,
 .content-container .el-tabs__content {
   &::-webkit-scrollbar {
     width: 6px;
   }
-
   &::-webkit-scrollbar-track {
     background: #f1f1f1;
     border-radius: 3px;
   }
-
   &::-webkit-scrollbar-thumb {
     background: #c1c1c1;
     border-radius: 3px;
-
     &:hover {
       background: #a8a8a8;
     }

--
Gitblit v1.9.3