From 21051d356bb8589ad088abb52492fd2a1909ed9e Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期六, 14 三月 2026 10:39:09 +0800
Subject: [PATCH] 测试完成

---
 src/views/followvisit/record/detailpage/index.vue | 1213 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 954 insertions(+), 259 deletions(-)

diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 36faefa..d30067d 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -549,76 +549,96 @@
       <!-- 浜哄伐澶勭悊 -->
       <div class="manual-action">
         <div class="Followuserinfos">
-          <div>
+          <!-- 椤堕儴鎿嶄綔鍖哄煙 -->
+          <div class="section-header">
+            <h3><i class="el-icon-s-operation"></i> 浜哄伐澶勭悊</h3>
+            <div class="header-actions">
+              <!-- 鍩虹鎿嶄綔鎸夐挳缁� -->
+              <div class="action-group basic-actions">
+                <el-button
+                  type="primary"
+                  plain
+                  @click="Editsingletasksonyic('')"
+                >
+                  淇濆瓨鍩虹淇℃伅
+                </el-button>
+
+                <!-- 鏂板锛氬欢缁姢鐞嗘寜閽� -->
+                <el-button
+                  type="success"
+                  plain
+                  @click="handleContinuationCare"
+                  v-if="showContinuationCareBtn"
+                >
+                  寤剁画鎶ょ悊
+                </el-button>
+
+                <el-button
+                  type="primary"
+                  round
+                  @click="sendAgain"
+                  v-if="form.isVisitAgain != 2"
+                >
+                  鍐嶆闅忚
+                </el-button>
+              </div>
+
+              <!-- 寮傚父鐘舵�侀�夋嫨鍣� -->
+              <div class="action-group tag-selector">
+                <el-select
+                  v-model="selectedTag"
+                  placeholder="璇烽�夋嫨寮傚父鐘舵��"
+                  clearable
+                  style="width: 150px; margin-right: 10px"
+                >
+                  <el-option
+                    v-for="item in tagOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                    <span style="display: flex; align-items: center">
+                      <span
+                        class="color-indicator"
+                        :style="{ backgroundColor: item.color }"
+                      ></span>
+                      <span>{{ item.label }}</span>
+                    </span>
+                  </el-option>
+                </el-select>
+
+                <!-- 褰撳墠閫夋嫨鐨勯鑹叉寚绀哄櫒 -->
+                <div
+                  v-if="selectedTag"
+                  class="color-indicator selected-indicator"
+                  :style="{ backgroundColor: getSelectedTagColor() }"
+                ></div>
+
+                <!-- 鏍囪璇存槑鎻愮ず -->
+                <el-tooltip
+                  v-if="selectedTag"
+                  effect="light"
+                  :content="getSelectedDescription()"
+                  placement="top"
+                >
+                  <i class="el-icon-info tag-info-icon"></i>
+                </el-tooltip>
+              </div>
+            </div>
+          </div>
+
+          <!-- 琛ㄥ崟鍖哄煙 -->
+          <div class="form-content">
             <el-form
               ref="userform"
               :model="form"
               :rules="userrules"
-              label-width="120px"
+              label-width="100px"
             >
-              <div class="headline">
-                <div>浜哄伐澶勭悊</div>
-                <div style="margin: 0 30px">
-                  <el-button
-                    type="primary"
-                    plain
-                    @click="Editsingletasksonyic('')"
-                    >淇濆瓨鍩虹淇℃伅</el-button
-                  >
-                </div>
-                <div>
-                  <el-button
-                    type="primary"
-                    round
-                    v-if="this.form.isVisitAgain != 2"
-                    @click="sendAgain()"
-                    >鍐嶆闅忚</el-button
-                  >
-                </div>
-                <div class="tag-selector-container">
-                  <el-select
-                    v-model="selectedTag"
-                    placeholder="璇烽�夋嫨寮傚父鐘舵��"
-                    clearable
-                    style="width: 150px; margin-right: 10px"
-                  >
-                    <el-option
-                      v-for="item in tagOptions"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    >
-                      <span style="display: flex; align-items: center">
-                        <span
-                          class="color-indicator"
-                          :style="{ backgroundColor: item.color }"
-                        ></span>
-                        <span>{{ item.label }}</span>
-                      </span>
-                    </el-option>
-                  </el-select>
-
-                  <!-- 褰撳墠閫夋嫨鐨勯鑹叉寚绀哄櫒 -->
-                  <div
-                    v-if="selectedTag"
-                    class="color-indicator selected-indicator"
-                    :style="{ backgroundColor: getSelectedTagColor() }"
-                  ></div>
-
-                  <!-- 鏍囪璇存槑鎻愮ず -->
-                  <el-tooltip
-                    v-if="selectedTag"
-                    effect="light"
-                    :content="getSelectedDescription()"
-                    placement="top"
-                  >
-                    <i class="el-icon-info tag-info-icon"></i>
-                  </el-tooltip>
-                </div>
-              </div>
+              <!-- 鑱旂郴淇℃伅琛� -->
               <el-row>
-                <el-col :span="14"
-                  ><el-form-item label="鑱旂郴鐢佃瘽">
+                <el-col :span="14">
+                  <el-form-item label="鑱旂郴鐢佃瘽">
                     <el-input
                       placeholder="鑱旂郴鐢佃瘽缂哄け"
                       v-model="userform.telcode"
@@ -628,13 +648,16 @@
                         icon="el-icon-phone"
                         @click="handleCall(userform.telcode, 'tel')"
                         :disabled="!isValidPhone(userform.telcode)"
-                      ></el-button
-                    ></el-input> </el-form-item
-                ></el-col>
+                      ></el-button>
+                    </el-input>
+                  </el-form-item>
+                </el-col>
               </el-row>
+
+              <!-- 鑱旂郴浜轰俊鎭 -->
               <el-row>
-                <el-col :span="14"
-                  ><el-form-item label="鑱旂郴浜虹數璇�">
+                <el-col :span="14">
+                  <el-form-item label="鑱旂郴浜虹數璇�">
                     <el-input
                       placeholder="鑱旂郴浜虹數璇濈己澶�"
                       v-model="userform.relativetelcode"
