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

---
 src/views/sfstatistics/percentage/index copy.vue                          |    2 
 vue.config.js                                                             |    6 
 src/views/followvisit/zbAgain/index.vue                                   |   68 
 src/views/repositoryai/templateku/configurat/index.vue                    |    8 
 src/api/AiCentre/Qtemplate.js                                             |   17 
 src/views/followvisit/record/TracingInfo/index.vue                        |   12 
 src/views/knowledge/questionnaire/compilequer/index.vue                   |  277 +
 src/views/patient/subsequent/index.vue                                    |   96 
 src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue     |    6 
 src/views/followvisit/zysatisfaction/index.vue                            |   96 
 src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue |  897 ++++
 src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue     |    9 
 src/store/getters.js                                                      |   28 
 src/views/followvisit/discharge/outpatientService.vue                     |   66 
 src/api/AiCentre/questionnaire.js                                         |    8 
 src/views/followvisit/technology/index.vue                                |   75 
 src/views/patient/physical/index.vue                                      |   96 
 src/views/sfstatistics/percentage/components/SecondFollowUp.vue           | 1640 ++++++++--
 src/store/modules/user.js                                                 |   16 
 src/views/knowledge/education/examine/index.vue                           |    4 
 src/views/followvisit/Tracking/index.vue                                  |   68 
 src/views/sfstatistics/percentage/components/FirstFollowUp.vue            |  782 ++++
 src/views/followvisit/record/detailpage/index copy.vue                    |   10 
 src/views/followvisit/OutpatientAgain/index.vue                           |   68 
 src/api/AiCentre/satisfactionse.js                                        |   15 
 src/views/sfstatistics/percentage/index.vue                               |  307 +
 src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue |  174 +
 src/views/knowledge/questionnaire/index.vue                               |    6 
 src/views/outsideChain.vue                                                |    6 
 src/views/repositoryai/templateku/index.vue                               |    4 
 src/views/followvisit/outpatient/index.vue                                |   96 
 dist.zip                                                                  |    0 
 src/components/optionalModule/index.vue                                   |  208 
 src/views/followvisit/Continue/ContinueFordetails.vue                     |   10 
 src/views/Satisfaction/sfstatistics/components/visitStatistics.vue        |    3 
 src/views/patient/propaganda/QuestionnaireTask.vue                        |  180 +
 src/views/followvisit/mzsatisfaction/index.vue                            |   94 
 随访通用.zip                                                                  |    0 
 src/views/followvisit/record/detailpage/index.vue                         |  116 
 src/views/knowledge/questionbank/particulars/index.vue                    |   45 
 src/views/outsideChainwtnew.vue                                           |  370 ++
 src/views/followvisit/complaint/index.vue                                 |   62 
 src/views/followvisit/tasklist/index.vue                                  |    1 
 src/api/system/user.js                                                    |   22 
 src/views/followvisit/tasklist/FollowupDetails/index.vue                  |    4 
 src/views/followvisit/SpecificDisease/index.vue                           |   71 
 src/views/followvisit/again/index.vue                                     |   74 
 src/views/monitor/job/index.vue                                           |    2 
 src/views/followvisit/operation/index.vue                                 | 2321 ++++++++++++++
 src/views/sfstatistics/percentage/satisfaction.vue                        |    5 
 src/views/followvisit/beHospitalized/followUp.vue                         |   76 
 src/views/patient/questionnaire/index.vue                                 |   96 
 src/views/followvisit/record/index.vue                                    |   97 
 src/views/followvisit/Continue/index.vue                                  |   64 
 src/views/loginSSO.vue                                                    |  316 +
 src/views/repositoryai/templateku/configurat/taskub.vue                   |    4 
 src/views/followvisit/HistoricalFollow/index.vue                          |   69 
 src/views/patient/shadow/index.vue                                        |   96 
 src/views/knowledge/questionnaire/examine/index.vue                       |    4 
 src/views/patient/propaganda/particty.vue                                 |  109 
 src/views/followvisit/discharge/index.vue                                 |  104 
 61 files changed, 7,622 insertions(+), 1,964 deletions(-)

diff --git a/dist.zip b/dist.zip
new file mode 100644
index 0000000..a8843f1
--- /dev/null
+++ b/dist.zip
Binary files differ
diff --git a/src/api/AiCentre/Qtemplate.js b/src/api/AiCentre/Qtemplate.js
index 70232e4..3c5e873 100644
--- a/src/api/AiCentre/Qtemplate.js
+++ b/src/api/AiCentre/Qtemplate.js
@@ -25,6 +25,14 @@
     params: data,
   });
 }
+// 闂嵎妯℃澘鍒楄〃(绉戝鐥呭尯鏌ヨ)
+export function getSviLibTemplateByDeptCode(data) {
+  return request({
+    url: "/smartor/svyLibTemplate/getSviLibTemplateByDeptCode",
+    method: "post",
+    data: data,
+  });
+}
 // 闂嵎妯℃澘璇︽儏
 export function Qtemplateinfo(Id) {
   return request({
@@ -165,6 +173,13 @@
     params: data,
   });
 }
+export function depthospgetsonlistnopage(data) {
+  return request({
+    url: "/smartor/td/listnopage",
+    method: "get",
+    params: data,
+  });
+}
 //浠诲姟绉戝鐥呭尯妯℃澘鍏宠仈鏌ヨ
 export function taskdepthospgetsonlist(data) {
   return request({
@@ -204,7 +219,7 @@
 // 鑾峰彇浠诲姟鐤剧梾鍏宠仈
 export function taskdiaggetlist(data) {
   return request({
-    url: "/smartor/taskdiag/list",
+    url: "/smartor/taskdiag/listnopage",
     method: "post",
     data: data,
   });
diff --git a/src/api/AiCentre/questionnaire.js b/src/api/AiCentre/questionnaire.js
index 9792a3f..1c8670c 100644
--- a/src/api/AiCentre/questionnaire.js
+++ b/src/api/AiCentre/questionnaire.js
@@ -38,7 +38,13 @@
     data: data,
   });
 }
-
+// 鑾峰彇绮剧畝瀛楀吀
+export function gettypeout(dictType) {
+  return request({
+    url: '/system/dict/data/typeout/' + dictType,
+    method: 'get'
+  })
+}
 // 鏂板闂嵎闂鍒嗙被
 export function addissueclassify(data) {
   return request({
diff --git a/src/api/AiCentre/satisfactionse.js b/src/api/AiCentre/satisfactionse.js
index fef0537..a89badc 100644
--- a/src/api/AiCentre/satisfactionse.js
+++ b/src/api/AiCentre/satisfactionse.js
@@ -19,6 +19,15 @@
   });
 }
 
+// 鏌ヨ璇︽儏
+export function getSfStatisticsHyperlink(data) {
+  return request({
+    url: "/smartor/serviceSubtask/getSfStatisticsHyperlink",
+    method: "post",
+    data: data,
+  });
+}
+
 // 淇敼婊℃剰搴�
 export function updatesatisfaction(data) {
   return request({
@@ -59,9 +68,3 @@
     data: data,
   });
 }
-
-
-
-
-
-
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 6d5b155..da1bec6 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -177,7 +177,7 @@
   });
 }
 // 淇濆瓨鎺堟潈瑙掕壊
-export function removeusertd(userid,deptcode) {
+export function removeusertd(userid, deptcode) {
   return request({
     url: "/smartor/userdept/removeByCode/" + userid + "/" + deptcode,
     method: "get",
@@ -187,8 +187,8 @@
 // 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋�
 export function deptTreeSelect(type) {
   const data = {
-    deptType:type,
-    orgid:localStorage.getItem("orgid"),
+    deptType: type,
+    orgid: localStorage.getItem("orgid"),
   };
   return request({
     url: "/system/user/deptTree",
@@ -220,3 +220,19 @@
     data: data,
   });
 }
+// 鐪佺珛鍚屽痉缁村害棰樼洰鏄庣粏
+export function statisticsByDimension(data) {
+  return request({
+    url: "/smartor/satisfaction/statisticsByDimension",
+    method: "post",
+    data: data,
+  });
+}
+// 鐪佺珛鍚屽痉缁村害鏌辩姸鍥�
+export function satisfactionGraphDimension(data) {
+  return request({
+    url: "/smartor/satisfaction/satisfactionGraphDimension",
+    method: "post",
+    data: data,
+  });
+}
diff --git a/src/components/optionalModule/index.vue b/src/components/optionalModule/index.vue
index 1adc7f0..be43f16 100644
--- a/src/components/optionalModule/index.vue
+++ b/src/components/optionalModule/index.vue
@@ -28,8 +28,6 @@
       </el-form>
     </div>
 
-
-
     <!-- 妯℃澘閫夋嫨鎶藉眽 -->
     <el-drawer
       title="闂嵎鍐呭鍒楄〃"
@@ -52,6 +50,15 @@
               @keyup.enter.native="handleSearch"
             ></el-input>
           </el-form-item>
+          <el-form-item label="鎮h�呰寖鍥�" prop="status">
+            <el-cascader
+              v-model="scopetype"
+              placeholder="榛樿鍏ㄩ儴"
+              :options="sourcetype"
+              :props="{ expandTrigger: 'hover' }"
+              @change="handleChange"
+            ></el-cascader>
+          </el-form-item>
           <el-form-item>
             <el-button
               type="primary"
@@ -60,10 +67,7 @@
               @click="handleSearch"
               >鎼滅储</el-button
             >
-            <el-button
-              icon="el-icon-refresh"
-              size="medium"
-              @click="handleReset"
+            <el-button icon="el-icon-refresh" size="medium" @click="handleReset"
               >閲嶇疆</el-button
             >
           </el-form-item>
@@ -211,12 +215,9 @@
           <div class="preview-content">
             <div v-for="item in questionList" :key="item.sort">
               <!-- 鍗曢�� -->
-              <div
-                class="scriptTopic-dev"
-                v-if="item.scriptType == 1"
-              >
+              <div class="scriptTopic-dev" v-if="item.scriptType == 1">
                 <div class="dev-text">
-                  {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-radio-group v-model="item.remark" disabled>
@@ -232,12 +233,9 @@
               </div>
 
               <!-- 澶氶�� -->
-              <div
-                class="scriptTopic-dev"
-                v-if="item.scriptType == 2"
-              >
+              <div class="scriptTopic-dev" v-if="item.scriptType == 2">
                 <div class="dev-text">
-                  {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-checkbox-group v-model="item.qremark" disabled>
@@ -253,12 +251,9 @@
               </div>
 
               <!-- 濉┖ -->
-              <div
-                class="scriptTopic-dev"
-                v-if="item.scriptType == 4"
-              >
+              <div class="scriptTopic-dev" v-if="item.scriptType == 4">
                 <div class="dev-text">
-                  {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-input
@@ -282,11 +277,7 @@
         >
           閫夋嫨浣跨敤
         </el-button>
-        <el-button
-          v-else
-          type="primary"
-          @click="handleConfirmReplace"
-        >
+        <el-button v-else type="primary" @click="handleConfirmReplace">
           鏇挎崲浣跨敤
         </el-button>
       </span>
@@ -295,67 +286,86 @@
 </template>
 
 <script>
-import { getQtemplatelist, getQtemplateobj, getQtemplateclassify } from "@/api/AiCentre/index";
+import {
+  getSviLibTemplateByDeptCode,
+  getQtemplateobj,
+  getQtemplateclassify,
+} from "@/api/AiCentre/index";
 import store from "@/store";
 import pagination from "@/components/Pagination";
 
 export default {
   name: "TemplateSelector",
   components: {
-    pagination
+    pagination,
   },
   props: {
     // 褰撳墠閫変腑鐨勬ā鏉縄D
     value: {
       type: [String, Number],
-      default: null
+      default: null,
     },
     // 褰撳墠閫変腑鐨勬ā鏉垮悕绉�
     templateName: {
       type: String,
-      default: ''
+      default: "",
     },
     // 鏄惁鍙紪杈�
     isEditable: {
       type: Boolean,
-      default: true
+      default: true,
     },
     // 鏄惁鏄剧ず鍙橀噺閰嶇疆
     showVariableConfig: {
       type: Boolean,
-      default: true
+      default: true,
     },
     // 鏈嶅姟绫诲瀷锛岀敤浜庤繃婊ゆā鏉�
     serviceType: {
       type: [String, Number],
-      default: null
-    }
+      default: null,
+    },
   },
   data() {
     return {
       // 缁勪欢鐘舵��
       drawerVisible: false,
       previewVisible: false,
-      activeTab: 'basic',
+      activeTab: "basic",
       loading: false,
 
       // 妯℃澘鏁版嵁
       selectedTemplateId: null,
-      selectedTemplateName: '',
+      selectedTemplateName: "",
       selectedTemplateData: null,
-
+      scopetype: [],
       // 鍒楄〃鏁版嵁
       templateList: [],
       questionList: [],
       variableList: [],
       previewData: {},
-
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
       // 鏌ヨ鍙傛暟
       queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        svyname: '',
-        isenable: ''
+        type: 1,
+        deptType: "1",
+        svyname: "",
+        deptCode: "",
       },
       total: 0,
 
@@ -364,7 +374,7 @@
       appraisalOptions: store.getters.appraiselist || [],
       usableOptions: [
         { value: "0", label: "鍙敤" },
-        { value: "1", label: "鍋滅敤" }
+        { value: "1", label: "鍋滅敤" },
       ],
 
       // 榛樿鍙橀噺
@@ -373,21 +383,21 @@
           name: "濮撳悕",
           value: "${name}",
           fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
-          default: true
+          default: true,
         },
         {
           name: "鍦板潃",
           value: "${dzz}",
           fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
-          default: true
+          default: true,
         },
         {
           name: "鏅鸿兘璇煶",
           value: "${dhh}",
           fill: "娲惧彂鏃惰嚜鍔ㄥ尮閰�",
-          default: true
-        }
-      ]
+          default: true,
+        },
+      ],
     };
   },
   watch: {
@@ -395,26 +405,36 @@
       immediate: true,
       handler(newVal) {
         this.selectedTemplateId = newVal;
-      }
+      },
     },
     templateName: {
       immediate: true,
       handler(newVal) {
-
         this.selectedTemplateName = newVal;
-      }
+      },
     },
     selectedTemplateId(newVal) {
-      this.$emit('input', newVal);
+      this.$emit("input", newVal);
     },
     selectedTemplateName(newVal) {
-      this.$emit('update:templateName', newVal);
-    }
+      this.$emit("update:templateName", newVal);
+    },
   },
   created() {
+    this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+      return {
+        label: dept.deptName,
+        value: dept.deptCode,
+      };
+    });
+    this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+      return {
+        label: dept.districtName,
+        value: dept.districtCode,
+      };
+    });
     this.loadCategories();
-      this.handleSearch();
-
+    this.handleSearch();
   },
   methods: {
     // 鍔犺浇妯℃澘鍒嗙被
@@ -425,7 +445,7 @@
           this.categoryOptions = response.rows;
         }
       } catch (error) {
-        console.error('鍔犺浇鍒嗙被澶辫触:', error);
+        console.error("鍔犺浇鍒嗙被澶辫触:", error);
       }
     },
 
@@ -433,26 +453,29 @@
     async handleSearch() {
       try {
         this.loading = true;
-        const response = await getQtemplatelist(this.queryParams);
+        const response = await getSviLibTemplateByDeptCode(this.queryParams);
         if (response.code === 200) {
           this.templateList = response.rows;
           this.total = response.total;
         }
       } catch (error) {
-        console.error('鎼滅储妯℃澘澶辫触:', error);
-        this.$modal.msgError('鎼滅储妯℃澘澶辫触');
+        console.error("鎼滅储妯℃澘澶辫触:", error);
+        this.$modal.msgError("鎼滅储妯℃澘澶辫触");
       } finally {
         this.loading = false;
       }
     },
-
+    handleChange(value) {
+      this.queryParams.deptType = value[0].toString();
+      this.queryParams.deptCode = value.slice(-1)[0];
+    },
     // 閲嶇疆鎼滅储
     handleReset() {
       this.queryParams = {
         pageNum: 1,
         pageSize: 10,
-        svyname: '',
-        isenable: ''
+        svyname: "",
+        isenable: "",
       };
       this.handleSearch();
     },
@@ -480,7 +503,7 @@
           this.questionList = templateData.svyTemplateLibScripts || [];
 
           // 鍒濆鍖栭棶棰樼姸鎬�
-          this.questionList.forEach(item => {
+          this.questionList.forEach((item) => {
             item.qremark = [];
           });
 
@@ -491,8 +514,8 @@
           this.drawerVisible = false;
         }
       } catch (error) {
-        console.error('鍔犺浇妯℃澘璇︽儏澶辫触:', error);
-        this.$modal.msgError('鍔犺浇妯℃澘璇︽儏澶辫触');
+        console.error("鍔犺浇妯℃澘璇︽儏澶辫触:", error);
+        this.$modal.msgError("鍔犺浇妯℃澘璇︽儏澶辫触");
       } finally {
         this.loading = false;
       }
@@ -502,20 +525,20 @@
     extractVariables(scripts) {
       let variableList = [];
 
-      scripts.forEach(script => {
+      scripts.forEach((script) => {
         try {
-          const otherData = JSON.parse(script.otherdata || '[]');
-          otherData.forEach(item => {
+          const otherData = JSON.parse(script.otherdata || "[]");
+          otherData.forEach((item) => {
             if (item.default != 1) {
               variableList.push({
                 value: item.variate,
                 fill: "",
-                name: item.variatename
+                name: item.variatename,
               });
             }
           });
         } catch (e) {
-          console.warn('瑙f瀽otherdata澶辫触:', e);
+          console.warn("瑙f瀽otherdata澶辫触:", e);
         }
       });
 
@@ -523,9 +546,7 @@
       const uniqueVariables = variableList.filter(
         (obj, index, self) =>
           index ===
-          self.findIndex(
-            t => t.name === obj.name && t.value === obj.value
-          )
+          self.findIndex((t) => t.name === obj.name && t.value === obj.value)
       );
 
       this.variableList = [...this.transitionList, ...uniqueVariables];
@@ -534,7 +555,7 @@
     // 棰勮宸查�夋ā鏉�
     handlePreview() {
       if (!this.selectedTemplateId) {
-        this.$modal.msgWarning('璇峰厛閫夋嫨妯℃澘');
+        this.$modal.msgWarning("璇峰厛閫夋嫨妯℃澘");
         return;
       }
 
@@ -544,7 +565,7 @@
     // 纭閫夋嫨妯℃澘
     handleConfirmSelect() {
       if (!this.selectedTemplateData) {
-        this.$modal.msgWarning('璇峰厛閫夋嫨妯℃澘');
+        this.$modal.msgWarning("璇峰厛閫夋嫨妯℃澘");
         return;
       }
 
@@ -553,27 +574,29 @@
 
       // 杞崲鍙橀噺鏍煎紡
       const filteredVariables = this.variableList.filter(
-        item => item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
+        (item) =>
+          item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
       );
 
       const textParam = this.convertFormat2ToFormat1(filteredVariables);
 
       // 瑙﹀彂閫夋嫨浜嬩欢
-      this.$emit('select', {
+      this.$emit("select", {
         templateId: this.selectedTemplateId,
         templateName: this.selectedTemplateName,
         templateData: this.previewData,
         variableList: this.variableList,
-        textParam: textParam
+        textParam: textParam,
       });
 
       this.previewVisible = false;
-      this.$modal.msgSuccess('閫夋嫨妯℃澘鎴愬姛');
+      this.$modal.msgSuccess("閫夋嫨妯℃澘鎴愬姛");
     },
 
     // 纭鏇挎崲妯℃澘
     handleConfirmReplace() {
-      this.$modal.confirm('纭畾瑕佹浛鎹㈠綋鍓嶆ā鏉垮悧锛�')
+      this.$modal
+        .confirm("纭畾瑕佹浛鎹㈠綋鍓嶆ā鏉垮悧锛�")
         .then(() => {
           this.handleConfirmSelect();
         })
@@ -583,31 +606,31 @@
     // 鍙栨秷棰勮
     handleCancelPreview() {
       this.previewVisible = false;
-      this.$emit('cancel');
+      this.$emit("cancel");
     },
 
     // 鍏抽棴鎶藉眽
     handleDrawerClose(done) {
       done();
-      this.$emit('drawer-close');
+      this.$emit("drawer-close");
     },
 
     // 鍏抽棴棰勮
     handlePreviewClose(done) {
       done();
-      this.$emit('preview-close');
+      this.$emit("preview-close");
     },
 
     // 鍒犻櫎鍙橀噺
     handleVariableDelete(index, row) {
       this.variableList.splice(index, 1);
-      this.$emit('variable-delete', row);
+      this.$emit("variable-delete", row);
     },
 
     // 鍙橀噺鏍煎紡杞崲锛氭暟缁勮浆瀵硅薄
     convertFormat2ToFormat1(data) {
       let result = {};
-      data.forEach(item => {
+      data.forEach((item) => {
         let innerObj = {};
         innerObj[item.value] = item.fill;
         result[item.name] = innerObj;
@@ -623,7 +646,7 @@
         result.push({
           name: key,
           value: innerKey,
-          fill: data[key][innerKey]
+          fill: data[key][innerKey],
         });
       }
       return result;
@@ -640,20 +663,21 @@
     // 娓呴櫎閫夋嫨
     clear() {
       this.selectedTemplateId = null;
-      this.selectedTemplateName = '';
+      this.selectedTemplateName = "";
       this.selectedTemplateData = null;
       this.variableList = [...this.transitionList];
-      this.$emit('clear');
+      this.$emit("clear");
     },
 
     // 鑾峰彇鍙橀噺鏁版嵁
     getVariables() {
       const filteredVariables = this.variableList.filter(
-        item => item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
+        (item) =>
+          item.name !== "濮撳悕" && item.name !== "鐢佃瘽" && item.name !== "鍦板潃"
       );
       return this.convertFormat2ToFormat1(filteredVariables);
-    }
-  }
+    },
+  },
 };
 </script>
 
diff --git a/src/store/getters.js b/src/store/getters.js
index a8b2816..a65dc24 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -759,25 +759,33 @@
       value: 13,
       label: "涓撶梾闅忚",
       raw: {
-      cssClass: "",
-      listClass: "",
+        cssClass: "",
+        listClass: "",
+      },
     },
-    },
-     {
+    {
       value: 17,
       label: "瀹f暀鍏虫��锛堝叆闄級",
       raw: {
-      cssClass: "",
-      listClass: "",
+        cssClass: "",
+        listClass: "",
+      },
     },
-    },
-     {
+    {
       value: 18,
       label: "鍏ラ櫌闅忚",
       raw: {
-      cssClass: "",
-      listClass: "",
+        cssClass: "",
+        listClass: "",
+      },
     },
+    {
+      value: 19,
+      label: "鎵嬫湳闅忚",
+      raw: {
+        cssClass: "",
+        listClass: "",
+      },
     },
   ],
 };
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 031657f..af87801 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -176,6 +176,12 @@
               localStorage.setItem("deptCode", "");
               localStorage.setItem("YongHuID", "1462582201425072129");
               localStorage.setItem("YongHuXM", "JYZYY");
+            } else if (orgid == "47246103233112211A1001") {
+              localStorage.setItem("orgname", "缂欎簯绗簩浜烘皯鍖婚櫌");
+              localStorage.setItem("ZuHuID", "1429338802177000013");
+              localStorage.setItem("deptCode", "");
+              localStorage.setItem("YongHuID", "");
+              localStorage.setItem("YongHuXM", "");
             } else if (orgid == "47240018433118111A2101") {
               localStorage.setItem("orgname", "榫欐硥甯備腑鍖诲尰闄�");
               localStorage.setItem("ZuHuID", "1429338802177000003");
@@ -259,11 +265,11 @@
       return new Promise((resolve, reject) => {
         getInfo()
           .then((res) => {
-            const user = res.user;
-            const avatar =
-              user.avatar == "" || user.avatar == null
-                ? require("@/assets/images/profile.jpg")
-                : process.env.VUE_APP_BASE_API + user.avatar;
+            const user = res.user || {};
+
+            const avatar = !user.avatar
+              ? require("@/assets/images/profile.jpg")
+              : process.env.VUE_APP_BASE_API + user.avatar;
             if (res.roles && res.roles.length > 0) {
               // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁�
               commit("SET_ROLES", res.roles);
diff --git a/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue b/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
index 1219d47..42ee116 100644
--- a/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
+++ b/src/views/Satisfaction/configurationmyd/components/DetailsAnomaly.vue
@@ -134,7 +134,7 @@
                   v-if="item.scriptType == 1 && !item.astrict"
                 >
                   <div class="dev-text">
-                    {{ index + 1 }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                    {{ index + 1 }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
                   </div>
                   <div class="dev-xx">
                     <el-radio-group v-model="item.scriptResult" disabled>
@@ -169,7 +169,7 @@
                   v-if="item.scriptType == 2 && !item.astrict"
                 >
                   <div class="dev-text">
-                    {{ index + 1 }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                    {{ index + 1 }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
                   </div>
                   <div class="dev-xx">
                     <el-checkbox-group v-model="item.scriptResult" disabled>
@@ -194,7 +194,7 @@
                   v-if="item.scriptType == 4 && !item.astrict"
                 >
                   <div class="dev-text">
-                    {{ index + 1 }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+                    {{ index + 1 }}. [闂瓟]<span>{{ item.scriptContent }}</span>
                     <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
                   </div>
                   <div class="dev-xx" v-if="item.valueType == 3">
diff --git a/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue b/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
index 8de4434..20938e3 100644
--- a/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/FollowupStatistics.vue
@@ -206,6 +206,7 @@
         </el-table-column>
 
         <el-table-column
+          v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
           label="鍙婃椂鐜�"
           align="center"
           key="rate"
@@ -381,6 +382,7 @@
 
       // 鍔犺浇鐘舵��
       loading: false,
+      orgname: "",
 
       // 閫変腑鐨勮
       ids: [],
@@ -439,6 +441,8 @@
   },
 
   created() {
+    this.orgname = localStorage.getItem("orgname");
+
     this.initData();
   },
 
@@ -446,7 +450,7 @@
     // 鍒濆鍖栨暟鎹�
     async initData() {
       await this.getDeptTree();
-      await this.getList();
+      // await this.getList();
     },
 
     // 鑾峰彇绉戝鏍�
@@ -814,8 +818,7 @@
 
         const response = await getSfStatisticsJoyInfo(params);
         this.topiclist = response.data || [];
-      this.topicVisible = true;
-
+        this.topicVisible = true;
       } catch (error) {
         console.error("鑾峰彇婊℃剰搴﹁鎯呭け璐�:", error);
         this.$message.error("鑾峰彇璇︽儏澶辫触");
diff --git a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
index 2d78fdf..3ff1958 100644
--- a/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/SatisfactionStatistics.vue
@@ -24,13 +24,16 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="绉戝" prop="deptCode">
+          <!-- 绉戝閫夋嫨 -->
+          <el-form-item label="绉戝" prop="deptCodes">
             <el-select
-              v-model="queryParams.deptCode"
+              v-model="queryParams.deptCodes"
               placeholder="璇烽�夋嫨绉戝"
               clearable
               filterable
-              style="width: 200px"
+              multiple
+              collapse-tags
+              style="width: 300px"
               @change="handleDeptChange"
             >
               <el-option
@@ -42,13 +45,16 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="鐥呭尯" prop="wardCode">
+          <!-- 鐥呭尯閫夋嫨 -->
+          <el-form-item label="鐥呭尯" prop="wardCodes">
             <el-select
-              v-model="queryParams.wardCode"
+              v-model="queryParams.wardCodes"
               placeholder="璇烽�夋嫨鐥呭尯"
               clearable
               filterable
-              style="width: 200px"
+              multiple
+              collapse-tags
+              style="width: 300px"
               @change="handleWardChange"
             >
               <el-option
@@ -95,7 +101,7 @@
       <el-card shadow="never">
         <div class="chart-container">
           <div class="chart-header">
-            <h3 class="chart-title">婊℃剰搴︾被鍨嬪~鎶ユ瘮渚嬬粺璁�</h3>
+            <h3 class="chart-title">{{ getChartTitle() }}</h3>
             <div class="statistic-info">
               <div class="statistic-item">
                 <span class="statistic-label">鍙戦�侀棶鍗锋�婚噺锛�</span>
@@ -117,6 +123,20 @@
               </div>
             </div>
           </div>
+
+          <!-- 鏍囩椤靛垏鎹� -->
+          <el-tabs
+            v-model="activeChartTab"
+            @tab-click="handleChartTabClick"
+            class="chart-tabs"
+          >
+            <el-tab-pane
+              label="婊℃剰搴︾被鍨�"
+              name="satisfactionType"
+            ></el-tab-pane>
+            <el-tab-pane label="缁村害缁熻" name="dimension"></el-tab-pane>
+          </el-tabs>
+
           <div
             id="satisfactionBarChart"
             style="width: 100%; height: 400px"
@@ -304,6 +324,179 @@
             </div>
           </el-tab-pane>
 
+          <el-tab-pane label="缁村害棰樼洰鏄庣粏" name="dimensionDetail">
+            <!-- 缁村害棰樼洰鏄庣粏琛ㄦ牸 -->
+            <div class="dimension-detail-section">
+              <el-table
+                v-loading="dimensionDetailLoading"
+                :data="dimensionDetailData"
+                :border="true"
+                style="width: 100%"
+                row-class-name="dimension-row"
+              >
+                <el-table-column type="expand" width="60">
+                  <template slot-scope="{ row }">
+                    <div class="option-detail">
+                      <el-table
+                        :data="row.options"
+                        :border="true"
+                        style="width: 100%"
+                        class="inner-table"
+                      >
+                        <el-table-column
+                          label="閫夐」"
+                          prop="optionText"
+                          align="center"
+                          min-width="200"
+                        />
+                        <el-table-column
+                          label="閫夋嫨浜烘暟"
+                          prop="chosenQuantity"
+                          align="center"
+                          min-width="120"
+                        />
+                        <el-table-column
+                          label="閫夋嫨姣斾緥"
+                          prop="chosenPercentage"
+                          align="center"
+                          min-width="120"
+                        >
+                          <template slot-scope="{ row: option }">
+                            {{ formatPercent(option.chosenPercentage) }}
+                          </template>
+                        </el-table-column>
+                      </el-table>
+                    </div>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="搴忓彿"
+                  type="index"
+                  align="center"
+                  width="60"
+                />
+
+                <el-table-column
+                  label="棰樼洰"
+                  prop="scriptContent"
+                  align="center"
+                  min-width="300"
+                >
+                  <template slot-scope="{ row }">
+                    <span>{{ row.scriptContent }}</span>
+                    <el-tag
+                      :type="row.scriptType === 1 ? 'primary' : 'success'"
+                      size="mini"
+                      style="margin-left: 5px"
+                    >
+                      {{ row.scriptType === 1 ? "鍗曢�夐" : "澶氶�夐" }}
+                    </el-tag>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="缁村害"
+                  prop="dimensionName"
+                  align="center"
+                  width="120"
+                >
+                  <template slot-scope="{ row }">
+                    <el-tag type="info" size="small">
+                      {{ getDimensionLabel(row.dimension) }}
+                    </el-tag>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="骞冲潎寰楀垎"
+                  prop="averageScore"
+                  align="center"
+                  width="120"
+                >
+                  <template slot-scope="{ row }">
+                    <span class="score-text">{{
+                      row.averageScore.toFixed(1)
+                    }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="鏈�楂樺緱鍒�"
+                  prop="maxScore"
+                  align="center"
+                  width="120"
+                >
+                  <template slot-scope="{ row }">
+                    <span class="score-text">{{
+                      row.maxScore.toFixed(1)
+                    }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="鏈�浣庡緱鍒�"
+                  prop="minScore"
+                  align="center"
+                  width="120"
+                >
+                  <template slot-scope="{ row }">
+                    <span class="score-text">{{
+                      row.minScore.toFixed(1)
+                    }}</span>
+                  </template>
+                </el-table-column>
+
+                <el-table-column
+                  label="绛旈浜烘暟"
+                  prop="answerPerson"
+                  align="center"
+                  width="100"
+                />
+
+                <el-table-column
+                  label="鏈瓟棰樹汉鏁�"
+                  prop="noAnswerPerson"
+                  align="center"
+                  width="100"
+                />
+
+                <el-table-column
+                  label="绛旈鐜�"
+                  prop="answerRate"
+                  align="center"
+                  width="100"
+                >
+                  <template slot-scope="{ row }">
+                    {{ formatPercent(row.answerRate) }}
+                  </template>
+                </el-table-column>
+              </el-table>
+
+              <!-- 缁村害缁熻姹囨�� -->
+              <div class="dimension-summary-row">
+                <div class="dimension-summary-content">
+                  <div class="dimension-summary-item">
+                    <span class="label">棰樼洰鎬绘暟锛�</span>
+                    <span class="value">{{ dimensionDetailData.length }}</span>
+                  </div>
+                  <div class="dimension-summary-item">
+                    <span class="label">缁村害骞冲潎鍒嗭細</span>
+                    <span class="value">{{
+                      dimensionAverageScore.toFixed(1)
+                    }}</span>
+                  </div>
+                  <div class="dimension-summary-item">
+                    <span class="label">鎬讳綋绛旈鐜囷細</span>
+                    <span class="value">{{
+                      formatPercent(dimensionTotalAnswerRate)
+                    }}</span>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </el-tab-pane>
+
           <el-tab-pane label="鍚勭被鍨嬬粺璁℃槑缁�" name="typeDetail">
             <!-- 鍚勭被鍨嬬粺璁℃槑缁嗚〃鏍� -->
             <div class="type-detail-section">
@@ -414,40 +607,6 @@
                   </template>
                 </el-table-column>
 
-                <!-- <el-table-column
-                  label="瓒嬪娍"
-                  prop="trend"
-                  align="center"
-                  width="120"
-                >
-                  <template slot-scope="{ row }">
-                    <div class="trend-cell">
-                      <i
-                        v-if="row.trend === 'up'"
-                        class="el-icon-top trend-up"
-                        :style="{ color: '#67C23A' }"
-                      />
-                      <i
-                        v-else-if="row.trend === 'down'"
-                        class="el-icon-bottom trend-down"
-                        :style="{ color: '#F56C6C' }"
-                      />
-                      <i
-                        v-else
-                        class="el-icon-minus trend-stable"
-                        :style="{ color: '#909399' }"
-                      />
-                      <span class="trend-text">{{
-                        row.trend === "up"
-                          ? "涓婂崌"
-                          : row.trend === "down"
-                          ? "涓嬮檷"
-                          : "绋冲畾"
-                      }}</span>
-                    </div>
-                  </template>
-                </el-table-column> -->
-
                 <el-table-column
                   label="鎿嶄綔"
                   align="center"
@@ -508,25 +667,31 @@
 
 <script>
 import * as echarts from "echarts";
-import { statistics, satisfactionGraph } from "@/api/system/user";
+import {
+  statistics,
+  satisfactionGraph,
+  statisticsByDimension,
+  satisfactionGraphDimension,
+} from "@/api/system/user";
 import store from "@/store";
 
 export default {
   name: "SatisfactionStatistics",
+  dicts: ["dimensionality_type"],
   data() {
     return {
       // 鏌ヨ鍙傛暟
       queryParams: {
         type: 2,
         patientSource: "",
-        deptCode: "",
-        wardCode: "",
+        deptCodes: [], // 鏀逛负鏁扮粍锛屾敮鎸佸閫�
+        wardCodes: [], // 鏀逛负鏁扮粍锛屾敮鎸佸閫�
         dateRange: [],
       },
-
       // 褰撳墠婵�娲荤殑tab
       activeTab: "questionDetail",
-
+      // 褰撳墠婵�娲荤殑鍥捐〃tab
+      activeChartTab: "satisfactionType",
       // 鎮h�呮潵婧愰�夐」
       patientSourceList: [
         { value: "1", label: "闂ㄨ瘖" },
@@ -548,9 +713,13 @@
       loading: false,
       detailLoading: false,
       typeDetailLoading: false,
+      dimensionDetailLoading: false,
 
       // 棰樼洰鏄庣粏鏁版嵁
       questionDetailData: [],
+
+      // 缁村害棰樼洰鏄庣粏鏁版嵁
+      dimensionDetailData: [],
 
       // 棰樼洰鏄庣粏鏌ヨ鍙傛暟
       detailQueryParams: {
@@ -561,10 +730,24 @@
       // 棰樼洰鏄庣粏鎬绘暟
       detailTotal: 0,
 
+      // 缁村害鏄庣粏鏌ヨ鍙傛暟
+      dimensionQueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+
+      // 缁村害鏄庣粏鎬绘暟
+      dimensionTotal: 0,
+
       // 缁煎悎寰楀垎
       totalScore: 0,
       totalAnswerCount: 0,
       totalAnswerRate: 0,
+
+      // 缁村害缁熻姹囨��
+      dimensionTotalAnswerCount: 0,
+      dimensionTotalAnswerRate: 0,
+      dimensionAverageScore: 0,
 
       // 鍚勭被鍨嬬粺璁℃槑缁嗘暟鎹�
       typeDetailData: [],
@@ -660,16 +843,16 @@
 
     // 璁$畻绉戝缂栫爜鏁扮粍
     deptCodes() {
-      if (this.queryParams.deptCode) {
-        return [this.queryParams.deptCode];
+      if (this.queryParams.deptCodes && this.queryParams.deptCodes.length > 0) {
+        return this.queryParams.deptCodes;
       }
       return this.deptList.map((dept) => dept.value);
     },
 
     // 璁$畻鐥呭尯缂栫爜鏁扮粍
     hospitalDistrictCodes() {
-      if (this.queryParams.wardCode) {
-        return [this.queryParams.wardCode];
+      if (this.queryParams.wardCodes && this.queryParams.wardCodes.length > 0) {
+        return this.queryParams.wardCodes;
       }
       return this.wardList.map((ward) => ward.value);
     },
@@ -729,6 +912,13 @@
       });
     },
 
+    // 鑾峰彇鍥捐〃鏍囬
+    getChartTitle() {
+      return this.activeChartTab === "satisfactionType"
+        ? "婊℃剰搴︾被鍨嬪~鎶ユ瘮渚嬬粺璁�"
+        : "缁村害濉姤姣斾緥缁熻";
+    },
+
     // 鍔犺浇鏁版嵁
     async loadData() {
       await Promise.all([
@@ -742,23 +932,10 @@
     async loadChartData() {
       this.loading = true;
       try {
-        const params = {
-          type: this.queryParams.type,
-          startTime: this.startTime,
-          endTime: this.endTime,
-          deptcodes: this.deptCodes,
-          hospitaldistrictcodes: this.hospitalDistrictCodes,
-          templateid: this.templateId,
-        };
-
-        const response = await satisfactionGraph(params);
-
-        if (response.code === 200) {
-          this.processChartData(response);
+        if (this.activeChartTab === "satisfactionType") {
+          await this.loadSatisfactionTypeChartData();
         } else {
-          this.$message.error(response.msg || "鑾峰彇鍥捐〃鏁版嵁澶辫触");
-          // 浣跨敤mock鏁版嵁
-          await this.generateMockChartData();
+          await this.loadDimensionChartData();
         }
       } catch (error) {
         console.error("鑾峰彇鍥捐〃鏁版嵁鍑洪敊:", error);
@@ -770,14 +947,54 @@
       }
     },
 
-    // 澶勭悊鍥捐〃鏁版嵁
-    processChartData(apiData) {
+    // 鍔犺浇婊℃剰搴︾被鍨嬪浘琛ㄦ暟鎹�
+    async loadSatisfactionTypeChartData() {
+      const params = {
+        type: this.queryParams.type,
+        startTime: this.startTime,
+        endTime: this.endTime,
+        deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+        hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+        templateid: this.templateId,
+      };
+
+      const response = await satisfactionGraph(params);
+      if (response.code === 200) {
+        this.processSatisfactionTypeChartData(response);
+      } else {
+        this.$message.error(response.msg || "鑾峰彇鍥捐〃鏁版嵁澶辫触");
+        await this.generateMockChartData();
+      }
+    },
+
+    // 鍔犺浇缁村害鍥捐〃鏁版嵁
+    async loadDimensionChartData() {
+      const params = {
+        type: this.queryParams.type,
+        startTime: this.startTime,
+        endTime: this.endTime,
+        deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+        hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+        templateid: this.templateId,
+      };
+
+      const response = await satisfactionGraphDimension(params);
+      if (response.code === 200) {
+        this.processDimensionChartData(response);
+      } else {
+        this.$message.error(response.msg || "鑾峰彇缁村害鍥捐〃鏁版嵁澶辫触");
+        await this.generateMockDimensionChartData();
+      }
+    },
+
+    // 澶勭悊婊℃剰搴︾被鍨嬪浘琛ㄦ暟鎹�
+    processSatisfactionTypeChartData(apiData) {
       if (!apiData || !apiData.rows || Object.keys(apiData.rows).length === 0) {
         this.chartData = [];
         this.totalSendCount = 0;
         this.totalReceiveCount = 0;
         this.overallRecoveryRate = 0;
-        this.renderChart([]);
+        this.renderChart([], "satisfactionType");
         return;
       }
 
@@ -811,7 +1028,64 @@
       this.overallRecoveryRate = totalSend > 0 ? totalReceive / totalSend : 0;
       this.chartData = chartData;
 
-      this.renderChart(chartData);
+      this.renderChart(chartData, "satisfactionType");
+    },
+
+    // 澶勭悊缁村害鍥捐〃鏁版嵁
+    processDimensionChartData(apiData) {
+      if (!apiData || !apiData.rows || Object.keys(apiData.rows).length === 0) {
+        this.chartData = [];
+        this.totalSendCount = 0;
+        this.totalReceiveCount = 0;
+        this.overallRecoveryRate = 0;
+        this.renderChart([], "dimension");
+        return;
+      }
+
+      const chartData = [];
+      let totalSend = 0;
+      let totalReceive = 0;
+      let index = 0;
+
+      // 澶勭悊鎺ュ彛杩斿洖鐨勭淮搴︾粺璁�
+      Object.entries(apiData.rows).forEach(([dimensionCode, dimensionStat]) => {
+        const sendCount = dimensionStat.subidAll || 0;
+        const receiveCount = dimensionStat.fillCountAll || 0;
+        const recoveryRate = dimensionStat.receiveRate || 0;
+
+        // 鑾峰彇缁村害鏍囩
+        const dimensionName = this.getDimensionLabel(dimensionCode);
+
+        chartData.push({
+          name: dimensionName,
+          value: (recoveryRate * 100).toFixed(2), // 杞崲涓虹櫨鍒嗘瘮
+          sendCount: sendCount,
+          receiveCount: receiveCount,
+          averageScore: dimensionStat.averageScore || 0,
+          dimension: dimensionCode,
+          itemStyle: { color: this.getChartColor(index) },
+        });
+
+        totalSend += sendCount;
+        totalReceive += receiveCount;
+        index++;
+      });
+
+      this.totalSendCount = totalSend;
+      this.totalReceiveCount = totalReceive;
+      this.overallRecoveryRate = totalSend > 0 ? totalReceive / totalSend : 0;
+      this.chartData = chartData;
+
+      this.renderChart(chartData, "dimension");
+    },
+
+    // 鑾峰彇缁村害鏍囩
+    getDimensionLabel(dimensionCode) {
+      if (!this.dict.type.dimensionality_type) return dimensionCode;
+      const dimension = this.dict.type.dimensionality_type.find(
+        (item) => item.value.toString() === dimensionCode.toString()
+      );
+      return dimension ? dimension.label : dimensionCode;
     },
 
     // 鍔犺浇棰樼洰鏄庣粏鏁版嵁
@@ -823,6 +1097,8 @@
           startTime: this.startTime,
           endTime: this.endTime,
           scriptids: this.scriptIds,
+          deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+          hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
           templateid: this.templateId,
         };
 
@@ -898,6 +1174,85 @@
       this.totalAnswerRate = apiData.totalAnswerRate || 0;
     },
 
+    // 鍔犺浇缁村害鏄庣粏鏁版嵁
+    async loadDimensionDetailData() {
+      this.dimensionDetailLoading = true;
+      try {
+        const params = {
+          type: this.queryParams.type,
+          startTime: this.startTime,
+          endTime: this.endTime,
+          deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+          hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
+          templateid: this.templateId,
+          questionType: this.queryParams.type || null,
+          serviceTypes: this.defaultServiceTypes,
+        };
+
+        const response = await statisticsByDimension(params);
+
+        if (response.code === 200) {
+          this.processDimensionDetailData(response.rows);
+        } else {
+          this.$message.error(response.msg || "鑾峰彇缁村害鏄庣粏鏁版嵁澶辫触");
+          const mockData = await this.generateMockDimensionDetail();
+          this.dimensionDetailData = mockData;
+          this.calculateDimensionSummary(mockData);
+        }
+      } catch (error) {
+        console.error("鑾峰彇缁村害鏄庣粏鏁版嵁鍑洪敊:", error);
+        this.$message.error("鑾峰彇缁村害鏄庣粏鏁版嵁澶辫触");
+        const mockData = await this.generateMockDimensionDetail();
+        this.dimensionDetailData = mockData;
+        this.calculateDimensionSummary(mockData);
+      } finally {
+        this.dimensionDetailLoading = false;
+      }
+    },
+
+    // 澶勭悊缁村害鏄庣粏鏁版嵁
+    processDimensionDetailData(apiData) {
+      if (!apiData || !apiData.patSatisfactionDetailEntities) {
+        this.dimensionDetailData = [];
+        this.calculateDimensionSummary([]);
+        return;
+      }
+
+      const detailData = apiData.patSatisfactionDetailEntities.map((item) => {
+        const options = [];
+        if (item.matchedtextStats) {
+          Object.keys(item.matchedtextStats).forEach((key) => {
+            const stat = item.matchedtextStats[key];
+            options.push({
+              optionText: key,
+              chosenQuantity: stat.count || 0,
+              chosenPercentage: (stat.ratio || 0) / 100,
+            });
+          });
+        }
+
+        return {
+          scriptContent: item.scriptContent || "",
+          dimension: item.dimension || "0", // 缁村害浠g爜
+          dimensionName: this.getDimensionLabel(item.dimension || "0"), // 缁村害鍚嶇О
+          scriptType: 1,
+          answerPerson: item.answerPerson || 0,
+          noAnswerPerson: item.noAnswerPerson || 0,
+          answerCount: item.answerPerson || 0,
+          averageScore: item.averageScore || 0,
+          maxScore: item.maxScore || 0,
+          minScore: item.minScore || 0,
+          answerRate: item.answerRate || 0,
+          totalCount: (item.answerPerson || 0) + (item.noAnswerPerson || 0),
+          options: options,
+        };
+      });
+
+      this.dimensionDetailData = detailData;
+      this.dimensionTotal = detailData.length;
+      this.calculateDimensionSummary(detailData);
+    },
+
     // 鍔犺浇绫诲瀷鏄庣粏鏁版嵁
     async loadTypeDetailData() {
       this.typeDetailLoading = true;
@@ -906,8 +1261,8 @@
           type: this.queryParams.type,
           startTime: this.startTime,
           endTime: this.endTime,
-          deptcodes: this.deptCodes,
-          hospitaldistrictcodes: this.hospitalDistrictCodes,
+          deptcodes: this.deptCodes, // 浣跨敤璁$畻灞炴��
+          hospitaldistrictcodes: this.hospitalDistrictCodes, // 浣跨敤璁$畻灞炴��
           templateid: this.templateId,
         };
 
@@ -915,8 +1270,6 @@
 
         if (response.code === 200) {
           this.processTypeDetailData(response);
-          console.log(11);
-
         } else {
           this.$message.error(response.msg || "鑾峰彇绫诲瀷鏄庣粏鏁版嵁澶辫触");
           const mockData = await this.generateMockTypeDetail();
@@ -965,8 +1318,6 @@
       });
 
       this.typeDetailData = typeDetail;
-      console.log(this.typeDetailData,'this.typeDetailData');
-
       this.calculateTypeSummary(typeDetail);
     },
 
@@ -977,13 +1328,6 @@
       if (score >= 3.0) return "涓�鑸�";
       if (score >= 2.0) return "杈冨樊";
       return "鏈煡";
-    },
-
-    // 鑾峰彇瓒嬪娍
-    getTrend(trend) {
-      if (trend > 0.1) return "up";
-      if (trend < -0.1) return "down";
-      return "stable";
     },
 
     // 璁$畻缁煎悎寰楀垎
@@ -1002,6 +1346,32 @@
         data.list.length > 0 ? totalScore / data.list.length : 0;
       this.totalAnswerCount = totalAnswerCount;
       this.totalAnswerRate = totalCount > 0 ? totalAnswerCount / totalCount : 0;
+    },
+
+    // 璁$畻缁村害缁熻姹囨��
+    calculateDimensionSummary(data) {
+      if (data.length === 0) {
+        this.dimensionTotalAnswerCount = 0;
+        this.dimensionTotalAnswerRate = 0;
+        this.dimensionAverageScore = 0;
+        return;
+      }
+
+      let totalScore = 0;
+      let totalAnswerCount = 0;
+      let totalCount = 0;
+
+      data.forEach((item) => {
+        totalScore += item.averageScore;
+        totalAnswerCount += item.answerPerson;
+        totalCount += item.answerPerson + item.noAnswerPerson;
+      });
+
+      this.dimensionAverageScore =
+        data.length > 0 ? totalScore / data.length : 0;
+      this.dimensionTotalAnswerCount = totalAnswerCount;
+      this.dimensionTotalAnswerRate =
+        totalCount > 0 ? totalAnswerCount / totalCount : 0;
     },
 
     // 璁$畻绫诲瀷缁熻姹囨��
@@ -1043,7 +1413,7 @@
     },
 
     // 娓叉煋鍥捐〃
-    renderChart(chartData) {
+    renderChart(chartData, chartType = "satisfactionType") {
       if (!this.barChart) return;
       if (!chartData || chartData.length === 0) {
         const emptyOption = {
@@ -1063,6 +1433,14 @@
         this.barChart.setOption(emptyOption);
         return;
       }
+
+      const yAxisName =
+        chartType === "satisfactionType" ? "濉姤姣斾緥 (%)" : "濉姤姣斾緥 (%)";
+      const tooltipFormatter =
+        chartType === "satisfactionType"
+          ? this.getSatisfactionTypeTooltipFormatter
+          : this.getDimensionTooltipFormatter;
+
       const option = {
         title: {
           text: "",
@@ -1073,28 +1451,7 @@
           axisPointer: {
             type: "shadow",
           },
-          formatter: (params) => {
-            const data = params[0];
-            return `
-              <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
-                ${data.name}
-              </div>
-              <div style="margin: 2px 0;">
-                <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
-                  data.color
-                };margin-right:5px;"></span>
-                濉姤姣斾緥: <strong>${data.value}%</strong>
-              </div>
-              <div style="margin: 2px 0;">
-                <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
-                鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
-              </div>
-              <div style="margin: 2px 0;">
-                <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
-                鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
-              </div>
-            `;
-          },
+          formatter: tooltipFormatter,
         },
         grid: {
           left: "3%",
@@ -1123,7 +1480,7 @@
         },
         yAxis: {
           type: "value",
-          name: "濉姤姣斾緥 (%)",
+          name: yAxisName,
           min: 0,
           max: 100,
           axisLabel: {
@@ -1167,6 +1524,66 @@
       this.barChart.setOption(option);
     },
 
+    // 婊℃剰搴︾被鍨媡ooltip鏍煎紡鍖�
+    getSatisfactionTypeTooltipFormatter(params) {
+      const data = params[0];
+      return `
+        <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
+          ${data.name}
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
+            data.color
+          };margin-right:5px;"></span>
+          濉姤姣斾緥: <strong>${data.value}%</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          骞冲潎鍒�: <strong>${data.data.averageScore.toFixed(1)}</strong>
+        </div>
+      `;
+    },
+
+    // 缁村害tooltip鏍煎紡鍖�
+    getDimensionTooltipFormatter(params) {
+      const data = params[0];
+      return `
+        <div style="margin-bottom: 5px; font-weight: bold; color: #333;">
+          ${data.name}
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:${
+            data.color
+          };margin-right:5px;"></span>
+          濉姤姣斾緥: <strong>${data.value}%</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          鍙戦�侀棶鍗�: <strong>${data.data.sendCount.toLocaleString()}</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          鍥炴敹闂嵎: <strong>${data.data.receiveCount.toLocaleString()}</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          骞冲潎鍒�: <strong>${data.data.averageScore.toFixed(1)}</strong>
+        </div>
+        <div style="margin: 2px 0;">
+          <span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:#eee;margin-right:5px;"></span>
+          缁村害浠g爜: <strong>${data.data.dimension}</strong>
+        </div>
+      `;
+    },
+
     // 鐢熸垚Mock鍥捐〃鏁版嵁
     generateMockChartData() {
       return new Promise((resolve) => {
@@ -1201,11 +1618,69 @@
             value: item.recoveryRate * 100,
             sendCount: item.sendCount,
             receiveCount: item.receiveCount,
+            averageScore: 4.2 + Math.random() * 0.8,
             itemStyle: { color: item.color },
           }));
 
           this.chartData = chartData;
-          this.renderChart(chartData);
+          this.renderChart(chartData, "satisfactionType");
+          resolve();
+        }, 300);
+      });
+    },
+
+    // 鐢熸垚Mock缁村害鍥捐〃鏁版嵁
+    generateMockDimensionChartData() {
+      return new Promise((resolve) => {
+        setTimeout(() => {
+          // 妯℃嫙缁村害鏁版嵁
+          const dimensionLabels = this.dict.type.dimensionality_type || [
+            { value: "1", label: "缁村害1" },
+            { value: "2", label: "缁村害2" },
+            { value: "3", label: "缁村害3" },
+            { value: "4", label: "缁村害4" },
+            { value: "5", label: "缁村害5" },
+          ];
+
+          const data = dimensionLabels.map((dim, index) => ({
+            name: dim.label,
+            recoveryRate: Math.random() * 0.3 + 0.6,
+            sendCount: Math.floor(Math.random() * 2000) + 1000,
+            receiveCount: 0,
+            averageScore: 3.5 + Math.random() * 1.5,
+            dimension: dim.value,
+            color: this.getChartColor(index),
+          }));
+
+          data.forEach((item) => {
+            item.receiveCount = Math.floor(item.sendCount * item.recoveryRate);
+          });
+
+          this.totalSendCount = data.reduce(
+            (sum, item) => sum + item.sendCount,
+            0
+          );
+          this.totalReceiveCount = data.reduce(
+            (sum, item) => sum + item.receiveCount,
+            0
+          );
+          this.overallRecoveryRate =
+            this.totalSendCount > 0
+              ? this.totalReceiveCount / this.totalSendCount
+              : 0;
+
+          const chartData = data.map((item) => ({
+            name: item.name,
+            value: item.recoveryRate * 100,
+            sendCount: item.sendCount,
+            receiveCount: item.receiveCount,
+            averageScore: item.averageScore,
+            dimension: item.dimension,
+            itemStyle: { color: item.color },
+          }));
+
+          this.chartData = chartData;
+          this.renderChart(chartData, "dimension");
           resolve();
         }, 300);
       });
@@ -1305,6 +1780,111 @@
       });
     },
 
+    // 鐢熸垚Mock缁村害璇︽儏鏁版嵁
+    generateMockDimensionDetail() {
+      return new Promise((resolve) => {
+        setTimeout(() => {
+          const questions = [
+            {
+              scriptContent: "鍖绘姢浜哄憳鏈嶅姟鎬佸害",
+              dimension: "1",
+              dimensionName: "鏈嶅姟鎬佸害",
+              scriptType: 1,
+              answerPerson: 120,
+              noAnswerPerson: 30,
+              answerCount: 120,
+              totalCount: 150,
+              averageScore: 4.2,
+              maxScore: 5.0,
+              minScore: 1.0,
+              answerRate: 0.8,
+              options: [
+                {
+                  optionText: "闈炲父婊℃剰",
+                  chosenQuantity: 60,
+                  chosenPercentage: 0.5,
+                },
+                {
+                  optionText: "婊℃剰",
+                  chosenQuantity: 36,
+                  chosenPercentage: 0.3,
+                },
+                {
+                  optionText: "涓�鑸�",
+                  chosenQuantity: 18,
+                  chosenPercentage: 0.15,
+                },
+              ],
+            },
+            {
+              scriptContent: "鍖荤枟鎶�鏈按骞�",
+              dimension: "2",
+              dimensionName: "鎶�鏈按骞�",
+              scriptType: 1,
+              answerPerson: 145,
+              noAnswerPerson: 11,
+              answerCount: 145,
+              totalCount: 156,
+              averageScore: 4.5,
+              maxScore: 5,
+              minScore: 3,
+              answerRate: 0.93,
+              options: [
+                {
+                  optionText: "闈炲父婊℃剰",
+                  chosenQuantity: 89,
+                  chosenPercentage: 0.61,
+                },
+                {
+                  optionText: "婊℃剰",
+                  chosenQuantity: 45,
+                  chosenPercentage: 0.31,
+                },
+                {
+                  optionText: "涓�鑸�",
+                  chosenQuantity: 8,
+                  chosenPercentage: 0.06,
+                },
+              ],
+            },
+            {
+              scriptContent: "灏卞尰鐜璁炬柦",
+              dimension: "3",
+              dimensionName: "鐜璁炬柦",
+              scriptType: 1,
+              answerPerson: 98,
+              noAnswerPerson: 22,
+              answerCount: 98,
+              totalCount: 120,
+              averageScore: 4.0,
+              maxScore: 5,
+              minScore: 2,
+              answerRate: 0.82,
+              options: [
+                {
+                  optionText: "闈炲父婊℃剰",
+                  chosenQuantity: 45,
+                  chosenPercentage: 0.46,
+                },
+                {
+                  optionText: "婊℃剰",
+                  chosenQuantity: 40,
+                  chosenPercentage: 0.41,
+                },
+                {
+                  optionText: "涓�鑸�",
+                  chosenQuantity: 10,
+                  chosenPercentage: 0.1,
+                },
+              ],
+            },
+          ];
+
+          resolve(questions);
+        }, 300);
+      });
+    },
+
     // 鐢熸垚Mock绫诲瀷鏄庣粏鏁版嵁
     generateMockTypeDetail() {
       return new Promise((resolve) => {
@@ -1378,6 +1958,12 @@
         "#FF9D4D",
         "#9B8DFF",
         "#FF6B6B",
+        "#66C2A5",
+        "#FC8D62",
+        "#8DA0CB",
+        "#E78AC3",
+        "#A6D854",
+        "#FFD92F",
       ];
       return colors[index % colors.length];
     },
@@ -1389,14 +1975,21 @@
       }
     },
 
+    // 澶勭悊鍥捐〃Tab鍒囨崲
+    handleChartTabClick(tab) {
+      this.activeChartTab = tab.name;
+      this.loadChartData();
+    },
+
     // 澶勭悊鏌ヨ
     handleSearch() {
       this.detailQueryParams.pageNum = 1;
+      this.dimensionQueryParams.pageNum = 1;
       this.loadData();
       // 寮哄埗閲嶆柊娓叉煋鍥捐〃
       setTimeout(() => {
         if (this.chartData.length === 0) {
-          this.renderChart([]);
+          this.renderChart([], this.activeChartTab);
         }
       }, 100);
     },
@@ -1405,14 +1998,30 @@
     handleReset() {
       this.$refs.queryForm.resetFields();
       this.queryParams.dateRange = [];
+        this.queryParams.deptCodes = [];  // 閲嶇疆涓烘暟缁�
+  this.queryParams.wardCodes = [];  // 閲嶇疆涓烘暟缁�
       this.detailQueryParams.pageNum = 1;
+      this.dimensionQueryParams.pageNum = 1;
       this.loadData();
     },
 
     // 澶勭悊Tab鍒囨崲
     handleTabClick(tab) {
-      if (tab.name === "typeDetail" && this.typeDetailData.length === 0) {
+      if (
+        tab.name === "dimensionDetail" &&
+        this.dimensionDetailData.length === 0
+      ) {
+        this.loadDimensionDetailData();
+      } else if (
+        tab.name === "typeDetail" &&
+        this.typeDetailData.length === 0
+      ) {
         this.loadTypeDetailData();
+      } else if (
+        tab.name === "questionDetail" &&
+        this.questionDetailData.length === 0
+      ) {
+        this.loadQuestionDetailData();
       }
     },
 
@@ -1427,6 +2036,19 @@
     handleDetailPageChange(page) {
       this.detailQueryParams.pageNum = page;
       this.loadQuestionDetailData();
+    },
+
+    // 澶勭悊缁村害鏄庣粏鍒嗛〉澶у皬鍙樺寲
+    handleDimensionSizeChange(size) {
+      this.dimensionQueryParams.pageSize = size;
+      this.dimensionQueryParams.pageNum = 1;
+      this.loadDimensionDetailData();
+    },
+
+    // 澶勭悊缁村害鏄庣粏椤电爜鍙樺寲
+    handleDimensionPageChange(page) {
+      this.dimensionQueryParams.pageNum = page;
+      this.loadDimensionDetailData();
     },
 
     // 澶勭悊绫诲瀷璇︽儏
@@ -1549,6 +2171,14 @@
         }
       }
     }
+
+    .chart-tabs {
+      margin-bottom: 20px;
+
+      ::v-deep .el-tabs__header {
+        margin-bottom: 0;
+      }
+    }
   }
 
   .tab-section {
@@ -1561,7 +2191,8 @@
     }
   }
 
-  .detail-table-section {
+  .detail-table-section,
+  .dimension-detail-section {
     .option-detail {
       padding: 15px;
       background: #f8f9fa;
@@ -1581,7 +2212,8 @@
         padding: 12px 0;
       }
 
-      .question-row {
+      .question-row,
+      .dimension-row {
         td {
           background-color: #fff;
         }
@@ -1600,19 +2232,22 @@
       font-size: 16px;
     }
 
-    .summary-row {
+    .summary-row,
+    .dimension-summary-row {
       margin-top: 20px;
       padding: 20px;
       background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
       border-radius: 8px;
       border: 1px solid #dee2e6;
 
-      .summary-content {
+      .summary-content,
+      .dimension-summary-content {
         display: flex;
         justify-content: space-around;
         align-items: center;
 
-        .summary-item {
+        .summary-item,
+        .dimension-summary-item {
           text-align: center;
 
           .label {
@@ -1684,24 +2319,6 @@
         color: #409eff;
         font-size: 15px;
       }
-
-      .trend-cell {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        gap: 5px;
-
-        .trend-up,
-        .trend-down,
-        .trend-stable {
-          font-size: 16px;
-        }
-
-        .trend-text {
-          font-size: 13px;
-          color: #666;
-        }
-      }
     }
 
     .type-summary-row {
@@ -1763,7 +2380,13 @@
     }
   }
 }
-
+/* 纭繚澶氶�変笅鎷夋鏍峰紡姝g‘ */
+::v-deep .el-select__tags {
+  max-width: 200px;
+  .el-tag {
+    margin: 2px 0 2px 6px;
+  }
+}
 @media (max-width: 768px) {
   .satisfaction-statistics {
     padding: 10px;
@@ -1795,8 +2418,10 @@
       }
     }
 
-    .detail-table-section {
-      .summary-content {
+    .detail-table-section,
+    .dimension-detail-section {
+      .summary-content,
+      .dimension-summary-content {
         flex-direction: column;
         gap: 15px;
       }
diff --git a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
index 46e59de..7b6fa0a 100644
--- a/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
+++ b/src/views/Satisfaction/sfstatistics/components/components/TopicDialog.vue
@@ -1,5 +1,18 @@
 <template>
   <div class="topic-dialog">
+    <div class="dialog-header">
+      <span class="title"> {{ configTitle }}鎸囨爣璇︽儏 </span>
+      <el-button
+        type="primary"
+        size="mini"
+        icon="el-icon-download"
+        :disabled="!processedTopicList.length"
+        @click="exportTopicDetail"
+      >
+        瀵煎嚭
+      </el-button>
+    </div>
+
     <div class="topicdia">
       <div style="overflow-x: hidden; overflow-y: auto; max-height: 65vh">
         <!-- 淇敼杩欓噷锛氫娇鐢� processedTopicList 鑰屼笉鏄� topicList -->
@@ -74,6 +87,8 @@
 </template>
 
 <script>
+import ExcelJS from "exceljs";
+import { saveAs } from "file-saver";
 export default {
   name: "TopicDialog",
   props: {
@@ -94,6 +109,13 @@
     return {
       processedTopicList: [], // 澶勭悊鍚庣殑鏁版嵁
     };
+  },
+  computed: {
+    configTitle() {
+      // 浠庣埗绾� queryParams 涓鍙�
+      const key = this.queryParams?.configKey;
+      return key === "returnVisitCount" ? "澶嶈瘖閫氱煡" : "婊℃剰搴�";
+    },
   },
   watch: {
     // 鐩戝惉鐖剁粍浠朵紶閫掔殑鏁版嵁鍙樺寲
@@ -141,7 +163,146 @@
       console.log("澶勭悊鍚庣殑鏁版嵁:", result);
       this.processedTopicList = result;
     },
+    /** 瀵煎嚭棰樼洰鏄庣粏 */
+    async exportTopicDetail() {
+      if (!this.processedTopicList.length) {
+        this.$message.warning("鏆傛棤鏁版嵁鍙鍑�");
+        return;
+      }
 
+      const workbook = new ExcelJS.Workbook();
+      const sheetName = `${
+        this.rowData.leavehospitaldistrictname || this.rowData.deptname
+      }${this.configTitle}鏄庣粏`;
+      const worksheet = workbook.addWorksheet(sheetName);
+
+      /* ---------- 鏍峰紡 ---------- */
+      const titleStyle = {
+        font: { name: "寰蒋闆呴粦", size: 14, bold: true },
+        alignment: { horizontal: "center", vertical: "middle" },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        },
+      };
+
+      const subtitleStyle = {
+        font: { name: "寰蒋闆呴粦", size: 12, bold: true },
+        alignment: { horizontal: "left", vertical: "middle" },
+      };
+
+      const headerStyle = {
+        font: { name: "寰蒋闆呴粦", size: 11, bold: true },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFEBEEF5" },
+        },
+        alignment: { horizontal: "center", vertical: "middle" },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      const cellStyle = {
+        font: { name: "瀹嬩綋", size: 10 },
+        alignment: { horizontal: "center", vertical: "middle" },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      /* ---------- 鏍囬鍖� ---------- */
+      worksheet.mergeCells(1, 1, 1, 4);
+      worksheet.getCell(1, 1).value = `${this.configTitle}棰樼洰鏄庣粏`;
+      worksheet.getCell(1, 1).style = titleStyle;
+
+      worksheet.mergeCells(2, 1, 2, 4);
+      worksheet.getCell(2, 1).value = `缁熻瀵硅薄锛�${
+        this.rowData.leavehospitaldistrictname || this.rowData.deptname
+      }`;
+      worksheet.getCell(2, 1).style = subtitleStyle;
+
+      worksheet.mergeCells(3, 1, 3, 4);
+      worksheet.getCell(3, 1).value = `缁熻鏃堕棿锛�${
+        this.queryParams.dateRange?.[0] || "-"
+      } 鑷� ${this.queryParams.dateRange?.[1] || "-"}`;
+      worksheet.getCell(3, 1).style = subtitleStyle;
+
+      let currentRow = 5;
+
+      /* ---------- 閫愰鍐欏叆 ---------- */
+      this.processedTopicList.forEach((item, index) => {
+        worksheet.mergeCells(currentRow, 1, currentRow, 4);
+        worksheet.getCell(currentRow, 1).value = `绗�${index + 1}棰橈細${
+          item.scriptContent
+        } [${item.scriptType == 1 ? "鍗曢�夐" : "澶氶�夐"}]`;
+        worksheet.getCell(currentRow, 1).style = subtitleStyle;
+        currentRow++;
+
+        const headerRow = worksheet.addRow([
+          "闂閫夐」",
+          "閫夋嫨浜烘暟",
+          "鍗犳瘮",
+          "",
+        ]);
+        headerRow.eachCell((cell) => {
+          cell.style = headerStyle;
+        });
+        currentRow++;
+
+        item.details.forEach((detail) => {
+          const percent =
+            detail.chosenPercentage != null
+              ? (Number(detail.chosenPercentage) * 100).toFixed(2) + "%"
+              : "-";
+
+          const row = worksheet.addRow([
+            detail.optionText,
+            detail.chosenQuantity || 0,
+            percent,
+            "",
+          ]);
+          row.eachCell((cell) => {
+            cell.style = cellStyle;
+          });
+          currentRow++;
+        });
+
+        currentRow++;
+      });
+
+      /* ---------- 鍒楀 ---------- */
+      worksheet.columns = [
+        { width: 40 },
+        { width: 12 },
+        { width: 12 },
+        { width: 10 },
+      ];
+
+      /* ---------- 瀵煎嚭 ---------- */
+      const buffer = await workbook.xlsx.writeBuffer();
+      const fileName =
+        `${this.rowData.leavehospitaldistrictname || this.rowData.deptname}` +
+        `${this.configTitle}鏄庣粏_` +
+        `${this.queryParams.dateRange?.[0]}鑷�${this.queryParams.dateRange?.[1]}.xlsx`;
+
+      saveAs(
+        new Blob([buffer], {
+          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        }),
+        fileName
+      );
+
+      this.$message.success("瀵煎嚭鎴愬姛");
+    },
     // 鏍煎紡鍖栫櫨鍒嗘瘮
     formatPercent(value) {
       if (value === null || value === undefined) return "-";
@@ -193,7 +354,20 @@
     overflow: hidden;
     font-size: 14px;
   }
+  .dialog-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 12px 16px;
+    border-bottom: 1px solid #ebeef5;
+    background: #fafafa;
 
+    .title {
+      font-size: 16px;
+      font-weight: 600;
+      color: #303133;
+    }
+  }
   ::v-deep .el-table th {
     background-color: #f1f5f9;
     color: #333;
diff --git a/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue b/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
index 1b77e5a..d751be2 100644
--- a/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
+++ b/src/views/Satisfaction/sfstatistics/components/visitStatistics.vue
@@ -206,6 +206,7 @@
         </el-table-column>
 
         <el-table-column
+        v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
           label="鍙婃椂鐜�"
           align="center"
           key="rate"
@@ -446,7 +447,7 @@
     // 鍒濆鍖栨暟鎹�
     async initData() {
       await this.getDeptTree();
-      await this.getList();
+      // await this.getList();
     },
 
     // 鑾峰彇绉戝鏍�
diff --git a/src/views/followvisit/Continue/ContinueFordetails.vue b/src/views/followvisit/Continue/ContinueFordetails.vue
index c07bcef..d20c246 100644
--- a/src/views/followvisit/Continue/ContinueFordetails.vue
+++ b/src/views/followvisit/Continue/ContinueFordetails.vue
@@ -256,7 +256,7 @@
                         v-if="item.scriptType == 1 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -301,7 +301,7 @@
                         v-if="item.scriptType == 2 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕澶氶�塢<span>{{
+                          {{ index + 1 }}. [澶氶�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -334,7 +334,7 @@
                         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>
@@ -369,7 +369,7 @@
                     >
                       <div v-if="item.targetvalue">
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.questiontext
                           }}</span>
                         </div>
@@ -391,7 +391,7 @@
                       </div>
                       <div class="scriptTopic-dev" :key="index" v-else>
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
                           }}</span>
                           <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
diff --git a/src/views/followvisit/Continue/index.vue b/src/views/followvisit/Continue/index.vue
index 896131a..3381ea3 100644
--- a/src/views/followvisit/Continue/index.vue
+++ b/src/views/followvisit/Continue/index.vue
@@ -172,8 +172,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -323,10 +323,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -336,37 +336,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -1173,38 +1165,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
diff --git a/src/views/followvisit/HistoricalFollow/index.vue b/src/views/followvisit/HistoricalFollow/index.vue
index 6c25bb3..aca9f10 100644
--- a/src/views/followvisit/HistoricalFollow/index.vue
+++ b/src/views/followvisit/HistoricalFollow/index.vue
@@ -31,8 +31,8 @@
             placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
           ></el-input>
         </el-form-item>
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -115,10 +115,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -128,32 +128,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 6">
-                <el-tag type="danger" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -654,31 +651,23 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-        {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
         {
-          value: 7,
-          label: "瓒呮椂",
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/followvisit/OutpatientAgain/index.vue b/src/views/followvisit/OutpatientAgain/index.vue
index 283a56f..651130f 100644
--- a/src/views/followvisit/OutpatientAgain/index.vue
+++ b/src/views/followvisit/OutpatientAgain/index.vue
@@ -125,8 +125,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -294,10 +294,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -307,37 +307,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -1006,7 +998,7 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鏈嶅姟鏃堕棿(姝e簭)    1 鏈嶅姟鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 3,
         searchscope: 3,
@@ -1019,38 +1011,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1403,7 +1387,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鏈嶅姟鏃堕棿(姝e簭)    1 鏈嶅姟鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 3,
         searchscope: 3,
diff --git a/src/views/followvisit/SpecificDisease/index.vue b/src/views/followvisit/SpecificDisease/index.vue
index f8aaec2..cb2734b 100644
--- a/src/views/followvisit/SpecificDisease/index.vue
+++ b/src/views/followvisit/SpecificDisease/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -224,11 +224,11 @@
             >
           </template>
         </el-table-column>
-        <el-table-column
-          label="浠诲姟鐘舵��"
+      <el-table-column
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -238,32 +238,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
-                  >琚鍙�</el-tag
+                  >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 2">
                 <el-tag type="primary" :disable-transitions="false"
-                  >寰呭彂閫�</el-tag
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
-                  >宸插彂閫佹湭棰嗗彇</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 6">
-                <el-tag type="danger" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -875,34 +872,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
         {
           value: 1,
-          label: "琚鍙�",
+          label: "寰呴殢璁�",
         },
         {
           value: 2,
-          label: "寰呭彂閫�",
+          label: "闅忚涓�",
         },
         {
           value: 3,
-          label: "宸插彂閫佹湭棰嗗彇",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/followvisit/Tracking/index.vue b/src/views/followvisit/Tracking/index.vue
index 252dc77..8579ede 100644
--- a/src/views/followvisit/Tracking/index.vue
+++ b/src/views/followvisit/Tracking/index.vue
@@ -64,8 +64,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -233,10 +233,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -246,37 +246,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -945,7 +937,7 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 寤剁画鎶ょ悊鏃堕棿(姝e簭)    1 寤剁画鎶ょ悊鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 3,
         searchscope: 3,
@@ -958,38 +950,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1342,7 +1326,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 寤剁画鎶ょ悊鏃堕棿(姝e簭)    1 寤剁画鎶ょ悊鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 3,
         searchscope: 3,
diff --git a/src/views/followvisit/again/index.vue b/src/views/followvisit/again/index.vue
index 73b5797..5833d59 100644
--- a/src/views/followvisit/again/index.vue
+++ b/src/views/followvisit/again/index.vue
@@ -125,8 +125,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -302,7 +302,7 @@
           :show-overflow-tooltip="true"
         >
         </el-table-column>
-        <el-table-column
+            <!-- <el-table-column
           label="浠诲姟鐘舵��"
           align="center"
           key="sendstate"
@@ -346,6 +346,48 @@
               </div>
               <div v-if="scope.row.sendstate == 7">
                 <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column> -->
+        <el-table-column
+          label="闅忚鐘舵��"
+          align="center"
+          key="sendstateView"
+          prop="sendstateView"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
               </div>
             </el-tooltip>
           </template>
@@ -1005,7 +1047,7 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 2,
         searchscope: 3,
@@ -1025,31 +1067,23 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-        {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
         {
-          value: 7,
-          label: "瓒呮椂",
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1403,7 +1437,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 2,
         searchscope: 3,
diff --git a/src/views/followvisit/beHospitalized/followUp.vue b/src/views/followvisit/beHospitalized/followUp.vue
index a252b74..e8bd9a4 100644
--- a/src/views/followvisit/beHospitalized/followUp.vue
+++ b/src/views/followvisit/beHospitalized/followUp.vue
@@ -172,8 +172,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -368,7 +368,7 @@
           :show-overflow-tooltip="true"
         >
         </el-table-column>
-        <el-table-column
+            <!-- <el-table-column
           label="浠诲姟鐘舵��"
           align="center"
           key="sendstate"
@@ -412,6 +412,48 @@
               </div>
               <div v-if="scope.row.sendstate == 7">
                 <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column> -->
+        <el-table-column
+          label="闅忚鐘舵��"
+          align="center"
+          key="sendstateView"
+          prop="sendstateView"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
               </div>
             </el-tooltip>
           </template>
@@ -1263,8 +1305,8 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate:
-          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 2,
+        sendstateView:
+          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 18,
         searchscope: 3,
@@ -1284,31 +1326,23 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-        {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
         {
-          value: 7,
-          label: "瓒呮椂",
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1740,7 +1774,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 18,
         searchscope: 3,
diff --git a/src/views/followvisit/complaint/index.vue b/src/views/followvisit/complaint/index.vue
index 4d71869..0c6e97b 100644
--- a/src/views/followvisit/complaint/index.vue
+++ b/src/views/followvisit/complaint/index.vue
@@ -133,8 +133,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -304,10 +304,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -317,37 +317,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -1120,31 +1112,23 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 196684e..e14bc4f 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -172,8 +172,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -183,6 +183,7 @@
             </el-option>
           </el-select>
         </el-form-item>
+
         <el-form-item label="鎺掑簭鏂瑰紡" prop="status">
           <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
             <el-option
@@ -368,11 +369,12 @@
           :show-overflow-tooltip="true"
         >
         </el-table-column>
+
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -382,47 +384,34 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
-                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
               </div>
             </el-tooltip>
           </template>
         </el-table-column>
-        <!-- <el-table-column
-          label="浠诲姟寮傚父璇存槑"
-          width="120"
-          align="center"
-          key="remark"
-          prop="remark" -->
-        />
 
         <el-table-column
           label="澶勭悊鎰忚"
@@ -438,7 +427,18 @@
             />
           </template>
         </el-table-column>
-
+        <el-table-column
+          label="浠诲姟鎵ц鏂瑰紡"
+          align="center"
+          key="preachform"
+          prop="preachform"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+          <template slot-scope="scope">
+            <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+          </template>
+        </el-table-column>
         <el-table-column
           label="闅忚瀹屾垚鏃堕棿"
           sortable
@@ -565,18 +565,7 @@
           prop="templatename"
           width="200"
         />
-        <el-table-column
-          label="浠诲姟鎵ц鏂瑰紡"
-          align="center"
-          key="preachform"
-          prop="preachform"
-          width="160"
-          :show-overflow-tooltip="true"
-        >
-          <template slot-scope="scope">
-            <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
-          </template>
-        </el-table-column>
+
         <!-- <el-table-column
           label="浠诲姟鍙戦�佹祦绋�"
           align="center"
@@ -1263,8 +1252,8 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate:
-          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 2,
+        sendstateView:
+          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 2,
         searchscope: 3,
@@ -1284,33 +1273,26 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-        {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
         {
-          value: 7,
-          label: "瓒呮椂",
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
+
       sextype: [
         {
           value: 1,
@@ -1739,7 +1721,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 2,
         searchscope: 3,
diff --git a/src/views/followvisit/discharge/outpatientService.vue b/src/views/followvisit/discharge/outpatientService.vue
index 62b91fd..38bcdea 100644
--- a/src/views/followvisit/discharge/outpatientService.vue
+++ b/src/views/followvisit/discharge/outpatientService.vue
@@ -131,8 +131,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -300,10 +300,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -313,37 +313,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -1006,38 +998,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+     topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1377,7 +1361,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 3,
         searchscope: 3,
diff --git a/src/views/followvisit/mzsatisfaction/index.vue b/src/views/followvisit/mzsatisfaction/index.vue
index 25c9e19..13205f5 100644
--- a/src/views/followvisit/mzsatisfaction/index.vue
+++ b/src/views/followvisit/mzsatisfaction/index.vue
@@ -132,8 +132,11 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select
+            v-model="topqueryParams.sendstateView"
+            placeholder="璇烽�夋嫨"
+          >
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -187,7 +190,7 @@
         <el-col :span="1.5">
           <el-button
             type="primary"
-                        icon="el-icon-plus"
+            icon="el-icon-plus"
             size="medium"
             @click="handleAdd"
             >鏂板</el-button
@@ -257,7 +260,6 @@
             </div>
           </div>
         </el-col>
-
       </el-row>
       <el-table
         v-loading="loading"
@@ -290,11 +292,11 @@
               type="text"
               @click="
                 gettoken360(
-                    scope.row.sfzh,
-                    scope.row.drcode,
-                    scope.row.drname,
-                    scope.row.patid
-                  )
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
               "
               ><span class="button-textsc">{{
                 scope.row.sendname
@@ -302,11 +304,11 @@
             >
           </template>
         </el-table-column>
-        <el-table-column
-          label="浠诲姟鐘舵��"
+      <el-table-column
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -316,37 +318,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -483,7 +477,7 @@
           :show-overflow-tooltip="true"
         >
         </el-table-column>
- <el-table-column
+        <el-table-column
           label="闅忚浜哄憳"
           align="center"
           key="updateBy"
@@ -984,7 +978,7 @@
   addserviceSubtask,
   query360PatInfo,
   addsatisfaction,
-  query360PatInfonh
+  query360PatInfonh,
 } from "@/api/AiCentre/index";
 import { alterpatient, particularpatient } from "@/api/patient/homepage";
 import Treeselect from "@riophae/vue-treeselect";
@@ -1157,38 +1151,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+     topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1359,7 +1345,7 @@
       });
     },
     affiliation() {
-           this.topqueryParams.managementDoctorCode= store.getters.hisUserId;
+      this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
 
       this.getList(1);
     },
@@ -1762,9 +1748,9 @@
     Seedetails(row) {
       let type = "";
       console.log(row, "rwo");
-        if (row.type == 1) {
-          type = 1;
-        }
+      if (row.type == 1) {
+        type = 1;
+      }
       this.$router.push({
         path: "/followvisit/record/detailpage/",
         query: {
diff --git a/src/views/followvisit/operation/index.vue b/src/views/followvisit/operation/index.vue
new file mode 100644
index 0000000..759b943
--- /dev/null
+++ b/src/views/followvisit/operation/index.vue
@@ -0,0 +1,2321 @@
+<template>
+  <div class="app-container">
+    <div class="leftvlue" style="margin-bottom: 20px">
+      <el-row :gutter="10">
+        <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
+          <el-card
+            shadow="hover"
+            :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
+          >
+            <div style="padding: 8px" @click="$router.push(item.router)">
+              <span>{{ item.name }}</span>
+              <div
+                style="
+                  text-align: center;
+                  font-size: 18px;
+                  margin-top: 10px;
+                  font-weight: 600;
+                "
+              >
+                {{ item.value ? item.value : 0 }}
+              </div>
+            </div>
+          </el-card>
+        </el-col>
+        <el-col :span="2.5">
+          <div class="ysfleftvlue">
+            <el-card shadow="hover">
+              <div style="padding: 8px">
+                <span>琛ㄥ崟宸插彂閫�</span>
+                <div
+                  style="
+                    text-align: center;
+                    font-size: 18px;
+                    margin-top: 10px;
+                    font-weight: 600;
+                  "
+                >
+                  {{ yfsvalue }}
+                </div>
+              </div>
+            </el-card>
+          </div>
+        </el-col>
+        <el-col :span="2.5">
+          <div class="errleftvlue">
+            <el-card shadow="hover">
+              <div style="padding: 8px">
+                <span>寮傚父</span>
+                <div
+                  style="
+                    text-align: center;
+                    font-size: 18px;
+                    margin-top: 10px;
+                    font-weight: 600;
+                  "
+                >
+                  {{ ycvalue }}
+                </div>
+              </div>
+            </el-card>
+          </div>
+        </el-col>
+        <el-col :span="2.5" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+          <div class="jgleftvlue">
+            <el-card shadow="hover ">
+              <div style="padding: 8px">
+                <span>璀﹀憡</span>
+                <div
+                  style="
+                    text-align: center;
+                    font-size: 18px;
+                    margin-top: 10px;
+                    font-weight: 600;
+                  "
+                >
+                  {{ jgvalue }}
+                </div>
+              </div>
+            </el-card>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+    <el-row :gutter="20">
+      <!--鐢ㄦ埛鏁版嵁-->
+      <el-form
+        :model="topqueryParams"
+        ref="queryForm"
+        size="small"
+        :inline="true"
+        v-show="showSearch"
+        label-width="98px"
+      >
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            v-model="topqueryParams.taskName"
+            placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鎵嬫湳瀹屾垚鏃堕棿">
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="搴旈殢璁挎椂闂�">
+          <el-date-picker
+            v-model="dateRangefs"
+            style="width: 240px"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="鎮h�呭鍚�" prop="sendname">
+          <el-input
+            v-model="topqueryParams.sendname"
+            placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+          <el-input
+            v-model="topqueryParams.leavediagname"
+            placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚浜哄憳" prop="updateBy">
+          <el-input
+            v-model="topqueryParams.updateBy"
+            placeholder="璇疯緭鍏ラ殢璁夸汉鍛�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="涓绘不鍖荤敓" prop="drname">
+          <el-input
+            v-model="topqueryParams.drname"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="缁忕鍖荤敓" prop="managementDoctor">
+          <el-input
+            v-model="topqueryParams.managementDoctor"
+            placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+          <el-select v-model="endOut" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in endOuts"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎮h�呰寖鍥�" prop="status">
+          <el-cascader
+            v-model="topqueryParams.scopetype"
+            placeholder="榛樿鍏ㄩ儴"
+            :options="sourcetype"
+            :props="{ expandTrigger: 'hover' }"
+            @change="handleChange"
+          ></el-cascader>
+        </el-form-item>
+
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in topicoptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎺掑簭鏂瑰紡" prop="status">
+          <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="item in topicoptionssort"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            size="medium"
+            @click="handleQuery(1)"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+            >閲嶇疆</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <el-divider></el-divider>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-upload2"
+                size="medium"
+                @click="handleExport"
+                >瀵煎嚭</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            icon="el-icon-plus"
+            size="medium"
+            @click="handleAdd"
+            >鏂板</el-button
+          >
+        </el-col>
+
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="warning"
+                plain
+                icon="el-icon-warning-outline"
+                size="medium"
+                @click="toleadExport(1)"
+                >鎵ц澶辫触</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="danger"
+                plain
+                icon="el-icon-warning"
+                size="medium"
+                @click="toleadExport(2)"
+                >缁撴灉寮傚父</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+        <el-col :span="1.5">
+          <div class="documentf">
+            <div class="document">
+              <el-button
+                type="success"
+                plain
+                size="medium"
+                @click="buidegetTasklist()"
+                >寰呭姙鏈嶅姟</el-button
+              >
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+      <el-table
+        v-loading="loading"
+        ref="userform"
+        :data="userList"
+        :row-class-name="tableRowClassName"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="50" align="center" />
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          fixed
+          width="150"
+          show-overflow-tooltip
+          align="center"
+          key="taskName"
+          prop="taskName"
+        />
+        <!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> -->
+        <el-table-column
+          label="濮撳悕"
+          width="100"
+          align="center"
+          key="sendname"
+          prop="sendname"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                gettoken360(
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
+              "
+              ><span class="button-textsc">{{
+                scope.row.sendname
+              }}</span></el-button
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="璇婃柇鍚嶇О"
+          align="center"
+          key="leavediagname"
+          prop="leavediagname"
+          width="120"
+          :show-overflow-tooltip="true"
+        >
+        </el-table-column>
+            <!-- <el-table-column
+          label="浠诲姟鐘舵��"
+          align="center"
+          key="sendstate"
+          prop="sendstate"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstate == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >琛ㄥ崟宸查鍙�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 3">
+                <el-tag type="success" :disable-transitions="false"
+                  >琛ㄥ崟宸插彂閫�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 4">
+                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+              </div>
+              <div v-if="scope.row.sendstate == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鍙戦�佸け璐�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 6">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstate == 7">
+                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column> -->
+        <el-table-column
+          label="闅忚鐘舵��"
+          align="center"
+          key="sendstateView"
+          prop="sendstateView"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+        <!-- <el-table-column
+          label="浠诲姟寮傚父璇存槑"
+          width="120"
+          align="center"
+          key="remark"
+          prop="remark" -->
+        />
+
+        <el-table-column
+          label="澶勭悊鎰忚"
+          align="center"
+          key="suggest"
+          prop="suggest"
+          width="120"
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_suggest"
+              :value="scope.row.suggest"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="浠诲姟鎵ц鏂瑰紡"
+          align="center"
+          key="preachform"
+          prop="preachform"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+          <template slot-scope="scope">
+            <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="闅忚瀹屾垚鏃堕棿"
+          sortable
+          align="center"
+          prop="finishtime"
+          width="160"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.finishtime) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍑洪櫌鏃ユ湡"
+          width="200"
+          align="center"
+          key="endtime"
+          prop="endtime"
+        >
+          <template slot-scope="scope">
+            <span>{{ formatTime(scope.row.endtime) }}</span>
+          </template></el-table-column
+        >
+        <el-table-column
+          label="搴旈殢璁挎棩鏈�"
+          width="200"
+          align="center"
+          key="visitTime"
+          prop="visitTime"
+        >
+          <template slot-scope="scope">
+            <span>{{ formatTime(scope.row.visitTime) }}</span>
+          </template></el-table-column
+        >
+        <!-- 鍘� -->
+        <el-table-column
+          label="涓绘不鍖荤敓"
+          width="120"
+          align="center"
+          key="drname"
+          prop="drname"
+        />
+        <el-table-column
+          v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+          label="闅忚浜哄憳"
+          align="center"
+          key="updateBy"
+          prop="updateBy"
+          width="120"
+        />
+        <el-table-column
+          v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+          label="缁忕鍖荤敓"
+          align="center"
+          key="managementDoctor"
+          prop="managementDoctor"
+          width="120"
+        />
+        <el-table-column
+          label="鍑洪櫌澶╂暟"
+          width="120"
+          align="center"
+          key="endDay"
+          prop="endDay"
+        >
+          <template slot-scope="scope">
+            <span>{{ scope.row.endDay ? scope.row.endDay + "澶�" : "" }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="韬唤璇佸彿鐮�"
+          width="200"
+          align="center"
+          key="sfzh"
+          prop="sfzh"
+        />
+        <el-table-column
+          label="鑱旂郴鐢佃瘽"
+          width="200"
+          align="center"
+          key="phone"
+          prop="phone"
+        />
+        <el-table-column
+          label="璐d换鎶ゅ+"
+          width="120"
+          align="center"
+          key="nurseName"
+          prop="nurseName"
+        />
+
+        <!-- <el-table-column
+          label="鐥呭巻鍙�"
+          align="center"
+          sortable
+          key="medicalRecordNo"
+          prop="medicalRecordNo"
+          width="120"
+        /> -->
+
+        <!-- <el-table-column label="骞撮緞" align="center" key="age" prop="age" /> -->
+        <!-- <el-table-column label="鎬у埆"width="100" align="center" key="sex" prop="sex" /> -->
+        <!-- <el-table-column label="搴婂彿" align="center" key="badNo" prop="badNo" /> -->
+        <el-table-column
+          label="绉戝"
+          align="center"
+          key="deptname"
+          prop="deptname"
+          width="120"
+        >
+        </el-table-column>
+        <el-table-column
+          label="鐥呭尯"
+          align="center"
+          key="leavehospitaldistrictname"
+          prop="leavehospitaldistrictname"
+          width="120"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="鍑洪櫌闅忚妯℃澘鍚嶇О"
+          align="center"
+          key="templatename"
+          prop="templatename"
+          width="200"
+        />
+
+        <!-- <el-table-column
+          label="浠诲姟鍙戦�佹祦绋�"
+          align="center"
+          key="serviceSubtaskRecordList"
+          prop="serviceSubtaskRecordList"
+          width="160"
+          :show-overflow-tooltip="true"
+        >
+          <template slot-scope="scope">
+            <span v-for="item in scope.row.serviceSubtaskRecordList"
+              >{{ item.remark }}銆�
+            </span>
+          </template>
+        </el-table-column> -->
+        <el-table-column
+          label="浠诲姟缁撴灉璇存槑"
+          width="220"
+          align="center"
+          key="remark"
+          prop="remark"
+        >
+          <template slot-scope="scope" v-if="scope.row.remark">
+            <el-tooltip
+              :content="scope.row.remark"
+              placement="top"
+              effect="dark"
+            >
+              <el-tag
+                type="warning"
+                v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
+                >{{ scope.row.remark }}</el-tag
+              >
+              <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎿嶄綔"
+          align="center"
+          fixed="right"
+          width="300"
+          class-name="small-padding fixed-width"
+        >
+          <template slot-scope="scope">
+            <!-- <el-tooltip
+              class="item"
+              effect="dark"
+              content="鍐嶆闅忚"
+              placement="top"
+            >
+              <el-button
+                size="medium"
+                type="text"
+                v-if="scope.row.isVisitAgain!=2"
+                @click="followupvisit(scope.row)"
+                ><span class="button-bb"
+                  ><i class="el-icon-s-promotion"></i>鍐嶆闅忚</span
+                ></el-button
+              >
+            </el-tooltip>
+            <el-tooltip
+              v-if="scope.row.sendstate == 1 || scope.row.sendstate == 2"
+              class="item"
+              effect="dark"
+              content="鏆傚仠鏈嶅姟"
+              placement="top"
+            >
+              <el-button
+                size="medium"
+                type="text"
+                @click="handlestop(scope.row)"
+                v-hasPermi="['system:user:edit']"
+                ><span class="button-sc"
+                  ><i class="el-icon-remove-outline"></i>鏆傚仠鏈嶅姟</span
+                ></el-button
+              >
+            </el-tooltip> -->
+            <el-button size="medium" type="text" @click="Seedetails(scope.row)"
+              ><span class="button-zx"
+                ><i class="el-icon-s-order"></i>鏌ョ湅璇︽儏</span
+              ></el-button
+            >
+            <el-button
+              size="medium"
+              type="text"
+              @click="handleUpdate(scope.row)"
+              ><span class="button-textxga"
+                ><i class="el-icon-edit"></i>鎮h�呰繃婊�</span
+              ></el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="topqueryParams.pageNum"
+        :limit.sync="topqueryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-row>
+    <!-- 婊℃剰搴﹀脊妗� -->
+    <el-dialog
+      title="闅忚婊℃剰搴﹁瘎鍒�"
+      :visible.sync="scoreDialogVisible"
+      width="80%"
+      :close-on-click-modal="false"
+    >
+      <el-table :data="selectedRows" border style="width: 100%">
+        <el-table-column
+          label="濮撳悕"
+          width="100"
+          align="center"
+          prop="sendname"
+        />
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          width="180"
+          align="center"
+          prop="taskName"
+        />
+        <!-- 鏂板璇勫垎鍒� -->
+        <el-table-column
+          label="鐪熷疄鎬�(20)"
+          align="center"
+          key="authenticity"
+          prop="authenticity"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.authenticity"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="涓�鍛ㄥ唴瀹屾垚(20)"
+          align="center"
+          key="weekFinish"
+          prop="weekFinish"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.weekFinish"
+              :min="0"
+              :max="20"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瑙勮寖鎬�(10)"
+          align="center"
+          key="standard"
+          prop="standard"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.standard"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍙婃椂鎬�(10)"
+          align="center"
+          key="timeliness"
+          prop="timeliness"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.timeliness"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="瀹f暀鎯呭喌(10)"
+          align="center"
+          key="library"
+          prop="library"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.library"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鐜婊℃剰搴�(10)"
+          align="center"
+          key="environment"
+          prop="environment"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.environment"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鍖荤敓婊℃剰搴�(10)"
+          align="center"
+          key="doctorSatisfaction"
+          prop="doctorSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.doctorSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎶ゅ+婊℃剰搴�(10)"
+          align="center"
+          key="nurseSatisfaction"
+          prop="nurseSatisfaction"
+          width="150"
+        >
+          <template slot-scope="scope">
+            <el-input-number
+              v-model="scope.row.nurseSatisfaction"
+              :min="0"
+              :max="10"
+              :step="1"
+              size="small"
+            />
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鎬诲垎"
+          align="center"
+          key="total"
+          prop="total"
+          fixed="right"
+        >
+          <template slot-scope="scope">
+            <span>{{ calculateTotal(scope.row) }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="scoreDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="saveScores">淇濆瓨</el-button>
+      </div>
+    </el-dialog>
+    <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
+    <el-dialog
+      :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+      :visible.sync="Labelchange"
+      width="900px"
+    >
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="濮撳悕" width="100" prop="name">
+              <el-input
+                v-model="form.name"
+                placeholder="璇疯緭鍏ュ鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鎬у埆" width="100" prop="sex">
+              <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+                <el-option
+                  v-for="dict in sextype"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="骞撮緞" prop="age">
+              <el-input
+                v-model="form.age"
+                placeholder="璇疯緭鍏ュ勾榫�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname">
+              <el-input
+                v-model="form.filterDrname"
+                placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+                maxlength="30"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="杩囨护鍘熷洜">
+              <el-input
+                v-model="form.notrequiredreason"
+                type="textarea"
+                placeholder="璇疯緭鍏ヨ繃婊ゅ師鍥�"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+    <!-- 淇敼鍙戦�佹椂闂村璇濇 -->
+    <el-dialog
+      title="鍙戦�佹椂闂磋缃�"
+      :visible.sync="modificationVisible"
+      width="45%"
+    >
+      <div style="margin-bottom: 20px; color: red">
+        缁熶竴淇敼褰撳ぉ鏈彂閫佺殑浠诲姟鏃堕棿
+      </div>
+
+      <el-form
+        :model="ruleForm"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="120px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="鍙戦�佹棩鏈�">
+          <el-date-picker
+            v-model="ruleForm.value1"
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+
+        <el-form-item label="鏃堕棿娈�" prop="type">
+          <el-checkbox-group v-model="ruleForm.type">
+            <el-checkbox label="涓婂崍" name="type"></el-checkbox>
+            <el-checkbox label="涓嬪崍" name="type"></el-checkbox>
+            <el-checkbox label="鏅氫笂" name="type"></el-checkbox>
+          </el-checkbox-group>
+        </el-form-item>
+        <el-form-item label="涓婂崍鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value2"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="涓嬪崍鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value3"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="鏅氫笂鏃堕棿鍖洪棿" required>
+          <el-time-picker
+            is-range
+            v-model="ruleForm.value4"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            placeholder="閫夋嫨鏃堕棿鑼冨洿"
+          >
+          </el-time-picker>
+        </el-form-item>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="modificationVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="modificationVisible = false"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- 鍐嶆闅忚 -->
+    <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+      <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.taskName"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鎮h�呭悕绉�">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.sendname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="骞撮緞">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.age"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="绉戝">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.deptname"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="鐥呭尯">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.leavehospitaldistrictname"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="闅忚鏂瑰紡" prop="resource">
+          <el-radio-group v-model="zcform.resource">
+            <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
+            <el-radio label="2">闅忚涓績闅忚</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <!-- <el-form-item label="鍗冲埢鍙戦��">
+          <el-switch v-model="zcform.delivery"></el-switch>
+        </el-form-item> -->
+        <el-form-item label="鎵嬫湳瀹屾垚鏃堕棿">
+          <el-input
+            style="width: 400px"
+            disabled
+            v-model="zcform.endtime"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="闅忚瀹屾垚鏃堕棿" prop="date1">
+          <el-date-picker
+            type="date"
+            placeholder="閫夋嫨鏃ユ湡"
+            v-model="zcform.date1"
+            style="width: 100%"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="闅忚璁板綍">
+          <el-input type="textarea" v-model="zcform.remark"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  delUser,
+  addUser,
+  updateUser,
+  resetUserPwd,
+  changeUserStatus,
+} from "@/api/system/user";
+import {
+  getTaskservelist,
+  buidegetTasklist,
+  addserviceSubtask,
+  query360PatInfo,
+  addsatisfaction,
+  query360PatInfonh,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+import store from "@/store";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Discharge",
+  dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
+  components: { Treeselect },
+  data() {
+    return {
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      dialogFormVisible: false,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+      userList: null,
+      // 寮瑰嚭灞傛爣棰�
+      title: "鏂板褰卞儚闅忚",
+      // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+      addalteropen: false,
+      // 淇敼鍙戦�佹椂闂村璇濇
+      modificationVisible: false,
+      // 閮ㄩ棬鍚嶇О
+      deptName: undefined,
+      // 榛樿瀵嗙爜
+      initPassword: undefined,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      dateRangefs: [],
+      // 宀椾綅閫夐」
+      postOptions: [],
+      ruleForm: {
+        type: [],
+      },
+      zcform: {},
+      dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+      inputVisible: false,
+      Labelchange: false,
+      ycvalue: "",
+      jgvalue: "",
+      yfsvalue: "",
+      inputValue: "",
+      preachform: "",
+      previewVisible: false, //褰卞儚闅忚棰勮寮规
+      radio: "",
+      radios: [],
+      previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
+      total: 0, // 鎬绘潯鏁�
+      // 婊℃剰搴﹁皟鏌ユ暟鎹�
+      scoreDialogVisible: false,
+      selectedRows: [],
+
+      value: [],
+      list: [],
+
+      sourcetype: [
+        {
+          value: 1,
+          label: "绉戝",
+          children: [],
+        },
+        {
+          value: 2,
+          label: "鐥呭尯",
+          children: [],
+        },
+        {
+          value: 3,
+          label: "鍏ㄩ儴",
+        },
+      ],
+      loading: false,
+      cardlist: [
+        {
+          name: "鎵嬫湳鎬婚噺",
+          value: 0,
+        },
+        // {
+        //   name: "鎮h�呰繃婊�",
+        //   value: 0,
+        // },
+        {
+          name: "闇�闅忚",
+          value: 0,
+        },
+        {
+          name: "鍙戦�佸け璐�",
+          value: 0,
+        },
+        {
+          name: "寰呴殢璁�",
+          value: 0,
+        },
+        // {
+        //   name: "宸插彂閫�",
+        //   value: 0,
+        // },
+
+        // {
+        //   name: "琛ㄥ崟宸插彂閫�",
+        //   value: 0,
+        // },
+      ],
+      zcrules: {
+        date1: [
+          { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" },
+        ],
+        resource: [
+          { required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" },
+        ],
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {
+        phonenumber: "",
+        totagid: "",
+        types: "",
+        nickName: "",
+        qystatus: "",
+        btstatus: "",
+      },
+      // endOut: 1,
+      endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭)    1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+      endOuts: [
+        {
+          value: 0,
+          label: "鎴鑷冲綋鏃ユ湇鍔�",
+        },
+        {
+          value: 1,
+          label: "鍏ㄩ儴鏈嶅姟",
+        },
+      ],
+      topicoptionssort: [
+        {
+          value: 0,
+          label: "鎵嬫湳瀹屾垚鏃堕棿(姝e簭)",
+        },
+        {
+          value: 1,
+          label: "鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭)",
+        },
+        {
+          value: 2,
+          label: "鍙戦�佹椂闂�(姝e簭)",
+        },
+        {
+          value: 3,
+          label: "鍙戦�佹椂闂�(鍊掑簭)",
+        },
+        {
+          value: 7,
+          label: "搴旈殢璁挎棩鏈�(姝e簭)",
+        },
+        {
+          value: 8,
+          label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+        },
+        {
+          value: 9,
+          label: "鎸夌収鎮h�呮帓搴�",
+        },
+      ],
+      // 鏌ヨ鍙傛暟
+      topqueryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView:
+          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
+        sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭)    1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+        serviceType: 19,
+        searchscope: 3,
+        visitCount: 1,
+        scopetype: [],
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      },
+      orgname: "",
+      propss: { multiple: true },
+      options: [],
+
+      topicoptions: [
+        {
+          value: null,
+          label: "鍏ㄩ儴",
+        },
+        {
+          value: 1,
+          label: "寰呴殢璁�",
+        },
+        {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
+          value: 3,
+          label: "鏈畬鎴�",
+        },
+        {
+          value: 4,
+          label: "宸插畬鎴�",
+        },
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
+        },
+      ],
+      sextype: [
+        {
+          value: 1,
+          label: "鐢�",
+        },
+        {
+          value: 2,
+          label: "濂�",
+        },
+      ],
+      topicoptionsyj: [
+        {
+          value: 1,
+          label: "寮傚父",
+        },
+        {
+          value: 2,
+          label: "璀﹀憡",
+        },
+        {
+          value: 0,
+          label: "姝e父",
+        },
+      ],
+      url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
+      postData: {
+        XiaoXiTou: {
+          FaSongFCSJC: "ZJHES",
+          FaSongJGID: localStorage.getItem("orgid"),
+          FaSongJGMC: localStorage.getItem("orgname"),
+          FaSongSJ: "2025-01-09聽17:29:36",
+          FaSongXTJC: "SUIFANGXT",
+          FaSongXTMC: "闅忚绯荤粺",
+          XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171",
+          XiaoXiLX: "SC_LC_360STCX",
+          XiaoXiMC: "360聽瑙嗗浘鏌ヨ",
+          ZuHuID: localStorage.getItem("ZuHuID"),
+          ZuHuMC: localStorage.getItem("orgname"),
+        },
+        YeWuXX: {
+          BingRenXX: {
+            ZhengJianHM: "",
+            ZhengJianLXDM: "01",
+            ZhengJianLXMC: "灞呮皯韬唤璇�",
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+          },
+          YongHuXX: {
+            XiTongID: "SUIFANGXT",
+            XiTongMC: "闅忚绯荤粺",
+            YongHuID: localStorage.getItem("YongHuID"),
+            YongHuXM: localStorage.getItem("YongHuXM"),
+            ZuZhiJGID: localStorage.getItem("orgid"),
+            ZuZhiJGMC: localStorage.getItem("orgname"),
+            idp: "lyra",
+          },
+        },
+      },
+      amendtag: false,
+      errtype: "",
+      leavehospitaldistrictcode: "",
+      serviceState: [],
+      checkboxlist: [],
+      // 琛ㄥ崟鏍¢獙
+      rules: {},
+    };
+  },
+  watch: {
+    // 鐩戝惉璺敱鍙傛暟鍙樺寲
+    "$route.query": {
+      handler(newQuery, oldQuery) {
+        if (newQuery.errtype !== oldQuery.errtype) {
+          console.log(22);
+
+          this.loadData(); // 閲嶆柊鍔犺浇鏁版嵁
+        }
+      },
+      immediate: true,
+    },
+  },
+  created() {
+    this.serviceState = store.getters.serviceState;
+    this.checkboxlist = store.getters.checkboxlist;
+    this.orgname = localStorage.getItem("orgname");
+    this.errtype = this.$route.query.errtype;
+
+    this.leavehospitaldistrictcode =
+      this.$route.query.leavehospitaldistrictcode;
+    this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+      return {
+        label: dept.deptName,
+        value: dept.deptCode,
+      };
+    });
+    this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+      return {
+        label: dept.districtName,
+        value: dept.districtCode,
+      };
+    });
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+    this.getConfigKey("sys.user.initPassword").then((response) => {
+      this.initPassword = response.msg;
+    });
+  },
+  activated() {
+    this.errtype = this.$route.query.errtype;
+    if (this.errtype == 1) {
+      this.toleadExport(2);
+    } else if (this.errtype == 2) {
+      // 寰呴殢璁�
+      this.toleadExport(3);
+    } else if (this.errtype == 3) {
+      // 澶辫触
+      this.toleadExport(4);
+    } else if (this.errtype == 4) {
+      // 寮傚父
+      this.toleadExport(2);
+    } else if (this.errtype == 5) {
+      // 鍏ㄩ儴
+      this.toleadExport(5);
+    } else {
+      this.getList(1);
+    }
+  },
+  methods: {
+    /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+    getList(refresh) {
+      // 榛樿鍏ㄩ儴
+      if (this.topqueryParams.searchscope == 3) {
+        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      if (this.endOut == 0) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+      } else {
+        // this.topqueryParams.endSendDateTime = null;
+      }
+      // 鎺ュ彈寮傚父璺宠浆
+      if (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+      this.loading = true;
+      if (
+        this.topqueryParams.leavehospitaldistrictcodes[0] &&
+        this.topqueryParams.leaveldeptcodes[0]
+      ) {
+        this.topqueryParams.deptOrDistrict = 2;
+      } else {
+        this.topqueryParams.deptOrDistrict = 1;
+      }
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
+
+      getTaskservelist(this.topqueryParams).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        if (refresh) {
+          this.cardlist[0].value =
+            Number(response.rows[0].wzx) +
+            Number(response.rows[0].ysf) +
+            Number(response.rows[0].fssb);
+          // this.cardlist[1].value = response.rows[0].wzx;
+          this.cardlist[1].value = response.rows[0].ysf;
+          this.ycvalue = response.rows[0].yc;
+          this.jgvalue = response.rows[0].jg;
+          this.cardlist[2].value = response.rows[0].fssb;
+          this.cardlist[3].value = response.rows[0].dsf;
+          // this.cardlist[4].value = response.rows[0].yfs2;
+          this.yfsvalue = response.rows[0].yfs;
+        }
+        this.loading = false;
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            if (item.endtime) {
+              item.preachformson = item.preachform;
+              idArray = item.preachform.split(",");
+            }
+
+            item.preachform = idArray.map((value) => {
+              // 鏌ユ壘id瀵瑰簲鐨勫璞�
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+              return item ? item.label : null;
+            });
+          }
+        });
+        this.total = response.total;
+      });
+    },
+    loadData() {
+      this.errtype = this.$route.query.errtype;
+      if (this.errtype == 1) {
+        this.toleadExport(2);
+      } else if (this.errtype == 2) {
+        // 寰呴殢璁�
+        this.toleadExport(3);
+      } else if (this.errtype == 3) {
+        // 澶辫触
+        this.toleadExport(4);
+      } else if (this.errtype == 4) {
+        // 寮傚父
+        this.toleadExport(2);
+      } else if (this.errtype == 5) {
+        // 鍏ㄩ儴
+        this.toleadExport(5);
+      } else {
+        this.getList(1);
+      }
+    },
+    // 鏃堕棿
+    getEndOfDay() {
+      const date = new Date(); // 鍒涘缓涓�涓〃绀哄綋鍓嶆椂闂寸殑Date瀵硅薄
+      date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
+      return date;
+    },
+    formatDateToYYYYMMDDHHMMSS(date) {
+      const year = date.getFullYear();
+      const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
+      const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+      const hours = String(date.getHours()).padStart(2, "0");
+      const minutes = String(date.getMinutes()).padStart(2, "0");
+      const seconds = String(date.getSeconds()).padStart(2, "0");
+
+      return `${year}-${month}-${day}`;
+    },
+    affiliation() {
+      this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
+      this.getList(1);
+    },
+    onthatday() {
+      this.topqueryParams.startSendDateTime = this.getCurrentDate();
+      this.topqueryParams.endSendDateTime = this.getCurrentDate();
+      this.getList(1);
+    },
+    getCurrentDate() {
+      const now = new Date();
+      return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
+    },
+    buidegetTasklist(type) {
+      if (this.topqueryParams.searchscope == 3) {
+        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      // 鎺ュ彈寮傚父璺宠浆
+      if (this.errtype) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(
+          this.leavehospitaldistrictcode
+        );
+      }
+      let obj = {
+        pageNum: 1,
+        pageSize: 10,
+        leavehospitaldistrictcodes:
+          this.topqueryParams.leavehospitaldistrictcodes,
+        sendstates: [2, 3],
+        leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+      };
+      buidegetTasklist(obj).then((response) => {
+        this.userList = response.rows[0].serviceSubtaskList;
+        this.total = response.total;
+        this.cardlist[0].value =
+          Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+        this.cardlist[1].value = response.rows[0].wzx;
+        this.cardlist[2].value = response.rows[0].ysf;
+        this.ycvalue = response.rows[0].yc;
+        this.jgvalue = response.rows[0].jg;
+        this.cardlist[3].value = response.rows[0].fssb;
+        this.cardlist[4].value = response.rows[0].dsf;
+        // this.cardlist[5].value = response.rows[0].yfs2;
+        this.yfsvalue = response.rows[0].yfs;
+        this.loading = false;
+        this.userList.forEach((item) => {
+          let idArray = null;
+          if (item.endtime) {
+            item.endDay = this.daysBetween(item.endtime);
+          }
+
+          if (item.preachform) {
+            if (item.endtime) {
+              item.preachformson = item.preachform;
+              idArray = item.preachform.split(",");
+            }
+
+            item.preachform = idArray.map((value) => {
+              // 鏌ユ壘id瀵瑰簲鐨勫璞�
+              const item = this.checkboxlist.find(
+                (item) => item.value == value
+              );
+              // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+              return item ? item.label : null;
+            });
+          }
+        });
+        this.total = response.total;
+      });
+    },
+    // 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
+    Referencequestion(row) {
+      this.previewVisible = true;
+    },
+    // 娣诲姞寮规鎼滅储
+    remoteMethod(query) {
+      if (query !== "") {
+        this.loading = true;
+        setTimeout(() => {
+          this.loading = false;
+          this.options = this.list.filter((item) => {
+            return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+          });
+        }, 200);
+      } else {
+        this.options = [];
+      }
+    },
+    // 褰卞儚闅忚鐘舵�佷慨鏀�
+    handleStatusChange(row) {
+      let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+      this.$modal
+        .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+        .then(function () {
+          return changeUserStatus(row.userId, row.status);
+        })
+        .then(() => {
+          this.$modal.msgSuccess(text + "鎴愬姛");
+        })
+        .catch(function () {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+    },
+
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: [],
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery(refresh) {
+      if (this.topqueryParams.searchscope == 3) {
+        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.topqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      this.topqueryParams.pageNum = 1;
+      // 鍒ゆ柇鏄笉鏄伐浣滃彴蹇嵎鏌ヨ
+      if (this.errtype != 2) {
+        this.topqueryParams.startOutHospTime = this.dateRange[0];
+        this.topqueryParams.endOutHospTime = this.dateRange[1];
+        this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+        this.topqueryParams.endSendDateTime = this.dateRangefs[1];
+      }
+      this.getList(refresh);
+    },
+    // 鎮h�呰寖鍥村鐞�
+    handleChange(value) {
+      let type = value[0];
+      let code = value.slice(-1)[0];
+      this.topqueryParams.leavehospitaldistrictcodes = [];
+      this.topqueryParams.leaveldeptcodes = [];
+      if (type == 1) {
+        this.topqueryParams.leaveldeptcodes.push(code);
+        this.topqueryParams.leavehospitaldistrictcodes = [];
+        this.topqueryParams.searchscope = 1;
+      } else if (type == 2) {
+        this.topqueryParams.leavehospitaldistrictcodes.push(code);
+        this.topqueryParams.leaveldeptcodes = [];
+        this.topqueryParams.searchscope = 2;
+      } else {
+        this.topqueryParams.searchscope = 3;
+      }
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.dateRange = [];
+      this.dateRangefs = [];
+      this.topqueryParams = {
+        pageNum: 1,
+        pageSize: 10,
+        sendstateView: 1,
+        sort: 2, //0 鎵嬫湳瀹屾垚鏃堕棿(姝e簭)    1 鎵嬫湳瀹屾垚鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
+        serviceType: 19,
+        searchscope: 3,
+        visitCount: 1,
+        scopetype: [],
+        leaveldeptcodes: [],
+        leavehospitaldistrictcodes: [],
+      };
+      this.handleQuery(1);
+    },
+    handleSelectionChange(rows) {
+      this.selectedRows = rows.map((row) => {
+        // 鍒濆鍖栬瘎鍒嗗瓧娈�
+        return {
+          ...row,
+          authenticity: row.authenticity || 0,
+          weekFinish: row.weekFinish || 0,
+          standard: row.standard || 0,
+          timeliness: row.timeliness || 0,
+          library: row.library || 0,
+          environment: row.environment || 0,
+          doctorSatisfaction: row.doctorSatisfaction || 0,
+          nurseSatisfaction: row.nurseSatisfaction || 0,
+        };
+      });
+
+      if (this.selectedRows.length > 0) {
+        this.multiple = false;
+      } else {
+        this.multiple = true;
+      }
+    },
+
+    // 璁$畻鎬诲垎
+    calculateTotal(row) {
+      return (
+        (row.authenticity || 0) +
+        (row.weekFinish || 0) +
+        (row.standard || 0) +
+        (row.timeliness || 0) +
+        (row.library || 0) +
+        (row.environment || 0) +
+        (row.doctorSatisfaction || 0) +
+        (row.nurseSatisfaction || 0)
+      );
+    },
+
+    // 淇濆瓨璇勫垎
+    saveScores() {
+      this.selectedRows.forEach((item) => {
+        item.createBy = null;
+        item.patName = item.sendname;
+        item.hospitaldistrictname = item.leavehospitaldistrictname;
+      });
+      addsatisfaction(this.selectedRows).then((res) => {
+        if (res.code == 200) {
+          this.$message.success("璇勫垎淇濆瓨鎴愬姛");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        } else {
+          this.$modal.msgWarning("璇勫垎淇濆瓨澶辫触");
+          this.scoreDialogVisible = false;
+          this.selectedRows = [];
+          this.$refs.userform.clearSelection();
+        }
+      });
+      // 杩欓噷鍙互娣诲姞淇濆瓨閫昏緫锛屽璋冪敤API淇濆瓨璇勫垎
+    },
+    //鍒犻櫎閫夐」
+    handleClose(tag) {
+      this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+    },
+    //瑙﹀彂鏂板杈撳叆
+    showInput() {
+      this.inputVisible = true;
+      this.$nextTick((_) => {
+        this.$refs.saveTagInput.$refs.input.focus();
+      });
+    },
+    //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+    handleInputConfirm() {
+      let inputValue = this.inputValue;
+      if (inputValue) {
+        this.dynamicTags.push(inputValue);
+      }
+      this.inputVisible = false;
+      this.inputValue = "";
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.$router.push({
+        path: "/followvisit/QuestionnaireTask",
+        query: {
+          type: 2,
+          serviceType: 19,
+        },
+      });
+    },
+    //鎮h��360璺宠浆
+    gettoken360(sfzh, drcode, drname, id) {
+      const orgname = localStorage.getItem("orgname");
+      if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+        query360PatInfonh(id).then((res) => {
+          if (res.data) {
+            window.open(res.data, "_blank");
+          } else {
+            this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+          }
+        });
+        return;
+      } else if (
+        orgname == "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯" ||
+        orgname == "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯"
+      ) {
+        let url = `http://192.200.81.189:9100/blj/view?BINGRENID=${id}&YONGHUID=DBA`;
+        window.open(url, "_blank");
+        return;
+      }
+
+      this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
+
+      query360PatInfo(this.postData).then((res) => {
+        if (res.data.url) {
+          window.open(res.data.url, "_blank");
+          // this.linkUrl = res.data.url;
+        } else {
+          this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+        }
+      });
+    },
+
+    /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+    handleResetPwd(row) {
+      this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        closeOnClickModal: false,
+        inputPattern: /^.{5,20}$/,
+        inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+      })
+        .then(({ value }) => {
+          resetUserPwd(row.userId, value).then((response) => {
+            this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+          });
+        })
+        .catch(() => {});
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.Labelchange = false;
+      this.reset();
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          this.form.isoperation = 2;
+          this.form.notrequiredFlag = 1;
+          alterpatient(this.form)
+            .then((response) => {
+              console.log(response);
+            })
+            .then(() => {
+              this.getList(1);
+              this.$modal.msgSuccess("鎮h�呰繃婊ゆ垚鍔�");
+            });
+
+          this.reset();
+          this.Labelchange = false;
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+        .then(function () {
+          return delUser(userIds);
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴鍋滄
+    AllStop() {
+      this.$modal
+        .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟锛�")
+        .then(function () {
+          return console.log("鍋滄鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgWarning("鍋滄鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 鍏ㄩ儴寮�濮�
+    AllStarted() {
+      this.$modal
+        .confirm("鏄惁寮�鍚叏閮ㄤ换鍔★紵")
+        .then(function () {
+          return console.log("寮�鍚垚鍔�");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("寮�鍚垚鍔�");
+        })
+        .catch(() => {});
+    },
+    // 浠诲姟閲嶇疆
+    TaskReset() {
+      this.$modal
+        .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔¢」锛�")
+        .then(function () {
+          return console.log("閫変腑鎴愬姛");
+        })
+        .then(() => {
+          this.getList(1);
+          this.$modal.msgSuccess("閲嶇疆鎴愬姛");
+        })
+        .catch(() => {});
+    },
+    // 璁剧疆鍙戦�佹椂闂�
+    Sendtimesetting() {
+      this.modificationVisible = true;
+    },
+    // 璺宠浆璇︽儏椤�
+    Seedetails(row) {
+      let type = "";
+      console.log(row, "rwo");
+      if (row.type == 1) {
+        type = 1;
+      }
+      this.$router.push({
+        path: "/followvisit/record/detailpage/",
+        query: {
+          taskid: row.taskid,
+          patid: row.patid,
+          id: row.id,
+          Voicetype: type,
+          visitCount: this.topqueryParams.visitCount,
+        },
+      });
+    },
+    // 鍐嶆闅忚
+    followupvisit(row) {
+      this.zcform = row;
+      this.zcform.endtime = this.formatTime(this.zcform.endtime);
+      this.dialogFormVisible = true;
+    },
+    onSubmit() {},
+    // 鏆傚仠鏈嶅姟
+    handlestop(row) {
+      let objson = row;
+      this.$modal
+        .confirm(
+          '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' +
+            row.taskName +
+            '鎮h�呭悕绉颁负"' +
+            row.sendname +
+            '"鐨勬暟鎹」锛�'
+        )
+        .then(() => {
+          getTaskservelist({
+            patid: row.patid,
+            taskid: row.taskid,
+          }).then((res) => {
+            if (res.code == 200) {
+              objson.sendstate = 4;
+              objson.remark = "鏈嶅姟鏆傚仠";
+              Editsingletaskson(objson).then((res) => {
+                if (res.code) {
+                  this.$modal.msgSuccess("璁板綍鎴愬姛");
+                  this.getList(1);
+                }
+              });
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    // 鎮h�呰繃婊よЕ鍙�
+    handleUpdate(row) {
+      particularpatient(row.patid).then((response) => {
+        this.form = response.data;
+        this.form.filterDrname = store.getters.nickName;
+      });
+      this.amendtag = true;
+      this.Labelchange = true;
+    },
+    // 渚挎嵎鎸夐挳
+    toleadExport(too) {
+      console.log(too, "too");
+
+      if (too == 1) {
+        this.topqueryParams.sendstate = 4;
+        this.topqueryParams.excep = null;
+      } else if (too == 2) {
+        this.topqueryParams.excep = 1;
+        this.topqueryParams.sendstate = null;
+      } else if (too == 3) {
+        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+          this.getEndOfDay()
+        );
+        console.log(1111, this.topqueryParams.endSendDateTime);
+
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 2;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 4) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = 5;
+        this.topqueryParams.scopetype = null;
+      } else if (too == 5) {
+        this.topqueryParams.excep = null;
+        this.topqueryParams.sendstate = null;
+        this.topqueryParams.scopetype = null;
+      }
+      this.handleQuery(1);
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      const originalPageNum = this.topqueryParams.pageNum;
+      const originalPageSize = this.topqueryParams.pageSize;
+      this.topqueryParams.pageNum = null;
+      this.topqueryParams.pageSize = null;
+      this.download(
+        "smartor/serviceSubtask/patItemExport",
+        {
+          ...this.topqueryParams,
+        },
+        `user_${new Date().getTime()}.xlsx`
+      ).finally(() => {
+        // 瀵煎嚭鍚庢仮澶嶅垎椤靛弬鏁�
+        this.topqueryParams.pageNum = originalPageNum;
+        this.topqueryParams.pageSize = originalPageSize;
+        this.getList();
+      });
+    },
+    // 寮傚父鍒楁覆鏌�
+    tableRowClassName({ row, rowIndex }) {
+      if (row.excep == 1) {
+        return "warning-row";
+      } else if (row.excep == 2) {
+        return "remind-row";
+      }
+      return "";
+    },
+    // 鍒涘缓鍐嶆闅忚鏈嶅姟
+    setupsubtask() {
+      this.$refs["zcform"].validate((valid) => {
+        if (valid) {
+          this.zcform.remark =
+            this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+          let form = structuredClone(this.zcform);
+          form.visitTime = this.formatTime(form.date1);
+          form.finishtime = "";
+          if (form.resource) {
+            if (form.resource == 2) {
+              form.serviceType = 13;
+            }
+          } else {
+            this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡");
+          }
+          form.id = null;
+          form.sendstate = 2;
+          form.preachform = form.preachformson;
+          form.longTask = 0;
+          addserviceSubtask(form).then((res) => {
+            if (res.code == 200) {
+              this.$modal.msgSuccess("鍒涘缓鎴愬姛");
+            } else {
+              this.$modal.msgError("鍒涘缓澶辫触");
+            }
+            this.dialogFormVisible = false;
+          });
+        }
+      });
+    },
+    getCurrentTime() {
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = String(now.getMonth() + 1).padStart(2, "0");
+      const day = String(now.getDate()).padStart(2, "0");
+      const hours = String(now.getHours()).padStart(2, "0");
+      const minutes = String(now.getMinutes()).padStart(2, "0");
+      const seconds = String(now.getSeconds()).padStart(2, "0");
+
+      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+  color: #ffffff;
+  background: #409eff;
+  border-color: #4fabe9;
+}
+
+.document {
+  // width: 100px;
+  height: 50px;
+}
+::v-deep.el-table .warning-row {
+  background: #eec4c4;
+}
+::v-deep.el-table .remind-row {
+  background: #fcf5aa;
+}
+
+.documentf {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.download {
+  text-align: center;
+
+  .el-upload__tip {
+    font-size: 23px;
+  }
+
+  .el-upload__text {
+    font-size: 23px;
+  }
+}
+
+.uploading {
+  margin-top: 20px;
+  margin: 20px;
+  padding: 30px;
+  background: #ffffff;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+
+.button-new-tag {
+  margin-left: 10px;
+  height: 32px;
+  line-height: 30px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+
+.input-new-tag {
+  width: 90px;
+  margin-left: 10px;
+  vertical-align: bottom;
+}
+
+.drexamine {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 30px;
+  background: #daeaf5;
+
+  img {
+    width: 100px;
+    height: 100px;
+  }
+}
+
+.qrcode-dialo {
+  // text-align: center;
+  //   display: flex;
+  margin: 20px;
+  padding: 30px;
+  background: #edf1f7;
+  border: 1px solid #dcdfe6;
+  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+    0 0 6px 0 rgba(0, 0, 0, 0.04);
+
+  .topic-dev {
+    margin-bottom: 25px;
+    font-size: 20px !important;
+
+    .dev-text {
+      margin-bottom: 10px;
+    }
+  }
+}
+::v-deep.leftvlue .el-card__body {
+  background: #f2f8ff;
+  color: #324a9b;
+}
+::v-deep.leftvlue .el-card__body:hover {
+  background: #3664d9;
+  color: #fff;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+  background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+  background: #f88d96;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.jgleftvlue .el-card__body:hover {
+  background: #f7f075;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+  background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+  background: #0abc54;
+  cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+.button-bb {
+  font-weight: 500;
+  background-color: #2ba05c;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-xq {
+  font-weight: 500;
+  background-color: #409eff;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-sc {
+  font-weight: 500;
+  background-color: #b3a21f;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+.button-zx {
+  background: #324a9b;
+  padding: 5px;
+  border-radius: 1px;
+  color: #ffffff;
+}
+
+::v-deep.el-radio-group {
+  span {
+    font-size: 24px;
+  }
+}
+.purple-button {
+  background-color: #7e22ce;
+  border-color: #7e22ce;
+  color: #fff;
+}
+
+.purple-button:hover,
+.purple-button:focus {
+  background-color: #9333ea;
+  border-color: #9333ea;
+}
+
+.purple-button:active {
+  background-color: #6b21a8;
+  border-color: #6b21a8;
+}
+.button-textxga {
+  color: #de7897;
+}
+.purple-button.is-disabled {
+  background-color: #d8b4fe;
+  border-color: #d8b4fe;
+  opacity: 1; /* 淇濇寔绂佺敤鐘舵�侀�忔槑搴� */
+}
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+//   span {
+//     font-size: 24px;
+//   }
+// }
+</style>
diff --git a/src/views/followvisit/outpatient/index.vue b/src/views/followvisit/outpatient/index.vue
index c1ec77d..5638b93 100644
--- a/src/views/followvisit/outpatient/index.vue
+++ b/src/views/followvisit/outpatient/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -228,39 +228,45 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
-            <div v-if="scope.row.sendstate == 1">
-              <el-tag type="primary" :disable-transitions="false"
-                >琛ㄥ崟宸查鍙�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 2">
-              <el-tag type="primary" :disable-transitions="false"
-                >寰呴殢璁�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 3">
-              <el-tag type="success" :disable-transitions="false"
-                >琛ㄥ崟宸插彂閫�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 4">
-              <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-            </div>
-            <div v-if="scope.row.sendstate == 5">
-              <el-tag type="danger" :disable-transitions="false"
-                >鍙戦�佸け璐�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 6">
-              <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag>
-            </div>
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
           </template>
         </el-table-column>
         <!-- <el-table-column
@@ -786,34 +792,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+     topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/followvisit/record/TracingInfo/index.vue b/src/views/followvisit/record/TracingInfo/index.vue
index 67a0074..c3dc4b5 100644
--- a/src/views/followvisit/record/TracingInfo/index.vue
+++ b/src/views/followvisit/record/TracingInfo/index.vue
@@ -273,7 +273,7 @@
                         v-if="item.scriptType == 1 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -326,7 +326,7 @@
                         v-if="item.scriptType == 2 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕澶氶�塢<span>{{
+                          {{ index + 1 }}. [澶氶�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -360,7 +360,7 @@
                         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>
@@ -396,7 +396,7 @@
                     >
                       <div v-if="item.targetvalue">
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.questiontext
                           }}</span>
                         </div>
@@ -429,7 +429,7 @@
 
                       <div class="scriptTopic-dev" :key="index" v-else>
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
                           }}</span>
                           <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -676,7 +676,7 @@
                 <el-input type="textarea" v-model="form.remark"></el-input>
               </el-form-item>
 
-              <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+              <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'||orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
                 <el-radio-group v-model="form.taskSituation">
                   <el-radio
                     v-for="city in cities"
diff --git a/src/views/followvisit/record/detailpage/index copy.vue b/src/views/followvisit/record/detailpage/index copy.vue
index ac60502..1424ea3 100644
--- a/src/views/followvisit/record/detailpage/index copy.vue
+++ b/src/views/followvisit/record/detailpage/index copy.vue
@@ -290,7 +290,7 @@
                         v-if="item.scriptType == 1 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -343,7 +343,7 @@
                         v-if="item.scriptType == 2 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕澶氶�塢<span>{{
+                          {{ index + 1 }}. [澶氶�塢<span>{{
                             item.scriptContent
                           }}</span>
                         </div>
@@ -377,7 +377,7 @@
                         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>
@@ -413,7 +413,7 @@
                     >
                       <div v-if="item.targetvalue">
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
+                          {{ index + 1 }}. [鍗曢�塢<span>{{
                             item.questiontext
                           }}</span>
                         </div>
@@ -446,7 +446,7 @@
 
                       <div class="scriptTopic-dev" :key="index" v-else>
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
                           }}</span>
                           <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 67bd809..e1f3830 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -95,43 +95,45 @@
           >
           </el-table-column>
           <el-table-column
-            prop="sendstate"
+            label="闅忚鐘舵��"
             align="center"
-            width="200"
-            label="浠诲姟鐘舵��"
+            key="sendstateView"
+            prop="sendstateView"
+            width="120"
           >
             <template slot-scope="scope">
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
-                <el-tag type="primary" :disable-transitions="false"
-                  >寰呴殢璁�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 6">
-                <el-tag type="success" :disable-transitions="false"
-                  >宸插畬鎴�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 7">
-                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
-              </div>
+              <el-tooltip
+                class="item"
+                effect="dark"
+                :content="scope.row.remark"
+                placement="top-start"
+              >
+                <div v-if="scope.row.sendstateView == 1">
+                  <el-tag type="primary" :disable-transitions="false"
+                    >寰呴殢璁�</el-tag
+                  >
+                </div>
+                <div v-if="scope.row.sendstateView == 2">
+                  <el-tag type="primary" :disable-transitions="false"
+                    >闅忚涓�</el-tag
+                  >
+                </div>
+                <div v-if="scope.row.sendstateView == 3">
+                  <el-tag type="warning" :disable-transitions="false"
+                    >鏈畬鎴�</el-tag
+                  >
+                </div>
+                <div v-if="scope.row.sendstateView == 4">
+                  <el-tag type="success" :disable-transitions="false"
+                    >宸插畬鎴�</el-tag
+                  >
+                </div>
+                <div v-if="scope.row.sendstateView == 5">
+                  <el-tag type="danger" :disable-transitions="false"
+                    >鏃犻渶闅忚</el-tag
+                  >
+                </div>
+              </el-tooltip>
             </template>
           </el-table-column>
           <el-table-column
@@ -263,7 +265,7 @@
       <div class="call-action">
         <div class="call-container">
           <template-selector
-          v-if="orgname=='鍗楀崕澶у闄勫睘绗竴鍖婚櫌'&&!Voicetype"
+            v-if="orgname == '鍗楀崕澶у闄勫睘绗竴鍖婚櫌' && !Voicetype"
             v-model="form.templateid"
             :templateName="form.templatename"
             :service-type="form.serviceType"
@@ -296,9 +298,14 @@
                         v-if="item.scriptType == 1 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
-                            item.scriptContent
-                          }}</span>
+                          {{ index + 1 }}. [鍗曢�塢
+
+                          <span> {{ item.scriptContent }}</span>
+                          <span style="margin-left: 20px"
+                            ><dict-tag
+                              :options="dict.type.dimensionality_type"
+                              :value="item.dimension"
+                          /></span>
                         </div>
                         <div class="dev-xx">
                           <el-radio-group v-model="item.scriptResult">
@@ -349,9 +356,14 @@
                         v-if="item.scriptType == 2 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕澶氶�塢<span>{{
+                          {{ index + 1 }}. [澶氶�塢<span>{{
                             item.scriptContent
                           }}</span>
+                          <span style="margin-left: 20px"
+                            ><dict-tag
+                              :options="dict.type.dimensionality_type"
+                              :value="item.dimension"
+                          /></span>
                         </div>
                         <div class="dev-xx">
                           <el-checkbox-group
@@ -383,9 +395,14 @@
                         v-if="item.scriptType == 4 && !item.astrict"
                       >
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.scriptContent
                           }}</span>
+                          <span style="margin-left: 20px"
+                            ><dict-tag
+                              :options="dict.type.dimensionality_type"
+                              :value="item.dimension"
+                          /></span>
                           <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
                         </div>
                         <div class="dev-xx" v-if="item.valueType == 3">
@@ -419,9 +436,8 @@
                     >
                       <div v-if="item.targetvalue">
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕鍗曢�塢<span>{{
-                            item.questiontext
-                          }}</span>
+                          {{ index + 1 }}. [鍗曢�塢
+                          <span>{{ item.questiontext }}</span>
                         </div>
                         <div class="dev-xx">
                           <el-radio-group
@@ -452,7 +468,7 @@
 
                       <div class="scriptTopic-dev" :key="index" v-else>
                         <div class="dev-text">
-                          {{ index + 1 }}銆乕闂瓟]<span>{{
+                          {{ index + 1 }}. [闂瓟]<span>{{
                             item.questiontext
                           }}</span>
                           <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
@@ -798,7 +814,13 @@
               </el-form-item>
 
               <!-- 闅忚鎯呭喌 -->
-              <el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
+              <el-form-item
+                label="闅忚鎯呭喌"
+                v-if="
+                  orgname == '涓芥按甯備腑鍖婚櫌' ||
+                  orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'
+                "
+              >
                 <el-radio-group v-model="form.taskSituation">
                   <el-radio
                     v-for="city in cities"
@@ -1246,6 +1268,7 @@
   },
   dicts: [
     "sys_normal_disable",
+    "dimensionality_type",
     "quickfollow_up",
     "sys_user_sex",
     "sys_yujing",
@@ -2326,6 +2349,8 @@
         if (res.code == 200) {
           objson = res.rows[0].serviceSubtaskList[0];
           objson.suggest = son;
+          objson.remark = this.form.remark;
+          objson.taskSituation = this.form.taskSituation;
           Editsingletaskson(objson).then((res) => {
             if (res.code) {
               this.$modal.msgSuccess("鏈嶅姟璁板綍鎴愬姛");
@@ -3100,6 +3125,7 @@
 
     .dev-text {
       margin-bottom: 10px;
+      display: flex;
     }
   }
 }
diff --git a/src/views/followvisit/record/index.vue b/src/views/followvisit/record/index.vue
index 21cd74a..7e7d92e 100644
--- a/src/views/followvisit/record/index.vue
+++ b/src/views/followvisit/record/index.vue
@@ -107,7 +107,7 @@
             @change="handleChange"
           ></el-cascader>
         </el-form-item>
-         <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+        <el-form-item label="鏃ユ湡闄愬埗" prop="status">
           <el-select v-model="endOut" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in endOuts"
@@ -124,8 +124,11 @@
             placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
           ></el-input>
         </el-form-item>
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select
+            v-model="topqueryParams.sendstateView"
+            placeholder="璇烽�夋嫨"
+          >
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -265,11 +268,11 @@
               type="text"
               @click="
                 gettoken360(
-                    scope.row.sfzh,
-                    scope.row.drcode,
-                    scope.row.drname,
-                    scope.row.patid
-                  )
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
               "
               ><span class="button-textsc">{{
                 scope.row.sendname
@@ -278,10 +281,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -291,32 +294,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 6">
-                <el-tag type="danger" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -768,7 +768,7 @@
   getTaskservelist,
   buidegetTasklist,
   query360PatInfo,
-  query360PatInfonh
+  query360PatInfonh,
 } from "@/api/AiCentre/index";
 import Treeselect from "@riophae/vue-treeselect";
 import store from "@/store";
@@ -864,7 +864,7 @@
       },
       value: [],
       list: [],
-  endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+      endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
       endOuts: [
         {
           value: 0,
@@ -960,31 +960,23 @@
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
@@ -1073,7 +1065,7 @@
         this.topqueryParams.leavehospitaldistrictcodes =
           store.getters.belongWards.map((obj) => obj.districtCode);
       }
-        if (this.endOut == 0) {
+      if (this.endOut == 0) {
         this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
           this.getEndOfDay()
         );
@@ -1179,7 +1171,7 @@
       date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
       return date;
     },
-     formatDateToYYYYMMDDHHMMSS(date) {
+    formatDateToYYYYMMDDHHMMSS(date) {
       const year = date.getFullYear();
       const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
       const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
@@ -1533,8 +1525,7 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-
-      getTaskservelist({
+          getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/tasklist/FollowupDetails/index.vue b/src/views/followvisit/tasklist/FollowupDetails/index.vue
index 3fcbb81..0b6c727 100644
--- a/src/views/followvisit/tasklist/FollowupDetails/index.vue
+++ b/src/views/followvisit/tasklist/FollowupDetails/index.vue
@@ -147,7 +147,7 @@
                       </el-select>
                     </el-form-item>
 
-                    <el-form-item label="浠诲姟鐘舵��" prop="status">
+                    <el-form-item label="鏈嶅姟鐘舵��" prop="status">
                       <el-select
                         v-model="topqueryParams.topic"
                         placeholder="璇烽�夋嫨"
@@ -659,7 +659,7 @@
                     </el-select>
                   </el-form-item>
 
-                  <el-form-item label="浠诲姟鐘舵��" prop="status">
+                  <el-form-item label="鏈嶅姟鐘舵��" prop="status">
                     <el-select
                       v-model="deliverytopqueryParams.topic"
                       placeholder="璇烽�夋嫨"
diff --git a/src/views/followvisit/tasklist/index.vue b/src/views/followvisit/tasklist/index.vue
index 9640683..3fb13fe 100644
--- a/src/views/followvisit/tasklist/index.vue
+++ b/src/views/followvisit/tasklist/index.vue
@@ -685,6 +685,7 @@
         this.tasktopic == 7 ||
         this.tasktopic == 5 ||
         this.tasktopic == 18 ||
+        this.tasktopic == 19 ||
         this.tasktopic == 6
       ) {
         if (!this.topqueryParams.type) this.topqueryParams.type = "2";
diff --git a/src/views/followvisit/technology/index.vue b/src/views/followvisit/technology/index.vue
index 841430c..0887b30 100644
--- a/src/views/followvisit/technology/index.vue
+++ b/src/views/followvisit/technology/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -238,10 +238,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -251,32 +251,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 6">
-                <el-tag type="danger" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -888,34 +885,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/followvisit/zbAgain/index.vue b/src/views/followvisit/zbAgain/index.vue
index 9a9d5b4..6a0d0c9 100644
--- a/src/views/followvisit/zbAgain/index.vue
+++ b/src/views/followvisit/zbAgain/index.vue
@@ -125,8 +125,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -294,10 +294,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -307,37 +307,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -996,7 +988,7 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 13,
         searchscope: 3,
@@ -1009,38 +1001,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1393,7 +1377,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 2,
+        sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 13,
         searchscope: 3,
diff --git a/src/views/followvisit/zysatisfaction/index.vue b/src/views/followvisit/zysatisfaction/index.vue
index 964ab9e..720b30b 100644
--- a/src/views/followvisit/zysatisfaction/index.vue
+++ b/src/views/followvisit/zysatisfaction/index.vue
@@ -132,8 +132,11 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select
+            v-model="topqueryParams.sendstateView"
+            placeholder="璇烽�夋嫨"
+          >
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -289,11 +292,11 @@
               type="text"
               @click="
                 gettoken360(
-                    scope.row.sfzh,
-                    scope.row.drcode,
-                    scope.row.drname,
-                    scope.row.patid
-                  )
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
               "
               ><span class="button-textsc">{{
                 scope.row.sendname
@@ -302,10 +305,10 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
@@ -315,37 +318,29 @@
               :content="scope.row.remark"
               placement="top-start"
             >
-              <div v-if="scope.row.sendstate == 1">
-                <el-tag type="primary" :disable-transitions="false"
-                  >琛ㄥ崟宸查鍙�</el-tag
-                >
-              </div>
-              <div v-if="scope.row.sendstate == 2">
+              <div v-if="scope.row.sendstateView == 1">
                 <el-tag type="primary" :disable-transitions="false"
                   >寰呴殢璁�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 3">
-                <el-tag type="success" :disable-transitions="false"
-                  >琛ㄥ崟宸插彂閫�</el-tag
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 4">
-                <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-              </div>
-              <div v-if="scope.row.sendstate == 5">
-                <el-tag type="danger" :disable-transitions="false"
-                  >鍙戦�佸け璐�</el-tag
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
                 >
               </div>
-            <div v-if="scope.row.sendstate == 6">
+              <div v-if="scope.row.sendstateView == 4">
                 <el-tag type="success" :disable-transitions="false"
                   >宸插畬鎴�</el-tag
                 >
               </div>
-              <div v-if="scope.row.sendstate == 7">
+              <div v-if="scope.row.sendstateView == 5">
                 <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
+                  >鏃犻渶闅忚</el-tag
                 >
               </div>
             </el-tooltip>
@@ -945,7 +940,7 @@
   addserviceSubtask,
   query360PatInfo,
   addsatisfaction,
-  query360PatInfonh
+  query360PatInfonh,
 } from "@/api/AiCentre/index";
 import { alterpatient, particularpatient } from "@/api/patient/homepage";
 import Treeselect from "@riophae/vue-treeselect";
@@ -1091,7 +1086,8 @@
         {
           value: 3,
           label: "鍙戦�佹椂闂�(鍊掑簭)",
-        },{
+        },
+        {
           value: 7,
           label: "搴旈殢璁挎棩鏈�(姝e簭)",
         },
@@ -1104,7 +1100,8 @@
       topqueryParams: {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 6,
+         sendstateView:
+          localStorage.getItem("orgname") == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯" ? null : 1,
         sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)  7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
         serviceType: 6,
         searchscope: 3,
@@ -1116,38 +1113,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
           value: null,
           label: "鍏ㄩ儴",
         },
         {
           value: 1,
-          label: "琛ㄥ崟宸查鍙�",
-        },
-        {
-          value: 2,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       sextype: [
@@ -1486,7 +1475,7 @@
       this.topqueryParams = {
         pageNum: 1,
         pageSize: 10,
-        sendstate: 6,
+          sendstateView: 1,
         sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭)
         serviceType: 6,
         searchscope: 3,
@@ -1721,9 +1710,9 @@
     Seedetails(row) {
       let type = "";
       console.log(row, "rwo");
-        if (row.type == 1) {
-          type = 1;
-        }
+      if (row.type == 1) {
+        type = 1;
+      }
       this.$router.push({
         path: "/followvisit/record/detailpage/",
         query: {
@@ -1749,8 +1738,7 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-
-      getTaskservelist({
+          getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/knowledge/education/examine/index.vue b/src/views/knowledge/education/examine/index.vue
index 4813531..e2ac871 100644
--- a/src/views/knowledge/education/examine/index.vue
+++ b/src/views/knowledge/education/examine/index.vue
@@ -62,7 +62,7 @@
             <!-- 鍗曢�� -->
             <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
               <div class="dev-text">
-                {{ item.idd }}銆乕鍗曢�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
+                {{ item.idd }}. [鍗曢�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
               </div>
               <div class="dev-xx">
                 <el-radio-group v-model="radio">
@@ -78,7 +78,7 @@
             <!-- 澶氶�� -->
             <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
               <div class="dev-text">
-                {{ item.idd }}銆乕澶氶�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
+                {{ item.idd }}. [澶氶�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
               </div>
               <div class="dev-xx">
                 <el-checkbox-group v-model="radios">
diff --git a/src/views/knowledge/questionbank/particulars/index.vue b/src/views/knowledge/questionbank/particulars/index.vue
index e98c06a..b44e2cf 100644
--- a/src/views/knowledge/questionbank/particulars/index.vue
+++ b/src/views/knowledge/questionbank/particulars/index.vue
@@ -136,18 +136,19 @@
                     </el-radio-group>
                   </el-form-item></el-col
                 >
-                <!-- <el-col :span="8">
-                  <el-form-item label="鏄惁蹇呭~" prop="ismandatory">
-                    <el-radio-group v-model="topicobj.ismandatory">
-                      <el-radio
-                      @change="$forceUpdate()"
-                        v-for="(item, index) in required"
-                        :label="item.value"
-                        >{{ item.label }}</el-radio
-                      >
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col> -->
+                <el-col :span="8"
+                  ><el-form-item label="闂缁村害" prop="suitway">
+                    <el-select
+                      v-model="topicobj.dimension"
+                      placeholder="璇烽�夋嫨"
+                    >
+                      <el-option
+                        v-for="dict in dict.type.dimensionality_type"
+                        :key="dict.value"
+                        :label="dict.label"
+                        :value="dict.value"
+                      ></el-option></el-select></el-form-item
+                ></el-col>
               </el-row>
               <el-row :gutter="10">
                 <el-col :span="8"
@@ -443,7 +444,7 @@
                       ><el-form-item label="閫夐」鍚嶇О">
                         <el-input
                           type="text"
-                          placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
+                          placeholder="璇疯緭鍏ラ�夐」鍚嶇О"
                           v-model="item.optioncontent"
                           show-word-limit
                         >
@@ -735,6 +736,8 @@
 import { getToken } from "@/utils/auth";
 
 export default {
+  dicts: ["dimensionality_type", "sys_patientfrom"],
+
   data() {
     return {
       topicobj: {
@@ -928,24 +931,26 @@
         this.drawer = true;
       });
     },
-        categoryidChange(id) {
+    categoryidChange(id) {
       // 閬嶅巻鎵�鏈夊垎缁勶紝鍦ㄦ瘡涓垎缁勭殑 svyLibScriptCategoryList 涓煡鎵�
       let targetOption = null;
       for (const group of this.classifylist) {
-        targetOption = group.svyLibScriptCategoryList.find(item => item.id == id);
+        targetOption = group.svyLibScriptCategoryList.find(
+          (item) => item.id == id
+        );
         if (targetOption) break;
       }
 
       if (targetOption) {
-        console.log('閫変腑鐨勯�夐」:', targetOption);
+        console.log("閫変腑鐨勯�夐」:", targetOption);
         // 娉ㄦ剰锛氳繖閲� targetOption.name 鏄�夐」鍚嶏紝濡傗�滀綇闄㈡弧鎰忓害璋冩煡鈥�
-        if (targetOption.name.includes('浣忛櫌')) {
+        if (targetOption.name.includes("浣忛櫌")) {
           this.topicobj.type = "zymyd";
-        } else if (targetOption.name.includes('闂ㄨ瘖')) {
+        } else if (targetOption.name.includes("闂ㄨ瘖")) {
           this.topicobj.type = "mzmyd";
-        } else if (targetOption.name.includes('鍑洪櫌')) {
+        } else if (targetOption.name.includes("鍑洪櫌")) {
           this.topicobj.type = "cymyd";
-        } else if (targetOption.name.includes('甯哥敤')) {
+        } else if (targetOption.name.includes("甯哥敤")) {
           this.topicobj.type = "cymyd"; // 娉ㄦ剰锛氳繖閲屽拰鈥滃嚭闄⑩�濋噸澶嶄簡锛岀‘璁ゆ槸鍚﹂渶鍖哄垎
         }
       }
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
index 0bcaf6d..3f34e32 100644
--- a/src/views/knowledge/questionnaire/compilequer/index.vue
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -117,27 +117,6 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <!-- <el-row :gutter="20">
-            <el-col :span="10">
-              <el-form-item label="闀挎湡浠诲姟" prop="longTemp">
-                <el-radio-group v-model="ruleForm.longTemp">
-                  <el-radio
-                    v-for="(item, index) in longtype"
-                    :label="item.value"
-                    >{{ item.label }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8" v-if="ruleForm.longTemp">
-              <el-form-item label="浠诲姟鍛ㄦ湡锛堝嚑澶╁悗锛�" prop="name">
-                <el-input
-                  v-model="ruleForm.sendDay"
-                  placeholder="榛樿5澶╁悗"
-                ></el-input>
-              </el-form-item>
-            </el-col>
-          </el-row> -->
 
           <el-row>
             <el-form-item prop="dynamicTags">
@@ -396,6 +375,20 @@
                     <dict-tag
                       :options="askvaluetype"
                       :value="scope.row.scriptType"
+                    />
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="缁村害"
+                  align="center"
+                  key="dimension"
+                  prop="dimension"
+                  :show-overflow-tooltip="true"
+                >
+                  <template slot-scope="scope">
+                    <dict-tag
+                      :options="dict.type.dimensionality_type"
+                      :value="scope.row.dimension"
                     />
                   </template>
                 </el-table-column>
@@ -673,43 +666,42 @@
                     </el-row>
                     <el-row>
                       <el-col :span="12">
- <el-form-item label="鍏宠仈鏈嶅姟">
-                        <div
-                          v-if="item.sendTaskname"
-                          class="service-tag-container"
-                        >
-                          <el-tag
-                            type="success"
-                            closable
-                            @close="removeService(item)"
-                            class="service-tag"
+                        <el-form-item label="鍏宠仈鏈嶅姟">
+                          <div
+                            v-if="item.sendTaskname"
+                            class="service-tag-container"
                           >
-                            <i class="el-icon-connection service-icon"></i>
-                            {{ item.sendTaskname }}
-                          </el-tag>
-                        </div>
-                        <div v-else class="service-add-btn">
-                          <el-button
-                            type="success"
-                            size="small"
-                            icon="el-icon-plus"
-                            @click="openServiceDialog(item)"
-                            class="add-service-btn"
-                          >
-                            閫夋嫨浠诲姟
-                          </el-button>
-                        </div>
-                      </el-form-item>
+                            <el-tag
+                              type="success"
+                              closable
+                              @close="removeService(item)"
+                              class="service-tag"
+                            >
+                              <i class="el-icon-connection service-icon"></i>
+                              {{ item.sendTaskname }}
+                            </el-tag>
+                          </div>
+                          <div v-else class="service-add-btn">
+                            <el-button
+                              type="success"
+                              size="small"
+                              icon="el-icon-plus"
+                              @click="openServiceDialog(item)"
+                              class="add-service-btn"
+                            >
+                              閫夋嫨浠诲姟
+                            </el-button>
+                          </div>
+                        </el-form-item>
                       </el-col>
-                         <el-col :span="12">
-                         <el-form-item label="榛樿閫夐」">
+                      <el-col :span="12">
+                        <el-form-item label="榛樿閫夐」">
                           <el-radio-group v-model="item.defaultValue">
                             <el-radio :label="2">鏄�</el-radio>
                             <el-radio :label="1">鍚�</el-radio>
                           </el-radio-group>
                         </el-form-item>
                       </el-col>
-
                     </el-row>
                     <el-row :gutter="10">
                       <el-col :span="11">
@@ -732,7 +724,7 @@
                               label="璀﹀憡"
                               :style="{ color: '#FFBA00' }"
                             >
-                              <span style="color: #FFBA00">鈼� 璀﹀憡</span>
+                              <span style="color: #ffba00">鈼� 璀﹀憡</span>
                             </el-option>
                             <el-option
                               :value="1"
@@ -798,6 +790,14 @@
                 </div>
                 <div v-else>
                   <div class="topicxq">
+                    <el-row>
+                      <el-form-item label="鏄惁浣滀负鎰忚鏀堕泦棰樼洰">
+                        <el-radio-group v-model="topicobj.isMydException">
+                          <el-radio label="1">鏄�</el-radio>
+                          <el-radio label="0">鍚�</el-radio>
+                        </el-radio-group>
+                      </el-form-item>
+                    </el-row>
                     <el-row :gutter="10">
                       <el-form-item label="绛旀">
                         <el-input
@@ -858,7 +858,7 @@
               v-if="item.scriptType == 1"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-radio-group v-model="item.remark">
@@ -878,7 +878,7 @@
               v-if="item.scriptType == 2"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-checkbox-group v-model="qremark">
@@ -1198,15 +1198,15 @@
                     <div class="basics">
                       閫夐」璁剧疆
                       <span style="margin-left: 30px"
-                        ><el-button type="primary" round @click="addoption"
-                          >+鏂板</el-button
+                        ><el-button class="addoption-btn" @click="addoption"
+                          >+鏂板閫夐」</el-button
                         ></span
                       >
                     </div>
                   </div>
                   <el-divider></el-divider>
                   <div
-                    class="topicxq"
+                    class="topic-card"
                     v-for="item in indexform.svyLibTemplateTargetoptions"
                     v-if="item.isoperation != 3"
                   >
@@ -1216,7 +1216,7 @@
                           <el-input
                             style="width: 400px"
                             type="text"
-                            placeholder="璇疯緭鍏ラ�夐」鍒嗗��"
+                            placeholder="璇疯緭鍏ラ�夐」鍚嶇О"
                             v-model="item.optioncontent"
                             show-word-limit
                           >
@@ -1494,8 +1494,12 @@
 import { deptTreeSelect } from "@/api/system/user";
 
 export default {
-  name: "Questionnaireinfo",
-  dicts: ["sys_normal_disable", "sys_user_sex", "task_status"],
+  dicts: [
+    "sys_normal_disable",
+    "dimensionality_type",
+    "sys_user_sex",
+    "task_status",
+  ],
   components: { OptionalForm },
 
   data() {
@@ -2161,14 +2165,19 @@
           '鏄惁纭鏂板鍚嶇О涓�"' + this.indexform.scriptTopic + '"鐨勯棶棰樻暟鎹紵'
         )
         .then(() => {
+          // 鉁� 寮哄埗鍒濆鍖�
+          if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) {
+            this.$set(this.indexform, "svyLibTemplateTargetoptions", []);
+          }
+
           this.indexform.isoperation = 1;
           this.indexform.svyLibTemplateTargetoptions.forEach((item) => {
             item.isoperation = 1;
           });
+
           this.ruleForm.svyTemplateLibScripts.push(this.indexform);
           this.indexform = { svyTemplateLibScripts: [] };
           this.drawer = false;
-
           this.sortFn();
           this.$modal.msgSuccess("闂鏂板鎴愬姛锛屼繚瀛樻ā鏉垮け鏁�");
         });
@@ -2560,14 +2569,22 @@
     // ---------------------------------------------------------
     // 鏂伴棶棰樻柊澧�
     addoption() {
-      if (!this.indexform.svyLibTemplateTargetoptions) {
-        this.indexform.svyLibTemplateTargetoptions = [];
+      if (!Array.isArray(this.indexform.svyLibTemplateTargetoptions)) {
+        this.$set(this.indexform, "svyLibTemplateTargetoptions", []);
       }
+
       this.indexform.svyLibTemplateTargetoptions.push({
+        tempId: Date.now() + Math.random(),
+        optioncontent: "",
         score: "",
         isoperation: 1,
       });
-      console.log(this.indexform.svyLibTemplateTargetoptions);
+    },
+    deletexuanx(item) {
+      this.indexform.svyLibTemplateTargetoptions =
+        this.indexform.svyLibTemplateTargetoptions.filter(
+          (opt) => opt.tempId !== item.tempId
+        );
     },
     // 閫夐」鏂囦欢涓婁紶
     handleChange(item, response, file, fileList) {
@@ -2598,9 +2615,16 @@
 </script>
 
 <style lang="scss" scoped>
+$radius: 8px;
+$border: #e4e7ed;
+$bg-light: #f7f9fb;
+$primary: #409eff;
+$text-main: #303133;
+$text-sub: #606266;
 .Questionnairemanagement {
   // display: flex;
 }
+
 .sidecolumn {
   margin: 10px 20px 0 20px;
   padding: 20px;
@@ -2609,6 +2633,7 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+
 .leftvlue {
   // //   display: flex;
   // //   flex: 1;
@@ -2622,20 +2647,25 @@
   border: 1px solid #dcdfe6;
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
+
   .mulsz {
     font-size: 20px;
   }
+
   .leftvlue-jbxx {
-    display: flex; /* 浣跨敤 Flexbox 甯冨眬 */
+    display: flex;
+    /* 浣跨敤 Flexbox 甯冨眬 */
     justify-content: space-between;
     font-size: 24px;
     border-left: 5px solid #41a1be;
     padding-left: 5px;
     margin: 15px 0;
   }
+
   .demo-cascader {
     margin-right: 20px;
   }
+
   .PreviewTemplate {
     color: #02a7f0;
     cursor: pointer;
@@ -2643,6 +2673,7 @@
     margin: 0 20px;
   }
 }
+
 .preview-left {
   margin: 20px;
   //   margin: 20px;
@@ -2651,14 +2682,17 @@
   border: 1px solid #dcdfe6;
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
+
   .scriptTopic-dev {
     margin-bottom: 25px;
     font-size: 20px !important;
+
     .dev-text {
       margin-bottom: 10px;
     }
   }
 }
+
 .headline {
   display: flex;
   justify-content: space-between;
@@ -2667,6 +2701,7 @@
   padding-left: 5px;
   margin: 15px 0;
 }
+
 .xinz-inf {
   font-size: 18px;
   white-space: nowrap;
@@ -2678,6 +2713,7 @@
   .el-tag + .el-tag {
     margin-left: 10px;
   }
+
   .button-new-tag {
     margin-left: 10px;
     height: 32px;
@@ -2685,12 +2721,14 @@
     padding-top: 0;
     padding-bottom: 0;
   }
+
   .input-new-tag {
     width: 90px;
     margin-left: 10px;
     vertical-align: bottom;
   }
 }
+
 .xinz-infs {
   font-size: 18px;
   line-height: 48px;
@@ -2699,54 +2737,123 @@
     margin-left: 10px;
   }
 }
+
 .addtopic {
   margin-top: 30px;
 }
+
 .presentation {
   margin: 20px 0;
   display: flex;
+
   .presentation-left {
     width: 45%;
     max-height: 80vh;
     padding: 0 20px;
     font-size: 18px;
     overflow: auto;
+
     .button-textxg {
       color: #024df0;
     }
+
     .button-textsc {
       color: #f52727;
     }
   }
+
   .spresentation-left {
     width: 100%;
+
     // height: 500px;
     .button-textxg {
       color: #024df0;
     }
+
     .button-textsc {
       color: #f52727;
     }
   }
+
   .presentation-right {
-    width: 55%;
+    flex: 6;
+    min-width: 360px;
     max-height: 80vh;
-    padding: 0 20px;
-    font-size: 18px;
     overflow: auto;
+    padding: 20px;
+
     .headline {
-      font-size: 20px;
-      border-left: 3px solid #41a1be;
-      padding-left: 5px;
-      margin: 15px 0;
-    }
-    .topicxq {
-      background-color: #e2f5fc;
-      border-radius: 4px;
-      margin-top: 10px;
+      font-size: 18px;
+      font-weight: 600;
+      color: $text-main;
       padding-left: 10px;
-      padding-top: 15px;
+      border-left: 4px solid $primary;
+      margin-bottom: 16px;
     }
+
+    .topic-card {
+      background: #fff;
+      border: 1px solid $border;
+      border-radius: $radius;
+      padding: 20px;
+      margin-bottom: 16px;
+      transition: box-shadow 0.2s;
+
+      &:hover {
+        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
+      }
+
+      .el-form-item {
+        margin-bottom: 16px;
+      }
+
+      .el-form-item__label {
+        font-size: 14px;
+        color: $text-sub;
+      }
+    }
+  }
+}
+.demo-drawer {
+  .preview-left {
+    padding: 20px;
+
+    .headline {
+      font-size: 18px;
+      font-weight: 600;
+      margin-bottom: 12px;
+    }
+
+    .topic-card {
+      background: #fff;
+      border: 1px solid $border;
+      border-radius: $radius;
+      padding: 16px;
+      margin-bottom: 12px;
+
+      .el-form-item {
+        margin-bottom: 14px;
+      }
+
+      .el-button--primary {
+        background: $primary;
+        border-radius: 20px;
+        padding: 8px 16px;
+      }
+    }
+  }
+}
+.addoption-btn {
+  width: 100%;
+  border: 1px dashed $border;
+  color: $text-sub;
+  background: $bg-light;
+  border-radius: $radius;
+  height: 40px;
+
+  &:hover {
+    border-color: $primary;
+    color: $primary;
   }
 }
 .topicxq {
@@ -2760,6 +2867,7 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+
 .service-tag-container {
   display: inline-block;
 
@@ -2862,6 +2970,7 @@
     opacity: 0;
     transform: scale(0.8) translateY(-5px);
   }
+
   to {
     opacity: 1;
     transform: scale(1) translateY(0);
@@ -2889,9 +2998,12 @@
     }
   }
 }
+
 .custom-width {
-  width: 100px; /* 璁剧疆瀹藉害鏍峰紡 */
+  width: 100px;
+  /* 璁剧疆瀹藉害鏍峰紡 */
 }
+
 .el-select {
   width: 280px;
 }
@@ -2899,6 +3011,7 @@
 .el-cascader {
   width: 40%;
 }
+
 ::v-deep .addtopic-input {
   input {
     background: #02a7f0;
@@ -2906,25 +3019,31 @@
     width: 150px;
   }
 }
+
 ::v-deep.el-step.is-vertical .el-step__title {
   font-size: 25px;
 }
+
 ::v-deep.el-input--medium {
   font-size: 18px !important;
 }
+
 ::v-deep.ruleFormaa.el-select {
   display: inline-block;
   position: relative;
   width: 700px;
 }
+
 .el-select__tags {
   font-size: 20px;
   max-width: 888px !important;
 }
+
 ::v-deep.el-radio__inner {
   width: 22px;
   height: 22px;
 }
+
 // ::v-deep.scriptTopic-dev.el-radio__label {
 //   font-size: 24px;
 // }
@@ -2933,11 +3052,13 @@
     font-size: 24px;
   }
 }
+
 ::v-deep.el-checkbox-group {
   span {
     font-size: 24px;
   }
 }
+
 // ::v-deep.el-form-item--medium .el-form-item__content {
 //   line-height: 36px;
 //   display: flex;
diff --git a/src/views/knowledge/questionnaire/examine/index.vue b/src/views/knowledge/questionnaire/examine/index.vue
index 4c840fc..9465112 100644
--- a/src/views/knowledge/questionnaire/examine/index.vue
+++ b/src/views/knowledge/questionnaire/examine/index.vue
@@ -63,7 +63,7 @@
             <!-- 鍗曢�� -->
             <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
               <div class="dev-text">
-                {{ item.idd }}銆乕鍗曢�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
+                {{ item.idd }}. [鍗曢�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
               </div>
               <div class="dev-xx">
                 <el-radio-group v-model="radio">
@@ -79,7 +79,7 @@
             <!-- 澶氶�� -->
             <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
               <div class="dev-text">
-                {{ item.idd }}銆乕澶氶�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
+                {{ item.idd }}. [澶氶�塢&nbsp&nbsp<span>{{ item.wssd }}</span>
               </div>
               <div class="dev-xx">
                 <el-checkbox-group v-model="radios">
diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue
index 6c1622e..d6ecc7f 100644
--- a/src/views/knowledge/questionnaire/index.vue
+++ b/src/views/knowledge/questionnaire/index.vue
@@ -398,7 +398,7 @@
             v-if="item.scriptType == 1"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-radio-group v-model="item.remark">
@@ -418,7 +418,7 @@
             v-if="item.scriptType == 2"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-checkbox-group v-model="item.qremark">
@@ -439,7 +439,7 @@
             v-if="item.scriptType == 4"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
diff --git a/src/views/loginSSO.vue b/src/views/loginSSO.vue
index 6cd082c..d195a79 100644
--- a/src/views/loginSSO.vue
+++ b/src/views/loginSSO.vue
@@ -11,13 +11,14 @@
       <div v-else class="loading-content">
         <i class="el-icon-loading"></i>
         <p>鍗曠偣鐧诲綍涓紝璇风◢鍊�...</p>
+        <p class="loading-detail">{{ loadingDetail }}</p>
       </div>
     </div>
   </div>
 </template>
 
 <script>
-import { setToken } from "@/utils/auth";
+import { setToken, removeToken } from "@/utils/auth";
 
 export default {
   name: "SSORedirect",
@@ -25,96 +26,205 @@
     return {
       errorMessage: "",
       loading: true,
+      loadingDetail: "姝e湪澶勭悊SSO浠ょ墝...",
     };
   },
   created() {
     this.handleSSORedirect();
   },
   methods: {
-    // 鍖归厤orgid
+    // 鍖归厤orgid - 浼樺寲涓哄璞℃槧灏�
     mateOrgid(orgid) {
-      if (orgid == "30001002") {
-        localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌缈犺嫅闄㈠尯");
-        localStorage.setItem("ZuHuID", "1400361376454545408");
-        localStorage.setItem("deptCode", "1017");
-      } else if (orgid == "30001003") {
-        localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌涔嬫睙闄㈠尯");
-        localStorage.setItem("ZuHuID", "1400360867068907520");
-        localStorage.setItem("deptCode", "01040201");
-      } else if (orgid == "30001004") {
-        localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌闂叉灄闄㈠尯");
-        localStorage.setItem("ZuHuID", "1429338802177000002");
-        localStorage.setItem("deptCode", "");
-      } else if (orgid == "30001005") {
-        localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌澶╃洰灞辫矾闄㈠尯");
-        localStorage.setItem("ZuHuID", "1429338802177000003");
-        localStorage.setItem("deptCode", "");
-      } else if (orgid == "30001006") {
-        localStorage.setItem("orgname", "娴欐睙鐪佺珛鍚屽痉鍖婚櫌闈掑北婀栭櫌鍖�");
-        localStorage.setItem("ZuHuID", "1429338802177000004");
-        localStorage.setItem("deptCode", "");
-      } else if (orgid == "30001007") {
-        localStorage.setItem("orgname", "娴嬭瘯闄㈠尯");
-        localStorage.setItem("ZuHuID", "1429338802177000005");
-        localStorage.setItem("deptCode", "");
+      const orgMap = {
+        "30001002": {
+          orgname: "鐪佺珛鍚屽痉缈犺嫅闄㈠尯",
+          ZuHuID: "1400361376454545408",
+          deptCode: "1017",
+        },
+        "30001003": {
+          orgname: "鐪佺珛鍚屽痉涔嬫睙闄㈠尯",
+          ZuHuID: "1400360867068907520",
+          deptCode: "01040201",
+        },
+        "30001004": {
+          orgname: "鐪佺珛鍚屽痉闂叉灄闄㈠尯",
+          ZuHuID: "1429338802177000002",
+          deptCode: "",
+        },
+        "30001005": {
+          orgname: "鐪佺珛鍚屽痉澶╃洰灞辫矾闄㈠尯",
+          ZuHuID: "1429338802177000003",
+          deptCode: "",
+        },
+        "30001006": {
+          orgname: "鐪佺珛鍚屽痉闈掑北婀栭櫌鍖�",
+          ZuHuID: "1429338802177000004",
+          deptCode: "",
+        },
+        "30001007": {
+          orgname: "娴嬭瘯闄㈠尯",
+          ZuHuID: "1429338802177000005",
+          deptCode: "",
+        },
+      };
+
+      const orgInfo = orgMap[orgid];
+      if (orgInfo) {
+        localStorage.setItem("orgname", orgInfo.orgname);
+        localStorage.setItem("ZuHuID", orgInfo.ZuHuID);
+        localStorage.setItem("deptCode", orgInfo.deptCode);
+        return orgInfo;
       }
+      return null;
     },
-    async handleSSORedirect() {
+
+    // 娓呯悊鏃х郴缁熺殑鏈湴瀛樺偍
+    clearOldSystemData() {
+      // 娓呯悊鍙兘鍐茬獊鐨勬棫绯荤粺鏁版嵁
+      const oldKeys = ["old-token", "old-user-info", "old-session"];
+      oldKeys.forEach((key) => {
+        localStorage.removeItem(key);
+        sessionStorage.removeItem(key);
+      });
+
+      // 娓呯悊鐗瑰畾鍓嶇紑鐨勫瓨鍌�
+      Object.keys(localStorage).forEach((key) => {
+        if (key.startsWith("old-system-") || key.startsWith("legacy-")) {
+          localStorage.removeItem(key);
+        }
+      });
+    },
+
+    // 鑾峰彇榛樿閲嶅畾鍚戣矾寰�
+    getDefaultRedirectPath() {
       try {
-        console.log(11);
-        // 浠嶶RL鍙傛暟涓幏鍙杢oken鍜屾満鏋勪俊鎭�
-        let { token, orgid, orgname, ZuHuID, deptCode } = this.$route.query;
-        // token =
-        //   "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijc5MWVkODNlLWE2MWYtNDI2MS05ZDZlLTNhOTVjYTU2YjZhMiJ9.q6jrRj8fwtb3FOqqwaxIFDr824hf85DW8heCj4qWYgRE55Pn0vkmcujFsYMrz9qqo047Gl7lv3rnok8pk7SKYQ"; // 楠岃瘉蹇呰鍙傛暟
-        // orgid = "30001002";
-        if (!token) {
-          throw new Error("缂哄皯璁よ瘉浠ょ墝(token)");
-        }
-        console.log(token);
-        console.log(orgid);
-        console.log(orgname);
-        // console.log(redirect,'redirect');
-
-        this.mateOrgid(orgid);
-        setToken(token);
-        this.$store.commit("SET_TOKEN", token);
-
-        // 瀛樺偍鏈烘瀯淇℃伅鍒發ocalStorage
-        if (orgid) {
-          localStorage.setItem("orgid", orgid);
-          this.$store.dispatch("UpdateOrgId", orgid);
-        }
-        if (orgname) localStorage.setItem("orgname", orgname);
-        if (ZuHuID) localStorage.setItem("ZuHuID", ZuHuID);
-        if (deptCode) localStorage.setItem("deptCode", deptCode);
-
-        // 鑾峰彇鐢ㄦ埛淇℃伅
-        await this.$store.dispatch("GetInfo");
-
-        // 纭畾閲嶅畾鍚戣矾寰�
-        let redirectPath = "/index";
-        // if (redirect) {
-        //   console.log(redirect,'888');
-
-        //   redirectPath = decodeURIComponent(redirect);
-        // } else {
-        // 鏍规嵁鐢ㄦ埛瑙掕壊鍐冲畾榛樿璺宠浆椤甸潰
-        const roles = this.$store.state.user.roles;
-        const username = this.$store.state.user.name;
+        const roles = this.$store.state.user?.roles || [];
+        const username = this.$store.state.user?.name || "";
 
         if (roles.includes("admin") || username === "admin") {
-          redirectPath = "/index";
-        } else {
-          redirectPath = "/followvisit/discharge";
+          return "/index";
         }
-        // }
+        return "/followvisit/discharge";
+      } catch (error) {
+        console.warn("鑾峰彇榛樿閲嶅畾鍚戣矾寰勫け璐�:", error);
+        return "/followvisit/discharge";
+      }
+    },
 
-        // 璺宠浆鍒扮洰鏍囬〉闈�
-        this.$router.replace({ path: redirectPath });
+    // 楠岃瘉SSO鍙傛暟
+    validateSSOParams(params) {
+      const { token, orgid } = params;
+
+      if (!token) {
+        throw new Error("缂哄皯璁よ瘉浠ょ墝(token)");
+      }
+
+      if (!orgid) {
+        console.warn("SSO鐧诲綍缂哄皯orgid鍙傛暟");
+      }
+
+      // 楠岃瘉token鏍煎紡锛堢畝鍗曢獙璇侊級
+      if (token.length < 10) {
+        throw new Error("浠ょ墝鏍煎紡鏃犳晥");
+      }
+
+      return true;
+    },
+
+    // 涓诲鐞嗗嚱鏁�
+    async handleSSORedirect() {
+      try {
+        console.log("SSO閲嶅畾鍚戝紑濮嬪鐞�...");
+
+        // 1. 鑾峰彇URL鍙傛暟
+        const params = this.$route.query;
+        console.log("SSO鍙傛暟:", params);
+
+        // 2. 楠岃瘉蹇呰鍙傛暟
+        this.validateSSOParams(params);
+        this.loadingDetail = "楠岃瘉浠ょ墝涓�...";
+
+        // 3. 娓呯悊鏃х郴缁熸暟鎹�
+        this.clearOldSystemData();
+
+        const { token, orgid, orgname, ZuHuID, deptCode, redirect } = params;
+
+        // 4. 瀛樺偍token
+        setToken(token);
+        this.$store.commit("SET_TOKEN", token);
+        this.loadingDetail = "璁剧疆鐢ㄦ埛浠ょ墝...";
+
+        // 5. 澶勭悊鏈烘瀯淇℃伅
+        if (orgid) {
+          // 浼樺厛浣跨敤mateOrgid鏄犲皠
+          const orgInfo = this.mateOrgid(orgid);
+          if (!orgInfo) {
+            // 濡傛灉娌℃湁鏄犲皠锛屼娇鐢ㄤ紶鍏ョ殑鍙傛暟
+            if (orgname) localStorage.setItem("orgname", orgname);
+            if (ZuHuID) localStorage.setItem("ZuHuID", ZuHuID);
+            if (deptCode) localStorage.setItem("deptCode", deptCode);
+          }
+
+          localStorage.setItem("orgid", orgid);
+          if (this.$store.dispatch && typeof this.$store.dispatch === "function") {
+            await this.$store.dispatch("UpdateOrgId", orgid);
+          }
+        }
+        this.loadingDetail = "璁剧疆鏈烘瀯淇℃伅...";
+
+        // 6. 鑾峰彇鐢ㄦ埛淇℃伅
+        if (this.$store.dispatch && typeof this.$store.dispatch === "function") {
+          await this.$store.dispatch("GetInfo");
+        }
+        this.loadingDetail = "鑾峰彇鐢ㄦ埛淇℃伅...";
+
+        // 7. 澶勭悊閲嶅畾鍚戣矾寰�
+        let redirectPath = "/followvisit/discharge";
+
+        if (redirect) {
+          // 瑙g爜浼犲叆鐨勯噸瀹氬悜璺緞
+          try {
+            redirectPath = decodeURIComponent(redirect);
+            console.log("浣跨敤浼犲叆鐨勯噸瀹氬悜璺緞:", redirectPath);
+          } catch (e) {
+            console.error("瑙g爜閲嶅畾鍚戣矾寰勫け璐�:", e);
+            redirectPath = this.getDefaultRedirectPath();
+          }
+        } else {
+          redirectPath = this.getDefaultRedirectPath();
+        }
+
+        // 8. 绉婚櫎URL涓殑token鍙傛暟锛堝畨鍏ㄨ�冭檻锛�
+        this.$router.replace({ query: {} });
+
+        // 9. 寤惰繜璺宠浆锛岀‘淇濈姸鎬佸凡鏇存柊
+        setTimeout(() => {
+          this.loadingDetail = "璺宠浆鍒扮洰鏍囬〉闈�...";
+          console.log("鍑嗗璺宠浆鍒�:", redirectPath);
+
+          // 鉁� 浣跨敤 push 鑰屼笉鏄� replace锛屼繚鐣欏巻鍙茶褰�
+          this.$router.push({ path: redirectPath }).then(() => {
+            console.log("SSO鐧诲綍鎴愬姛锛岃烦杞畬鎴�");
+          }).catch((error) => {
+            console.error("璺敱璺宠浆澶辫触:", error);
+            // 鍥為��鍒伴粯璁ら〉闈�
+            this.$router.push({ path: "/followvisit/discharge" });
+          });
+        }, 500);
+
       } catch (error) {
         console.error("SSO鐧诲綍澶辫触:", error);
         this.errorMessage = `鍗曠偣鐧诲綍澶辫触: ${error.message || "鏈煡閿欒"}`;
         this.loading = false;
+
+        // 娓呯悊token
+        removeToken();
+        this.$store.commit("SET_TOKEN", "");
+
+        // 鏄剧ず閿欒璇︽儏锛堝紑鍙戠幆澧冿級
+        if (process.env.NODE_ENV === "development") {
+          this.errorMessage += ` (璇︽儏: ${error.toString()})`;
+        }
 
         // 5绉掑悗璺宠浆鍒版櫘閫氱櫥褰曢〉
         setTimeout(() => {
@@ -132,29 +242,73 @@
   justify-content: center;
   align-items: center;
   height: 100vh;
+  min-height: 500px;
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   background-color: #f5f7fa;
+  padding: 20px;
+  box-sizing: border-box;
 }
 
 .loading-container {
   text-align: center;
-  padding: 20px;
-  background: white;
-  border-radius: 4px;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+  padding: 40px 60px;
+  background: rgba(255, 255, 255, 0.95);
+  border-radius: 12px;
+  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+  min-width: 400px;
+  max-width: 500px;
+  backdrop-filter: blur(10px);
+  border: 1px solid rgba(255, 255, 255, 0.2);
 }
 
 .loading-content {
-  padding: 20px;
+  padding: 30px 20px;
 }
 
 .el-icon-loading {
-  font-size: 40px;
+  font-size: 60px;
   color: #409eff;
-  margin-bottom: 10px;
+  margin-bottom: 20px;
+  animation: spin 1.5s linear infinite;
 }
 
-p {
+@keyframes spin {
+  0% { transform: rotate(0deg); }
+  100% { transform: rotate(360deg); }
+}
+
+.loading-content p {
   margin: 0;
   color: #606266;
+  font-size: 16px;
+  line-height: 1.6;
+}
+
+.loading-detail {
+  margin-top: 10px !important;
+  font-size: 14px !important;
+  color: #909399 !important;
+  opacity: 0.8;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .sso-redirect {
+    padding: 10px;
+  }
+
+  .loading-container {
+    padding: 30px 20px;
+    min-width: 300px;
+    max-width: 90vw;
+  }
+
+  .el-icon-loading {
+    font-size: 50px;
+  }
+
+  .loading-content p {
+    font-size: 15px;
+  }
 }
 </style>
diff --git a/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue
index 31108b5..807fd55 100644
--- a/src/views/monitor/job/index.vue
+++ b/src/views/monitor/job/index.vue
@@ -19,7 +19,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="浠诲姟鐘舵��" prop="status">
+      <el-form-item label="鏈嶅姟鐘舵��" prop="status">
         <el-select v-model="queryParams.status" placeholder="璇烽�夋嫨浠诲姟鐘舵��" clearable>
           <el-option
             v-for="dict in dict.type.sys_job_status"
diff --git a/src/views/outsideChain.vue b/src/views/outsideChain.vue
index 4245057..45824b1 100644
--- a/src/views/outsideChain.vue
+++ b/src/views/outsideChain.vue
@@ -15,7 +15,7 @@
             v-if="item.scriptType == 1"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-radio-group v-model="item.remark">
@@ -35,7 +35,7 @@
             v-if="item.scriptType == 2"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-checkbox-group v-model="qremark">
@@ -56,7 +56,7 @@
             v-if="item.scriptType == 4"
           >
             <div class="dev-text">
-              {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+              {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index e435d5c..3882e7f 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="questionnaire-optimized">
-    <div v-if="loading" class="loading-container">
+    <div v-if="loading && !accomplish" class="loading-container">
       <div class="loading-content">
         <i class="el-icon-loading loading-icon"></i>
         <div class="loading-text">闂嵎鍔犺浇涓紝璇风◢鍊�...</div>
@@ -27,8 +27,146 @@
 
           <el-divider class="custom-divider"></el-divider>
 
-          <!-- 闂嵎棰樼洰鍖哄煙 -->
-          <div class="questions-section">
+          <!-- 鎸夌淮搴﹀垎缁勭殑棰樼洰鍖哄煙 -->
+          <div class="dimension-section" v-if="hasDimension">
+            <!-- 閬嶅巻缁村害鍒嗙粍 -->
+            <div
+              class="dimension-group"
+              v-for="(group, dimensionKey) in dimensionGroups"
+              :key="dimensionKey"
+            >
+              <!-- 缁村害鏍囬 - 鍙樉绀烘湁缁村害鏍囩鐨� -->
+              <div class="dimension-title" v-if="group.dimensionLabel">
+                <h3>{{ group.dimensionLabel }}</h3>
+              </div>
+
+              <!-- 璇ョ淮搴︿笅鐨勯鐩� -->
+              <div class="questions-section">
+                <div
+                  class="question-item"
+                  v-for="(item, index) in group.questions"
+                  :key="item.id"
+                  :class="{
+                    'has-warning':
+                      item.prompt &&
+                      item.scriptResult &&
+                      (item.scriptType !== 2 || item.scriptResult.length > 0),
+                  }"
+                >
+                  <!-- 棰樼洰棰樺共 -->
+                  <div class="question-stem">
+                    <span class="question-number"
+                      >{{ getQuestionNumber(group, index) }}.</span
+                    >
+                    <span class="question-text">{{ item.scriptContent }}</span>
+                    <span class="question-type-tag">
+                      {{
+                        item.scriptType == 1
+                          ? "[鍗曢�塢"
+                          : item.scriptType == 2
+                          ? "[澶氶�塢"
+                          : "[闂瓟]"
+                      }}
+                    </span>
+                  </div>
+
+                  <!-- 鍗曢�夐鐩� -->
+                  <div
+                    class="question-options"
+                    v-if="item.scriptType == 1 && !item.ishide"
+                  >
+                    <el-radio-group
+                      class="options-group"
+                      v-model="item.scriptResult"
+                    >
+                      <el-radio
+                        v-for="(
+                          option, optionIndex
+                        ) in item.svyTaskTemplateTargetoptions"
+                        :key="optionIndex"
+                        :label="option.optioncontent"
+                        :class="{
+                          'abnormal-option':
+                            option.isabnormal &&
+                            item.scriptResult == option.optioncontent,
+                        }"
+                        @click.native.prevent="
+                          handleRadioToggle(
+                            item,
+                            getGlobalIndex(dimension, group, index),
+                            item.svyTaskTemplateTargetoptions,
+                            option.optioncontent
+                          )
+                        "
+                        class="option-radio"
+                      >
+                        <span class="option-text">{{
+                          option.optioncontent
+                        }}</span>
+                      </el-radio>
+                    </el-radio-group>
+                  </div>
+
+                  <!-- 澶氶�夐鐩� -->
+                  <div class="question-options" v-if="item.scriptType == 2">
+                    <el-checkbox-group
+                      class="options-group"
+                      v-model="item.scriptResult"
+                    >
+                      <el-checkbox
+                        v-for="(
+                          option, optionIndex
+                        ) in item.svyTaskTemplateTargetoptions"
+                        :key="optionIndex"
+                        :label="option.optioncontent"
+                        :class="{
+                          'abnormal-option': option.isabnormal,
+                        }"
+                        @change="$forceUpdate()"
+                        class="option-checkbox"
+                      >
+                        <span class="option-text">{{
+                          option.optioncontent
+                        }}</span>
+                      </el-checkbox>
+                    </el-checkbox-group>
+                  </div>
+
+                  <!-- 濉┖棰樼洰 -->
+                  <div class="question-input" v-if="item.scriptType == 4">
+                    <el-input
+                      type="textarea"
+                      :rows="3"
+                      placeholder="璇疯緭鍏ユ偍鐨勫洖绛�"
+                      v-model="item.scriptResult"
+                      clearable
+                      class="answer-textarea"
+                    ></el-input>
+                  </div>
+
+                  <!-- 鎻愮ず淇℃伅 -->
+                  <div
+                    class="question-warning"
+                    v-show="
+                      item.prompt &&
+                      item.scriptResult &&
+                      (item.scriptType !== 2 || item.scriptResult.length > 0)
+                    "
+                  >
+                    <el-alert
+                      :title="item.prompt"
+                      type="warning"
+                      :closable="false"
+                      class="warning-alert"
+                    ></el-alert>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <!-- 鏃犵淮搴︽椂鐨勯鐩尯鍩燂紙淇濇寔鍘熸牱锛� -->
+          <div class="questions-section" v-else>
             <div
               class="question-item"
               v-for="(item, index) in visibleQuestions"
@@ -48,9 +186,9 @@
                 <span class="question-text">{{ item.scriptContent }}</span>
                 <span class="question-type-tag">
                   {{
-                    item.scriptType === 1
+                    item.scriptType == 1
                       ? "[鍗曢�塢"
-                      : item.scriptType === 2
+                      : item.scriptType == 2
                       ? "[澶氶�塢"
                       : "[闂瓟]"
                   }}
@@ -182,6 +320,7 @@
   getExternalfollowup,
   getCachequestionnaire,
   Cachequestionnaire,
+  gettypeout,
   Submitaquestionnaire,
   geturlinfo,
 } from "@/api/AiCentre/index";
@@ -202,6 +341,23 @@
       dialogVisible: false,
       Endornot: true,
       accomplish: false,
+      dimensionTypes: [
+        {
+          value: 1,
+          label: "缁村害1",
+          listClass: "primary",
+        },
+        {
+          value: 2,
+          label: "缁村害浜�",
+          listClass: "primary",
+        },
+        {
+          value: 3,
+          label: "缁村害涓�",
+          listClass: "primary",
+        },
+      ],
       // 鍓嶇鍏挜
       publicKey:
         "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKR0yHv0rbJWQE+Sc7/FwpW66qMd9qX2k6z+SDgkSdxWh/1GbBoAP7bDQQRF6vXmoKsD2ya42H6XRLSDXAoayuMCAwEAAQ== ",
@@ -222,6 +378,7 @@
     // window.removeEventListener("beforeunload", this.cache);
   },
   created() {
+    this.gettypeout();
     this.geturlinfo();
   },
   computed: {
@@ -231,6 +388,79 @@
         return [];
       }
       return this.questionList.filter((question) => !question.ishide);
+    },
+
+    // 璁$畻灞炴�э細妫�鏌ユ槸鍚︽湁缁村害瀛楁
+    hasDimension() {
+      if (!this.questionList || this.questionList.length == 0) {
+        return false;
+      }
+      // 妫�鏌ヤ换鎰忎竴涓鐩槸鍚︽湁dimension瀛楁
+      return this.questionList.some(
+        (question) =>
+          question.dimension && this.getDimensionLabel(question.dimension)
+      );
+    },
+
+    // 璁$畻灞炴�э細鎸夌淮搴︽暣鐞嗛鐩�
+    dimensionGroups() {
+      if (!this.questionList || this.questionList.length == 0) {
+        return {};
+      }
+
+      const groups = {};
+      let currentGroupKey = null;
+      let groupStartIndex = 0; // 璁板綍褰撳墠缁村害缁勭殑寮�濮嬬储寮�
+
+      this.visibleQuestions.forEach((question, index) => {
+        const dimensionValue = question.dimension;
+        const dimensionLabel = this.getDimensionLabel(dimensionValue);
+
+        // 鐢熸垚缁刱ey锛氭湁缁村害鐢ㄧ淮搴﹀�硷紝鏃犵淮搴︾敤鐗规畩鏍囪+璧峰绱㈠紩
+        let groupKey;
+        if (dimensionValue && dimensionLabel) {
+          groupKey = `dimension-${dimensionValue}`;
+        } else {
+          // 鏃犵淮搴︽垨缁村害鏄犲皠涓嶅瓨鍦ㄧ殑棰樼洰鍗曠嫭鍒嗙粍
+          groupKey = `no-dimension-${groupStartIndex}`;
+        }
+
+        // 鍒涘缓鎴栬幏鍙栫淮搴︾粍
+        if (!groups[groupKey]) {
+          groups[groupKey] = {
+            questions: [],
+            startIndex: groupStartIndex,
+            dimensionValue: dimensionValue, // 淇濆瓨缁村害鍊肩敤浜庡悗缁鐞�
+            dimensionLabel: dimensionLabel, // 淇濆瓨缁村害鏍囩
+            isNoDimension: !dimensionValue || !dimensionLabel,
+          };
+          currentGroupKey = groupKey;
+        }
+
+        // 灏嗛鐩坊鍔犲埌瀵瑰簲鐨勭淮搴︾粍
+        groups[groupKey].questions.push(question);
+
+        // 濡傛灉涓嬩竴涓鐩淮搴︿笉鍚岋紝閲嶆柊寮�濮嬭鏁�
+        const nextQuestion = this.visibleQuestions[index + 1];
+        if (nextQuestion) {
+          const nextDimensionValue = nextQuestion.dimension;
+          const nextDimensionLabel = this.getDimensionLabel(nextDimensionValue);
+          const currentDimensionLabel = this.getDimensionLabel(dimensionValue);
+
+          // 鍒ゆ柇缁村害鏄惁鐩稿悓
+          if (
+            dimensionValue !== nextDimensionValue ||
+            (dimensionValue &&
+              nextDimensionValue &&
+              ((!dimensionValue && nextDimensionValue) ||
+                (dimensionValue && !nextDimensionValue)))
+          ) {
+            groupStartIndex = index + 1;
+          }
+        }
+      });
+
+      return groups;
     },
   },
   methods: {
@@ -253,6 +483,23 @@
           this.param6 = res.data.param6;
         }
       });
+    },
+    // 鑾峰彇瀛楀吀
+    gettypeout() {
+      gettypeout("dimensionality_type").then((res) => {
+        if (res.code == 200) {
+          this.dimensionTypes = res.data;
+        }
+      });
+    },
+    // 鏍规嵁缁村害鍊艰幏鍙栫淮搴︽爣绛�
+    getDimensionLabel(dimensionValue) {
+      if (!dimensionValue) return "";
+
+      const dimensionType = this.dimensionTypes.find(
+        (item) => item.dictValue == Number(dimensionValue)
+      );
+      return dimensionType ? dimensionType.dictLabel : "";
     },
     //     extractLastSegmentFromUrl(url) {
     //     // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
@@ -431,19 +678,42 @@
     getVisibleQuestionIndex(index) {
       return index + 1;
     },
+
+    // 鑾峰彇缁村害鍐呴鐩殑搴忓彿
+    getQuestionNumber(group, index) {
+      return group.startIndex + index + 1;
+    },
+
+    // 鑾峰彇棰樼洰鍦ㄥ叏閲忔暟缁勪腑鐨勭储寮�
+    getGlobalIndex(dimension, group, localIndex) {
+      return group.startIndex + localIndex;
+    },
+    // 鍦ㄦā鏉夸腑浣跨敤
+    getDimensionLabelForDisplay(dimensionKey) {
+      if (dimensionKey.startsWith("no-dimension-")) {
+        return "";
+      }
+      const dimensionValue = dimensionKey.replace("dimension-", "");
+      return this.getDimensionLabel(dimensionValue);
+    },
     // 鏂板鐨勫垏鎹㈤�変腑/鍙栨秷閫変腑鏂规硶
-    handleRadioToggle(questionItem, index, options, optionValue) {
+    handleRadioToggle(questionItem, globalIndex, options, optionValue) {
       // 淇濆瓨褰撳墠鐘舵�佷互渚垮悗缁瘮杈�
       const previousState = JSON.parse(JSON.stringify(this.questionList));
 
       // 鍘熸湁鐨勫鐞嗛�昏緫
-      if (questionItem.scriptResult === optionValue) {
+      if (questionItem.scriptResult == optionValue) {
         questionItem.scriptResult = "";
         questionItem.isabnormal = 0;
         questionItem.showAppendInput = false;
       } else {
         questionItem.scriptResult = optionValue;
-        this.handleOptionChange(optionValue, index, options, questionItem);
+        this.handleOptionChange(
+          optionValue,
+          globalIndex,
+          options,
+          questionItem
+        );
       }
 
       // 澶勭悊瀹屾垚鍚庯紝纭繚閲嶆柊璁$畻鍙棰樼洰鐨勫簭鍙�
@@ -517,12 +787,12 @@
             }
 
             // 褰撳墠棰樼洰鎬绘槸鍙
-            if (index === questionIndex) {
+            if (index == questionIndex) {
               return { ...item, ishide: 0, hiddenByEnd: false };
             }
 
             // 鏄剧ず鐩爣涓嬩竴棰�
-            if (index === nextQuestionIndex) {
+            if (index == nextQuestionIndex) {
               return { ...item, ishide: 0, hiddenByEnd: false };
             }
 
@@ -544,8 +814,8 @@
         // 濡傛灉娌℃湁璺宠浆锛屽彧闇�纭繚涓嬩竴棰樺彲瑙�
         this.questionList = this.questionList.map((item, index) => ({
           ...item,
-          ishide: index === questionIndex + 1 ? 0 : item.ishide,
-          hiddenByEnd: index === questionIndex + 1 ? false : item.hiddenByEnd,
+          ishide: index == questionIndex + 1 ? 0 : item.ishide,
+          hiddenByEnd: index == questionIndex + 1 ? false : item.hiddenByEnd,
         }));
       }
 
@@ -554,32 +824,6 @@
         this.$forceUpdate();
       });
     },
-    // 澶勭悊鍗曢�夐�夐」
-    // handleOptionChange(selectedvalue, index, arr) {
-    //   // 鏌ユ壘閫変腑鐨勯�夐」瀵硅薄
-    //   const selectedOption = arr.svyTaskTemplateTargetoptions.find(
-    //     (option) => option.optioncontent == selectedvalue
-    //   );
-    //   if (selectedOption) {
-    //     this.questionList[index].nextScriptno = selectedOption.nextQuestion;
-    //     this.questionList[index].score = selectedOption.score;
-    //     this.questionList[index].prompt = selectedOption.prompt;
-    //   }
-    // },
-    // 澶勭悊澶氶�夐�夐」
-    // updateScore(selectedvalues, index, arr) {
-    //   // 锟斤拷鍔犲垎鏁�
-    //   let score = 0;
-    //   selectedvalues.forEach((value) => {
-    //     const selectedOption = arr.svyTaskTemplateTargetoptions.find(
-    //       (option) => option.optioncontent == value
-    //     );
-    //     if (selectedOption) {
-    //       score += Number(selectedOption.score);
-    //     }
-    //   });
-    //   this.questionList[index].score = score;
-    // },
   },
 };
 </script>
@@ -632,12 +876,40 @@
   background-color: #eaeef2;
 }
 
+/* 缁村害鍒嗙粍鏍峰紡 */
+.dimension-section {
+  margin-bottom: 20px;
+}
+
+.dimension-group {
+  margin-bottom: 30px;
+
+  &:last-child {
+    margin-bottom: 0;
+  }
+}
+
+.dimension-title {
+  background: linear-gradient(135deg, #e8f4ff 0%, #d1e7ff 100%);
+  padding: 12px 20px;
+  border-radius: 8px;
+  margin-bottom: 20px;
+  border-left: 4px solid #175997;
+
+  h3 {
+    color: #175997;
+    font-size: 20px;
+    font-weight: 600;
+    margin: 0;
+  }
+}
+
 .questions-section {
-  margin-bottom: 40px;
+  margin-bottom: 10px;
 }
 
 .question-item {
-  margin-bottom: 35px;
+  margin-bottom: 25px;
   padding: 20px;
   border-radius: 8px;
   border: 1px solid #eaeef2;
@@ -650,6 +922,10 @@
 
   &.has-warning {
     border-left: 4px solid #e6a23c;
+  }
+
+  &:last-child {
+    margin-bottom: 0;
   }
 }
 
@@ -756,6 +1032,8 @@
 .submit-section {
   text-align: center;
   padding: 20px 0 10px;
+  border-top: 1px solid #eaeef2;
+  margin-top: 20px;
 }
 
 .submit-button {
@@ -849,6 +1127,14 @@
     padding: 15px;
   }
 
+  .dimension-title {
+    padding: 10px 15px;
+
+    h3 {
+      font-size: 18px;
+    }
+  }
+
   .completion-content {
     padding: 30px 20px;
   }
@@ -874,6 +1160,10 @@
   .completion-icon {
     font-size: 60px;
   }
+
+  .dimension-title h3 {
+    font-size: 16px;
+  }
 }
 .loading-container {
   display: flex;
diff --git a/src/views/patient/physical/index.vue b/src/views/patient/physical/index.vue
index 95ed6d6..fcbfb71 100644
--- a/src/views/patient/physical/index.vue
+++ b/src/views/patient/physical/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -228,39 +228,45 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
-            <div v-if="scope.row.sendstate == 1">
-              <el-tag type="primary" :disable-transitions="false"
-                >琛ㄥ崟宸查鍙�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 2">
-              <el-tag type="primary" :disable-transitions="false"
-                >寰呴殢璁�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 3">
-              <el-tag type="success" :disable-transitions="false"
-                >琛ㄥ崟宸插彂閫�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 4">
-              <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-            </div>
-            <div v-if="scope.row.sendstate == 5">
-              <el-tag type="danger" :disable-transitions="false"
-                >鍙戦�佸け璐�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 6">
-              <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag>
-            </div>
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
           </template>
         </el-table-column>
         <!-- <el-table-column
@@ -786,34 +792,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index 80b2bc3..2613017 100644
--- a/src/views/patient/propaganda/QuestionnaireTask.vue
+++ b/src/views/patient/propaganda/QuestionnaireTask.vue
@@ -291,6 +291,83 @@
                       <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
                     </el-form-item>
                   </div>
+                  <div
+                    style="
+                      margin-bottom: 20px;
+                      padding: 8px 12px;
+                      background-color: #f0f9ff;
+                      border-left: 4px solid #409eff;
+                    "
+                  >
+                    <p
+                      style="
+                        margin: 0;
+                        color: #606266;
+                        font-size: 13px;
+                        line-height: 1.4;
+                      "
+                    >
+                      <i
+                        class="el-icon-info"
+                        style="color: #409eff; margin-right: 6px"
+                      ></i>
+                      閽堝鍚屼竴鐤剧梾鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+                    </p>
+                  </div>
+                  <!-- 鏂板锛氱柧鐥呭叧鑱斾笅鐨勭瀹ら厤缃紙鍗曢�夛級 -->
+                  <el-row :gutter="20" style="margin-top: 20px">
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+                        <el-select
+                          v-model="diseaseDept"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+                          value-key="deptCode"
+                          @change="handleDiseaseDeptChange"
+                        >
+                          <el-option
+                            v-for="item in belongDepts"
+                            :key="item.deptCode"
+                            :label="item.deptName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseDept" class="selected-info">
+                          宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+                            diseaseDept.deptCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+                        <el-select
+                          v-model="diseaseWard"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+                          value-key="districtCode"
+                          @change="handleDiseaseWardChange"
+                        >
+                          <el-option
+                            v-for="item in belongWards"
+                            :key="item.districtCode"
+                            :label="item.districtName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseWard" class="selected-info">
+                          宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+                            diseaseWard.districtCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
                 </el-row>
                 <el-row v-if="form.appltype == 4">
                   <el-col :span="20"
@@ -615,8 +692,8 @@
     <!-- 妯℃澘棰勮 -->
     <el-dialog title="妯℃澘棰勮" :visible.sync="previewtf" width="70%">
       <el-tabs type="border-card">
-        <el-tab-pane label="妯℃澘鍩虹鏁版嵁"
-          ><div class="preview-left">
+        <el-tab-pane label="妯℃澘鍩虹鏁版嵁">
+          <div class="preview-left">
             <el-form :model="objyl" label-width="100px" class="demo-objyl">
               <el-row :gutter="10">
                 <el-col :span="14">
@@ -706,10 +783,11 @@
                 >
                 </el-input
               ></el-form-item>
-            </el-form></div
-        ></el-tab-pane>
-        <el-tab-pane label="闂灞曠ず"
-          ><div class="preview-left">
+            </el-form>
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="闂灞曠ず">
+          <div class="preview-left">
             <div v-for="item in questionList">
               <!-- 鍗曢�� -->
               <div
@@ -718,7 +796,7 @@
                 v-if="item.scriptType == 1"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-radio-group v-model="item.remark">
@@ -738,7 +816,7 @@
                 v-if="item.scriptType == 2"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-checkbox-group v-model="item.qremark">
@@ -759,7 +837,7 @@
                 v-if="item.scriptType == 4"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-input
@@ -770,8 +848,9 @@
                   </el-input>
                 </div>
               </div>
-            </div></div
-        ></el-tab-pane>
+            </div>
+          </div>
+        </el-tab-pane>
       </el-tabs>
 
       <span slot="footer" class="dialog-footer">
@@ -1022,6 +1101,10 @@
       // 鏃堕棿澶勭悊
       daytime: [], //鏃ユ湡
       applydaytime: [], //璁$畻鏃ユ湡
+      diseaseDept: null, // 鐤剧梾鍏宠仈涓嬬殑绉戝锛堝瓨鍌ㄦ暣涓璞★級
+      diseaseWard: null, // 鐤剧梾鍏宠仈涓嬬殑鐥呭尯锛堝瓨鍌ㄦ暣涓璞★級
+      diseaseDepts: "",
+      diseaseWards: "",
       time1: "", //涓婂崍鏃堕棿娈�
       time2: "", //涓嬪崍鏃堕棿娈�
       time3: "", //鏅氫笂鏃堕棿娈�
@@ -1370,6 +1453,7 @@
         this.form.serviceType == 5 ||
         this.form.serviceType == 16 ||
         this.form.serviceType == 18 ||
+        this.form.serviceType == 19 ||
         this.form.serviceType == 4
       ) {
         this.checkboxlist = [
@@ -1418,7 +1502,7 @@
     },
     // 淇濆瓨
     submitForm(formName) {
-      console.log(this.submitLoading);
+      console.log(this.submitLoading, "1");
 
       if (this.submitLoading) {
         return;
@@ -1437,6 +1521,8 @@
             xh: 1,
           },
         ];
+        console.log(1);
+
         if (this.form.appltype == 1) {
           this.leavehospitaldistrictcodes = [];
           this.form.oplevelcode = null;
@@ -1463,6 +1549,7 @@
 
           return;
         }
+        console.log(2);
 
         if (
           this.deptcodesWards[0] ||
@@ -1482,6 +1569,7 @@
         //   this.$modal.msgError("璇烽�夋嫨鐥呬汉");
         //   return;
         // }
+        console.log(3);
 
         if (!this.form.templatename && !this.templateor) {
           this.$modal.msgError("鏈�夋嫨妯℃澘");
@@ -1515,11 +1603,24 @@
         if (!this.form.type) {
           this.form.type = this.$route.query.type;
         }
+        console.log(4);
         this.form.serviceType = this.serviceType;
         this.form.deptcode = this.deptcodesWards.join(",");
         this.form.leavehospitaldistrictcode =
           this.leavehospitaldistrictcodes.join(",");
         // this.form.opcode = this.operationcodes.join(",");
+        if (this.form.appltype == 3) {
+          if (this.diseaseDept) {
+            this.form.deptcode = this.diseaseDept.deptCode;
+            this.form.deptname = this.diseaseDept.deptName;
+          }
+
+          if (this.diseaseWard) {
+            this.form.leavehospitaldistrictcode = this.diseaseWard.districtCode;
+            this.form.leavehospitaldistrictname = this.diseaseWard.districtName;
+          }
+        }
+
         this.form.icd10code = this.diagglist
           .map((item) => item.icdcode)
           .join(",");
@@ -1546,7 +1647,15 @@
         // 绗洓姝ワ細鏃犺鎴愬姛鎴栧け璐ワ紝鏈�缁堥兘鍏抽棴鍔犺浇鐘舵��
       }
     },
+    handleDiseaseDeptChange(dept) {
+      // 褰撻�夋嫨绉戝鏃讹紝瀛樺偍鏁翠釜绉戝瀵硅薄
+      this.diseaseDept = dept;
+    },
 
+    handleDiseaseWardChange(ward) {
+      // 褰撻�夋嫨鐥呭尯鏃讹紝瀛樺偍鏁翠釜鐥呭尯瀵硅薄
+      this.diseaseWard = ward;
+    },
     // ----------------------琛ㄦ牸瀛愮粍浠朵簨浠�
     // 閫夋嫨棰勮
     selectfn(row, type) {
@@ -1566,6 +1675,8 @@
             this.tempbelongWards = [];
             this.objyl.suitway = this.objyl.suitway.split(",");
             this.questionList = res.rows[0].svyTemplateLibScripts;
+            console.log(this.questionList, "this.questionList");
+
             this.questionList.forEach((item) => {
               item.qremark = [];
             });
@@ -1792,6 +1903,7 @@
     handleUpdate() {},
     handleDelete() {},
     handleExport() {},
+
     // 閫夋嫨鎮h�呰〃鏁版嵁
     handleSelectionChange(selection) {
       this.SelectPatientslist = structuredClone(selection);
@@ -2068,12 +2180,17 @@
         if (res.code == 200) {
           let arr = res.rows;
           arr.forEach((item) => {
-            getillnesslist({
-              icdcode: item.icd10code,
-            }).then((res) => {
-              item.icdname = res.rows[0].icdname;
+            if (localStorage.getItem("orgname") == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+              item.icdname = item.icd10name;
               this.diagglist.push(item);
-            });
+            } else {
+              getillnesslist({
+                icdname: item.icd10name,
+              }).then((res) => {
+                item.icdname = res.rows[0].icdname;
+                this.diagglist.push(item);
+              });
+            }
             this.illnesscodes.push(item.icd10code);
           });
         }
@@ -2354,9 +2471,11 @@
 <style lang="scss" scoped>
 .Questionnairemanagement {
 }
+
 .leftvlue-jbxx {
   margin-top: 10px;
 }
+
 .sidecolumn {
   width: 100%;
   // min-height: 12vh;
@@ -2368,6 +2487,7 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+
 .leftvlue {
   //   display: flex;
   //   flex: 1;
@@ -2380,8 +2500,10 @@
   -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
     0 0 6px 0 rgba(0, 0, 0, 0.04);
 }
+
 .examine-jic {
   margin: 20px;
+
   .headline {
     font-size: 24px;
     height: 40px;
@@ -2389,6 +2511,7 @@
     padding-left: 5px;
     margin-bottom: 10px;
     display: flex;
+
     // justify-content: space-between;
     .Add-details {
       font-size: 18px;
@@ -2396,25 +2519,30 @@
       cursor: pointer;
     }
   }
+
   .jic-value {
     font-size: 20px;
     border-top: 1px solid #a7abac;
     padding: 10px;
     margin-bottom: 10px;
+
     .details-jic {
       padding: 10px 15px;
       border: 1px solid #dcdfe6;
       -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
         0 0 6px 0 rgba(0, 0, 0, 0.04);
+
       .details-title {
         display: flex;
         justify-content: space-between;
         margin-bottom: 10px;
+
         div:nth-child(2) {
           color: #02a7f0;
           cursor: pointer;
         }
       }
+
       .details-renw {
         background: #e4ebfc;
         padding: 15px 5px;
@@ -2424,6 +2552,7 @@
     }
   }
 }
+
 .xinz-infs {
   font-size: 18px;
   line-height: 48px;
@@ -2432,6 +2561,7 @@
     margin-left: 10px;
   }
 }
+
 // .leftvlue-jbxx {
 //   margin-bottom: 50px;
 //   font-size: 20px;
@@ -2454,36 +2584,43 @@
   //   margin: 20px;
   padding: 30px;
   background: #ffff;
+
   // border: 1px solid #dcdfe6;
   // -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
   //   0 0 6px 0 rgba(0, 0, 0, 0.04);
   .scriptTopic-dev {
     margin-bottom: 25px;
     font-size: 20px !important;
+
     .dev-text {
       margin-bottom: 10px;
     }
   }
 }
+
 .jic-value {
   font-size: 20px;
   border-top: 1px solid #a7abac;
   padding: 10px;
   margin-bottom: 10px;
+
   .details-jic {
     padding: 10px 15px;
     border: 1px solid #dcdfe6;
     -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
       0 0 6px 0 rgba(0, 0, 0, 0.04);
+
     .details-title {
       display: flex;
       justify-content: space-between;
       margin-bottom: 10px;
+
       div:nth-child(2) {
         color: #02a7f0;
         cursor: pointer;
       }
     }
+
     .details-renw {
       background: #e4ebfc;
       padding: 15px 5px;
@@ -2492,6 +2629,7 @@
     }
   }
 }
+
 ::v-deep .addtopic-input {
   input {
     background: #02a7f0;
@@ -2499,12 +2637,15 @@
     width: 150px;
   }
 }
+
 ::v-deep.el-step.is-vertical .el-step__title {
   font-size: 25px;
 }
+
 ::v-deep.el-row {
   margin-bottom: 10px;
 }
+
 // ::v-deep.el-input--medium {
 //   font-size: 24px !important;
 // }
@@ -2513,14 +2654,17 @@
   position: relative;
   width: 700px;
 }
+
 .el-select__tags {
   font-size: 20px;
   max-width: 888px !important;
 }
+
 ::v-deep.el-radio__inner {
   width: 22px;
   height: 22px;
 }
+
 // ::v-deep.topic-dev.el-radio__label {
 //   font-size: 24px;
 // }
@@ -2529,12 +2673,14 @@
     font-size: 18px;
   }
 }
+
 ::v-deep.el-input.is-disabled .el-input__inner {
   background-color: #f5f7fa;
   border-color: #dfe4ed;
   color: rgb(253, 66, 66);
   cursor: not-allowed;
 }
+
 ::v-deep.el-checkbox-group {
   span {
     font-size: 18px;
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index 4eae84f..3be475e 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -310,6 +310,83 @@
                       <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
                     </el-form-item>
                   </div>
+                  <div
+                    style="
+                      margin-bottom: 20px;
+                      padding: 8px 12px;
+                      background-color: #f0f9ff;
+                      border-left: 4px solid #409eff;
+                    "
+                  >
+                    <p
+                      style="
+                        margin: 0;
+                        color: #606266;
+                        font-size: 13px;
+                        line-height: 1.4;
+                      "
+                    >
+                      <i
+                        class="el-icon-info"
+                        style="color: #409eff; margin-right: 6px"
+                      ></i>
+                      閽堝鍚屼竴鐤剧梾鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+                    </p>
+                  </div>
+                  <!-- 鏂板锛氱柧鐥呭叧鑱斾笅鐨勭瀹ら厤缃紙鍗曢�夛級 -->
+                  <el-row :gutter="20" style="margin-top: 20px">
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+                        <el-select
+                          v-model="diseaseDept"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+                          value-key="deptCode"
+                          @change="handleDiseaseDeptChange"
+                        >
+                          <el-option
+                            v-for="item in belongDepts"
+                            :key="item.deptCode"
+                            :label="item.deptName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseDept" class="selected-info">
+                          宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+                            diseaseDept.deptCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+                        <el-select
+                          v-model="diseaseWard"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+                          value-key="districtCode"
+                          @change="handleDiseaseWardChange"
+                        >
+                          <el-option
+                            v-for="item in belongWards"
+                            :key="item.districtCode"
+                            :label="item.districtName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseWard" class="selected-info">
+                          宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+                            diseaseWard.districtCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
                 </el-row>
                 <el-row v-if="form.appltype == 4">
                   <el-col :span="20"
@@ -736,7 +813,7 @@
                 v-if="item.scriptType == 1"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-radio-group v-model="item.remark">
@@ -758,7 +835,7 @@
                 v-if="item.scriptType == 2"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-checkbox-group v-model="qremark">
@@ -781,7 +858,7 @@
                 v-if="item.scriptType == 4"
               >
                 <div class="dev-text">
-                  {{ item.sort }}銆乕闂瓟]<span>{{ item.scriptContent }}</span>
+                  {{ item.sort }}. [闂瓟]<span>{{ item.scriptContent }}</span>
                 </div>
                 <div class="dev-xx">
                   <el-input
@@ -967,6 +1044,8 @@
       donorchargeList: [],
       baseoperaList: [],
       selectedOrder: [],
+      diseaseDept: null, // 鐤剧梾鍏宠仈涓嬬殑绉戝锛堝瓨鍌ㄦ暣涓璞★級
+      diseaseWard: null, // 鐤剧梾鍏宠仈涓嬬殑鐥呭尯锛堝瓨鍌ㄦ暣涓璞★級
 
       usable: [
         { value: "0", label: "鍙敤" },
@@ -1403,6 +1482,7 @@
       } else if (
         this.form.serviceType == 2 ||
         this.form.serviceType == 18 ||
+        this.form.serviceType == 19 ||
         this.form.serviceType == 3 ||
         this.form.serviceType == 16 ||
         this.form.serviceType == 4
@@ -1548,6 +1628,17 @@
         if (!this.form.type) {
           this.form.type = this.$route.query.type;
         }
+        if (this.form.appltype == 3) {
+          if (this.diseaseDept) {
+            this.form.deptcode = this.diseaseDept.deptCode;
+            this.form.deptname = this.diseaseDept.deptName;
+          }
+
+          if (this.diseaseWard) {
+            this.form.leavehospitaldistrictcode = this.diseaseWard.districtCode;
+            this.form.leavehospitaldistrictname = this.diseaseWard.districtName;
+          }
+        }
         this.form.serviceType = this.serviceType;
         this.form.deptcode = this.deptcodesWards.join(",");
         this.form.leavehospitaldistrictcode =
@@ -1579,7 +1670,17 @@
         // 绗洓姝ワ細鏃犺鎴愬姛鎴栧け璐ワ紝鏈�缁堥兘鍏抽棴鍔犺浇鐘舵��
       }
     },
+    handleDiseaseDeptChange(dept) {
+      console.log(dept, "dept");
 
+      // 褰撻�夋嫨绉戝鏃讹紝瀛樺偍鏁翠釜绉戝瀵硅薄
+      this.diseaseDept = dept;
+    },
+
+    handleDiseaseWardChange(ward) {
+      // 褰撻�夋嫨鐥呭尯鏃讹紝瀛樺偍鏁翠釜鐥呭尯瀵硅薄
+      this.diseaseWard = ward;
+    },
     // ----------------------琛ㄦ牸瀛愮粍浠朵簨浠�
 
     // 閫夋嫨棰勮
@@ -2022,7 +2123,7 @@
           let arr = res.rows;
           arr.forEach((item) => {
             getillnesslist({
-              icdcode: item.icd10code,
+              icdname: item.icd10name,
             }).then((res) => {
               item.icdname = res.rows[0].icdname;
               this.diagglist.push(item);
diff --git a/src/views/patient/questionnaire/index.vue b/src/views/patient/questionnaire/index.vue
index b26d81d..8217a3b 100644
--- a/src/views/patient/questionnaire/index.vue
+++ b/src/views/patient/questionnaire/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -213,39 +213,45 @@
           prop="sendname"
         />
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
-            <div v-if="scope.row.sendstate == 1">
-              <el-tag type="primary" :disable-transitions="false"
-                >琛ㄥ崟宸查鍙�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 2">
-              <el-tag type="primary" :disable-transitions="false"
-                >寰呴殢璁�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 3">
-              <el-tag type="success" :disable-transitions="false"
-                >琛ㄥ崟宸插彂閫�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 4">
-              <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-            </div>
-            <div v-if="scope.row.sendstate == 5">
-              <el-tag type="danger" :disable-transitions="false"
-                >鍙戦�佸け璐�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 6">
-              <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag>
-            </div>
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
           </template>
         </el-table-column>
         <!-- <el-table-column
@@ -772,34 +778,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/patient/shadow/index.vue b/src/views/patient/shadow/index.vue
index f5f9997..5b30122 100644
--- a/src/views/patient/shadow/index.vue
+++ b/src/views/patient/shadow/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -213,39 +213,45 @@
           prop="sendname"
         />
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
-            <div v-if="scope.row.sendstate == 1">
-              <el-tag type="primary" :disable-transitions="false"
-                >琛ㄥ崟宸查鍙�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 2">
-              <el-tag type="primary" :disable-transitions="false"
-                >寰呴殢璁�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 3">
-              <el-tag type="success" :disable-transitions="false"
-                >琛ㄥ崟宸插彂閫�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 4">
-              <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-            </div>
-            <div v-if="scope.row.sendstate == 5">
-              <el-tag type="danger" :disable-transitions="false"
-                >鍙戦�佸け璐�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 6">
-              <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag>
-            </div>
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
           </template>
         </el-table-column>
         <!-- <el-table-column
@@ -772,34 +778,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/patient/subsequent/index.vue b/src/views/patient/subsequent/index.vue
index f99bcb0..77a468f 100644
--- a/src/views/patient/subsequent/index.vue
+++ b/src/views/patient/subsequent/index.vue
@@ -108,8 +108,8 @@
           ></el-cascader>
         </el-form-item>
 
-        <el-form-item label="浠诲姟鐘舵��" prop="status">
-          <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+        <el-form-item label="鏈嶅姟鐘舵��" prop="status">
+          <el-select v-model="topqueryParams.sendstateView" placeholder="璇烽�夋嫨">
             <el-option
               v-for="item in topicoptions"
               :key="item.value"
@@ -228,39 +228,45 @@
           </template>
         </el-table-column>
         <el-table-column
-          label="浠诲姟鐘舵��"
+          label="闅忚鐘舵��"
           align="center"
-          key="sendstate"
-          prop="sendstate"
+          key="sendstateView"
+          prop="sendstateView"
           width="120"
         >
           <template slot-scope="scope">
-            <div v-if="scope.row.sendstate == 1">
-              <el-tag type="primary" :disable-transitions="false"
-                >琛ㄥ崟宸查鍙�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 2">
-              <el-tag type="primary" :disable-transitions="false"
-                >寰呴殢璁�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 3">
-              <el-tag type="success" :disable-transitions="false"
-                >琛ㄥ崟宸插彂閫�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 4">
-              <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
-            </div>
-            <div v-if="scope.row.sendstate == 5">
-              <el-tag type="danger" :disable-transitions="false"
-                >鍙戦�佸け璐�</el-tag
-              >
-            </div>
-            <div v-if="scope.row.sendstate == 6">
-              <el-tag type="danger" :disable-transitions="false">宸插畬鎴�</el-tag>
-            </div>
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="scope.row.remark"
+              placement="top-start"
+            >
+              <div v-if="scope.row.sendstateView == 1">
+                <el-tag type="primary" :disable-transitions="false"
+                  >寰呴殢璁�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 2">
+                <el-tag type="primary" :disable-transitions="false"
+                  >闅忚涓�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 3">
+                <el-tag type="warning" :disable-transitions="false"
+                  >鏈畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 4">
+                <el-tag type="success" :disable-transitions="false"
+                  >宸插畬鎴�</el-tag
+                >
+              </div>
+              <div v-if="scope.row.sendstateView == 5">
+                <el-tag type="danger" :disable-transitions="false"
+                  >鏃犻渶闅忚</el-tag
+                >
+              </div>
+            </el-tooltip>
           </template>
         </el-table-column>
         <!-- <el-table-column
@@ -786,34 +792,30 @@
       propss: { multiple: true },
       options: [],
 
-      topicoptions: [
+       topicoptions: [
         {
-          value: 1,
-          label: "琛ㄥ崟宸查鍙�",
+          value: null,
+          label: "鍏ㄩ儴",
         },
         {
-          value: 2,
+          value: 1,
           label: "寰呴殢璁�",
         },
         {
+          value: 2,
+          label: "闅忚涓�",
+        },
+        {
           value: 3,
-          label: "琛ㄥ崟宸插彂閫�",
+          label: "鏈畬鎴�",
         },
         {
           value: 4,
-          label: "涓嶆墽琛�",
-        },
-         {
-          value: 5,
-          label: "鍙戦�佸け璐�",
-        },
-        {
-          value: 6,
           label: "宸插畬鎴�",
         },
-         {
-          value: 7,
-          label: "瓒呮椂",
+        {
+          value: 5,
+          label: "鏃犻渶闅忚",
         },
       ],
       topicoptionsyj: [
diff --git a/src/views/repositoryai/templateku/configurat/index.vue b/src/views/repositoryai/templateku/configurat/index.vue
index d64c59c..a34f016 100644
--- a/src/views/repositoryai/templateku/configurat/index.vue
+++ b/src/views/repositoryai/templateku/configurat/index.vue
@@ -871,7 +871,7 @@
               v-if="item.valueType == 1"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-radio-group v-model="item.remark">
@@ -891,7 +891,7 @@
               v-if="item.valueType == 2"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-checkbox-group v-model="item.remark">
@@ -1474,7 +1474,7 @@
 import { deptTreeSelect } from "@/api/system/user";
 
 export default {
-  name: "tpuconfigurat",
+  // name: "tpuconfigurat",
   components: { Regular, OptionalForm },
   data() {
     return {
@@ -1764,12 +1764,10 @@
               if (item.deptType == 1) {
                 console.log(this.deptlist, "11");
                 this.deptlist.push(item);
-                console.log("22");
                 this.tempDetpRelevanceslist.push(item.deptCode);
               } else if (item.deptType == 2) {
                 this.hosplist.push(item);
                 this.tempbelongWards.push(item.deptCode);
-                console.log("33");
               }
             });
           }
diff --git a/src/views/repositoryai/templateku/configurat/taskub.vue b/src/views/repositoryai/templateku/configurat/taskub.vue
index 7ad9d52..b6098b3 100644
--- a/src/views/repositoryai/templateku/configurat/taskub.vue
+++ b/src/views/repositoryai/templateku/configurat/taskub.vue
@@ -871,7 +871,7 @@
               v-if="item.valueType == 1"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-radio-group v-model="item.remark">
@@ -891,7 +891,7 @@
               v-if="item.valueType == 2"
             >
               <div class="dev-text">
-                {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+                {{ item.sort }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
               </div>
               <div class="dev-xx">
                 <el-checkbox-group v-model="item.remark">
diff --git a/src/views/repositoryai/templateku/index.vue b/src/views/repositoryai/templateku/index.vue
index bc38fb5..32a155a 100644
--- a/src/views/repositoryai/templateku/index.vue
+++ b/src/views/repositoryai/templateku/index.vue
@@ -424,7 +424,7 @@
             v-if="item.valueType == 1"
           >
             <div class="dev-text">
-              {{ item.targetid }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span>
+              {{ item.targetid }}. [鍗曢�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-radio-group v-model="item.remark">
@@ -444,7 +444,7 @@
             v-if="item.valueType == 2"
           >
             <div class="dev-text">
-              {{ item.targetid }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span>
+              {{ item.targetid }}. [澶氶�塢<span>{{ item.scriptContent }}</span>
             </div>
             <div class="dev-xx">
               <el-checkbox-group v-model="item.remark">
diff --git a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
index 922ff51..b463732 100644
--- a/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/FirstFollowUp.vue
@@ -25,6 +25,26 @@
               show-summary
               :summary-method="getInnerSummaries"
             >
+              <el-table-column label="" align="center" width="96" fixed="left">
+                <template slot="header">
+                  <div
+                    style="
+                      display: flex;
+                      justify-content: space-between;
+                      align-items: center;
+                    "
+                  >
+                    <el-button
+                      type="primary"
+                      size="mini"
+                      icon="el-icon-download"
+                      @click="exportDoctorTable(props.row)"
+                    >
+                      瀵煎嚭
+                    </el-button>
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
               <el-table-column
                 label="绉戝"
@@ -32,31 +52,82 @@
                 prop="deptname"
                 align="center"
               />
-              <el-table-column
-                label="鍑洪櫌浜烘"
-                prop="dischargeCount"
-                align="center"
-              />
+
               <el-table-column
                 label="鍑洪櫌浜烘"
                 align="center"
                 key="dischargeCount"
                 prop="dischargeCount"
-              />
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'dischargeCountInfo',
+                        '鍑洪櫌鎮h�呭垪琛�',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{
+                      scope.row.dischargeCount
+                    }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
               <el-table-column
                 label="鏃犻渶闅忚浜烘"
                 align="center"
                 width="100"
                 key="nonFollowUp"
                 prop="nonFollowUp"
-              />
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'nonFollowUpInfo',
+                        '鏃犻渶闅忚鍒楄〃',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
               <el-table-column
                 label="搴旈殢璁夸汉娆�"
                 align="center"
                 width="100"
                 key="followUpNeeded"
                 prop="followUpNeeded"
-              />
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'followUpNeededInfo',
+                        '搴旈殢璁垮垪琛�',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{
+                      scope.row.followUpNeeded
+                    }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
 
               <el-table-column align="center" label="棣栨鍑洪櫌闅忚">
                 <el-table-column
@@ -64,25 +135,118 @@
                   align="center"
                   key="needFollowUp"
                   prop="needFollowUp"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'needFollowUpInfo',
+                          '闇�闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.needFollowUp
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   label="寰呴殢璁�"
                   align="center"
                   key="pendingFollowUp"
                   prop="pendingFollowUp"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'pendingFollowUpInfo',
+                          '寰呴殢璁垮垪琛�',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.pendingFollowUp
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   label="闅忚鎴愬姛"
                   align="center"
                   key="followUpSuccess"
                   prop="followUpSuccess"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'followUpSuccessInfo',
+                          '闅忚鎴愬姛鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.followUpSuccess
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   label="闅忚澶辫触"
                   align="center"
                   key="followUpFail"
                   prop="followUpFail"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'followUpFailInfo',
+                          '闅忚澶辫触鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.followUpFail
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="鎴愬姛鐜�"
+                  align="center"
+                  width="120"
+                  key="successRate"
+                  prop="successRate"
+                >
+                  <template slot-scope="scope">
+                    <span class="success-rate">{{
+                      calculateSuccessRate(
+                        scope.row.followUpSuccess,
+                        scope.row.needFollowUp,
+                        scope.row.pendingFollowUp
+                      )
+                    }}</span>
+                  </template>
+                </el-table-column>
                 <el-table-column
                   label="闅忚鐜�"
                   align="center"
@@ -111,26 +275,101 @@
                   </template>
                 </el-table-column>
                 <el-table-column
-                 v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
                   label="浜哄伐"
                   align="center"
                   key="manual"
                   prop="manual"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'manualInfo',
+                          '浜哄伐闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.manual }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
                 <el-table-column
-                 v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  label="璇煶"
+                  align="center"
+                  key="voice"
+                  prop="voice"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'voiceInfo',
+                          '璇煶闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.voice }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
                   label="鐭俊"
                   align="center"
                   key="sms"
                   prop="sms"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'smsInfo',
+                          '鐭俊闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.sms }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
                 <el-table-column
-                 v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
                   label="寰俊"
                   align="center"
                   key="weChat"
                   prop="weChat"
-                />
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'weChatInfo',
+                          '寰俊闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.weChat }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
               </el-table-column>
             </el-table>
           </template>
@@ -138,6 +377,7 @@
 
         <!-- 琛ㄦ牸鍒楀畾涔� -->
         <el-table-column
+          v-if="queryParams.statisticaltype == 1"
           label="鍑洪櫌鐥呭尯"
           align="center"
           sortable
@@ -148,6 +388,7 @@
           :sort-method="sortChineseNumber"
         />
         <el-table-column
+          v-if="queryParams.statisticaltype == 2"
           label="绉戝"
           align="center"
           key="deptname"
@@ -159,21 +400,61 @@
           align="center"
           key="dischargeCount"
           prop="dischargeCount"
-        />
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(
+                  scope.row,
+                  'dischargeCountInfo',
+                  '鍑洪櫌鎮h�呭垪琛�'
+                )
+              "
+            >
+              <span class="button-zx">{{ scope.row.dischargeCount }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
         <el-table-column
           label="鏃犻渶闅忚浜烘"
           align="center"
           width="100"
           key="nonFollowUp"
           prop="nonFollowUp"
-        />
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(scope.row, 'nonFollowUpInfo', '鏃犻渶闅忚鍒楄〃')
+              "
+            >
+              <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
         <el-table-column
           label="搴旈殢璁夸汉娆�"
           align="center"
           width="100"
           key="followUpNeeded"
           prop="followUpNeeded"
-        />
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(scope.row, 'followUpNeededInfo', '搴旈殢璁垮垪琛�')
+              "
+            >
+              <span class="button-zx">{{ scope.row.followUpNeeded }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
 
         <el-table-column align="center" label="棣栨鍑洪櫌闅忚">
           <el-table-column
@@ -261,6 +542,23 @@
             </template>
           </el-table-column>
           <el-table-column
+            label="鎴愬姛鐜�"
+            align="center"
+            width="120"
+            key="successRate"
+            prop="successRate"
+          >
+            <template slot-scope="scope">
+              <span class="success-rate">{{
+                calculateSuccessRate(
+                  scope.row.followUpSuccess,
+                  scope.row.needFollowUp,
+                  scope.row.pendingFollowUp
+                )
+              }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
             label="闅忚鐜�"
             align="center"
             width="120"
@@ -288,7 +586,7 @@
             </template>
           </el-table-column>
           <el-table-column
-          v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
             label="浜哄伐"
             align="center"
             key="manual"
@@ -306,7 +604,32 @@
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="sms" prop="sms">
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="璇煶"
+            align="center"
+            key="voice"
+            prop="voice"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(scope.row, 'voiceInfo', '璇煶闅忚鍒楄〃')
+                "
+              >
+                <span class="button-zx">{{ scope.row.voice }}</span>
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="鐭俊"
+            align="center"
+            key="sms"
+            prop="sms"
+          >
             <template slot-scope="scope">
               <el-button
                 size="medium"
@@ -318,7 +641,7 @@
             </template>
           </el-table-column>
           <el-table-column
-          v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
             label="寰俊"
             align="center"
             key="weChat"
@@ -340,7 +663,9 @@
 
         <!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
         <el-table-column
-          v-if="orgname == '涓芥按甯備腑鍖婚櫌'"
+          v-if="
+            orgname == '涓芥按甯備腑鍖婚櫌' || orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'
+          "
           align="center"
           label="闅忚鎯呭喌"
         >
@@ -393,6 +718,8 @@
 </template>
 
 <script>
+import { getSfStatisticsHyperlink } from "@/api/AiCentre/index";
+
 import { getSfStatistics, selectTimelyRate } from "@/api/system/user";
 import ExcelJS from "exceljs";
 import { saveAs } from "file-saver";
@@ -447,7 +774,7 @@
 
       delete params.leavehospitaldistrictcodes.all;
       delete params.deptcodes.all;
-
+      params.rateDay = 7;
       getSfStatistics(params)
         .then((response) => {
           this.tableData = this.customSort(response.data);
@@ -660,6 +987,8 @@
 
       if (!row.doctorStats) {
         this.loading = true;
+        params.rateDay = 7;
+
         getSfStatistics(params).then((res) => {
           this.$set(row, "doctorStats", res.data);
           this.expands = [this.getRowKey(row)];
@@ -669,7 +998,23 @@
         this.expands = [this.getRowKey(row)];
       }
     },
+    // 璁$畻鎴愬姛鐜囩殑鏂规硶
+    calculateSuccessRate(followUpSuccess, needFollowUp, pendingFollowUp) {
+      const success = Number(followUpSuccess) || 0;
+      const need = Number(needFollowUp) || 0;
+      const pending = Number(pendingFollowUp) || 0;
 
+      // 鍒嗘瘝 = 闇�闅忚 - 寰呴殢璁�
+      const denominator = need - pending;
+
+      if (denominator <= 0) {
+        return "0.00%";
+      }
+
+      const rate = (success / denominator) * 100;
+      return rate.toFixed(2) + "%";
+    },
+    // 鍦ㄧ粺璁℃眹鎬绘柟娉曚腑澶勭悊鎴愬姛鐜�
     getSummaries(param) {
       const { columns, data } = param;
       const sums = [];
@@ -679,12 +1024,36 @@
           sums[index] = "鍚堣";
           return;
         }
-        if (index === 1 || index === 2) {
+        if (index === 1) {
           sums[index] = "/";
           return;
         }
 
-        if (column.property === "followUpRate" || column.property === "rate") {
+        if (column.property === "successRate") {
+          // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+          const totalSuccess = data.reduce((sum, item) => {
+            return sum + (Number(item.followUpSuccess) || 0);
+          }, 0);
+
+          const totalNeed = data.reduce((sum, item) => {
+            return sum + (Number(item.needFollowUp) || 0);
+          }, 0);
+
+          const totalPending = data.reduce((sum, item) => {
+            return sum + (Number(item.pendingFollowUp) || 0);
+          }, 0);
+
+          const denominator = totalNeed - totalPending;
+
+          if (denominator > 0) {
+            sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else if (
+          column.property === "followUpRate" ||
+          column.property === "rate"
+        ) {
           const percentageValues = data
             .map((item) => {
               const value = item[column.property];
@@ -741,7 +1110,31 @@
           return;
         }
 
-        if (column.property === "followUpRate" || column.property === "rate") {
+        if (column.property === "successRate") {
+          // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+          const totalSuccess = data.reduce((sum, item) => {
+            return sum + (Number(item.followUpSuccess) || 0);
+          }, 0);
+
+          const totalNeed = data.reduce((sum, item) => {
+            return sum + (Number(item.needFollowUp) || 0);
+          }, 0);
+
+          const totalPending = data.reduce((sum, item) => {
+            return sum + (Number(item.pendingFollowUp) || 0);
+          }, 0);
+
+          const denominator = totalNeed - totalPending;
+
+          if (denominator > 0) {
+            sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else if (
+          column.property === "followUpRate" ||
+          column.property === "rate"
+        ) {
           const percentageValues = data
             .map((item) => {
               const value = item[column.property];
@@ -792,17 +1185,17 @@
       this.ids = selection.map((item) => item.tagid);
     },
 
-    handleViewDetails(row, infoKey, titleSuffix) {
+    handleViewDetails(row, infoKey, titleSuffix, type) {
       const title = `${
         row.leavehospitaldistrictname || row.deptname
       }${titleSuffix}`;
-      this.$emit("view-details", row[infoKey], title);
+      this.$emit("view-details", row, infoKey, title, type);
     },
 
     handleSeeDetails(row) {
       this.$emit("see-details", row);
     },
-
+    // 涓昏〃瀵煎嚭
     async exportTable() {
       try {
         let dateRangeString = "";
@@ -856,7 +1249,219 @@
         return false;
       }
     },
+    // 瀛愯〃瀵煎嚭
+    /** 瀵煎嚭鍖荤敓瀛愯〃 */
+    async exportDoctorTable(row) {
+      try {
+        const areaName =
+          row.leavehospitaldistrictname || row.deptname || "鏈煡鐥呭尯";
 
+        let dateRangeString = "";
+        if (
+          this.queryParams.dateRange &&
+          this.queryParams.dateRange.length === 2
+        ) {
+          const start = this.queryParams.dateRange[0].split(" ")[0];
+          const end = this.queryParams.dateRange[1].split(" ")[0];
+          dateRangeString = `${start}鑷�${end}`;
+        } else {
+          dateRangeString = `${new Date().getMonth() + 1}鏈坄;
+        }
+
+        const fileName = `${areaName}鍖荤敓闅忚鍒楄〃_${dateRangeString}.xlsx`;
+        const sheetName = `${areaName}鍖荤敓闅忚`;
+
+        if (!row.doctorStats || row.doctorStats.length === 0) {
+          this.$message.warning("褰撳墠鐥呭尯鏆傛棤鍖荤敓闅忚鏁版嵁");
+          return;
+        }
+
+        const workbook = new ExcelJS.Workbook();
+        const worksheet = workbook.addWorksheet(sheetName);
+        console.log(111);
+
+        this.buildDoctorExportSheet(worksheet, row.doctorStats, areaName);
+        console.log(222);
+
+        const buffer = await workbook.xlsx.writeBuffer();
+        saveAs(
+          new Blob([buffer], {
+            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+          }),
+          fileName
+        );
+
+        this.$message.success("鍖荤敓闅忚鍒楄〃瀵煎嚭鎴愬姛");
+      } catch (err) {
+        console.error(err);
+        this.$message.error("瀵煎嚭澶辫触");
+      }
+    },
+    buildDoctorExportSheet(worksheet, data, areaName) {
+      const titleStyle = {
+        font: { name: "寰蒋闆呴粦", size: 16, bold: true },
+        alignment: { horizontal: "center", vertical: "middle" },
+      };
+
+      const headerStyle = {
+        font: { name: "寰蒋闆呴粦", size: 11, bold: true },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        },
+        alignment: { horizontal: "center", vertical: "middle", wrapText: true },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      const cellStyle = {
+        font: { name: "瀹嬩綋", size: 10 },
+        alignment: { horizontal: "center", vertical: "middle" },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      // 鏍囬
+      worksheet.mergeCells(1, 1, 1, 10);
+      worksheet.getCell(1, 1).value = `${areaName}鍖荤敓闅忚鍒楄〃`;
+      worksheet.getCell(1, 1).style = titleStyle;
+      worksheet.getRow(1).height = 30;
+
+      // 琛ㄥご
+      const headers = [
+        "鍖荤敓濮撳悕",
+        "绉戝",
+        "鍑洪櫌浜烘",
+        "鏃犻渶闅忚",
+        "搴旈殢璁�",
+        "闇�闅忚",
+        "寰呴殢璁�",
+        "闅忚鎴愬姛",
+        "闅忚澶辫触",
+        "鎴愬姛鐜�", // 鏂板
+        "闅忚鐜�", // 鍘熸潵鍦ㄦ垚鍔熺巼浣嶇疆
+      ];
+
+      const headerRow = worksheet.addRow(headers);
+      headerRow.eachCell((cell) => {
+        cell.style = headerStyle;
+      });
+      worksheet.getRow(2).height = 25;
+
+      // 鏁版嵁
+      data.forEach((item) => {
+        const row = worksheet.addRow([
+          item.drname,
+          item.deptname,
+          item.dischargeCount,
+          item.nonFollowUp,
+          item.followUpNeeded,
+          item.needFollowUp,
+          item.pendingFollowUp,
+          item.followUpSuccess,
+          item.followUpFail,
+          this.calculateSuccessRate(
+            item.followUpSuccess,
+            item.needFollowUp,
+            item.pendingFollowUp
+          ),
+          item.followUpRate,
+        ]);
+        row.eachCell((cell) => {
+          cell.style = cellStyle;
+        });
+      });
+
+      // 灏忚琛�
+      const summaryRow = worksheet.addRow(this.getDoctorExportSummary(data));
+      summaryRow.eachCell((cell) => {
+        cell.font = { bold: true };
+        cell.fill = {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        };
+      });
+
+      // 鍒楀
+      worksheet.columns = [
+        { width: 15 },
+        { width: 15 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 }, // 鎴愬姛鐜�
+        { width: 12 }, // 闅忚鐜�
+      ];
+    },
+    getDoctorExportSummary(data) {
+      const sums = ["灏忚"];
+
+      const keys = [
+        "dischargeCount",
+        "nonFollowUp",
+        "followUpNeeded",
+        "needFollowUp",
+        "pendingFollowUp",
+        "followUpSuccess",
+        "followUpFail",
+      ];
+
+      keys.forEach((key) => {
+        sums.push(data.reduce((t, r) => t + (Number(r[key]) || 0), 0));
+      });
+
+      // 鎴愬姛鐜囷紙骞冲潎鍊硷級
+      const successRates = data
+        .map((item) => {
+          const success = Number(item.followUpSuccess) || 0;
+          const need = Number(item.needFollowUp) || 0;
+          const pending = Number(item.pendingFollowUp) || 0;
+          const denominator = need - pending;
+          if (denominator <= 0) return 0;
+          return success / denominator;
+        })
+        .filter((rate) => !isNaN(rate));
+
+      sums.push(
+        successRates.length
+          ? (
+              (successRates.reduce((a, b) => a + b, 0) / successRates.length) *
+              100
+            ).toFixed(2) + "%"
+          : "0.00%"
+      );
+
+      // 闅忚鐜囷紙骞冲潎鍊硷級
+      const followUpRates = data
+        .map((i) => this.extractPercentageValue(i.followUpRate))
+        .filter(Boolean);
+
+      sums.push(
+        followUpRates.length
+          ? (
+              (followUpRates.reduce((a, b) => a + b, 0) /
+                followUpRates.length) *
+              100
+            ).toFixed(2) + "%"
+          : "0.00%"
+      );
+
+      return sums;
+    },
     buildExportSheet(worksheet, sheetNameSuffix) {
       const titleStyle = {
         font: {
@@ -951,11 +1556,13 @@
         "寰呴殢璁�",
         "闅忚鎴愬姛",
         "闅忚澶辫触",
-        "闅忚鐜�",
-        "鍙婃椂鐜�",
+        "鎴愬姛鐜�", // 鏂板
+        "闅忚鐜�", // 鍘熶綅缃悗绉�
+        "鍙婃椂鐜�", // 鍙婃椂鐜囧悗绉�
         "浜哄伐",
-        "鐭俊",
-        "寰俊",
+        "璇煶", // 淇锛氬簲璇ユ槸璇煶
+        "鐭俊", // 鐭俊
+        "寰俊", // 寰俊
       ];
 
       secondRowHeaders.forEach((header, index) => {
@@ -978,7 +1585,7 @@
       worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘";
       worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�";
 
-      worksheet.mergeCells(2, 7, 2, 15);
+      worksheet.mergeCells(2, 7, 2, 16); // 浠�7鍚堝苟鍒�16锛堝師鏉ユ槸7-15锛�
       worksheet.getCell(2, 7).value = "棣栨鍑洪櫌闅忚";
       worksheet.getCell(2, 7).style = headerStyle;
 
@@ -999,15 +1606,21 @@
             item.pendingFollowUp || 0,
             item.followUpSuccess || 0,
             item.followUpFail || 0,
-            item.followUpRate || "0%",
-            item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%",
+            // 鎴愬姛鐜� - 闇�瑕佸姩鎬佽绠�
+            this.calculateSuccessRate(
+              item.followUpSuccess,
+              item.needFollowUp,
+              item.pendingFollowUp
+            ),
+            item.followUpRate || "0%", // 闅忚鐜�
+            item.rate ? (Number(item.rate) * 100).toFixed(2) + "%" : "0%", // 鍙婃椂鐜�
             item.manual || 0,
-            item.sms || 0,
-            item.weChat || 0,
+            item.voice || 0, // 璇煶
+            item.sms || 0, // 鐭俊
+            item.weChat || 0, // 寰俊
           ],
           rowIndex + 4
         );
-
         dataRow.eachCell((cell) => {
           cell.style = cellStyle;
         });
@@ -1037,11 +1650,13 @@
         { width: 10 },
         { width: 10 },
         { width: 10 },
-        { width: 12 },
-        { width: 12 },
-        { width: 8 },
-        { width: 8 },
-        { width: 8 },
+        { width: 12 }, // 鎴愬姛鐜�
+        { width: 12 }, // 闅忚鐜�
+        { width: 12 }, // 鍙婃椂鐜�
+        { width: 8 }, // 浜哄伐
+        { width: 8 }, // 璇煶
+        { width: 8 }, // 鐭俊
+        { width: 8 }, // 寰俊
       ];
     },
 
@@ -1050,18 +1665,20 @@
         "鍚堣",
         "/",
         "/",
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        0,
-        "0%",
-        "0%",
-        0,
-        0,
-        0,
+        0, // 3: dischargeCount
+        0, // 4: nonFollowUp
+        0, // 5: followUpNeeded
+        0, // 6: needFollowUp
+        0, // 7: pendingFollowUp
+        0, // 8: followUpSuccess
+        0, // 9: followUpFail
+        "0%", // 10: 鎴愬姛鐜�
+        "0%", // 11: 闅忚鐜�
+        "0%", // 12: 鍙婃椂鐜�
+        0, // 13: manual
+        0, // 14: voice
+        0, // 15: sms
+        0, // 16: weChat
       ];
 
       this.tableData.forEach((item) => {
@@ -1072,42 +1689,51 @@
         summaries[7] += Number(item.pendingFollowUp) || 0;
         summaries[8] += Number(item.followUpSuccess) || 0;
         summaries[9] += Number(item.followUpFail) || 0;
-        summaries[12] += Number(item.manual) || 0;
-        summaries[13] += Number(item.sms) || 0;
-        summaries[14] += Number(item.weChat) || 0;
+        summaries[13] += Number(item.manual) || 0;
+        summaries[14] += Number(item.voice) || 0;
+        summaries[15] += Number(item.sms) || 0;
+        summaries[16] += Number(item.weChat) || 0;
       });
 
+      // 鎴愬姛鐜囪绠�
+      const totalSuccess = summaries[8]; // followUpSuccess鐨勬�诲拰
+      const totalNeed = summaries[6]; // needFollowUp鐨勬�诲拰
+      const totalPending = summaries[7]; // pendingFollowUp鐨勬�诲拰
+      const denominator = totalNeed - totalPending;
+
+      if (denominator > 0) {
+        summaries[10] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+      } else {
+        summaries[10] = "0.00%";
+      }
+
+      // 闅忚鐜囪绠�
       const followUpRateValues = this.tableData
         .map((item) => this.extractPercentageValue(item.followUpRate))
-        .filter((value) => value !== null);
-
-      const rateValues = this.tableData
-        .map((item) => this.extractPercentageValue(item.rate))
         .filter((value) => value !== null);
 
       if (followUpRateValues.length > 0) {
         const avgFollowUpRate =
           followUpRateValues.reduce((sum, val) => sum + val, 0) /
           followUpRateValues.length;
-        summaries[10] = (avgFollowUpRate * 100).toFixed(2) + "%";
+        summaries[11] = (avgFollowUpRate * 100).toFixed(2) + "%";
       }
+
+      // 鍙婃椂鐜囪绠�
+      const rateValues = this.tableData
+        .map((item) => this.extractPercentageValue(item.rate))
+        .filter((value) => value !== null);
 
       if (rateValues.length > 0) {
         const avgRate =
           rateValues.reduce((sum, val) => sum + val, 0) / rateValues.length;
-        summaries[11] = (avgRate * 100).toFixed(2) + "%";
+        summaries[12] = (avgRate * 100).toFixed(2) + "%";
       }
 
-      summaries[3] = this.formatNumber(summaries[3]);
-      summaries[4] = this.formatNumber(summaries[4]);
-      summaries[5] = this.formatNumber(summaries[5]);
-      summaries[6] = this.formatNumber(summaries[6]);
-      summaries[7] = this.formatNumber(summaries[7]);
-      summaries[8] = this.formatNumber(summaries[8]);
-      summaries[9] = this.formatNumber(summaries[9]);
-      summaries[12] = this.formatNumber(summaries[12]);
-      summaries[13] = this.formatNumber(summaries[13]);
-      summaries[14] = this.formatNumber(summaries[14]);
+      // 鏍煎紡鍖栨暟瀛�
+      [3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16].forEach((index) => {
+        summaries[index] = this.formatNumber(summaries[index]);
+      });
 
       return summaries;
     },
diff --git a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
index 4b03076..c3a6bae 100644
--- a/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
+++ b/src/views/sfstatistics/percentage/components/SecondFollowUp.vue
@@ -25,21 +25,329 @@
               show-summary
               :summary-method="getInnerSummaries"
             >
+              <el-table-column label="" align="center" width="96" fixed="right">
+                <template slot="header">
+                  <div
+                    style="
+                      display: flex;
+                      justify-content: space-between;
+                      align-items: center;
+                    "
+                  >
+                    <el-button
+                      type="primary"
+                      size="mini"
+                      icon="el-icon-download"
+                      @click="exportDoctorTable(props.row)"
+                    >
+                      瀵煎嚭
+                    </el-button>
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column label="鍖荤敓濮撳悕" prop="drname" align="center" />
-              <el-table-column label="绉戝" width="120" prop="deptname" align="center" />
-              <el-table-column label="鍑洪櫌浜烘" prop="dischargeCount" align="center" />
-              <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp" />
-              <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded" prop="followUpNeeded" />
+              <el-table-column
+                label="绉戝"
+                width="120"
+                prop="deptname"
+                align="center"
+              />
+              <el-table-column
+                label="鍑洪櫌浜烘"
+                prop="dischargeCount"
+                align="center"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'dischargeCountInfo',
+                        '鍑洪櫌鎮h�呭垪琛�',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{
+                      scope.row.dischargeCount
+                    }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="鏃犻渶闅忚浜烘"
+                align="center"
+                width="100"
+                key="nonFollowUp"
+                prop="nonFollowUp"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'nonFollowUpInfo',
+                        '鏃犻渶闅忚鍒楄〃',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="搴旈殢璁夸汉娆�"
+                align="center"
+                width="100"
+                key="followUpNeeded"
+                prop="followUpNeeded"
+              >
+                <template slot-scope="scope">
+                  <el-button
+                    size="medium"
+                    type="text"
+                    @click="
+                      handleViewDetails(
+                        scope.row,
+                        'followUpNeededInfo',
+                        '搴旈殢璁垮垪琛�',
+                        '1'
+                      )
+                    "
+                  >
+                    <span class="button-zx">{{
+                      scope.row.followUpNeeded
+                    }}</span>
+                  </el-button>
+                </template>
+              </el-table-column>
 
               <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-                <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain" prop="needFollowUpAgain" />
-                <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain" prop="pendingFollowUpAgain" />
-                <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain" prop="followUpSuccessAgain" />
-                <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain" prop="followUpFailAgain" />
-                <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain" prop="followUpRateAgain" />
-                <el-table-column  v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="浜哄伐" align="center" key="manualAgain" prop="manualAgain" />
-                <el-table-column  v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="smsAgain" prop="smsAgain" />
-                <el-table-column  v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="寰俊" align="center" key="weChatAgain" prop="weChatAgain" />
+                <el-table-column
+                  label="闇�闅忚"
+                  align="center"
+                  key="needFollowUpAgain"
+                  prop="needFollowUpAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'needFollowUpAgainInfo',
+                          '闇�闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.needFollowUpAgain
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="寰呴殢璁�"
+                  align="center"
+                  key="pendingFollowUpAgain"
+                  prop="pendingFollowUpAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'pendingFollowUpAgainInfo',
+                          '寰呴殢璁垮垪琛�',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.pendingFollowUpAgain
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="闅忚鎴愬姛"
+                  align="center"
+                  key="followUpSuccessAgain"
+                  prop="followUpSuccessAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'followUpSuccessAgainInfo',
+                          '闅忚鎴愬姛鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.followUpSuccessAgain
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="闅忚澶辫触"
+                  align="center"
+                  key="followUpFailAgain"
+                  prop="followUpFailAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'followUpFailAgainInfo',
+                          '闅忚澶辫触鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{
+                        scope.row.followUpFailAgain
+                      }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="鎴愬姛鐜�"
+                  align="center"
+                  width="120"
+                  key="successRateAgain"
+                  prop="successRateAgain"
+                >
+                  <template slot-scope="scope">
+                    <span class="success-rate">{{
+                      calculateSuccessRate(
+                        scope.row.followUpSuccessAgain,
+                        scope.row.needFollowUpAgain,
+                        scope.row.pendingFollowUpAgain
+                      )
+                    }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  label="闅忚鐜�"
+                  align="center"
+                  width="120"
+                  key="followUpRateAgain"
+                  prop="followUpRateAgain"
+                />
+                <el-table-column
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  label="浜哄伐"
+                  align="center"
+                  key="manualAgain"
+                  prop="manualAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'manualAgainInfo',
+                          '浜哄伐闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.manualAgain }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  label="璇煶"
+                  align="center"
+                  key="voiceAgain"
+                  prop="voiceAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'voiceAgainInfo',
+                          '璇煶闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.voiceAgain }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  label="鐭俊"
+                  align="center"
+                  key="smsAgain"
+                  prop="smsAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'smsAgainInfo',
+                          '鐭俊闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.smsAgain }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+                  label="寰俊"
+                  align="center"
+                  key="weChatAgain"
+                  prop="weChatAgain"
+                >
+                  <template slot-scope="scope">
+                    <el-button
+                      size="medium"
+                      type="text"
+                      @click="
+                        handleViewDetails(
+                          scope.row,
+                          'weChatAgainInfo',
+                          '寰俊闅忚鍒楄〃',
+                          '1'
+                        )
+                      "
+                    >
+                      <span class="button-zx">{{ scope.row.weChatAgain }}</span>
+                    </el-button>
+                  </template>
+                </el-table-column>
               </el-table-column>
             </el-table>
           </template>
@@ -47,6 +355,7 @@
 
         <!-- 琛ㄦ牸鍒楀畾涔� -->
         <el-table-column
+          v-if="queryParams.statisticaltype == 1"
           label="鍑洪櫌鐥呭尯"
           align="center"
           sortable
@@ -56,58 +365,276 @@
           :show-overflow-tooltip="true"
           :sort-method="sortChineseNumber"
         />
-        <el-table-column label="绉戝" align="center" key="deptname" prop="deptname" :show-overflow-tooltip="true" />
-        <el-table-column label="鍑洪櫌浜烘" align="center" key="dischargeCount" prop="dischargeCount" />
-        <el-table-column label="鏃犻渶闅忚浜烘" align="center" width="100" key="nonFollowUp" prop="nonFollowUp" />
-        <el-table-column label="搴旈殢璁夸汉娆�" align="center" width="100" key="followUpNeeded" prop="followUpNeeded" />
+        <el-table-column
+          v-if="queryParams.statisticaltype == 2"
+          label="绉戝"
+          align="center"
+          key="deptname"
+          prop="deptname"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="鍑洪櫌浜烘"
+          align="center"
+          key="dischargeCount"
+          prop="dischargeCount"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(
+                  scope.row,
+                  'dischargeCountInfo',
+                  '鍑洪櫌鎮h�呭垪琛�'
+                )
+              "
+            >
+              <span class="button-zx">{{ scope.row.dischargeCount }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="鏃犻渶闅忚浜烘"
+          align="center"
+          width="100"
+          key="nonFollowUp"
+          prop="nonFollowUp"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(scope.row, 'nonFollowUpInfo', '鏃犻渶闅忚鍒楄〃')
+              "
+            >
+              <span class="button-zx">{{ scope.row.nonFollowUp }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="搴旈殢璁夸汉娆�"
+          align="center"
+          width="100"
+          key="followUpNeeded"
+          prop="followUpNeeded"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="medium"
+              type="text"
+              @click="
+                handleViewDetails(scope.row, 'followUpNeededInfo', '搴旈殢璁垮垪琛�')
+              "
+            >
+              <span class="button-zx">{{ scope.row.followUpNeeded }}</span>
+            </el-button>
+          </template>
+        </el-table-column>
 
         <el-table-column align="center" label="鍐嶆鍑洪櫌闅忚">
-          <el-table-column label="闇�闅忚" align="center" key="needFollowUpAgain" prop="needFollowUpAgain">
+          <el-table-column
+            label="闇�闅忚"
+            align="center"
+            key="needFollowUpAgain"
+            prop="needFollowUpAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'needFollowUpAgainInfo', '鍐嶆闅忚闇�闅忚鍒楄〃')">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'needFollowUpAgainInfo',
+                    '鍐嶆闅忚闇�闅忚鍒楄〃'
+                  )
+                "
+              >
                 <span class="button-zx">{{ scope.row.needFollowUpAgain }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column label="寰呴殢璁�" align="center" key="pendingFollowUpAgain" prop="pendingFollowUpAgain">
+          <el-table-column
+            label="寰呴殢璁�"
+            align="center"
+            key="pendingFollowUpAgain"
+            prop="pendingFollowUpAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'pendingFollowUpAgainInfo', '鍐嶆闅忚寰呴殢璁垮垪琛�')">
-                <span class="button-zx">{{ scope.row.pendingFollowUpAgain }}</span>
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'pendingFollowUpAgainInfo',
+                    '鍐嶆闅忚寰呴殢璁垮垪琛�'
+                  )
+                "
+              >
+                <span class="button-zx">{{
+                  scope.row.pendingFollowUpAgain
+                }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column label="闅忚鎴愬姛" align="center" key="followUpSuccessAgain" prop="followUpSuccessAgain">
+          <el-table-column
+            label="闅忚鎴愬姛"
+            align="center"
+            key="followUpSuccessAgain"
+            prop="followUpSuccessAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpSuccessAgainInfo', '鍐嶆闅忚闅忚鎴愬姛鍒楄〃')">
-                <span class="button-zx">{{ scope.row.followUpSuccessAgain }}</span>
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'followUpSuccessAgainInfo',
+                    '鍐嶆闅忚闅忚鎴愬姛鍒楄〃'
+                  )
+                "
+              >
+                <span class="button-zx">{{
+                  scope.row.followUpSuccessAgain
+                }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column label="闅忚澶辫触" align="center" key="followUpFailAgain" prop="followUpFailAgain">
+          <el-table-column
+            label="闅忚澶辫触"
+            align="center"
+            key="followUpFailAgain"
+            prop="followUpFailAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'followUpFailAgainInfo', '鍐嶆闅忚闅忚澶辫触鍒楄〃')">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'followUpFailAgainInfo',
+                    '鍐嶆闅忚闅忚澶辫触鍒楄〃'
+                  )
+                "
+              >
                 <span class="button-zx">{{ scope.row.followUpFailAgain }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column label="闅忚鐜�" align="center" width="120" key="followUpRateAgain" prop="followUpRateAgain" />
-          <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="浜哄伐" align="center" key="manualAgain" prop="manualAgain">
+          <el-table-column
+            label="鎴愬姛鐜�"
+            align="center"
+            width="120"
+            key="successRateAgain"
+            prop="successRateAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'manualAgainInfo', '鍐嶆闅忚浜哄伐闅忚鍒楄〃')">
+              <span class="success-rate">{{
+                calculateSuccessRate(
+                  scope.row.followUpSuccessAgain,
+                  scope.row.needFollowUpAgain,
+                  scope.row.pendingFollowUpAgain
+                )
+              }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="闅忚鐜�"
+            align="center"
+            width="120"
+            key="followUpRateAgain"
+            prop="followUpRateAgain"
+          />
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="浜哄伐"
+            align="center"
+            key="manualAgain"
+            prop="manualAgain"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'manualAgainInfo',
+                    '鍐嶆闅忚浜哄伐闅忚鍒楄〃'
+                  )
+                "
+              >
                 <span class="button-zx">{{ scope.row.manualAgain }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="鐭俊" align="center" key="smsAgain" prop="smsAgain">
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="璇煶"
+            align="center"
+            key="voiceAgain"
+            prop="voiceAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'smsAgainInfo', '鍐嶆闅忚鐭俊闅忚鍒楄〃')">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(scope.row, 'voiceAgainInfo', '璇煶闅忚鍒楄〃')
+                "
+              >
+                <span class="button-zx">{{ scope.row.voiceAgain }}</span>
+              </el-button>
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="鐭俊"
+            align="center"
+            key="smsAgain"
+            prop="smsAgain"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'smsAgainInfo',
+                    '鍐嶆闅忚鐭俊闅忚鍒楄〃'
+                  )
+                "
+              >
                 <span class="button-zx">{{ scope.row.smsAgain }}</span>
               </el-button>
             </template>
           </el-table-column>
-          <el-table-column v-if="orgname != '涓芥按甯備腑鍖婚櫌'" label="寰俊" align="center" key="weChatAgain" prop="weChatAgain">
+          <el-table-column
+            v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+            label="寰俊"
+            align="center"
+            key="weChatAgain"
+            prop="weChatAgain"
+          >
             <template slot-scope="scope">
-              <el-button size="medium" type="text" @click="handleViewDetails(scope.row, 'weChatAgainInfo', '鍐嶆闅忚寰俊闅忚鍒楄〃')">
+              <el-button
+                size="medium"
+                type="text"
+                @click="
+                  handleViewDetails(
+                    scope.row,
+                    'weChatAgainInfo',
+                    '鍐嶆闅忚寰俊闅忚鍒楄〃'
+                  )
+                "
+              >
                 <span class="button-zx">{{ scope.row.weChatAgain }}</span>
               </el-button>
             </template>
@@ -124,163 +651,251 @@
 import { saveAs } from "file-saver";
 
 export default {
-  name: 'SecondFollowUp',
+  name: "SecondFollowUp",
   props: {
     queryParams: {
       type: Object,
-      required: true
+      required: true,
     },
     flatArrayhospit: {
       type: Array,
-      default: () => []
+      default: () => [],
     },
     flatArraydept: {
       type: Array,
-      default: () => []
+      default: () => [],
     },
     options: {
       type: Array,
-      default: () => []
+      default: () => [],
     },
     orgname: {
       type: String,
-      default: ''
-    }
+      default: "",
+    },
   },
   data() {
     return {
       tableData: [],
       loading: false,
       expands: [],
-      ids: []
-    }
+      ids: [],
+    };
   },
   methods: {
     loadData() {
-      this.loading = true
+      this.loading = true;
       const params = {
         ...this.queryParams,
         visitCount: 2,
-        leavehospitaldistrictcodes: this.queryParams.leavehospitaldistrictcodes.includes("all")
-          ? this.getAllWardCodes()
-          : this.queryParams.leavehospitaldistrictcodes,
+        leavehospitaldistrictcodes:
+          this.queryParams.leavehospitaldistrictcodes.includes("all")
+            ? this.getAllWardCodes()
+            : this.queryParams.leavehospitaldistrictcodes,
         deptcodes: this.queryParams.deptcodes.includes("all")
           ? this.getAllDeptCodes()
-          : this.queryParams.deptcodes
-      }
+          : this.queryParams.deptcodes,
+      };
 
-      delete params.leavehospitaldistrictcodes.all
-      delete params.deptcodes.all
+      delete params.leavehospitaldistrictcodes.all;
+      delete params.deptcodes.all;
+      params.rateDay = 7;
 
       getSfStatistics(params)
-        .then(response => {
-          this.tableData = this.customSort(response.data)
+        .then((response) => {
+          this.tableData = this.customSort(response.data);
         })
-        .catch(error => {
-          console.error("鑾峰彇鍐嶆闅忚鏁版嵁澶辫触:", error)
-          this.$message.error("鑾峰彇鍐嶆闅忚鏁版嵁澶辫触")
+        .catch((error) => {
+          console.error("鑾峰彇鍐嶆闅忚鏁版嵁澶辫触:", error);
+          this.$message.error("鑾峰彇鍐嶆闅忚鏁版嵁澶辫触");
         })
         .finally(() => {
-          this.loading = false
-        })
+          this.loading = false;
+        });
     },
 
     getAllWardCodes() {
       return this.flatArrayhospit
-        .filter(item => item.value !== 'all')
-        .map(item => item.value)
+        .filter((item) => item.value !== "all")
+        .map((item) => item.value);
     },
 
     getAllDeptCodes() {
       return this.flatArraydept
-        .filter(item => item.value !== 'all')
-        .map(item => item.value)
+        .filter((item) => item.value !== "all")
+        .map((item) => item.value);
     },
 
     customSort(data) {
       const order = [
-        "涓�","浜�","涓�","鍥�","浜�","鍏�","涓�","鍏�","涔�","鍗�",
-        "鍗佷竴","鍗佷簩","鍗佷笁","鍗佸洓","鍗佷簲","鍗佸叚","鍗佷竷","鍗佸叓","鍗佷節","浜屽崄",
-        "浜屽崄涓�","浜屽崄浜�","浜屽崄涓�","浜屽崄鍥�","浜屽崄浜�","浜屽崄鍏�","浜屽崄涓�","浜屽崄鍏�","浜屽崄涔�","涓夊崄",
-        "涓夊崄涓�","涓夊崄浜�","涓夊崄涓�","涓夊崄鍥�","涓夊崄浜�","涓夊崄鍏�","涓夊崄涓�","涓夊崄鍏�","涓夊崄涔�","鍥涘崄",
-        "鍥涘崄涓�","鍥涘崄浜�","鍥涘崄涓�","鍥涘崄鍥�","鍥涘崄浜�"
-      ]
+        "涓�",
+        "浜�",
+        "涓�",
+        "鍥�",
+        "浜�",
+        "鍏�",
+        "涓�",
+        "鍏�",
+        "涔�",
+        "鍗�",
+        "鍗佷竴",
+        "鍗佷簩",
+        "鍗佷笁",
+        "鍗佸洓",
+        "鍗佷簲",
+        "鍗佸叚",
+        "鍗佷竷",
+        "鍗佸叓",
+        "鍗佷節",
+        "浜屽崄",
+        "浜屽崄涓�",
+        "浜屽崄浜�",
+        "浜屽崄涓�",
+        "浜屽崄鍥�",
+        "浜屽崄浜�",
+        "浜屽崄鍏�",
+        "浜屽崄涓�",
+        "浜屽崄鍏�",
+        "浜屽崄涔�",
+        "涓夊崄",
+        "涓夊崄涓�",
+        "涓夊崄浜�",
+        "涓夊崄涓�",
+        "涓夊崄鍥�",
+        "涓夊崄浜�",
+        "涓夊崄鍏�",
+        "涓夊崄涓�",
+        "涓夊崄鍏�",
+        "涓夊崄涔�",
+        "鍥涘崄",
+        "鍥涘崄涓�",
+        "鍥涘崄浜�",
+        "鍥涘崄涓�",
+        "鍥涘崄鍥�",
+        "鍥涘崄浜�",
+      ];
 
       return data.sort((a, b) => {
         const getIndex = (name) => {
-          if (!name || typeof name !== "string") return -1
-          const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/)
+          if (!name || typeof name !== "string") return -1;
+          const chineseMatch = name.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
           if (chineseMatch && chineseMatch[1]) {
-            return order.indexOf(chineseMatch[1])
+            return order.indexOf(chineseMatch[1]);
           }
-          const arabicMatch = name.match(/^(\d+)/)
+          const arabicMatch = name.match(/^(\d+)/);
           if (arabicMatch && arabicMatch[1]) {
-            const num = parseInt(arabicMatch[1], 10)
+            const num = parseInt(arabicMatch[1], 10);
             if (num >= 1 && num <= 45) {
-              return num - 1
+              return num - 1;
             }
           }
-          return -1
-        }
+          return -1;
+        };
 
-        const indexA = getIndex(a.leavehospitaldistrictname)
-        const indexB = getIndex(b.leavehospitaldistrictname)
+        const indexA = getIndex(a.leavehospitaldistrictname);
+        const indexB = getIndex(b.leavehospitaldistrictname);
 
         if (indexA === -1 && indexB === -1) {
-          return (a.leavehospitaldistrictname || "").localeCompare(b.leavehospitaldistrictname || "")
+          return (a.leavehospitaldistrictname || "").localeCompare(
+            b.leavehospitaldistrictname || ""
+          );
         }
-        if (indexA === -1) return 1
-        if (indexB === -1) return -1
-        return indexA - indexB
-      })
+        if (indexA === -1) return 1;
+        if (indexB === -1) return -1;
+        return indexA - indexB;
+      });
     },
 
     sortChineseNumber(aRow, bRow) {
-      const a = aRow.leavehospitaldistrictname
-      const b = bRow.leavehospitaldistrictname
+      const a = aRow.leavehospitaldistrictname;
+      const b = bRow.leavehospitaldistrictname;
 
       const chineseNumMap = {
-        涓�:1,浜�:2,涓�:3,鍥�:4,浜�:5,鍏�:6,涓�:7,鍏�:8,涔�:9,鍗�:10,
-        鍗佷竴:11,鍗佷簩:12,鍗佷笁:13,鍗佸洓:14,鍗佷簲:15,鍗佸叚:16,鍗佷竷:17,鍗佸叓:18,鍗佷節:19,浜屽崄:20,
-        浜屽崄涓�:21,浜屽崄浜�:22,浜屽崄涓�:23,浜屽崄鍥�:24,浜屽崄浜�:25,浜屽崄鍏�:26,浜屽崄涓�:27,浜屽崄鍏�:28,浜屽崄涔�:29,涓夊崄:30,
-        涓夊崄涓�:31,涓夊崄浜�:32,涓夊崄涓�:33,涓夊崄鍥�:34,涓夊崄浜�:35,涓夊崄鍏�:36,涓夊崄涓�:37,涓夊崄鍏�:38,涓夊崄涔�:39,鍥涘崄:40,
-        鍥涘崄涓�:41,鍥涘崄浜�:42,鍥涘崄涓�:43,鍥涘崄鍥�:44,鍥涘崄浜�:45
-      }
+        涓�: 1,
+        浜�: 2,
+        涓�: 3,
+        鍥�: 4,
+        浜�: 5,
+        鍏�: 6,
+        涓�: 7,
+        鍏�: 8,
+        涔�: 9,
+        鍗�: 10,
+        鍗佷竴: 11,
+        鍗佷簩: 12,
+        鍗佷笁: 13,
+        鍗佸洓: 14,
+        鍗佷簲: 15,
+        鍗佸叚: 16,
+        鍗佷竷: 17,
+        鍗佸叓: 18,
+        鍗佷節: 19,
+        浜屽崄: 20,
+        浜屽崄涓�: 21,
+        浜屽崄浜�: 22,
+        浜屽崄涓�: 23,
+        浜屽崄鍥�: 24,
+        浜屽崄浜�: 25,
+        浜屽崄鍏�: 26,
+        浜屽崄涓�: 27,
+        浜屽崄鍏�: 28,
+        浜屽崄涔�: 29,
+        涓夊崄: 30,
+        涓夊崄涓�: 31,
+        涓夊崄浜�: 32,
+        涓夊崄涓�: 33,
+        涓夊崄鍥�: 34,
+        涓夊崄浜�: 35,
+        涓夊崄鍏�: 36,
+        涓夊崄涓�: 37,
+        涓夊崄鍏�: 38,
+        涓夊崄涔�: 39,
+        鍥涘崄: 40,
+        鍥涘崄涓�: 41,
+        鍥涘崄浜�: 42,
+        鍥涘崄涓�: 43,
+        鍥涘崄鍥�: 44,
+        鍥涘崄浜�: 45,
+      };
 
       const getNumberFromText = (text) => {
-        if (!text || typeof text !== "string") return -1
-        const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/)
+        if (!text || typeof text !== "string") return -1;
+        const match = text.match(/^([涓�浜屼笁鍥涗簲鍏竷鍏節鍗乚+)/);
         if (match && match[1]) {
-          const chineseNum = match[1]
-          return chineseNumMap[chineseNum] !== undefined ? chineseNumMap[chineseNum] : -1
+          const chineseNum = match[1];
+          return chineseNumMap[chineseNum] !== undefined
+            ? chineseNumMap[chineseNum]
+            : -1;
         }
-        const arabicMatch = text.match(/^(\d+)/)
+        const arabicMatch = text.match(/^(\d+)/);
         if (arabicMatch && arabicMatch[1]) {
-          const num = parseInt(arabicMatch[1], 10)
-          return num >= 1 && num <= 45 ? num : -1
+          const num = parseInt(arabicMatch[1], 10);
+          return num >= 1 && num <= 45 ? num : -1;
         }
-        return -1
-      }
+        return -1;
+      };
 
-      const numA = getNumberFromText(a)
-      const numB = getNumberFromText(b)
+      const numA = getNumberFromText(a);
+      const numB = getNumberFromText(b);
 
       if (numA === -1 && numB === -1) {
-        return (a || "").localeCompare(b || "")
+        return (a || "").localeCompare(b || "");
       }
-      if (numA === -1) return 1
-      if (numB === -1) return -1
-      return numA - numB
+      if (numA === -1) return 1;
+      if (numB === -1) return -1;
+      return numA - numB;
     },
 
     getRowKey(row) {
-      return row.statisticaltype === 1 ? row.leavehospitaldistrictcode : row.deptcode
+      return row.statisticaltype === 1
+        ? row.leavehospitaldistrictcode
+        : row.deptcode;
     },
 
     handleRowClick(row) {
       if (this.expands.includes(this.getRowKey(row))) {
-        this.expands = []
-        return
+        this.expands = [];
+        return;
       }
 
       const params = {
@@ -290,222 +905,521 @@
           : this.queryParams.deptcodes,
         leavehospitaldistrictcodes: [row.leavehospitaldistrictcode],
         drcode: "1",
-        visitCount: 2
-      }
+        visitCount: 2,
+      };
 
-      delete params.leavehospitaldistrictcodes.all
-      delete params.deptcodes.all
+      delete params.leavehospitaldistrictcodes.all;
+      delete params.deptcodes.all;
 
       if (!row.doctorStats) {
-        this.loading = true
+        this.loading = true;
+        params.rateDay = 7;
+
         getSfStatistics(params).then((res) => {
-          this.$set(row, "doctorStats", res.data)
-          this.expands = [this.getRowKey(row)]
-          this.loading = false
-        })
+          this.$set(row, "doctorStats", res.data);
+          this.expands = [this.getRowKey(row)];
+          this.loading = false;
+        });
       } else {
-        this.expands = [this.getRowKey(row)]
+        this.expands = [this.getRowKey(row)];
       }
     },
 
+    // 鍦ㄧ粺璁℃眹鎬绘柟娉曚腑澶勭悊鎴愬姛鐜�
     getSummaries(param) {
-      const { columns, data } = param
-      const sums = []
+      const { columns, data } = param;
+      const sums = [];
 
       columns.forEach((column, index) => {
         if (index === 0) {
-          sums[index] = "鍚堣"
-          return
+          sums[index] = "鍚堣";
+          return;
         }
-        if (index === 1 || index === 2) {
-          sums[index] = "/"
-          return
+        if (index === 1) {
+          sums[index] = "/";
+          return;
         }
 
-        if (column.property === "followUpRateAgain") {
+        if (column.property === "successRateAgain") {
+          // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+          const totalSuccess = data.reduce((sum, item) => {
+            return sum + (Number(item.followUpSuccessAgain) || 0);
+          }, 0);
+
+          const totalNeed = data.reduce((sum, item) => {
+            return sum + (Number(item.needFollowUpAgain) || 0);
+          }, 0);
+
+          const totalPending = data.reduce((sum, item) => {
+            return sum + (Number(item.pendingFollowUpAgain) || 0);
+          }, 0);
+
+          const denominator = totalNeed - totalPending;
+
+          if (denominator > 0) {
+            sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else if (column.property === "followUpRateAgain") {
           const percentageValues = data
             .map((item) => {
-              const value = item[column.property]
-              if (!value || value === "-" || value === "0%") return null
+              const value = item[column.property];
+              if (!value || value === "-" || value === "0%") return null;
               if (typeof value === "string" && value.includes("%")) {
-                const numValue = parseFloat(value.replace("%", "")) / 100
-                return isNaN(numValue) ? null : numValue
+                const numValue = parseFloat(value.replace("%", "")) / 100;
+                return isNaN(numValue) ? null : numValue;
               } else {
-                const numValue = parseFloat(value)
-                return isNaN(numValue) ? null : numValue
+                const numValue = parseFloat(value);
+                return isNaN(numValue) ? null : numValue;
               }
             })
-            .filter((value) => value !== null && value !== 0)
+            .filter((value) => value !== null && value !== 0);
 
           if (percentageValues.length > 0) {
-            const average = percentageValues.reduce((sum, value) => sum + value, 0) / percentageValues.length
-            sums[index] = (average * 100).toFixed(2) + "%"
+            const average =
+              percentageValues.reduce((sum, value) => sum + value, 0) /
+              percentageValues.length;
+            sums[index] = (average * 100).toFixed(2) + "%";
           } else {
-            sums[index] = "0.00%"
+            sums[index] = "0.00%";
           }
         } else {
           const values = data.map((item) => {
-            const value = item[column.property]
-            if (value === "-" || value === "" || value === null) return 0
-            return Number(value) || 0
-          })
+            const value = item[column.property];
+            if (value === "-" || value === "" || value === null) return 0;
+            return Number(value) || 0;
+          });
 
           if (!values.every((value) => isNaN(value))) {
-            sums[index] = values.reduce((prev, curr) => prev + curr, 0)
-            sums[index] = this.formatNumber(sums[index])
+            sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+            sums[index] = this.formatNumber(sums[index]);
           } else {
-            sums[index] = "-"
+            sums[index] = "-";
           }
         }
-      })
+      });
 
-      return sums
+      return sums;
     },
 
     getInnerSummaries(param) {
-      const { columns, data } = param
-      const sums = []
+      const { columns, data } = param;
+      const sums = [];
 
       columns.forEach((column, index) => {
         if (index === 0) {
-          sums[index] = "灏忚"
-          return
+          sums[index] = "灏忚";
+          return;
         }
 
         if (column.property === "drname" || column.property === "deptname") {
-          sums[index] = "-"
-          return
+          sums[index] = "-";
+          return;
         }
 
-        if (column.property === "followUpRateAgain") {
+        if (column.property === "successRateAgain") {
+          // 鎴愬姛鐜囬渶瑕侀噸鏂拌绠楁�荤殑鎴愬姛鐜囷紝鑰屼笉鏄钩鍧囧��
+          const totalSuccess = data.reduce((sum, item) => {
+            return sum + (Number(item.followUpSuccessAgain) || 0);
+          }, 0);
+
+          const totalNeed = data.reduce((sum, item) => {
+            return sum + (Number(item.needFollowUpAgain) || 0);
+          }, 0);
+
+          const totalPending = data.reduce((sum, item) => {
+            return sum + (Number(item.pendingFollowUpAgain) || 0);
+          }, 0);
+
+          const denominator = totalNeed - totalPending;
+
+          if (denominator > 0) {
+            sums[index] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+          } else {
+            sums[index] = "0.00%";
+          }
+        } else if (column.property === "followUpRateAgain") {
           const percentageValues = data
             .map((item) => {
-              const value = item[column.property]
-              if (!value || value === "-" || value === "0%") return null
+              const value = item[column.property];
+              if (!value || value === "-" || value === "0%") return null;
               if (typeof value === "string" && value.includes("%")) {
-                const numValue = parseFloat(value.replace("%", "")) / 100
-                return isNaN(numValue) ? null : numValue
+                const numValue = parseFloat(value.replace("%", "")) / 100;
+                return isNaN(numValue) ? null : numValue;
               } else {
-                const numValue = parseFloat(value)
-                return isNaN(numValue) ? null : numValue
+                const numValue = parseFloat(value);
+                return isNaN(numValue) ? null : numValue;
               }
             })
-            .filter((value) => value !== null && value !== 0)
+            .filter((value) => value !== null && value !== 0);
 
           if (percentageValues.length > 0) {
-            const average = percentageValues.reduce((sum, value) => sum + value, 0) / percentageValues.length
-            sums[index] = (average * 100).toFixed(2) + "%"
+            const average =
+              percentageValues.reduce((sum, value) => sum + value, 0) /
+              percentageValues.length;
+            sums[index] = (average * 100).toFixed(2) + "%";
           } else {
-            sums[index] = "0.00%"
+            sums[index] = "0.00%";
           }
         } else {
           const values = data.map((item) => {
-            const value = item[column.property]
-            if (value === "-" || value === "" || value === null) return 0
-            return Number(value) || 0
-          })
+            const value = item[column.property];
+            if (value === "-" || value === "" || value === null) return 0;
+            return Number(value) || 0;
+          });
 
           if (!values.every((value) => isNaN(value))) {
-            sums[index] = values.reduce((prev, curr) => prev + curr, 0)
-            sums[index] = this.formatNumber(sums[index])
+            sums[index] = values.reduce((prev, curr) => prev + curr, 0);
+            sums[index] = this.formatNumber(sums[index]);
           } else {
-            sums[index] = "-"
+            sums[index] = "-";
           }
         }
-      })
+      });
 
-      return sums
+      return sums;
     },
 
     formatNumber(num) {
-      if (isNaN(num)) return "-"
-      return Number.isInteger(num) ? num.toString() : num.toFixed(0)
+      if (isNaN(num)) return "-";
+      return Number.isInteger(num) ? num.toString() : num.toFixed(0);
     },
 
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.tagid)
+      this.ids = selection.map((item) => item.tagid);
     },
 
-    handleViewDetails(row, infoKey, titleSuffix) {
-      const title = `${row.leavehospitaldistrictname || row.deptname}${titleSuffix}`
-      this.$emit('view-details', row[infoKey], title)
+    handleViewDetails(row, infoKey, titleSuffix, type) {
+      const title = `${
+        row.leavehospitaldistrictname || row.deptname
+      }${titleSuffix}`;
+      this.$emit("view-details", row, infoKey, title, type);
     },
+    // 璁$畻鎴愬姛鐜囩殑鏂规硶
+    calculateSuccessRate(followUpSuccess, needFollowUp, pendingFollowUp) {
+      const success = Number(followUpSuccess) || 0;
+      const need = Number(needFollowUp) || 0;
+      const pending = Number(pendingFollowUp) || 0;
 
+      // 鍒嗘瘝 = 闇�闅忚 - 寰呴殢璁�
+      const denominator = need - pending;
+
+      if (denominator <= 0) {
+        return "0.00%";
+      }
+
+      const rate = (success / denominator) * 100;
+      return rate.toFixed(2) + "%";
+    },
     async exportTable() {
       try {
-        let dateRangeString = ""
-        let sheetNameSuffix = ""
+        let dateRangeString = "";
+        let sheetNameSuffix = "";
 
-        if (this.queryParams.dateRange && this.queryParams.dateRange.length === 2) {
-          const startDateStr = this.queryParams.dateRange[0]
-          const endDateStr = this.queryParams.dateRange[1]
+        if (
+          this.queryParams.dateRange &&
+          this.queryParams.dateRange.length === 2
+        ) {
+          const startDateStr = this.queryParams.dateRange[0];
+          const endDateStr = this.queryParams.dateRange[1];
           const formatDateForDisplay = (dateTimeStr) => {
-            return dateTimeStr.split(" ")[0]
-          }
-          const startDateFormatted = formatDateForDisplay(startDateStr)
-          const endDateFormatted = formatDateForDisplay(endDateStr)
-          dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`
-          sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`
+            return dateTimeStr.split(" ")[0];
+          };
+          const startDateFormatted = formatDateForDisplay(startDateStr);
+          const endDateFormatted = formatDateForDisplay(endDateStr);
+          dateRangeString = `${startDateFormatted}鑷�${endDateFormatted}`;
+          sheetNameSuffix = `${startDateFormatted}鑷�${endDateFormatted}`;
         } else {
-          const now = new Date()
-          const currentMonth = now.getMonth() + 1
-          dateRangeString = `${currentMonth}鏈坄
-          sheetNameSuffix = `${currentMonth}鏈坄
+          const now = new Date();
+          const currentMonth = now.getMonth() + 1;
+          dateRangeString = `${currentMonth}鏈坄;
+          sheetNameSuffix = `${currentMonth}鏈坄;
         }
 
-        const excelName = `鍐嶆鍑洪櫌闅忚缁熻琛╛${dateRangeString}.xlsx`
-        const worksheetName = `鍐嶆闅忚缁熻_${sheetNameSuffix}`
+        const excelName = `鍐嶆鍑洪櫌闅忚缁熻琛╛${dateRangeString}.xlsx`;
+        const worksheetName = `鍐嶆闅忚缁熻_${sheetNameSuffix}`;
 
         if (!this.tableData || this.tableData.length === 0) {
-          this.$message.warning("鏆傛棤鍐嶆闅忚鏁版嵁鍙鍑�")
-          return false
+          this.$message.warning("鏆傛棤鍐嶆闅忚鏁版嵁鍙鍑�");
+          return false;
         }
 
-        const workbook = new ExcelJS.Workbook()
-        const worksheet = workbook.addWorksheet(worksheetName)
+        const workbook = new ExcelJS.Workbook();
+        const worksheet = workbook.addWorksheet(worksheetName);
 
         // 鏋勫缓琛ㄦ牸
-        this.buildExportSheet(worksheet, sheetNameSuffix)
+        this.buildExportSheet(worksheet, sheetNameSuffix);
 
-        const buffer = await workbook.xlsx.writeBuffer()
+        const buffer = await workbook.xlsx.writeBuffer();
         const blob = new Blob([buffer], {
-          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
-        })
-        saveAs(blob, excelName)
+          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        });
+        saveAs(blob, excelName);
 
-        this.$message.success("瀵煎嚭鎴愬姛")
-        return true
+        this.$message.success("瀵煎嚭鎴愬姛");
+        return true;
       } catch (error) {
-        console.error("瀵煎嚭澶辫触:", error)
-        this.$message.error(`瀵煎嚭澶辫触: ${error.message}`)
-        return false
+        console.error("瀵煎嚭澶辫触:", error);
+        this.$message.error(`瀵煎嚭澶辫触: ${error.message}`);
+        return false;
       }
     },
+    /** 瀵煎嚭鍖荤敓瀛愯〃锛堝啀娆¢殢璁匡級 */
+    async exportDoctorTable(row) {
+      try {
+        const areaName =
+          row.leavehospitaldistrictname || row.deptname || "鏈煡鐥呭尯";
 
-    buildExportSheet(worksheet, sheetNameSuffix) {
-      const titleStyle = {
-        font: { name: "寰蒋闆呴粦", size: 16, bold: true, color: { argb: "FF000000" } },
-        fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFE6F3FF" } },
-        alignment: { vertical: "middle", horizontal: "center", wrapText: true },
-        border: {
-          top: { style: "thin", color: { argb: "FFD0D0D0" } },
-          left: { style: "thin", color: { argb: "FFD0D0D0" } },
-          bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
-          right: { style: "thin", color: { argb: "FFD0D0D0" } }
+        let dateRangeString = "";
+        if (
+          this.queryParams.dateRange &&
+          this.queryParams.dateRange.length === 2
+        ) {
+          const start = this.queryParams.dateRange[0].split(" ")[0];
+          const end = this.queryParams.dateRange[1].split(" ")[0];
+          dateRangeString = `${start}鑷�${end}`;
+        } else {
+          dateRangeString = `${new Date().getMonth() + 1}鏈坄;
         }
+
+        const fileName = `${areaName}鍖荤敓鍐嶆闅忚鍒楄〃_${dateRangeString}.xlsx`;
+        const sheetName = `${areaName}鍖荤敓鍐嶆闅忚`;
+
+        if (!row.doctorStats || row.doctorStats.length === 0) {
+          this.$message.warning("褰撳墠鐥呭尯鏆傛棤鍖荤敓鍐嶆闅忚鏁版嵁");
+          return;
+        }
+
+        const workbook = new ExcelJS.Workbook();
+        const worksheet = workbook.addWorksheet(sheetName);
+
+        this.buildDoctorExportSheet(worksheet, row.doctorStats, areaName);
+
+        const buffer = await workbook.xlsx.writeBuffer();
+        saveAs(
+          new Blob([buffer], {
+            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+          }),
+          fileName
+        );
+
+        this.$message.success("鍖荤敓鍐嶆闅忚鍒楄〃瀵煎嚭鎴愬姛");
+      } catch (err) {
+        console.error(err);
+        this.$message.error("瀵煎嚭澶辫触");
       }
+    },
+    buildDoctorExportSheet(worksheet, data, areaName) {
+      const titleStyle = {
+        font: { name: "寰蒋闆呴粦", size: 16, bold: true },
+        alignment: { horizontal: "center", vertical: "middle" },
+      };
 
       const headerStyle = {
-        font: { name: "寰蒋闆呴粦", size: 11, bold: true, color: { argb: "FF000000" } },
-        fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFF5F7FA" } },
+        font: { name: "寰蒋闆呴粦", size: 11, bold: true },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        },
+        alignment: { horizontal: "center", vertical: "middle", wrapText: true },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      const cellStyle = {
+        font: { name: "瀹嬩綋", size: 10 },
+        alignment: { horizontal: "center", vertical: "middle" },
+        border: {
+          top: { style: "thin" },
+          left: { style: "thin" },
+          bottom: { style: "thin" },
+          right: { style: "thin" },
+        },
+      };
+
+      // 鏍囬
+      worksheet.mergeCells(1, 1, 1, 10);
+      worksheet.getCell(1, 1).value = `${areaName}鍖荤敓鍐嶆闅忚鍒楄〃`;
+      worksheet.getCell(1, 1).style = titleStyle;
+      worksheet.getRow(1).height = 30;
+
+      // 琛ㄥご
+      const headers = [
+        "鍖荤敓濮撳悕",
+        "绉戝",
+        "鍑洪櫌浜烘",
+        "鏃犻渶闅忚",
+        "搴旈殢璁�",
+        "闇�闅忚",
+        "寰呴殢璁�",
+        "闅忚鎴愬姛",
+        "闅忚澶辫触",
+        "鎴愬姛鐜�", // 鏂板
+        "闅忚鐜�", // 鍘熸潵鍦ㄦ垚鍔熺巼浣嶇疆
+      ];
+
+      const headerRow = worksheet.addRow(headers);
+      headerRow.eachCell((cell) => {
+        cell.style = headerStyle;
+      });
+      worksheet.getRow(2).height = 25;
+
+      // 鏁版嵁
+      data.forEach((item) => {
+        const row = worksheet.addRow([
+          item.drname,
+          item.deptname,
+          item.dischargeCount,
+          item.nonFollowUp,
+          item.followUpNeeded,
+          item.needFollowUpAgain,
+          item.pendingFollowUpAgain,
+          item.followUpSuccessAgain,
+          item.followUpFailAgain,
+          this.calculateSuccessRate(
+            item.followUpSuccessAgain,
+            item.needFollowUpAgain,
+            item.pendingFollowUpAgain
+          ),
+          item.followUpRateAgain,
+        ]);
+        row.eachCell((cell) => {
+          cell.style = cellStyle;
+        });
+      });
+
+      // 灏忚琛�
+      const summaryRow = worksheet.addRow(
+        this.getDoctorAgainExportSummary(data)
+      );
+      summaryRow.eachCell((cell) => {
+        cell.font = { bold: true };
+        cell.fill = {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        };
+      });
+
+      // 鍒楀
+      worksheet.columns = [
+        { width: 15 },
+        { width: 15 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 }, // 鎴愬姛鐜�
+        { width: 12 }, // 闅忚鐜�
+      ];
+    },
+    /** 鍐嶆闅忚 - 鍖荤敓瀛愯〃瀵煎嚭灏忚 */
+    getDoctorAgainExportSummary(data) {
+      const sums = ["灏忚"];
+
+      const keys = [
+        "dischargeCount",
+        "nonFollowUp",
+        "followUpNeeded",
+        "needFollowUpAgain",
+        "pendingFollowUpAgain",
+        "followUpSuccessAgain",
+        "followUpFailAgain",
+      ];
+
+      keys.forEach((key) => {
+        sums.push(data.reduce((t, r) => t + (Number(r[key]) || 0), 0));
+      });
+
+      // 鎴愬姛鐜囷紙骞冲潎鍊硷級
+      const successRates = data
+        .map((item) => {
+          const success = Number(item.followUpSuccessAgain) || 0;
+          const need = Number(item.needFollowUpAgain) || 0;
+          const pending = Number(item.pendingFollowUpAgain) || 0;
+          const denominator = need - pending;
+          if (denominator <= 0) return 0;
+          return success / denominator;
+        })
+        .filter((rate) => !isNaN(rate));
+
+      sums.push(
+        successRates.length
+          ? (
+              (successRates.reduce((a, b) => a + b, 0) / successRates.length) *
+              100
+            ).toFixed(2) + "%"
+          : "0.00%"
+      );
+
+      // 闅忚鐜囷紙骞冲潎鍊硷級
+      const followUpRates = data
+        .map((i) => this.extractPercentageValue(i.followUpRateAgain))
+        .filter(Boolean);
+
+      sums.push(
+        followUpRates.length
+          ? (
+              (followUpRates.reduce((a, b) => a + b, 0) /
+                followUpRates.length) *
+              100
+            ).toFixed(2) + "%"
+          : "0.00%"
+      );
+
+      return sums;
+    },
+    buildExportSheet(worksheet, sheetNameSuffix) {
+      const titleStyle = {
+        font: {
+          name: "寰蒋闆呴粦",
+          size: 16,
+          bold: true,
+          color: { argb: "FF000000" },
+        },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFE6F3FF" },
+        },
         alignment: { vertical: "middle", horizontal: "center", wrapText: true },
         border: {
           top: { style: "thin", color: { argb: "FFD0D0D0" } },
           left: { style: "thin", color: { argb: "FFD0D0D0" } },
           bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
-          right: { style: "thin", color: { argb: "FFD0D0D0" } }
-        }
-      }
+          right: { style: "thin", color: { argb: "FFD0D0D0" } },
+        },
+      };
+
+      const headerStyle = {
+        font: {
+          name: "寰蒋闆呴粦",
+          size: 11,
+          bold: true,
+          color: { argb: "FF000000" },
+        },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        },
+        alignment: { vertical: "middle", horizontal: "center", wrapText: true },
+        border: {
+          top: { style: "thin", color: { argb: "FFD0D0D0" } },
+          left: { style: "thin", color: { argb: "FFD0D0D0" } },
+          bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
+          right: { style: "thin", color: { argb: "FFD0D0D0" } },
+        },
+      };
 
       const cellStyle = {
         font: { name: "瀹嬩綋", size: 10, color: { argb: "FF000000" } },
@@ -514,156 +1428,232 @@
           top: { style: "thin", color: { argb: "FFD0D0D0" } },
           left: { style: "thin", color: { argb: "FFD0D0D0" } },
           bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
-          right: { style: "thin", color: { argb: "FFD0D0D0" } }
-        }
-      }
+          right: { style: "thin", color: { argb: "FFD0D0D0" } },
+        },
+      };
 
       const summaryStyle = {
-        font: { name: "瀹嬩綋", size: 10, bold: true, color: { argb: "FF409EFF" } },
-        fill: { type: "pattern", pattern: "solid", fgColor: { argb: "FFF5F7FA" } },
+        font: {
+          name: "瀹嬩綋",
+          size: 10,
+          bold: true,
+          color: { argb: "FF409EFF" },
+        },
+        fill: {
+          type: "pattern",
+          pattern: "solid",
+          fgColor: { argb: "FFF5F7FA" },
+        },
         alignment: { vertical: "middle", horizontal: "center" },
         border: {
           top: { style: "thin", color: { argb: "FFD0D0D0" } },
           left: { style: "thin", color: { argb: "FFD0D0D0" } },
           bottom: { style: "thin", color: { argb: "FFD0D0D0" } },
-          right: { style: "thin", color: { argb: "FFD0D0D0" } }
-        }
-      }
+          right: { style: "thin", color: { argb: "FFD0D0D0" } },
+        },
+      };
 
       // 娣诲姞鏍囬琛�
-      worksheet.mergeCells(1, 1, 1, 15)
-      const titleCell = worksheet.getCell(1, 1)
-      titleCell.value = `鍐嶆鍑洪櫌闅忚缁熻琛╛${sheetNameSuffix}`
-      titleCell.style = titleStyle
-      worksheet.getRow(1).height = 35
+      worksheet.mergeCells(1, 1, 1, 15);
+      const titleCell = worksheet.getCell(1, 1);
+      titleCell.value = `鍐嶆鍑洪櫌闅忚缁熻琛╛${sheetNameSuffix}`;
+      titleCell.style = titleStyle;
+      worksheet.getRow(1).height = 35;
 
       // 琛ㄥご
+      // 琛ㄥご闇�瑕佸鍔犳垚鍔熺巼鍒�
       const secondRowHeaders = [
-        "", "鍑洪櫌鐥呭尯", "绉戝", "鍑洪櫌浜烘", "鏃犻渶闅忚浜烘", "搴旈殢璁夸汉娆�",
-        "闇�闅忚", "寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触", "闅忚鐜�", "浜哄伐", "鐭俊", "寰俊"
-      ]
+        "",
+        "鍑洪櫌鐥呭尯",
+        "绉戝",
+        "鍑洪櫌浜烘",
+        "鏃犻渶闅忚浜烘",
+        "搴旈殢璁夸汉娆�",
+        "闇�闅忚",
+        "寰呴殢璁�",
+        "闅忚鎴愬姛",
+        "闅忚澶辫触",
+        "鎴愬姛鐜�", // 鎴愬姛鐜囧簲璇ュ湪闅忚澶辫触鍚庨潰
+        "闅忚鐜�", // 闅忚鐜囧湪鎴愬姛鐜囧悗闈�
+        "浜哄伐",
+        "璇煶", // 淇锛氬簲璇ユ槸璇煶锛屼笉鏄煭淇�
+        "鐭俊", // 鐭俊
+        "寰俊", // 寰俊
+      ];
 
       secondRowHeaders.forEach((header, index) => {
-        const cell = worksheet.getCell(3, index + 1)
-        cell.value = header
-        cell.style = headerStyle
-      })
+        const cell = worksheet.getCell(3, index + 1);
+        cell.value = header;
+        cell.style = headerStyle;
+      });
 
-      // 鍚堝苟鍗曞厓鏍�
+      // 鏇存柊鍚堝苟鍗曞厓鏍肩殑鑼冨洿
       for (let i = 1; i <= 6; i++) {
-        worksheet.mergeCells(2, i, 3, i)
-        const cell = worksheet.getCell(2, i)
-        cell.style = headerStyle
+        worksheet.mergeCells(2, i, 3, i);
+        const cell = worksheet.getCell(2, i);
+        cell.style = headerStyle;
       }
 
-      worksheet.getCell(2, 1).value = ""
-      worksheet.getCell(2, 2).value = "鍑洪櫌鐥呭尯"
-      worksheet.getCell(2, 3).value = "绉戝"
-      worksheet.getCell(2, 4).value = "鍑洪櫌浜烘"
-      worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘"
-      worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�"
+      worksheet.getCell(2, 1).value = "";
+      worksheet.getCell(2, 2).value = "鍑洪櫌鐥呭尯";
+      worksheet.getCell(2, 3).value = "绉戝";
+      worksheet.getCell(2, 4).value = "鍑洪櫌浜烘";
+      worksheet.getCell(2, 5).value = "鏃犻渶闅忚浜烘";
+      worksheet.getCell(2, 6).value = "搴旈殢璁夸汉娆�";
 
-      worksheet.mergeCells(2, 7, 2, 14)
-      worksheet.getCell(2, 7).value = "鍐嶆鍑洪櫌闅忚"
-      worksheet.getCell(2, 7).style = headerStyle
+      // 娉ㄦ剰锛氱敱浜庡鍔犱簡鎴愬姛鐜囧垪锛屽悎骞跺垪鏁拌澧炲姞
+      worksheet.mergeCells(2, 7, 2, 16); // 浠�7鍚堝苟鍒�16锛堝師鏉ユ槸7-14锛�
+      worksheet.getCell(2, 7).value = "鍐嶆鍑洪櫌闅忚";
+      worksheet.getCell(2, 7).style = headerStyle;
 
-      worksheet.getRow(2).height = 28
-      worksheet.getRow(3).height = 25
+      worksheet.getRow(2).height = 28;
+      worksheet.getRow(3).height = 25;
 
       // 鏁版嵁琛�
       this.tableData.forEach((item, rowIndex) => {
-        const dataRow = worksheet.addRow([
-          "",
-          item.leavehospitaldistrictname || "",
-          item.deptname || "",
-          item.dischargeCount || 0,
-          item.nonFollowUp || 0,
-          item.followUpNeeded || 0,
-          item.needFollowUpAgain || 0,
-          item.pendingFollowUpAgain || 0,
-          item.followUpSuccessAgain || 0,
-          item.followUpFailAgain || 0,
-          item.followUpRateAgain || "0%",
-          item.manualAgain || 0,
-          item.smsAgain || 0,
-          item.weChatAgain || 0
-        ], rowIndex + 4)
+        const dataRow = worksheet.addRow(
+          [
+            "",
+            item.leavehospitaldistrictname || "",
+            item.deptname || "",
+            item.dischargeCount || 0,
+            item.nonFollowUp || 0,
+            item.followUpNeeded || 0,
+            item.needFollowUpAgain || 0,
+            item.pendingFollowUpAgain || 0,
+            item.followUpSuccessAgain || 0,
+            item.followUpFailAgain || 0,
+            // 鎴愬姛鐜� - 闇�瑕佸姩鎬佽绠�
+            this.calculateSuccessRate(
+              item.followUpSuccessAgain,
+              item.needFollowUpAgain,
+              item.pendingFollowUpAgain
+            ),
+            item.followUpRateAgain || "0%", // 闅忚鐜�
+            item.manualAgain || 0,
+            item.voiceAgain || 0,
+            item.smsAgain || 0,
+            item.weChatAgain || 0,
+          ],
+          rowIndex + 4
+        );
 
         dataRow.eachCell((cell) => {
-          cell.style = cellStyle
-        })
-        dataRow.height = 24
-      })
+          cell.style = cellStyle;
+        });
+        dataRow.height = 24;
+      });
 
       // 鍚堣琛�
-      const summaries = this.getExportSummaries()
-      const summaryRow = worksheet.addRow(summaries)
+      const summaries = this.getExportSummaries();
+      const summaryRow = worksheet.addRow(summaries);
       summaryRow.eachCell((cell, colNumber) => {
-        cell.style = summaryStyle
+        cell.style = summaryStyle;
         if (colNumber === 1) {
-          cell.value = "鍚堣"
+          cell.value = "鍚堣";
         }
-      })
-      summaryRow.height = 28
+      });
+      summaryRow.height = 28;
 
       // 鍒楀
+      // 淇鍒楀
       worksheet.columns = [
-        { width: 8 }, { width: 20 }, { width: 15 }, { width: 12 }, { width: 12 }, { width: 12 },
-        { width: 10 }, { width: 10 }, { width: 10 }, { width: 10 }, { width: 12 },
-        { width: 8 }, { width: 8 }, { width: 8 }
-      ]
+        { width: 8 },
+        { width: 20 },
+        { width: 15 },
+        { width: 12 },
+        { width: 12 },
+        { width: 12 },
+        { width: 10 },
+        { width: 10 },
+        { width: 10 },
+        { width: 10 },
+        { width: 12 }, // 鎴愬姛鐜�
+        { width: 12 }, // 闅忚鐜�
+        { width: 8 }, // 浜哄伐
+        { width: 8 }, // 璇煶
+        { width: 8 }, // 鐭俊
+        { width: 8 }, // 寰俊
+      ];
     },
 
     getExportSummaries() {
-      const summaries = ["鍚堣", "/", "/", 0, 0, 0, 0, 0, 0, 0, "0%", 0, 0, 0]
+      const summaries = [
+        "鍚堣",
+        "/",
+        "/",
+        0, // 3: dischargeCount
+        0, // 4: nonFollowUp
+        0, // 5: followUpNeeded
+        0, // 6: needFollowUpAgain
+        0, // 7: pendingFollowUpAgain
+        0, // 8: followUpSuccessAgain
+        0, // 9: followUpFailAgain
+        "0%", // 10: 鎴愬姛鐜�
+        "0%", // 11: 闅忚鐜�
+        0, // 12: manualAgain
+        0, // 13: voiceAgain
+        0, // 14: smsAgain
+        0, // 15: weChatAgain
+      ];
 
       this.tableData.forEach((item) => {
-        summaries[3] += Number(item.dischargeCount) || 0
-        summaries[4] += Number(item.nonFollowUp) || 0
-        summaries[5] += Number(item.followUpNeeded) || 0
-        summaries[6] += Number(item.needFollowUpAgain) || 0
-        summaries[7] += Number(item.pendingFollowUpAgain) || 0
-        summaries[8] += Number(item.followUpSuccessAgain) || 0
-        summaries[9] += Number(item.followUpFailAgain) || 0
-        summaries[11] += Number(item.manualAgain) || 0
-        summaries[12] += Number(item.smsAgain) || 0
-        summaries[13] += Number(item.weChatAgain) || 0
-      })
+        summaries[3] += Number(item.dischargeCount) || 0;
+        summaries[4] += Number(item.nonFollowUp) || 0;
+        summaries[5] += Number(item.followUpNeeded) || 0;
+        summaries[6] += Number(item.needFollowUpAgain) || 0;
+        summaries[7] += Number(item.pendingFollowUpAgain) || 0;
+        summaries[8] += Number(item.followUpSuccessAgain) || 0;
+        summaries[9] += Number(item.followUpFailAgain) || 0;
+        summaries[12] += Number(item.manualAgain) || 0;
+        summaries[13] += Number(item.voiceAgain) || 0;
+        summaries[14] += Number(item.smsAgain) || 0;
+        summaries[15] += Number(item.weChatAgain) || 0;
+      });
 
-      const followUpRateAgainValues = this.tableData
-        .map((item) => this.extractPercentageValue(item.followUpRateAgain))
-        .filter((value) => value !== null)
+      // 鎴愬姛鐜囪绠�
+      const totalSuccess = summaries[8]; // followUpSuccessAgain鐨勬�诲拰
+      const totalNeed = summaries[6]; // needFollowUpAgain鐨勬�诲拰
+      const totalPending = summaries[7]; // pendingFollowUpAgain鐨勬�诲拰
+      const denominator = totalNeed - totalPending;
 
-      if (followUpRateAgainValues.length > 0) {
-        const avgFollowUpRateAgain = followUpRateAgainValues.reduce((sum, val) => sum + val, 0) / followUpRateAgainValues.length
-        summaries[10] = (avgFollowUpRateAgain * 100).toFixed(2) + "%"
+      if (denominator > 0) {
+        summaries[10] = ((totalSuccess / denominator) * 100).toFixed(2) + "%";
+      } else {
+        summaries[10] = "0.00%";
       }
 
-      summaries[3] = this.formatNumber(summaries[3])
-      summaries[4] = this.formatNumber(summaries[4])
-      summaries[5] = this.formatNumber(summaries[5])
-      summaries[6] = this.formatNumber(summaries[6])
-      summaries[7] = this.formatNumber(summaries[7])
-      summaries[8] = this.formatNumber(summaries[8])
-      summaries[9] = this.formatNumber(summaries[9])
-      summaries[11] = this.formatNumber(summaries[11])
-      summaries[12] = this.formatNumber(summaries[12])
-      summaries[13] = this.formatNumber(summaries[13])
+      // 闅忚鐜囪绠�
+      const followUpRateAgainValues = this.tableData
+        .map((item) => this.extractPercentageValue(item.followUpRateAgain))
+        .filter((value) => value !== null);
 
-      return summaries
+      if (followUpRateAgainValues.length > 0) {
+        const avgFollowUpRateAgain =
+          followUpRateAgainValues.reduce((sum, val) => sum + val, 0) /
+          followUpRateAgainValues.length;
+        summaries[11] = (avgFollowUpRateAgain * 100).toFixed(2) + "%";
+      }
+
+      // 鏍煎紡鍖栨暟瀛�
+      [3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15].forEach((index) => {
+        summaries[index] = this.formatNumber(summaries[index]);
+      });
+
+      return summaries;
     },
 
     extractPercentageValue(value) {
-      if (!value) return null
+      if (!value) return null;
       if (typeof value === "string" && value.includes("%")) {
-        const num = parseFloat(value.replace("%", ""))
-        return isNaN(num) ? null : num / 100
+        const num = parseFloat(value.replace("%", ""));
+        return isNaN(num) ? null : num / 100;
       }
-      const num = parseFloat(value)
-      return isNaN(num) ? null : num
-    }
-  }
-}
+      const num = parseFloat(value);
+      return isNaN(num) ? null : num;
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/sfstatistics/percentage/index copy.vue b/src/views/sfstatistics/percentage/index copy.vue
index d025fa2..15f46c8 100644
--- a/src/views/sfstatistics/percentage/index copy.vue
+++ b/src/views/sfstatistics/percentage/index copy.vue
@@ -220,7 +220,7 @@
                     </el-table-column>
 
                     <!-- 闅忚鎯呭喌鍒楋紙浠呬附姘村競涓尰闄㈡樉绀猴級 -->
-                    <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'" align="center" label="闅忚鎯呭喌">
+                    <el-table-column v-if="orgname == '涓芥按甯備腑鍖婚櫌'||orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'" align="center" label="闅忚鎯呭喌">
                       <el-table-column label="姝e父璇煶" align="center" width="100" key="taskSituation1"
                         prop="taskSituation1">
                       </el-table-column><el-table-column label="鎮h�呮嫆鎺ユ垨鎷掕" align="center" width="100" key="taskSituation2"
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index b82a720..dd731d8 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -2,10 +2,25 @@
   <div class="follow-up-statistics">
     <!-- 鎼滅储琛ㄥ崟鍖哄煙 -->
     <div class="search-section">
-      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
+      <el-form
+        :model="queryParams"
+        ref="queryForm"
+        size="small"
+        :inline="true"
+        v-show="showSearch"
+        label-width="98px"
+      >
         <el-form-item label="缁熻绫诲瀷" prop="userName">
-          <el-select v-model="queryParams.statisticaltype" placeholder="璇烽�夋嫨缁熻绫诲瀷">
-            <el-option v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value" />
+          <el-select
+            v-model="queryParams.statisticaltype"
+            placeholder="璇烽�夋嫨缁熻绫诲瀷"
+          >
+            <el-option
+              v-for="item in Statisticallist"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
           </el-select>
           <el-select
             style="margin-left: 10px"
@@ -16,7 +31,12 @@
             filterable
             placeholder="璇烽�夋嫨鐥呭尯"
           >
-            <el-option v-for="item in flatArrayhospit" :key="item.value" :label="item.label" :value="item.value" />
+            <el-option
+              v-for="item in flatArrayhospit"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
           </el-select>
           <el-select
             v-else-if="queryParams.statisticaltype == 2"
@@ -26,13 +46,27 @@
             filterable
             placeholder="璇烽�夋嫨绉戝"
           >
-            <el-option v-for="item in flatArraydept" :key="item.value" :label="item.label" :value="item.value" />
+            <el-option
+              v-for="item in flatArraydept"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
           </el-select>
         </el-form-item>
 
         <el-form-item label="鏈嶅姟绫诲瀷" prop="userName">
-          <el-select v-model="queryParams.serviceType" multiple placeholder="璇烽�夋嫨">
-            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+          <el-select
+            v-model="queryParams.serviceType"
+            multiple
+            placeholder="璇烽�夋嫨"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
           </el-select>
         </el-form-item>
 
@@ -49,12 +83,34 @@
         </el-form-item>
 
         <el-form-item>
-          <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
-          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            size="medium"
+            @click="handleQuery"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+            >閲嶇疆</el-button
+          >
         </el-form-item>
 
-        <el-button type="warning" plain icon="el-icon-download" size="medium" @click="handleExport">瀵煎嚭</el-button>
-        <el-button type="primary" plain icon="el-icon-data-line" size="medium" @click="showChartDialog">缁熻瓒嬪娍鍥�</el-button>
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="medium"
+          @click="handleExport"
+          >瀵煎嚭</el-button
+        >
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-data-line"
+          size="medium"
+          @click="showChartDialog"
+          >缁熻瓒嬪娍鍥�</el-button
+        >
       </el-form>
     </div>
 
@@ -86,7 +142,11 @@
           />
         </el-tab-pane>
 
-        <el-tab-pane label="寤剁画鎶ょ悊缁熻" name="continued" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+        <el-tab-pane
+          label="寤剁画鎶ょ悊缁熻"
+          name="continued"
+          v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'"
+        >
           <ContinuedCare
             ref="continuedCare"
             :query-params="queryParams"
@@ -132,39 +192,40 @@
 </template>
 
 <script>
-import FirstFollowUp from './components/FirstFollowUp.vue'
-import SecondFollowUp from './components/SecondFollowUp.vue'
-import ContinuedCare from './components/ContinuedCare.vue'
-import ChartDialog from './components/ChartDialog.vue'
-import DetailDialog from './components/DetailDialog.vue'
-import TimelyRateDialog from './components/TimelyRateDialog.vue'
+import FirstFollowUp from "./components/FirstFollowUp.vue";
+import SecondFollowUp from "./components/SecondFollowUp.vue";
+import ContinuedCare from "./components/ContinuedCare.vue";
+import ChartDialog from "./components/ChartDialog.vue";
+import DetailDialog from "./components/DetailDialog.vue";
+import TimelyRateDialog from "./components/TimelyRateDialog.vue";
 
+import { getSfStatisticsHyperlink } from "@/api/AiCentre/index";
 
 export default {
-  name: 'FollowUpStatistics',
+  name: "FollowUpStatistics",
   components: {
     FirstFollowUp,
     SecondFollowUp,
     ContinuedCare,
     ChartDialog,
     DetailDialog,
-    TimelyRateDialog
+    TimelyRateDialog,
   },
   data() {
     return {
-      activeTab: 'first',
-      orgname: localStorage.getItem('orgname') || '',
+      activeTab: "first",
+      orgname: localStorage.getItem("orgname") || "",
       Statisticallist: [
-        { label: '鐥呭尯缁熻', value: 1 },
-        { label: '绉戝缁熻', value: 2 }
+        { label: "鐥呭尯缁熻", value: 1 },
+        { label: "绉戝缁熻", value: 2 },
       ],
       options: this.$store.getters.tasktypes,
       queryParams: {
         serviceType: [2],
         dateRange: [],
         statisticaltype: 1,
-        leavehospitaldistrictcodes: ['all'],
-        deptcodes: []
+        leavehospitaldistrictcodes: ["all"],
+        deptcodes: [],
       },
       flatArrayhospit: [],
       flatArraydept: [],
@@ -177,21 +238,21 @@
       chartData: [],
       infotitleVisible: false,
       SeedetailsVisible: false,
-      searchName: '',
-      infotitle: '',
+      searchName: "",
+      infotitle: "",
       infotitlelist: [],
       patienttotal: 0,
       logsheetlist: [],
       Seedloading: false,
       patientqueryParams: {
         pageNum: 1,
-        pageSize: 10
-      }
-    }
+        pageSize: 10,
+      },
+    };
   },
   created() {
-    this.getDeptTree()
-    this.loadCurrentTabData()
+    this.getDeptTree();
+    this.loadCurrentTabData();
   },
   methods: {
     getDeptTree() {
@@ -199,146 +260,174 @@
       this.flatArraydept = this.$store.getters.belongDepts.map((dept) => {
         return {
           label: dept.deptName,
-          value: dept.deptCode
-        }
-      })
-      this.allDeptCodes = this.$store.getters.belongDepts.map((dept) => dept.deptCode)
+          value: dept.deptCode,
+        };
+      });
+      this.allDeptCodes = this.$store.getters.belongDepts.map(
+        (dept) => dept.deptCode
+      );
 
       // 鐥呭尯鍒楄〃
       this.flatArrayhospit = this.$store.getters.belongWards.map((ward) => {
         return {
           label: ward.districtName,
-          value: ward.districtCode
-        }
-      })
-      this.allWardCodes = this.$store.getters.belongWards.map((ward) => ward.districtCode)
+          value: ward.districtCode,
+        };
+      });
+      this.allWardCodes = this.$store.getters.belongWards.map(
+        (ward) => ward.districtCode
+      );
 
-      this.flatArraydept.push({ label: '鍏ㄩ儴', value: 'all' })
-      this.flatArrayhospit.push({ label: '鍏ㄩ儴', value: 'all' })
+      this.flatArraydept.push({ label: "鍏ㄩ儴", value: "all" });
+      this.flatArrayhospit.push({ label: "鍏ㄩ儴", value: "all" });
     },
 
     handleTabClick(tab) {
-      this.activeTab = tab.name
-      this.loadCurrentTabData()
+      this.activeTab = tab.name;
+      this.loadCurrentTabData();
     },
 
     loadCurrentTabData() {
       switch (this.activeTab) {
-        case 'first':
-          this.$refs.firstFollowUp.loadData()
-          break
-        case 'second':
-          this.$refs.secondFollowUp.loadData()
-          break
-        case 'continued':
-          this.$refs.continuedCare.loadData()
-          break
+        case "first":
+          this.$refs.firstFollowUp.loadData();
+          break;
+        case "second":
+          this.$refs.secondFollowUp.loadData();
+          break;
+        case "continued":
+          this.$refs.continuedCare.loadData();
+          break;
       }
     },
 
     handleQuery() {
-      this.queryParams.startTime = this.parseTime(this.queryParams.dateRange[0])
-      this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1])
+      this.queryParams.startTime = this.parseTime(
+        this.queryParams.dateRange[0]
+      );
+      this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]);
 
       if (this.queryParams.statisticaltype == 1) {
-        this.queryParams.deptcodes = []
+        this.queryParams.deptcodes = [];
       } else if (this.queryParams.statisticaltype == 2) {
-        this.queryParams.leavehospitaldistrictcodes = []
+        this.queryParams.leavehospitaldistrictcodes = [];
       }
 
-      this.loadCurrentTabData()
+      this.loadCurrentTabData();
     },
 
     resetQuery() {
-      this.queryParams.dateRange = []
-      this.queryParams.leavehospitaldistrictcodes = []
-      this.handleQuery()
+      this.queryParams.dateRange = [];
+      this.queryParams.leavehospitaldistrictcodes = [];
+      this.handleQuery();
     },
 
     async handleExport() {
       switch (this.activeTab) {
-        case 'first':
-          await this.$refs.firstFollowUp.exportTable()
-          break
-        case 'second':
-          await this.$refs.secondFollowUp.exportTable()
-          break
-        case 'continued':
-          await this.$refs.continuedCare.exportTable()
-          break
+        case "first":
+          await this.$refs.firstFollowUp.exportTable();
+          break;
+        case "second":
+          await this.$refs.secondFollowUp.exportTable();
+          break;
+        case "continued":
+          await this.$refs.continuedCare.exportTable();
+          break;
       }
     },
 
     showChartDialog() {
-      this.chartData = this.getCurrentTabData()
-      this.chartDialogVisible = true
+      this.chartData = this.getCurrentTabData();
+      this.chartDialogVisible = true;
     },
 
     getCurrentTabData() {
       switch (this.activeTab) {
-        case 'first':
-          return this.$refs.firstFollowUp.tableData
-        case 'second':
-          return this.$refs.secondFollowUp.tableData
-        case 'continued':
-          return this.$refs.continuedCare.tableData
+        case "first":
+          return this.$refs.firstFollowUp.tableData;
+        case "second":
+          return this.$refs.secondFollowUp.tableData;
+        case "continued":
+          return this.$refs.continuedCare.tableData;
         default:
-          return []
+          return [];
       }
     },
 
-    viewDetails(row, title) {
-      this.infotitle = title
-      this.infotitlelist = row
-      this.infotitleVisible = true
+    viewDetails(row, infoKey, title, type) {
+      this.infotitle = title;
+
+      let obj = {
+        hyperLinkInfoType: infoKey,
+        leavehospitaldistrictcodes: this.queryParams.leavehospitaldistrictcodes,
+        serviceType: this.queryParams.serviceType,
+      };
+      if (type == 1) {
+        obj.drcode = row.drcode;
+      }
+      if (this.queryParams.statisticaltype == 1) {
+        obj.leavehospitaldistrictcodes = [row.leavehospitaldistrictcode];
+        obj.deptcodes = [];
+      } else {
+        obj.deptcodes = [row.deptcode];
+        obj.leavehospitaldistrictcodes = [];
+      }
+
+      getSfStatisticsHyperlink(obj).then((response) => {
+        this.infotitlelist = response.data;
+      });
+
+      this.infotitleVisible = true;
     },
 
     Seedetails(row) {
-      this.SeedetailsVisible = true
-      this.Seedloading = true
+      this.SeedetailsVisible = true;
+      this.Seedloading = true;
 
-      this.$refs.firstFollowUp.selectTimelyRate(row, this.queryParams)
-        .then(response => {
-          this.logsheetlist = response.data.detail
-          this.patienttotal = response.data.total
-          this.Seedloading = false
-        })
+      this.$refs.firstFollowUp
+        .selectTimelyRate(row, this.queryParams)
+        .then((response) => {
+          this.logsheetlist = response.data.detail;
+          this.patienttotal = response.data.total;
+          this.Seedloading = false;
+        });
     },
 
     Seedetailstion() {
       console.log(this.patientqueryParams);
 
-      this.$refs.firstFollowUp.selectTimelyRates(this.patientqueryParams)
-        .then(response => {
-          this.logsheetlist = response.data.detail
-          this.patienttotal = response.data.total
-        })
+      this.$refs.firstFollowUp
+        .selectTimelyRates(this.patientqueryParams)
+        .then((response) => {
+          this.logsheetlist = response.data.detail;
+          this.patienttotal = response.data.total;
+        });
     },
 
     SeedetailsgGo(row) {
-      this.SeedetailsVisible = false
-      let type = ''
-      if (row.preachformson && row.preachformson.includes('3')) {
-        type = 1
+      this.SeedetailsVisible = false;
+      let type = "";
+      if (row.preachformson && row.preachformson.includes("3")) {
+        type = 1;
       }
       setTimeout(() => {
         this.$router.push({
-          path: '/followvisit/record/detailpage/',
+          path: "/followvisit/record/detailpage/",
           query: {
             taskid: row.taskid,
             patid: row.patid,
             id: row.id,
-            Voicetype: type
-          }
-        })
-      }, 300)
+            Voicetype: type,
+          },
+        });
+      }, 300);
     },
 
     handleSearch() {
       // 鎼滅储閫昏緫
-    }
-  }
-}
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/sfstatistics/percentage/satisfaction.vue b/src/views/sfstatistics/percentage/satisfaction.vue
index be3d69b..3858b3b 100644
--- a/src/views/sfstatistics/percentage/satisfaction.vue
+++ b/src/views/sfstatistics/percentage/satisfaction.vue
@@ -186,6 +186,7 @@
                   </template> -->
               </el-table-column>
               <el-table-column
+              v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'"
                 label="鍙婃椂鐜�"
                 align="center"
                 key="rate"
@@ -613,6 +614,8 @@
       idds: "", //鍒嗙被id
       // 鎬绘潯鏁�
       total: 0,
+      orgname: "",
+
       flatArrayhospit: [],
       flatArraydept: [],
       patienttotal: 0,
@@ -748,6 +751,8 @@
   },
   watch: {},
   created() {
+    this.orgname = localStorage.getItem("orgname");
+
     this.getDeptTree();
     this.getList();
   },
diff --git a/vue.config.js b/vue.config.js
index 2f448b9..252f723 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -37,13 +37,13 @@
       [process.env.VUE_APP_BASE_API]: {
         // target: `https://www.health-y.cn/lssf`,
         // target: `http://192.168.100.10:8096`,
-        // target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
+        target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
         // target: `http://192.168.100.10:8095`,//鏂板崕
         // target: `http://192.168.100.10:8098`,//甯備竴
-        target:`http://localhost:8095`,
+        // target:`http://localhost:8095`,
         // target:`http://35z1t16164.qicp.vip`,
         // target: `http://192.168.100.172:8095`,
-        // target: `http://192.168.100.10:8083`,//鍗楀崕
+        // target: `http://192.168.100.10:8089`,//鍗楀崕
         // target: `http://192.168.191.181:8095`,
         changeOrigin: true,
         pathRewrite: {
diff --git "a/\351\232\217\350\256\277\351\200\232\347\224\250.zip" "b/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
new file mode 100644
index 0000000..3135270
--- /dev/null
+++ "b/\351\232\217\350\256\277\351\200\232\347\224\250.zip"
Binary files differ

--
Gitblit v1.9.3