@@ -646,17 +669,21 @@
                           handleCall(userform.relativetelcode, 'relative')
                         "
                         :disabled="!isValidPhone(userform.relativetelcode)"
-                      ></el-button
-                    ></el-input> </el-form-item
-                ></el-col>
-                <el-col :span="10"
-                  ><el-form-item label="鑱旂郴浜哄叧绯�">
+                      ></el-button>
+                    </el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="9">
+                  <el-form-item label="鍏崇郴">
                     <el-input
                       placeholder="鑱旂郴浜哄叧绯荤己澶�"
                       v-model="userform.relation"
-                    ></el-input> </el-form-item
-                ></el-col>
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
               </el-row>
+
+              <!-- 閫氳瘽鎺у埗鍖哄煙 -->
               <div class="call-controls">
                 <CallButton
                   ref="callButton"
@@ -664,32 +691,59 @@
                   style="display: none"
                 />
 
-                <div v-if="callStatus === 'connected'" class="hangup-btn">
+                <!-- 鎸傛柇鎸夐挳鏍峰紡浼樺寲 -->
+                <div v-if="callStatus === 'connected'" class="hangup-container">
                   <el-button
                     type="danger"
                     icon="el-icon-phone"
                     @click="endCurrentCall"
                     :loading="isEndingCall"
+                    class="hangup-btn"
+                    size="medium"
                   >
-                    鎸傛柇鐢佃瘽
+                    {{ isEndingCall ? "鎸傛柇涓�..." : "鎸傛柇鐢佃瘽" }}
                   </el-button>
+
+                  <!-- 閫氳瘽璁℃椂鏄剧ず -->
+                  <div class="call-timer" v-if="callStartTime">
+                    閫氳瘽鏃堕暱: {{ formatCallTime }}
+                  </div>
                 </div>
-                <div class="call-status" v-if="callStatus !== 'idle'">
+
+                <!-- 鐘舵�佹彁绀轰紭鍖� -->
+                <div class="call-status-container" v-if="callStatus !== 'idle'">
                   <el-alert
                     :title="callStatusText"
                     :type="callStatusType"
                     :closable="false"
                     show-icon
+                    :class="['status-alert', `status-${callStatus}`]"
+                  />
+                </div>
+
+                <!-- SIP娉ㄥ唽鐘舵�佹彁绀� -->
+                <div
+                  v-if="isSipRegistering && orgname == '涓芥按甯備腑鍖婚櫌'"
+                  class="sip-registering"
+                >
+                  <el-alert
+                    title="鍛煎彨搴ф満鍒濆鍖栦腑锛岃绋嶅��..."
+                    type="info"
+                    :closable="false"
+                    show-icon
+                    class="registering-alert"
                   />
                 </div>
               </div>
-              <el-form-item label="闅忚鍐呭" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
-                <el-input type="textarea" v-model="form.remark"></el-input>
-              </el-form-item>
-              <el-form-item label="闅忚璁板綍" v-else>
+
+              <!-- 闅忚鍐呭/璁板綍 -->
+              <el-form-item
+                :label="orgname == '涓芥按甯備腑鍖婚櫌' ? '闅忚鍐呭' : '闅忚璁板綍'"
+              >
                 <el-input type="textarea" v-model="form.remark"></el-input>
               </el-form-item>
 
+              <!-- 闅忚鎯呭喌 -->
               <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
                 <el-radio-group v-model="form.taskSituation">
                   <el-radio
@@ -697,121 +751,136 @@
                     :label="city.value"
                     :value="city.value"
                     :key="city.value"
-                    >{{ city.label }}</el-radio
                   >
+                    {{ city.label }}
+                  </el-radio>
                 </el-radio-group>
               </el-form-item>
+
+              <!-- 澶勭悊鎰忚 -->
               <el-form-item label="澶勭悊鎰忚">
-                <div>
+                <div class="opinion-buttons">
                   <el-button
                     plain
                     type="warning"
                     @click="Editsingletaskson('1')"
-                    >鏆備笉澶勭悊</el-button
                   >
+                    鏆備笉澶勭悊
+                  </el-button>
                   <el-button
                     plain
                     type="success"
                     @click="Editsingletaskson('2')"
-                    >鐥呮儏绋冲畾</el-button
                   >
+                    鐥呮儏绋冲畾
+                  </el-button>
                   <el-button
                     plain
                     type="primary"
                     @click="Editsingletaskson('3')"
-                    >閫氱煡灏辫瘖</el-button
                   >
-                  <el-button plain type="info" @click="Editsingletaskson('5')"
-                    >涓績闅忚</el-button
-                  >
-                  <el-button type="primary" round @click="sendAgainmsg"
-                    >鐭俊鍙戦��</el-button
-                  >
+                    閫氱煡灏辫瘖
+                  </el-button>
+                  <el-button plain type="info" @click="Editsingletaskson('5')">
+                    浜哄伐闅忚
+                  </el-button>
+                  <el-button type="primary" round @click="sendAgainmsg">
+                    鐭俊鍙戦��
+                  </el-button>
                 </div>
               </el-form-item>
             </el-form>
+          </div>
 
-            <div class="detailed">
-              <h3>鎮h�呮。妗堜俊鎭�</h3>
-              <el-form ref="userform" :model="userform" label-width="100px">
-                <el-row :gutter="20">
-                  <el-col :span="12">
-                    <el-form-item label="鎮h�呭鍚�" prop="name">
-                      <el-input
-                        v-model="userform.name"
-                        placeholder="璇疯緭鍏ュ鍚�"
-                        maxlength="30"
-                      ></el-input> </el-form-item
-                  ></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="12"
-                    ><el-form-item label="鎬у埆" prop="telcode">
-                      <el-select v-model="userform.sex" placeholder="璇烽�夋嫨">
-                        <el-option label="鐢�" :value="1"> </el-option>
-                        <el-option label="濂�" :value="2"> </el-option>
-                      </el-select> </el-form-item
-                  ></el-col>
-                  <el-col :span="12">
-                    <el-form-item label="骞撮緞" prop="name">
-                      <el-input
-                        v-model="userform.age"
-                        placeholder="璇疯緭鍏ュ鍚�"
-                        maxlength="20"
-                      ></el-input> </el-form-item
-                  ></el-col>
-                </el-row>
+          <!-- 鎮h�呮。妗堜俊鎭� -->
+          <div class="detailed">
+            <h3>鎮h�呮。妗堜俊鎭�</h3>
+            <el-form ref="userform" :model="userform" label-width="100px">
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="鎮h�呭鍚�" prop="name">
+                    <el-input
+                      v-model="userform.name"
+                      placeholder="璇疯緭鍏ュ鍚�"
+                      maxlength="30"
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="鎬у埆" prop="sex">
+                    <el-select v-model="userform.sex" placeholder="璇烽�夋嫨">
+                      <el-option label="鐢�" :value="1"> </el-option>
+                      <el-option label="濂�" :value="2"> </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="骞撮緞" prop="age">
+                    <el-input
+                      v-model="userform.age"
+                      placeholder="璇疯緭鍏ュ勾榫�"
+                      maxlength="20"
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
 
-                <el-row :gutter="20">
-                  <el-col :span="12"
-                    ><el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
-                      <el-input
-                        v-model="userform.telcode"
-                        placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
-                        maxlength="20"
-                      /> </el-form-item
-                  ></el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浜插睘鑱旂郴鏂瑰紡" prop="name">
-                      <el-input
-                        v-model="userform.relativetelcode"
-                        placeholder="璇疯緭鍏ュ鍚�"
-                        maxlength="20"
-                      ></el-input> </el-form-item
-                  ></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="24">
-                    <el-form-item label="璇婃柇鍚嶇О" prop="name">
-                      <el-input
-                        v-model="form.leavediagname"
-                        placeholder="璇疯緭鍏ヨ瘖鏂�"
-                        maxlength="50"
-                      ></el-input> </el-form-item
-                  ></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="24">
-                    <el-form-item label="鍑虹敓鍦�" prop="birthplace">
-                      <el-input
-                        v-model="userform.birthplace"
-                        placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
-                        maxlength="50"
-                      /> </el-form-item
-                  ></el-col>
-                </el-row>
-                <el-row :gutter="20">
-                  <el-col :span="24"
-                    ><el-form-item label="灞呬綇鍦�" prop="placeOfResidence">
-                      <el-input
-                        v-model="userform.placeOfResidence"
-                        placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
-                        maxlength="50"
-                      /> </el-form-item
-                  ></el-col>
-                </el-row>
-              </el-form>
-            </div>
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
+                    <el-input
+                      v-model="userform.telcode"
+                      placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
+                      maxlength="20"
+                    />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                  <el-form-item label="浜插睘鑱旂郴鏂瑰紡" prop="relativetelcode">
+                    <el-input
+                      v-model="userform.relativetelcode"
+                      placeholder="璇疯緭鍏ヤ翰灞炶仈绯绘柟寮�"
+                      maxlength="20"
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="24">
+                  <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+                    <el-input
+                      v-model="form.leavediagname"
+                      placeholder="璇疯緭鍏ヨ瘖鏂�"
+                      maxlength="50"
+                    ></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="24">
+                  <el-form-item label="鍑虹敓鍦�" prop="birthplace">
+                    <el-input
+                      v-model="userform.birthplace"
+                      placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
+                      maxlength="50"
+                    />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <el-row :gutter="20">
+                <el-col :span="24">
+                  <el-form-item label="灞呬綇鍦�" prop="placeOfResidence">
+                    <el-input
+                      v-model="userform.placeOfResidence"
+                      placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
+                      maxlength="50"
+                    />
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
           </div>
         </div>
       </div>
@@ -992,14 +1061,14 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item label="闅忚鏂瑰紡" prop="resource">
+        <el-form-item label="闅忚绫诲瀷" prop="resource">
           <el-radio-group v-model="form.resource">
             <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
             <el-radio label="2">闅忚涓績闅忚</el-radio>
           </el-radio-group>
         </el-form-item>
 
-        <el-form-item label="闅忚璁板綍">
+        <el-form-item label="闅忚璁板綍" :required="form.resource == '2'">
           <el-input type="textarea" v-model="form.remark"></el-input>
         </el-form-item>
       </el-form>
@@ -1133,11 +1202,16 @@
       userid: "",
       currentPhoneNumber: "",
       callType: "", // 鐢ㄤ簬鍖哄垎鏄摢涓數璇�
+      isSipRegistering: true, // SIP娉ㄥ唽鐘舵��
       // 宸叉湁鏁版嵁...
+      customCallStatus: "", // 鐢ㄤ簬瀛樺偍鑷畾涔夌姸鎬佹枃鏈�
       callStatus: "idle", // idle, calling, connected, ended, failed
       isEndingCall: false,
       CaldialogVisible: false,
       currentCall: null, // 褰撳墠閫氳瘽瀵硅薄
+      // 鏂板鍔熻兘鏁版嵁
+      showPatientInfo: true,
+      showContinuationCareBtn: false, // 鎺у埗寤剁画鎶ょ悊鎸夐挳鏄剧ず
       // 璺敱鐩戝惉鐩稿叧
       routeWatcher: null,
       lastRoutePath: this.$route.path,
@@ -1173,8 +1247,12 @@
           value: "5",
         },
         {
-          label: "鍏朵粬鎯呭喌涓嶅疁闅忚",
+          label: "涓嶅疁闅忚琚繃婊�",
           value: "6",
+        },
+        {
+          label: "鍏朵粬",
+          value: "7",
         },
       ],
       tableDatatop: [], //棰樼洰琛�
@@ -1349,6 +1427,7 @@
           label: "涓�骞村悗",
         },
       ],
+      statusTimer: null,
       userform: {},
       smsDialogVisible: false, // 鎺у埗鐭俊瀵硅瘽妗嗘樉绀�
       smsContent: "", // 瀛樺偍鐭俊鍐呭
@@ -1365,9 +1444,18 @@
       patid: null,
     };
   },
-
+  // 鍦ㄧ粍浠朵腑娣诲姞閿�姣佸墠鐨勬竻鐞�
+  beforeUnmount() {
+    if (this.statusTimer) {
+      clearTimeout(this.statusTimer);
+      this.statusTimer = null;
+    }
+  },
   computed: {
     callStatusText() {
+      if (this.customCallStatus) {
+        return this.customCallStatus;
+      }
       const statusMap = {
         idle: "鍑嗗鍛煎彨",
         calling: `姝e湪鍛煎彨 ${this.currentPhoneNumber}...`,
@@ -1398,14 +1486,70 @@
     this.visitCount = this.$route.query.visitCount;
     this.serviceType = this.$route.query.serviceType;
     this.orgname = localStorage.getItem("orgname");
+    if (this.orgname == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯") {
+      this.showContinuationCareBtn = true;
+    }
 
+    if (this.orgname == "缂欎簯鍘夸腑鍖诲尰闄�") {
+      this.options = [
+        {
+          value: "鍗婁釜鏈堝悗",
+          label: "鍗婁釜鏈堝悗",
+        },
+        {
+          value: "涓�涓湀鍚�",
+          label: "涓�涓湀鍚�",
+        },
+        {
+          value: "涓や釜鏈堝悗",
+          label: "涓や釜鏈堝悗",
+        },
+        {
+          value: "涓変釜鏈堝悗",
+          label: "涓変釜鏈堝悗",
+        },
+        {
+          value: "鍏釜鏈堝悗",
+          label: "鍏釜鏈堝悗",
+        },
+        {
+          value: "12涓湀鍚�",
+          label: "12涓湀鍚�",
+        },
+      ];
+    }
     this.getTaskservelist();
   },
-
+  mounted() {
+    // 鐩戝惉瀛愮粍浠剁殑sipStatus灞炴�у彉鍖�
+    if (this.$refs.callButton) {
+      this.$watch(
+        () => this.$refs.callButton.sipStatus,
+        (newStatus) => {
+          if (this.statusTimer) {
+            clearTimeout(this.statusTimer);
+            this.statusTimer = null;
+          }
+          if (newStatus === "宸叉敞鍐�") {
+            this.statusTimer = setTimeout(() => {
+              this.isSipRegistering = false;
+              this.customCallStatus = ""; // 娉ㄥ唽鎴愬姛鍚庢竻绌鸿嚜瀹氫箟鎻愮ず
+              console.log("SIP娉ㄥ唽鎴愬姛锛岀姸鎬佸凡鏇存柊");
+            }, 2000);
+            this.isSipRegistering = false;
+          } else if (newStatus === "娉ㄥ唽澶辫触" || newStatus === "鏈繛鎺�") {
+            this.isSipRegistering = true;
+            this.customCallStatus = "鍛煎彨涓柇锛岃祫婧愰噸鏂板姞杞戒腑璇风◢绛�3s閲嶆柊銆�";
+          }
+        },
+        { immediate: true } // 绔嬪嵆鎵ц涓�娆′互鑾峰彇鍒濆鍊�
+      );
+    }
+  },
   methods: {
     // 鑾峰彇涓婚鏍峰紡绫�
     getTopicClass(item) {
-      console.log(item.isabnormal,'111');
+      console.log(item.isabnormal, "getTopicClass");
 
       // 鏍规嵁鐘舵�佸�艰繑鍥炲搴旂殑鏍峰紡绫�
       if (item.isabnormal == 1) {
@@ -1436,16 +1580,16 @@
       }).then((res) => {
         if (res.code === 200) {
           // 閽堝鍐嶆闅忚鏈嶅姟杩涜鍒犻櫎缁撴灉璧嬪��
-          if (this.again && res.data.upScriptResult) {
-            res.data.upScriptResult.forEach((itemA) => {
-              const itemB = res.data.scriptResult.find(
-                (item) => item.scriptContent === itemA.scriptContent
-              );
-              if (itemB) {
-                itemB.scriptResult = itemA.scriptResult;
-              }
-            });
-          }
+          // if (this.again && res.data.upScriptResult) {
+          //   res.data.upScriptResult.forEach((itemA) => {
+          //     const itemB = res.data.scriptResult.find(
+          //       (item) => item.scriptContent === itemA.scriptContent
+          //     );
+          //     if (itemB) {
+          //       itemB.scriptResult = itemA.scriptResult;
+          //     }
+          //   });
+          // }
           this.tableDatatop = res.data.scriptResult;
 
           this.tableDatatop.forEach((item) => {
@@ -1515,15 +1659,17 @@
       // 鏍规嵁閫夋嫨鐨勯殢璁挎柟寮忚绠楅殢璁挎棩鏈�
       if (value.includes("涓冨ぉ鍚�")) {
         followupDate.setDate(dischargeDate.getDate() + 7);
-      } else if (value.includes("15澶╁悗")) {
+      } else if (value.includes("15澶╁悗") || value.includes("鍗婁釜鏈堝悗")) {
         followupDate.setDate(dischargeDate.getDate() + 15);
       } else if (value.includes("涓�涓湀鍚�")) {
         followupDate.setMonth(dischargeDate.getMonth() + 1);
+      } else if (value.includes("涓や釜鏈堝悗")) {
+        followupDate.setMonth(dischargeDate.getMonth() + 2);
       } else if (value.includes("涓変釜鏈堝悗")) {
         followupDate.setMonth(dischargeDate.getMonth() + 3);
       } else if (value.includes("鍏釜鏈堝悗")) {
         followupDate.setMonth(dischargeDate.getMonth() + 6);
-      } else if (value.includes("涓�骞村悗")) {
+      } else if (value.includes("涓�骞村悗") || value.includes("12涓湀鍚�")) {
         followupDate.setFullYear(dischargeDate.getFullYear() + 1);
       }
 
@@ -1542,8 +1688,6 @@
     },
     // 妫�鏌ラ殢璁挎棩鏈熸槸鍚︽湁鏁�
     checkFollowupDate(date) {
-      console.log(date);
-
       if (!date) {
         this.form.date1 = "";
         this.$refs.zcform.clearValidate(["date1"]);
@@ -1645,6 +1789,7 @@
           scriptid: item.id,
           excep: excep,
           questiontext: item.scriptContent,
+          categoryid: item.categoryid,
           answerps: item.answerps || null, // 娣诲姞闄勫姞淇℃伅
         };
         if (item.scriptType == 2 && item.scriptResult[0]) {
@@ -1670,7 +1815,13 @@
             }
           });
           this.Editsingletasksonyic(6);
+          const orgName = localStorage.getItem("orgname");
+          console.log(orgName, "orgName");
 
+          if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌") {
+            this.Torouter();
+            return;
+          }
           this.$modal
             .confirm(
               '浠诲姟淇濆瓨鎴愬姛鏄惁閽堝鎮h�咃細"' +
@@ -1692,33 +1843,36 @@
               this.dialogFormVisible = true;
             })
             .catch(() => {
-              if (this.form.serviceType == 13) {
-                if (this.visitCount != 1) {
-                  this.$router.push({
-                    path: "/logisticsservice/zbAgain",
-                  });
-                } else {
-                  this.$router.push({
-                    path: "/logisticsservice/record",
-                  });
-                }
-              } else if (this.form.serviceType == 2) {
-                if (this.visitCount != 1) {
-                  this.$router.push({
-                    path: "/logisticsservice/again",
-                  });
-                } else {
-                  this.$router.push({
-                    path: "/followvisit/discharge",
-                  });
-                }
-              }
+              this.Torouter();
             });
         })
         .catch((error) => {
           // 濡傛灉鏈変换浣曚竴涓紓姝ユ搷浣滃け璐ワ紝浼氳繘鍏ヨ繖閲�
           console.error("鍙戠敓閿欒锛�", error);
         });
+    },
+    Torouter() {
+      if (this.form.serviceType == 13) {
+        if (this.visitCount != 1) {
+          this.$router.push({
+            path: "/logisticsservice/zbAgain",
+          });
+        } else {
+          this.$router.push({
+            path: "/logisticsservice/record",
+          });
+        }
+      } else if (this.form.serviceType == 2) {
+        if (this.visitCount != 1) {
+          this.$router.push({
+            path: "/logisticsservice/again",
+          });
+        } else {
+          this.$router.push({
+            path: "/followvisit/discharge",
+          });
+        }
+      }
     },
     // 鐢佃瘽============================
     // 楠岃瘉鐢佃瘽鍙风爜鏍煎紡骞惰繑鍥為敊璇俊鎭�
@@ -1761,22 +1915,34 @@
         this.$message.error("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜");
         return;
       }
+      // 妫�鏌IP鏄惁宸叉敞鍐�
+
       this.currentPhoneNumber = phone;
-      // 鍛煎彨鍒ゆ柇
+      // 鏄惁鏅畞鍛煎彨
       if (this.orgname == "鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�") {
         this.CaldialogVisible = true;
         return;
       }
-
+      // 涓嬫柟鏄腑鍖婚櫌鍛煎彨
+      if (this.isSipRegistering) {
+        this.$message.warning("绯荤粺姝e湪鍒濆鍖栵紝璇风◢鍊�...");
+        return;
+      }
       this.callType = type;
       this.callStatus = "calling";
 
       this.$nextTick(() => {
         this.$refs.callButton.startCall();
 
-        // 鐩戝惉閫氳瘽鐘舵�佸彉鍖�
         this.$refs.callButton.$on("call-status-change", (status) => {
           this.handleCallStatusChange(status);
+          // 鐩戝惉娉ㄥ唽鐘舵�佸彉鍖�
+          if (status.type === "registered") {
+            this.isSipRegistering = false;
+          }
+          if (status.type === "failed" || status.type === "disconnected") {
+            this.isSipRegistering = true;
+          }
         });
       });
     },
@@ -1837,7 +2003,13 @@
         param2: this.patid,
         subId: this.id,
       };
+      const orgName = localStorage.getItem("orgname");
+      console.log(orgName, "orgName");
 
+      if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌") {
+        this.Torouter();
+        return;
+      }
       addPersonVoices(obj).then((res) => {
         if (res.code == 200) {
           this.$modal.msgSuccess("鏈嶅姟淇濆瓨鎴愬姛");
@@ -1862,27 +2034,7 @@
               this.dialogFormVisible = true;
             })
             .catch(() => {
-              if (this.form.serviceType == 13) {
-                if (this.visitCount != 1) {
-                  this.$router.push({
-                    path: "/logisticsservice/zbAgain",
-                  });
-                } else {
-                  this.$router.push({
-                    path: "/logisticsservice/record",
-                  });
-                }
-              } else if (form.serviceType == 2) {
-                if (this.visitCount != 1) {
-                  this.$router.push({
-                    path: "/followvisit/again",
-                  });
-                } else {
-                  this.$router.push({
-                    path: "/followvisit/discharge",
-                  });
-                }
-              }
+              this.Torouter();
             });
         }
       });
@@ -2053,10 +2205,38 @@
 
     // 璋冭捣鍐嶆鍙戦��
     sendAgain() {
-      document.querySelector("#app").scrollTo(0, 0);
-      // scrollTo(0, 0)
-      this.formtidy();
-      this.dialogFormVisible = true;
+      getTaskservelist({
+        patid: this.patid,
+        visitCount: 2,
+        leaveldeptcodes: [this.form.deptcode],
+      }).then((res) => {
+        if (res.rows[0].serviceSubtaskList.length) {
+          if (
+            res.rows[0].serviceSubtaskList[0].sendstate != 5 &&
+            res.rows[0].serviceSubtaskList[0].sendstate != 6
+          ) {
+            this.$modal
+              .confirm(
+                '鏈偅鑰呭湪"' +
+                  res.rows[0].serviceSubtaskList[0].deptname +
+                  '"绉戝涓嬪凡鏈夊啀娆¢殢璁挎湇鍔¤繘琛屼腑鏄惁缁х画鍒涘缓锛�'
+              )
+              .then(() => {
+                document.querySelector("#app").scrollTo(0, 0);
+                this.formtidy();
+                this.dialogFormVisible = true;
+              });
+          } else {
+            document.querySelector("#app").scrollTo(0, 0);
+            this.formtidy();
+            this.dialogFormVisible = true;
+          }
+        } else {
+          document.querySelector("#app").scrollTo(0, 0);
+          this.formtidy();
+          this.dialogFormVisible = true;
+        }
+      });
     },
     // 鏌ョ湅璇︽儏
     Seedetails(row) {
@@ -2232,7 +2412,8 @@
           astrict: index === questionIndex + 1 ? 0 : item.astrict,
           hiddenByEnd: index === questionIndex + 1 ? false : item.hiddenByEnd,
         }));
-      }2
+      }
+      2;
 
       this.$forceUpdate();
     },
@@ -2255,6 +2436,10 @@
         if (valid) {
           if (this.form.date1 && new Date(this.form.date1) < new Date()) {
             this.$message.error("闅忚鏃堕棿涓嶈兘灏忎簬褰撳墠鏃堕棿");
+            return false;
+          }
+          if (this.form.resource == "2" && !this.form.remark) {
+            this.$message.error("褰撳墠閫夋嫨涓洪殢璁夸腑蹇冮殢璁块渶杈撳叆闅忚璁板綍");
             return false;
           }
           this.form.remark =
@@ -2365,6 +2550,34 @@
       // 鍒锋柊鏁版嵁
       this.getTaskservelist();
     },
+    // 寤剁画鎶ょ悊
+    handleContinuationCare() {
+      if (this.form.continueFlag != 2) {
+        this.$modal.confirm("鏄惁涓烘湰娆℃湇鍔″垱寤哄欢缁姢鐞嗭紵").then(() => {
+          this.$router.push({
+            path: "/followvisit/ContinueFordetails/",
+            query: {
+              taskid: this.taskid,
+              patid: this.patid,
+              id: this.id,
+              Voicetype: this.Voicetype,
+              visitCount: this.visitCount,
+            },
+          });
+        });
+      } else {
+        this.$router.push({
+          path: "/followvisit/ContinueFordetails/",
+          query: {
+            taskid: this.taskid,
+            patid: this.patid,
+            id: this.id,
+            Voicetype: this.Voicetype,
+            visitCount: this.visitCount,
+          },
+        });
+      }
+    },
   },
   // deactivated() {
   //   console.log(11);
@@ -2400,15 +2613,18 @@
   .manual-action {
     flex: 1;
     min-width: 0;
-    height: 100%; /* 纭繚楂樺害缁ф壙 */
+    height: 100%;
+    /* 纭繚楂樺害缁ф壙 */
   }
 
   .call-action {
     width: 60%;
     min-width: 0;
-    height: 100%; /* 纭繚楂樺害缁ф壙 */
+    height: 100%;
+    /* 纭繚楂樺害缁ф壙 */
   }
 }
+
 .numeric-input {
   position: relative;
 }
@@ -2425,6 +2641,7 @@
   padding: 2px 6px;
   border-radius: 4px;
 }
+
 .call-container {
   padding: 20px;
   background: #fff;
@@ -2454,11 +2671,13 @@
     margin-top: 20px;
   }
 }
+
 .merge-controls {
   background: #f5f7fa;
   border-radius: 4px;
   margin-left: 20px;
 }
+
 .Followuserinfo {
   margin: 10px 10px 0 10px;
   align-items: center;
@@ -2492,8 +2711,10 @@
   background: #ffff;
   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);
-  height: 100%; /* 纭繚楂樺害缁ф壙 */
-  min-height: 880px; /* 鏈�灏忛珮搴︿笌闅忚鍐呭涓�鑷� */
+  height: 100%;
+  /* 纭繚楂樺害缁ф壙 */
+  min-height: 880px;
+  /* 鏈�灏忛珮搴︿笌闅忚鍐呭涓�鑷� */
   display: flex;
   flex-direction: column;
 
@@ -2513,11 +2734,15 @@
 
   .el-form {
     flex: 1;
-    overflow-y: auto; /* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
-    max-height: calc(880px - 60px); /* 鍑忓幓padding */
-    padding-right: 10px; /* 闃叉婊氬姩鏉¢伄鎸″唴瀹� */
+    overflow-y: auto;
+    /* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
+    max-height: calc(880px - 60px);
+    /* 鍑忓幓padding */
+    padding-right: 10px;
+    /* 闃叉婊氬姩鏉¢伄鎸″唴瀹� */
   }
 }
+
 .append-input-container {
   margin-top: 15px;
   padding: 10px;
@@ -2525,6 +2750,7 @@
   border-radius: 4px;
   border: 1px solid #dcdfe6;
 }
+
 .borderdiv {
   min-height: 60vh;
   font-size: 20px;
@@ -2563,14 +2789,111 @@
     }
   }
 }
+
 .topic-dev[inert] {
   opacity: 0.5;
   pointer-events: none;
 }
+/* 鎸傛柇瀹瑰櫒鏍峰紡 */
+.hangup-container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  gap: 10px;
+  margin: 15px 0;
+}
+
+.hangup-btn {
+  width: 120px;
+  height: 40px;
+  font-size: 14px;
+  border-radius: 20px;
+  box-shadow: 0 2px 8px rgba(244, 67, 54, 0.3);
+  transition: all 0.3s ease;
+}
+
+.hangup-btn:hover:not(:disabled) {
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(244, 67, 54, 0.4);
+}
+
+/* 閫氳瘽璁℃椂鍣� */
+.call-timer {
+  font-size: 12px;
+  color: #666;
+  background: #f5f5f5;
+  padding: 4px 12px;
+  border-radius: 12px;
+  font-family: "Courier New", monospace;
+}
+
+/* 鐘舵�佹彁绀哄鍣� */
+.call-status-container {
+  margin: 10px 0;
+}
+
+.status-alert {
+  border-radius: 8px;
+  transition: all 0.3s ease;
+}
+
+.status-alert.status-calling {
+  border-left: 4px solid #e6a23c;
+}
+
+.status-alert.status-connected {
+  border-left: 4px solid #67c23a;
+  animation: pulse 2s infinite;
+}
+
+.status-alert.status-ended {
+  border-left: 4px solid #909399;
+}
+
+/* SIP娉ㄥ唽鎻愮ず */
+.sip-registering {
+  margin: 10px 0;
+}
+
+.registering-alert {
+  border-radius: 8px;
+  background-color: #f4f4f5;
+  border-left: 4px solid #909399;
+}
+
+/* 鍔ㄧ敾鏁堟灉 */
+@keyframes pulse {
+  0% {
+    opacity: 1;
+  }
+  50% {
+    opacity: 0.7;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .hangup-container {
+    margin: 10px 0;
+  }
+
+  .hangup-btn {
+    width: 100%;
+    max-width: 200px;
+  }
+
+  .status-alert {
+    font-size: 12px;
+  }
+}
 .CONTENT {
   padding: 10px;
   height: 100%;
-  min-height: 738px; /* 璁剧疆鏈�灏忛珮搴� */
+  min-height: 738px;
+  /* 璁剧疆鏈�灏忛珮搴� */
 
   .title {
     font-size: 22px;
@@ -2585,8 +2908,10 @@
   padding: 30px;
   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);
-  max-height: 618px; /* 璁剧疆鏈�澶ч珮搴� */
-  overflow-y: auto; /* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
+  max-height: 716px;
+  /* 璁剧疆鏈�澶ч珮搴� */
+  overflow-y: auto;
+  /* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
 
   .topic-dev {
     margin-bottom: 25px;
@@ -2642,8 +2967,8 @@
 
 /* 鏂板锛氳鍛婄姸鎬佹牱寮� - 榛勮壊 */
 .scriptTopic-warning {
-  color: #d4be00; /* 鎮ㄦ寚瀹氱殑榛勮壊 */
-
+  color: #d4be00;
+  /* 鎮ㄦ寚瀹氱殑榛勮壊 */
 }
 
 /* 寮傚父閫夐」鏍峰紡 - 绾㈣壊鏄熷彿 (淇濇寔涓嶅彉) */
@@ -2671,7 +2996,8 @@
 
   ::v-deep.el-radio__label::after {
     content: "*";
-    color: #ffe202; /* 榛勮壊鏄熷彿 */
+    color: #ffe202;
+    /* 榛勮壊鏄熷彿 */
     position: absolute;
     right: -5px;
     top: 0;
@@ -2697,6 +3023,7 @@
   right: -5px;
   top: 0;
 }
+
 .tag-selector-container {
   display: flex;
   align-items: center;
@@ -2733,9 +3060,11 @@
 .tag-normal {
   background-color: #7ff5e1;
 }
+
 .tag-abnormal {
   background-color: #f75c5c;
 }
+
 .tag-warning {
   background-color: #fbfb4a;
 }
@@ -2745,6 +3074,7 @@
   color: #909399;
   cursor: pointer;
 }
+
 ::v-deep.offside-value .el-radio__label {
   color: #fff;
 }
@@ -2794,6 +3124,7 @@
   color: #080808 !important;
   cursor: not-allowed;
 }
+
 /* 鍘熸湁鐨勬牱寮忎繚鎸佷笉鍙橈紝娣诲姞浠ヤ笅鍝嶅簲寮忎唬鐮� */
 
 .Followupdetailspage {
@@ -2805,7 +3136,8 @@
 
 .action-container {
   display: flex;
-  flex-direction: row; /* 榛樿妯悜鎺掑垪 */
+  flex-direction: row;
+  /* 榛樿妯悜鎺掑垪 */
   gap: 20px;
   margin: 0 10px 20px 10px;
 
@@ -2948,7 +3280,8 @@
 
 /* 纭繚鍐呭鍦ㄧ缉鏀炬椂淇濇寔鍙鎬� */
 .headline {
-  font-size: clamp(18px, 2vw, 24px); /* 浣跨敤clamp鍑芥暟纭繚瀛椾綋澶у皬鍦ㄥ悎鐞嗚寖鍥村唴 */
+  font-size: clamp(18px, 2vw, 24px);
+  /* 浣跨敤clamp鍑芥暟纭繚瀛椾綋澶у皬鍦ㄥ悎鐞嗚寖鍥村唴 */
 }
 
 /* 涓虹Щ鍔ㄨ澶囦紭鍖栨粴鍔ㄤ綋楠� */
@@ -2983,4 +3316,366 @@
     margin-bottom: 20px;
   }
 }
+/* 浜哄伐澶勭悊閮ㄥ垎鏍峰紡 */
+.manual-action {
+  flex: 1;
+  min-width: 0;
+  height: 100%;
+  overflow: hidden;
+
+  .Followuserinfos {
+    display: flex;
+    flex-direction: column;
+    gap: 20px;
+    padding: 20px;
+    background: #fff;
+    border-radius: 8px;
+    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+    height: 100%;
+    overflow-y: auto;
+  }
+}
+
+/* 澶撮儴鍖哄煙 */
+.section-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  padding-bottom: 15px;
+  border-bottom: 2px solid #f0f0f0;
+  margin-bottom: 20px;
+  flex-wrap: wrap;
+  gap: 15px;
+
+  h3 {
+    margin: 0;
+    color: #409eff;
+    font-size: 18px;
+    font-weight: 600;
+    display: flex;
+    align-items: center;
+    gap: 8px;
+
+    i {
+      font-size: 20px;
+    }
+  }
+
+  .header-actions {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+    gap: 15px;
+
+    .action-group {
+      display: flex;
+      align-items: center;
+      gap: 10px;
+    }
+  }
+}
+
+/* 鍩虹鎿嶄綔鎸夐挳 */
+.basic-actions {
+  .el-button {
+    min-width: 100px;
+  }
+}
+
+/* 寮傚父鐘舵�侀�夋嫨鍣� */
+.tag-selector {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+
+  .current-tag {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    padding: 6px 12px;
+    background: #f8f9fa;
+    border: 1px solid;
+    border-radius: 4px;
+    font-size: 12px;
+    transition: all 0.3s;
+
+    &:hover {
+      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+    }
+  }
+}
+
+.color-indicator {
+  width: 16px;
+  height: 16px;
+  border-radius: 3px;
+  margin-right: 8px;
+  display: inline-block;
+}
+
+.selected-indicator {
+  margin-left: 10px;
+  width: 20px;
+  height: 20px;
+}
+
+.tag-info-icon {
+  margin-left: 10px;
+  color: #909399;
+  cursor: pointer;
+  font-size: 16px;
+}
+
+/* 琛ㄥ崟鍖哄煙 */
+.form-content {
+  background: #f8f9fa;
+  border-radius: 8px;
+  padding: 20px;
+  margin-bottom: 20px;
+
+  .el-form {
+    .el-row {
+      margin: 0 -10px;
+    }
+
+    .el-col {
+      padding: 0 10px;
+    }
+  }
+}
+
+/* 閫氳瘽鎺у埗鍖哄煙 */
+.call-controls {
+  margin: 15px 0;
+
+  .hangup-container {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    gap: 10px;
+    margin: 15px 0;
+  }
+
+  .hangup-btn {
+    width: 120px;
+    height: 40px;
+    font-size: 14px;
+    border-radius: 20px;
+    box-shadow: 0 2px 8px rgba(244, 67, 54, 0.3);
+    transition: all 0.3s ease;
+  }
+
+  .hangup-btn:hover:not(:disabled) {
+    transform: translateY(-2px);
+    box-shadow: 0 4px 12px rgba(244, 67, 54, 0.4);
+  }
+
+  .call-timer {
+    font-size: 12px;
+    color: #666;
+    background: #f5f5f5;
+    padding: 4px 12px;
+    border-radius: 12px;
+    font-family: "Courier New", monospace;
+  }
+
+  .call-status-container {
+    margin: 10px 0;
+  }
+
+  .status-alert {
+    border-radius: 8px;
+    transition: all 0.3s ease;
+  }
+
+  .status-alert.status-calling {
+    border-left: 4px solid #e6a23c;
+  }
+
+  .status-alert.status-connected {
+    border-left: 4px solid #67c23a;
+    animation: pulse 2s infinite;
+  }
+
+  .status-alert.status-ended {
+    border-left: 4px solid #909399;
+  }
+
+  .sip-registering {
+    margin: 10px 0;
+  }
+
+  .registering-alert {
+    border-radius: 8px;
+    background-color: #f4f4f5;
+    border-left: 4px solid #909399;
+  }
+}
+
+/* 澶勭悊鎰忚鎸夐挳缁� */
+.opinion-buttons {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+  align-items: center;
+
+  .el-button {
+    flex: 1;
+    min-width: 120px;
+  }
+}
+
+/* 鎮h�呮。妗堜俊鎭� */
+.detailed {
+  width: 100%;
+  border-radius: 8px;
+  padding: 20px;
+  margin-bottom: 20px;
+  background-color: #ddf0f8;
+  border: 1px solid #b3e0f2;
+
+  h3 {
+    margin: 0 0 20px 0;
+    color: #333;
+    font-size: 16px;
+    font-weight: 500;
+    display: flex;
+    align-items: center;
+    gap: 8px;
+
+    &:before {
+      content: "";
+      display: block;
+      width: 4px;
+      height: 16px;
+      background: #409eff;
+      border-radius: 2px;
+    }
+  }
+
+  .el-form {
+    .el-row {
+      margin: 0 -10px;
+    }
+
+    .el-col {
+      padding: 0 10px;
+      margin-bottom: 15px;
+    }
+  }
+}
+
+/* 鍔ㄧ敾鏁堟灉 */
+@keyframes pulse {
+  0% {
+    opacity: 1;
+  }
+  50% {
+    opacity: 0.7;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media screen and (max-width: 1200px) {
+  .section-header {
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 15px;
+  }
+
+  .header-actions {
+    width: 100%;
+    justify-content: space-between;
+  }
+
+  .opinion-buttons {
+    .el-button {
+      min-width: calc(50% - 8px);
+    }
+  }
+}
+
+@media screen and (max-width: 768px) {
+  .Followuserinfos {
+    padding: 15px;
+  }
+
+  .form-content,
+  .detailed {
+    padding: 15px;
+  }
+
+  .header-actions {
+    flex-direction: column;
+    align-items: stretch;
+
+    .action-group {
+      flex-direction: column;
+      align-items: stretch;
+
+      .el-select {
+        width: 100%;
+        margin-right: 0;
+      }
+    }
+  }
+
+  .opinion-buttons {
+    flex-direction: column;
+
+    .el-button {
+      width: 100%;
+    }
+  }
+
+  .detailed {
+    .el-form {
+      .el-col {
+        width: 100%;
+      }
+    }
+  }
+}
+
+/* 婊氬姩鏉$編鍖� */
+.Followuserinfos {
+  &::-webkit-scrollbar {
+    width: 6px;
+  }
+
+  &::-webkit-scrollbar-track {
+    background: #f1f1f1;
+    border-radius: 3px;
+  }
+
+  &::-webkit-scrollbar-thumb {
+    background: #c1c1c1;
+    border-radius: 3px;
+
+    &:hover {
+      background: #a8a8a8;
+    }
+  }
+}
+
+/* 鎸夐挳鍥炬爣浼樺寲 */
+.el-icon-phone {
+  transition: all 0.3s;
+}
+
+.el-button[disabled] .el-icon-phone {
+  color: #c0c4cc;
+}
+
+.el-button:not([disabled]) .el-icon-phone {
+  color: #409eff;
+}
+
+.el-button:not([disabled]):hover .el-icon-phone {
+  color: #66b1ff;
+  transform: scale(1.1);
+}
 </style>

--
Gitblit v1.9.3