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

---
 src/views/followvisit/outpatient/index.vue               |    5 
 vue.config.js                                            |    4 
 src/views/followvisit/zbAgain/index.vue                  |    8 
 src/api/system/config.js                                 |    2 
 src/utils/ruoyi.js                                       |   15 
 src/views/patient/subsequent/index.vue                   |    5 
 src/views/followvisit/zysatisfaction/index.vue           |    8 
 src/views/patient/propaganda/QuestionnaireTask.vue       |    3 
 src/views/followvisit/mzsatisfaction/index.vue           |    5 
 src/views/patient/propaganda/index.vue                   |    5 
 src/views/followvisit/record/detailpage/index.vue        |   16 
 src/views/patient/propaganda/Missionotice.vue            |    5 
 src/store/getters.js                                     |    1 
 src/views/followvisit/discharge/outpatientService.vue    |    8 
 src/views/outsideChainxjnew.vue                          |  215 ++++++----
 src/views/outsideChainwtnew.vue                          |  383 +++++++++++--------
 src/views/followvisit/complaint/index.vue                |    8 
 src/views/followvisit/technology/index.vue               |    8 
 src/views/patient/physical/index.vue                     |    5 
 src/store/modules/user.js                                |   37 +
 src/views/followvisit/SpecificDisease/index.vue          |    8 
 src/views/followvisit/again/index.vue                    |    9 
 src/views/followvisit/Tracking/index.vue                 |    8 
 src/views/followvisit/beHospitalized/followUp.vue        |   31 
 src/views/patient/questionnaire/index.vue                |    5 
 src/views/followvisit/record/index.vue                   |    8 
 src/views/followvisit/Continue/index.vue                 |    8 
 src/views/followvisit/OutpatientAgain/index.vue          |    8 
 /dev/null                                                |    0 
 src/views/followvisit/record/physical/index.vue          |    9 
 src/main.js                                              |    2 
 src/views/patient/patient/hospital.vue                   |    8 
 src/views/patient/shadow/index.vue                       |    5 
 src/views/patient/medtechnician/Compositeeditdetails.vue |    6 
 src/views/patient/patient/profile/index.vue              |    1 
 src/utils/index.js                                       |  295 +++++++-------
 src/views/patient/propaganda/particty.vue                |    3 
 src/views/followvisit/beHospitalized/publicity.vue       |    5 
 src/views/followvisit/discharge/index.vue                |   30 
 39 files changed, 739 insertions(+), 456 deletions(-)

diff --git a/src/api/system/config.js b/src/api/system/config.js
index 3f5ab8b..ed66326 100644
--- a/src/api/system/config.js
+++ b/src/api/system/config.js
@@ -28,7 +28,7 @@
 // 鏂板鍙傛暟閰嶇疆
 export function addConfig(data) {
   return request({
-    url: '/system/config',
+    url: '/system/config/add',
     method: 'post',
     data: data
   })
diff --git a/src/main.js b/src/main.js
index 06edb6c..1b2328d 100644
--- a/src/main.js
+++ b/src/main.js
@@ -51,6 +51,7 @@
 import {
   parseTime,
   formatTime,
+  followupAuthority,
   resetForm,
   addDateRange,
   selectDictLabel,
@@ -111,6 +112,7 @@
 Vue.prototype.formatTime = formatTime;
 Vue.prototype.daysBetween = daysBetween;
 Vue.prototype.resetForm = resetForm;
+Vue.prototype.followupAuthority = followupAuthority;
 Vue.prototype.addDateRange = addDateRange;
 Vue.prototype.selectDictLabel = selectDictLabel;
 Vue.prototype.selectDictLabels = selectDictLabels;
diff --git a/src/store/getters.js b/src/store/getters.js
index c7b3887..a8b2816 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -15,6 +15,7 @@
   permissions: (state) => state.user.permissions,
   belongWards: (state) => state.user.belongWards,
   belongDepts: (state) => state.user.belongDepts,
+  visitAgain: (state) => state.user.visitAgain,
   satisfactionCategories: (state) => state.user.satisfactionCategories,
   hisUserId: (state) => state.user.hisUserId,
   permission_routes: (state) => state.permission.routes,
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index bd78301..031657f 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,4 +1,5 @@
 import { login, logout, getInfo } from "@/api/login";
+import { getConfig, getConfigKey, listConfig } from "@/api/system/config";
 import { getToken, setToken, removeToken } from "@/utils/auth";
 
 const user = {
@@ -13,6 +14,7 @@
     belongDepts: [],
     roles: [],
     permissions: [],
+    visitAgain: 1, //1寮�鍚�2涓嶅紑鍚啀娆¢殢璁�
     satisfactionCategories: {},
     // 鏈嶅姟绫诲瀷
     Serviceauthority: [
@@ -91,6 +93,9 @@
     },
     SET_nickNAME: (state, name) => {
       state.nickName = name;
+    },
+    SET_visitAgain: (state, visitAgain) => {
+      state.visitAgain = visitAgain;
     },
     SET_Id: (state, Id) => {
       state.Id = Id;
@@ -250,7 +255,7 @@
     },
 
     // 鑾峰彇鐢ㄦ埛淇℃伅
-    GetInfo({ commit, state }) {
+    GetInfo({ commit, state, dispatch }) {
       return new Promise((resolve, reject) => {
         getInfo()
           .then((res) => {
@@ -271,17 +276,30 @@
             commit("SET_Id", user.userId);
             commit("SET_hisUserId", user.hisUserId);
             commit("SET_satisfactionCategories", user.satisfactionCategories);
-
-            // if (user.userName == "admin") {
-            //   commit("SET_leaveldeptcodes", []);
-            //   commit("SET_leavehospitaldistrictcodes", []);
-            // } else {
-            //   commit("SET_leavehospitaldistrictcodes", user.belongWards);
-            //   commit("SET_leaveldeptcodes", user.belongDepts);
-            // }
             commit("SET_leavehospitaldistrictcodes", user.belongWards);
             commit("SET_leaveldeptcodes", user.belongDepts);
             commit("SET_AVATAR", avatar);
+            // 姝g‘璋冪敤鏂瑰紡锛氶�氳繃 dispatch
+            dispatch("GetConfig")
+              .then(() => {
+                resolve(res);
+              })
+              .catch((error) => {
+                reject(error);
+              });
+          })
+          .catch((error) => {
+            reject(error);
+          });
+      });
+    },
+    // 鑾峰彇鍙傛暟淇℃伅
+    GetConfig({ commit, state }) {
+      return new Promise((resolve, reject) => {
+        listConfig({ configName: "鍐嶆闅忚" })
+          .then((res) => {
+            if (res.rows && res.rows.length > 0)
+              commit("SET_visitAgain", res.rows[0].configValue);
             resolve(res);
           })
           .catch((error) => {
@@ -289,7 +307,6 @@
           });
       });
     },
-
     // 閫�鍑虹郴缁�
     LogOut({ commit, state }) {
       return new Promise((resolve, reject) => {
diff --git a/src/utils/index.js b/src/utils/index.js
index 4e65504..89928cd 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,18 +1,26 @@
-import { parseTime } from './ruoyi'
+import { parseTime } from "./ruoyi";
+import store from "@/store";
 
 /**
  * 琛ㄦ牸鏃堕棿鏍煎紡鍖�
  */
 export function formatDate(cellValue) {
   if (cellValue == null || cellValue == "") return "";
-  var date = new Date(cellValue) 
-  var year = date.getFullYear()
-  var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
-  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() 
-  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() 
-  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() 
-  var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
-  return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
+  var date = new Date(cellValue);
+  var year = date.getFullYear();
+  var month =
+    date.getMonth() + 1 < 10
+      ? "0" + (date.getMonth() + 1)
+      : date.getMonth() + 1;
+  var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+  var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+  var minutes =
+    date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+  var seconds =
+    date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+  return (
+    year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds
+  );
 }
 
 /**
@@ -21,40 +29,40 @@
  * @returns {string}
  */
 export function formatTime(time, option) {
-  if (('' + time).length === 10) {
-    time = parseInt(time) * 1000
+  if (("" + time).length === 10) {
+    time = parseInt(time) * 1000;
   } else {
-    time = +time
+    time = +time;
   }
-  const d = new Date(time)
-  const now = Date.now()
+  const d = new Date(time);
+  const now = Date.now();
 
-  const diff = (now - d) / 1000
+  const diff = (now - d) / 1000;
 
   if (diff < 30) {
-    return '鍒氬垰'
+    return "鍒氬垰";
   } else if (diff < 3600) {
     // less 1 hour
-    return Math.ceil(diff / 60) + '鍒嗛挓鍓�'
+    return Math.ceil(diff / 60) + "鍒嗛挓鍓�";
   } else if (diff < 3600 * 24) {
-    return Math.ceil(diff / 3600) + '灏忔椂鍓�'
+    return Math.ceil(diff / 3600) + "灏忔椂鍓�";
   } else if (diff < 3600 * 24 * 2) {
-    return '1澶╁墠'
+    return "1澶╁墠";
   }
   if (option) {
-    return parseTime(time, option)
+    return parseTime(time, option);
   } else {
     return (
       d.getMonth() +
       1 +
-      '鏈�' +
+      "鏈�" +
       d.getDate() +
-      '鏃�' +
+      "鏃�" +
       d.getHours() +
-      '鏃�' +
+      "鏃�" +
       d.getMinutes() +
-      '鍒�'
-    )
+      "鍒�"
+    );
   }
 }
 
@@ -63,18 +71,18 @@
  * @returns {Object}
  */
 export function getQueryObject(url) {
-  url = url == null ? window.location.href : url
-  const search = url.substring(url.lastIndexOf('?') + 1)
-  const obj = {}
-  const reg = /([^?&=]+)=([^?&=]*)/g
+  url = url == null ? window.location.href : url;
+  const search = url.substring(url.lastIndexOf("?") + 1);
+  const obj = {};
+  const reg = /([^?&=]+)=([^?&=]*)/g;
   search.replace(reg, (rs, $1, $2) => {
-    const name = decodeURIComponent($1)
-    let val = decodeURIComponent($2)
-    val = String(val)
-    obj[name] = val
-    return rs
-  })
-  return obj
+    const name = decodeURIComponent($1);
+    let val = decodeURIComponent($2);
+    val = String(val);
+    obj[name] = val;
+    return rs;
+  });
+  return obj;
 }
 
 /**
@@ -83,14 +91,14 @@
  */
 export function byteLength(str) {
   // returns the byte length of an utf8 string
-  let s = str.length
+  let s = str.length;
   for (var i = str.length - 1; i >= 0; i--) {
-    const code = str.charCodeAt(i)
-    if (code > 0x7f && code <= 0x7ff) s++
-    else if (code > 0x7ff && code <= 0xffff) s += 2
-    if (code >= 0xDC00 && code <= 0xDFFF) i--
+    const code = str.charCodeAt(i);
+    if (code > 0x7f && code <= 0x7ff) s++;
+    else if (code > 0x7ff && code <= 0xffff) s += 2;
+    if (code >= 0xdc00 && code <= 0xdfff) i--;
   }
-  return s
+  return s;
 }
 
 /**
@@ -98,13 +106,13 @@
  * @returns {Array}
  */
 export function cleanArray(actual) {
-  const newArray = []
+  const newArray = [];
   for (let i = 0; i < actual.length; i++) {
     if (actual[i]) {
-      newArray.push(actual[i])
+      newArray.push(actual[i]);
     }
   }
-  return newArray
+  return newArray;
 }
 
 /**
@@ -112,13 +120,13 @@
  * @returns {Array}
  */
 export function param(json) {
-  if (!json) return ''
+  if (!json) return "";
   return cleanArray(
-    Object.keys(json).map(key => {
-      if (json[key] === undefined) return ''
-      return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
+    Object.keys(json).map((key) => {
+      if (json[key] === undefined) return "";
+      return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]);
     })
-  ).join('&')
+  ).join("&");
 }
 
 /**
@@ -126,21 +134,21 @@
  * @returns {Object}
  */
 export function param2Obj(url) {
-  const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
+  const search = decodeURIComponent(url.split("?")[1]).replace(/\+/g, " ");
   if (!search) {
-    return {}
+    return {};
   }
-  const obj = {}
-  const searchArr = search.split('&')
-  searchArr.forEach(v => {
-    const index = v.indexOf('=')
+  const obj = {};
+  const searchArr = search.split("&");
+  searchArr.forEach((v) => {
+    const index = v.indexOf("=");
     if (index !== -1) {
-      const name = v.substring(0, index)
-      const val = v.substring(index + 1, v.length)
-      obj[name] = val
+      const name = v.substring(0, index);
+      const val = v.substring(index + 1, v.length);
+      obj[name] = val;
     }
-  })
-  return obj
+  });
+  return obj;
 }
 
 /**
@@ -148,9 +156,9 @@
  * @returns {string}
  */
 export function html2Text(val) {
-  const div = document.createElement('div')
-  div.innerHTML = val
-  return div.textContent || div.innerText
+  const div = document.createElement("div");
+  div.innerHTML = val;
+  return div.textContent || div.innerText;
 }
 
 /**
@@ -160,21 +168,21 @@
  * @returns {Object}
  */
 export function objectMerge(target, source) {
-  if (typeof target !== 'object') {
-    target = {}
+  if (typeof target !== "object") {
+    target = {};
   }
   if (Array.isArray(source)) {
-    return source.slice()
+    return source.slice();
   }
-  Object.keys(source).forEach(property => {
-    const sourceProperty = source[property]
-    if (typeof sourceProperty === 'object') {
-      target[property] = objectMerge(target[property], sourceProperty)
+  Object.keys(source).forEach((property) => {
+    const sourceProperty = source[property];
+    if (typeof sourceProperty === "object") {
+      target[property] = objectMerge(target[property], sourceProperty);
     } else {
-      target[property] = sourceProperty
+      target[property] = sourceProperty;
     }
-  })
-  return target
+  });
+  return target;
 }
 
 /**
@@ -183,18 +191,18 @@
  */
 export function toggleClass(element, className) {
   if (!element || !className) {
-    return
+    return;
   }
-  let classString = element.className
-  const nameIndex = classString.indexOf(className)
+  let classString = element.className;
+  const nameIndex = classString.indexOf(className);
   if (nameIndex === -1) {
-    classString += '' + className
+    classString += "" + className;
   } else {
     classString =
       classString.substr(0, nameIndex) +
-      classString.substr(nameIndex + className.length)
+      classString.substr(nameIndex + className.length);
   }
-  element.className = classString
+  element.className = classString;
 }
 
 /**
@@ -202,10 +210,10 @@
  * @returns {Date}
  */
 export function getTime(type) {
-  if (type === 'start') {
-    return new Date().getTime() - 3600 * 1000 * 24 * 90
+  if (type === "start") {
+    return new Date().getTime() - 3600 * 1000 * 24 * 90;
   } else {
-    return new Date(new Date().toDateString())
+    return new Date(new Date().toDateString());
   }
 }
 
@@ -216,38 +224,38 @@
  * @return {*}
  */
 export function debounce(func, wait, immediate) {
-  let timeout, args, context, timestamp, result
+  let timeout, args, context, timestamp, result;
 
-  const later = function() {
+  const later = function () {
     // 鎹笂涓�娆¤Е鍙戞椂闂撮棿闅�
-    const last = +new Date() - timestamp
+    const last = +new Date() - timestamp;
 
     // 涓婃琚寘瑁呭嚱鏁拌璋冪敤鏃堕棿闂撮殧 last 灏忎簬璁惧畾鏃堕棿闂撮殧 wait
     if (last < wait && last > 0) {
-      timeout = setTimeout(later, wait - last)
+      timeout = setTimeout(later, wait - last);
     } else {
-      timeout = null
+      timeout = null;
       // 濡傛灉璁惧畾涓篿mmediate===true锛屽洜涓哄紑濮嬭竟鐣屽凡缁忚皟鐢ㄨ繃浜嗘澶勬棤闇�璋冪敤
       if (!immediate) {
-        result = func.apply(context, args)
-        if (!timeout) context = args = null
+        result = func.apply(context, args);
+        if (!timeout) context = args = null;
       }
     }
-  }
+  };
 
-  return function(...args) {
-    context = this
-    timestamp = +new Date()
-    const callNow = immediate && !timeout
+  return function (...args) {
+    context = this;
+    timestamp = +new Date();
+    const callNow = immediate && !timeout;
     // 濡傛灉寤舵椂涓嶅瓨鍦紝閲嶆柊璁惧畾寤舵椂
-    if (!timeout) timeout = setTimeout(later, wait)
+    if (!timeout) timeout = setTimeout(later, wait);
     if (callNow) {
-      result = func.apply(context, args)
-      context = args = null
+      result = func.apply(context, args);
+      context = args = null;
     }
 
-    return result
-  }
+    return result;
+  };
 }
 
 /**
@@ -258,18 +266,18 @@
  * @returns {Object}
  */
 export function deepClone(source) {
-  if (!source && typeof source !== 'object') {
-    throw new Error('error arguments', 'deepClone')
+  if (!source && typeof source !== "object") {
+    throw new Error("error arguments", "deepClone");
   }
-  const targetObj = source.constructor === Array ? [] : {}
-  Object.keys(source).forEach(keys => {
-    if (source[keys] && typeof source[keys] === 'object') {
-      targetObj[keys] = deepClone(source[keys])
+  const targetObj = source.constructor === Array ? [] : {};
+  Object.keys(source).forEach((keys) => {
+    if (source[keys] && typeof source[keys] === "object") {
+      targetObj[keys] = deepClone(source[keys]);
     } else {
-      targetObj[keys] = source[keys]
+      targetObj[keys] = source[keys];
     }
-  })
-  return targetObj
+  });
+  return targetObj;
 }
 
 /**
@@ -277,16 +285,16 @@
  * @returns {Array}
  */
 export function uniqueArr(arr) {
-  return Array.from(new Set(arr))
+  return Array.from(new Set(arr));
 }
 
 /**
  * @returns {string}
  */
 export function createUniqueString() {
-  const timestamp = +new Date() + ''
-  const randomNum = parseInt((1 + Math.random()) * 65536) + ''
-  return (+(randomNum + timestamp)).toString(32)
+  const timestamp = +new Date() + "";
+  const randomNum = parseInt((1 + Math.random()) * 65536) + "";
+  return (+(randomNum + timestamp)).toString(32);
 }
 
 /**
@@ -296,7 +304,7 @@
  * @returns {boolean}
  */
 export function hasClass(ele, cls) {
-  return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
+  return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
 }
 
 /**
@@ -305,7 +313,7 @@
  * @param {string} cls
  */
 export function addClass(ele, cls) {
-  if (!hasClass(ele, cls)) ele.className += ' ' + cls
+  if (!hasClass(ele, cls)) ele.className += " " + cls;
 }
 
 /**
@@ -315,76 +323,73 @@
  */
 export function removeClass(ele, cls) {
   if (hasClass(ele, cls)) {
-    const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
-    ele.className = ele.className.replace(reg, ' ')
+    const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
+    ele.className = ele.className.replace(reg, " ");
   }
 }
 
 export function makeMap(str, expectsLowerCase) {
-  const map = Object.create(null)
-  const list = str.split(',')
+  const map = Object.create(null);
+  const list = str.split(",");
   for (let i = 0; i < list.length; i++) {
-    map[list[i]] = true
+    map[list[i]] = true;
   }
-  return expectsLowerCase
-    ? val => map[val.toLowerCase()]
-    : val => map[val]
+  return expectsLowerCase ? (val) => map[val.toLowerCase()] : (val) => map[val];
 }
- 
-export const exportDefault = 'export default '
+
+export const exportDefault = "export default ";
 
 export const beautifierConf = {
   html: {
-    indent_size: '2',
-    indent_char: ' ',
-    max_preserve_newlines: '-1',
+    indent_size: "2",
+    indent_char: " ",
+    max_preserve_newlines: "-1",
     preserve_newlines: false,
     keep_array_indentation: false,
     break_chained_methods: false,
-    indent_scripts: 'separate',
-    brace_style: 'end-expand',
+    indent_scripts: "separate",
+    brace_style: "end-expand",
     space_before_conditional: true,
     unescape_strings: false,
     jslint_happy: false,
     end_with_newline: true,
-    wrap_line_length: '110',
+    wrap_line_length: "110",
     indent_inner_html: true,
     comma_first: false,
     e4x: true,
-    indent_empty_lines: true
+    indent_empty_lines: true,
   },
   js: {
-    indent_size: '2',
-    indent_char: ' ',
-    max_preserve_newlines: '-1',
+    indent_size: "2",
+    indent_char: " ",
+    max_preserve_newlines: "-1",
     preserve_newlines: false,
     keep_array_indentation: false,
     break_chained_methods: false,
-    indent_scripts: 'normal',
-    brace_style: 'end-expand',
+    indent_scripts: "normal",
+    brace_style: "end-expand",
     space_before_conditional: true,
     unescape_strings: false,
     jslint_happy: true,
     end_with_newline: true,
-    wrap_line_length: '110',
+    wrap_line_length: "110",
     indent_inner_html: true,
     comma_first: false,
     e4x: true,
-    indent_empty_lines: true
-  }
-}
+    indent_empty_lines: true,
+  },
+};
 
 // 棣栧瓧姣嶅ぇ灏�
 export function titleCase(str) {
-  return str.replace(/( |^)[a-z]/g, L => L.toUpperCase())
+  return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
 }
 
 // 涓嬪垝杞┘宄�
 export function camelCase(str) {
-  return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase())
+  return str.replace(/_[a-z]/g, (str1) => str1.substr(-1).toUpperCase());
 }
 
 export function isNumberStr(str) {
-  return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
+  return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str);
 }
- 
diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js
index f02bc0d..a635716 100644
--- a/src/utils/ruoyi.js
+++ b/src/utils/ruoyi.js
@@ -3,6 +3,7 @@
  * Copyright (c) 2019 ruoyi
  */
 import dayjs from "dayjs";
+import store from "@/store";
 
 // 鏃ユ湡鏍煎紡鍖�
 export function parseTime(time, pattern) {
@@ -62,6 +63,16 @@
   // 杩斿洖澶╂暟锛屽洓鑸嶄簲鍏ュ埌鏈�鎺ヨ繎鐨勬暣鏁�
   return Math.round(differenceInDays);
 }
+export function followupAuthority() {
+  const depts = store.getters.belongDepts;
+  const wards = store.getters.belongWards;
+console.log(1);
+
+  return (
+    (Array.isArray(depts) && depts.length > 0) ||
+    (Array.isArray(wards) && wards.length > 0)
+  );
+}
 // 杩囨护鍣�
 export function formatTime(val) {
   if (val) {
@@ -83,8 +94,8 @@
   let search = params;
   search.params =
     typeof search.params === "object" &&
-    search.params !== null &&
-    !Array.isArray(search.params)
+      search.params !== null &&
+      !Array.isArray(search.params)
       ? search.params
       : {};
   dateRange = Array.isArray(dateRange) ? dateRange : [];
diff --git a/src/views/followvisit/Continue/index.vue b/src/views/followvisit/Continue/index.vue
index e2e6305..3fefd8b 100644
--- a/src/views/followvisit/Continue/index.vue
+++ b/src/views/followvisit/Continue/index.vue
@@ -1340,6 +1340,11 @@
       } 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;
@@ -1833,7 +1838,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/OutpatientAgain/index.vue b/src/views/followvisit/OutpatientAgain/index.vue
index 3978b3a..11a0942 100644
--- a/src/views/followvisit/OutpatientAgain/index.vue
+++ b/src/views/followvisit/OutpatientAgain/index.vue
@@ -1178,6 +1178,11 @@
       } 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;
@@ -1614,7 +1619,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/SpecificDisease/index.vue b/src/views/followvisit/SpecificDisease/index.vue
index 09b57fa..eb3ad64 100644
--- a/src/views/followvisit/SpecificDisease/index.vue
+++ b/src/views/followvisit/SpecificDisease/index.vue
@@ -978,6 +978,11 @@
       }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;
@@ -1317,7 +1322,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/Tracking/index.vue b/src/views/followvisit/Tracking/index.vue
index 32ef13b..4c46009 100644
--- a/src/views/followvisit/Tracking/index.vue
+++ b/src/views/followvisit/Tracking/index.vue
@@ -1117,6 +1117,11 @@
       } 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;
@@ -1553,7 +1558,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/again/index.vue b/src/views/followvisit/again/index.vue
index 8d213e4..7a98f4a 100644
--- a/src/views/followvisit/again/index.vue
+++ b/src/views/followvisit/again/index.vue
@@ -1177,6 +1177,12 @@
       } 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;
@@ -1613,7 +1619,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/beHospitalized/followUp.vue b/src/views/followvisit/beHospitalized/followUp.vue
index 8646bb2..a017b39 100644
--- a/src/views/followvisit/beHospitalized/followUp.vue
+++ b/src/views/followvisit/beHospitalized/followUp.vue
@@ -347,11 +347,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
@@ -411,9 +411,7 @@
                 >
               </div>
               <div v-if="scope.row.sendstate == 7">
-                <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
-                >
+                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
               </div>
             </el-tooltip>
           </template>
@@ -1087,7 +1085,7 @@
   addserviceSubtask,
   query360PatInfo,
   addsatisfaction,
-  query360PatInfonh
+  query360PatInfonh,
 } from "@/api/AiCentre/index";
 import { alterpatient, particularpatient } from "@/api/patient/homepage";
 import Treeselect from "@riophae/vue-treeselect";
@@ -1256,7 +1254,7 @@
           value: 8,
           label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
         },
-         {
+        {
           value: 9,
           label: "鎸夌収鎮h�呮帓搴�",
         },
@@ -1308,7 +1306,7 @@
           value: 6,
           label: "宸插畬鎴�",
         },
-         {
+        {
           value: 7,
           label: "瓒呮椂",
         },
@@ -1486,6 +1484,12 @@
         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;
@@ -2004,7 +2008,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
@@ -2070,7 +2075,7 @@
         {
           ...this.topqueryParams,
         },
-        `user_${new Date().getTime()}.xlsx`,
+        `user_${new Date().getTime()}.xlsx`
       );
     },
     // 寮傚父鍒楁覆鏌�
diff --git a/src/views/followvisit/beHospitalized/publicity.vue b/src/views/followvisit/beHospitalized/publicity.vue
index 2ac8066..15311bb 100644
--- a/src/views/followvisit/beHospitalized/publicity.vue
+++ b/src/views/followvisit/beHospitalized/publicity.vue
@@ -857,6 +857,11 @@
         this.topqueryParams.deptOrDistrict = 1;
       }
       console.log(55);
+
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
       getTaskservelist(this.topqueryParams).then((response) => {
         this.userList = response.rows[0].serviceSubtaskList;
         this.userList.forEach((item) => {
diff --git a/src/views/followvisit/complaint/index.vue b/src/views/followvisit/complaint/index.vue
index 2fea4e7..819b977 100644
--- a/src/views/followvisit/complaint/index.vue
+++ b/src/views/followvisit/complaint/index.vue
@@ -1269,6 +1269,11 @@
       } 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;
@@ -1741,7 +1746,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 1f3b9d4..674fde9 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -346,7 +346,12 @@
               size="medium"
               type="text"
               @click="
-                gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname,scope.row.patid)
+                gettoken360(
+                  scope.row.sfzh,
+                  scope.row.drcode,
+                  scope.row.drname,
+                  scope.row.patid
+                )
               "
               ><span class="button-textsc">{{
                 scope.row.sendname
@@ -406,9 +411,7 @@
                 >
               </div>
               <div v-if="scope.row.sendstate == 7">
-                <el-tag type="danger" :disable-transitions="false"
-                  >瓒呮椂</el-tag
-                >
+                <el-tag type="danger" :disable-transitions="false">瓒呮椂</el-tag>
               </div>
             </el-tooltip>
           </template>
@@ -1082,7 +1085,7 @@
   addserviceSubtask,
   query360PatInfo,
   addsatisfaction,
-  query360PatInfonh
+  query360PatInfonh,
 } from "@/api/AiCentre/index";
 import { alterpatient, particularpatient } from "@/api/patient/homepage";
 import Treeselect from "@riophae/vue-treeselect";
@@ -1251,7 +1254,7 @@
           value: 8,
           label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
         },
-         {
+        {
           value: 9,
           label: "鎸夌収鎮h�呮帓搴�",
         },
@@ -1303,7 +1306,7 @@
           value: 6,
           label: "宸插畬鎴�",
         },
-         {
+        {
           value: 7,
           label: "瓒呮椂",
         },
@@ -1482,6 +1485,11 @@
       } 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;
@@ -1833,8 +1841,8 @@
     },
     //鎮h��360璺宠浆
     gettoken360(sfzh, drcode, drname, id) {
-     const orgname = localStorage.getItem("orgname");
-       if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
+      const orgname = localStorage.getItem("orgname");
+      if (orgname == "鍗楀崕澶у闄勫睘绗竴鍖婚櫌") {
         query360PatInfonh(id).then((res) => {
           if (res.url) {
             window.open(res.url, "_blank");
@@ -2060,7 +2068,7 @@
     handleExport() {
       const originalPageNum = this.topqueryParams.pageNum;
       const originalPageSize = this.topqueryParams.pageSize;
-this.topqueryParams.pageNum = null;
+      this.topqueryParams.pageNum = null;
       this.topqueryParams.pageSize = null;
       this.download(
         "smartor/serviceSubtask/patItemExport",
@@ -2072,7 +2080,7 @@
         // 瀵煎嚭鍚庢仮澶嶅垎椤靛弬鏁�
         this.topqueryParams.pageNum = originalPageNum;
         this.topqueryParams.pageSize = originalPageSize;
-        this.getList()
+        this.getList();
       });
     },
     // 寮傚父鍒楁覆鏌�
diff --git a/src/views/followvisit/discharge/outpatientService.vue b/src/views/followvisit/discharge/outpatientService.vue
index df311f2..8cea2da 100644
--- a/src/views/followvisit/discharge/outpatientService.vue
+++ b/src/views/followvisit/discharge/outpatientService.vue
@@ -1162,6 +1162,11 @@
       } 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;
@@ -1587,7 +1592,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/mzsatisfaction/index.vue b/src/views/followvisit/mzsatisfaction/index.vue
index 0eba933..1970ad1 100644
--- a/src/views/followvisit/mzsatisfaction/index.vue
+++ b/src/views/followvisit/mzsatisfaction/index.vue
@@ -1313,6 +1313,11 @@
       } 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;
diff --git a/src/views/followvisit/outpatient/index.vue b/src/views/followvisit/outpatient/index.vue
index e571a3a..c1ec77d 100644
--- a/src/views/followvisit/outpatient/index.vue
+++ b/src/views/followvisit/outpatient/index.vue
@@ -875,6 +875,11 @@
       this.loading = true;
 
 
+
+      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;
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index e482303..cfe9b61 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -77,7 +77,7 @@
                     scope.row.sfzh,
                     scope.row.drcode,
                     scope.row.drname,
-                    scope.row.patid,
+                    scope.row.patid
                   )
                 "
                 ><span class="button-textsc">{{
@@ -577,7 +577,7 @@
                   type="primary"
                   round
                   @click="sendAgain"
-                  v-if="form.isVisitAgain != 2"
+                  v-if="(form.isVisitAgain != 2) & (visitAgain == 2)"
                 >
                   鍐嶆闅忚
                 </el-button>
@@ -1167,6 +1167,7 @@
 import CallButton from "@/components/CallButton";
 import MergeAndModify from "./MergeAndModify.vue";
 import CallCenterLs from "@/components/CallCenterLs";
+import store from "@/store";
 export default {
   components: {
     CallButton,
@@ -1255,6 +1256,7 @@
       }, 300);
     };
     return {
+      visitAgain: 1,
       userid: "",
       currentPhoneNumber: "",
       callType: "", // 鐢ㄤ簬鍖哄垎鏄摢涓數璇�
@@ -1572,6 +1574,9 @@
     this.Voicetype = this.$route.query.Voicetype;
     this.visitCount = this.$route.query.visitCount;
     this.serviceType = this.$route.query.serviceType;
+    this.visitAgain = store.getters.visitAgain;
+    console.log(store.getters.visitAgain);
+
 
     this.orgname = localStorage.getItem("orgname");
     if (this.orgname == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯") {
@@ -1947,7 +1952,7 @@
           this.Editsingletasksonyic(this.serviceStates);
           const orgName = localStorage.getItem("orgname");
 
-          if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌") {
+          if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌"||this.visitAgain==1) {
             this.Torouter();
             return;
           }
@@ -2144,7 +2149,7 @@
       const orgName = localStorage.getItem("orgname");
       console.log(orgName, "orgName");
 
-      if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌") {
+      if (this.form.isVisitAgain != 1 || orgName == "涓芥按甯備腑鍖婚櫌"||this.visitAgain==1) {
         this.Torouter();
         return;
       }
@@ -2215,6 +2220,9 @@
           this.selectedTag = this.form.excep;
           const targetDate = new Date(this.form.visitTime); // 鐩爣鏃ユ湡
           const now = new Date(); // 褰撳墠鏃堕棿
+          console.log(now,'褰撳墠鏃堕棿');
+          console.log(targetDate,'鐩爣鏃ユ湡');
+
           if (now < targetDate && this.form.sendstate == 2) {
             this.$confirm("褰撳墠鏈嶅姟鏈埌鍙戦�佹椂闂磋璋ㄦ厧淇敼", "鎻愮ず", {
               confirmButtonText: "纭畾",
diff --git a/src/views/followvisit/record/index.vue b/src/views/followvisit/record/index.vue
index 0bd5a86..7e3faca 100644
--- a/src/views/followvisit/record/index.vue
+++ b/src/views/followvisit/record/index.vue
@@ -1096,6 +1096,11 @@
       } 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;
@@ -1528,7 +1533,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/record/physical/index.vue b/src/views/followvisit/record/physical/index.vue
index abbdaaf..597c6f0 100644
--- a/src/views/followvisit/record/physical/index.vue
+++ b/src/views/followvisit/record/physical/index.vue
@@ -703,14 +703,7 @@
             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;
+        return
       }
 
       this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
diff --git a/src/views/followvisit/technology/index.vue b/src/views/followvisit/technology/index.vue
index c23ad91..a2be664 100644
--- a/src/views/followvisit/technology/index.vue
+++ b/src/views/followvisit/technology/index.vue
@@ -991,6 +991,11 @@
       }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;
@@ -1392,7 +1397,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/zbAgain/index.vue b/src/views/followvisit/zbAgain/index.vue
index d1f9f01..4833e3a 100644
--- a/src/views/followvisit/zbAgain/index.vue
+++ b/src/views/followvisit/zbAgain/index.vue
@@ -1168,6 +1168,11 @@
       } 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;
@@ -1604,7 +1609,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/followvisit/zysatisfaction/index.vue b/src/views/followvisit/zysatisfaction/index.vue
index 710751c..0399723 100644
--- a/src/views/followvisit/zysatisfaction/index.vue
+++ b/src/views/followvisit/zysatisfaction/index.vue
@@ -1272,6 +1272,11 @@
       } 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;
@@ -1744,7 +1749,8 @@
             '"鐨勬暟鎹」锛�'
         )
         .then(() => {
-          getTaskservelist({
+
+      getTaskservelist({
             patid: row.patid,
             taskid: row.taskid,
           }).then((res) => {
diff --git a/src/views/outsideChainwtnew.vue b/src/views/outsideChainwtnew.vue
index 0dcd0dd..e435d5c 100644
--- a/src/views/outsideChainwtnew.vue
+++ b/src/views/outsideChainwtnew.vue
@@ -1,160 +1,177 @@
 <template>
   <div class="questionnaire-optimized">
-    <div class="content-wrapper" v-if="!accomplish">
-      <div class="questionnaire-container">
-        <!-- 闂嵎鏍囬鍖哄煙 -->
-        <div class="questionnaire-header">
-          <h1 class="questionnaire-title">
-            {{ taskname ? taskname : "闂嵎" }}
-          </h1>
-          <div class="questionnaire-description">
-            {{
-              kcb
-                ? kcb
-                : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖婚櫌鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�"
-            }}
-          </div>
-        </div>
-
-        <el-divider class="custom-divider"></el-divider>
-
-        <!-- 闂嵎棰樼洰鍖哄煙 -->
-        <div class="questions-section">
-          <div
-            class="question-item"
-            v-for="(item, index) in visibleQuestions"
-            :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"
-                >{{ getVisibleQuestionIndex(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,
-                      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 class="submit-section">
-          <el-button type="primary" @click="cache(true)" class="submit-button">
-            鎻愪氦闂嵎
-          </el-button>
-        </div>
+    <div v-if="loading" class="loading-container">
+      <div class="loading-content">
+        <i class="el-icon-loading loading-icon"></i>
+        <div class="loading-text">闂嵎鍔犺浇涓紝璇风◢鍊�...</div>
       </div>
     </div>
 
-    <!-- 瀹屾垚椤甸潰 -->
-    <div class="completion-page" v-else>
-      <div class="completion-content">
-        <div class="completion-icon">鉁�</div>
-        <h2 class="completion-title">鎰熻阿鎮ㄧ殑閰嶅悎!</h2>
-        <p class="completion-message">
-          {{
-            jsy
-              ? jsy
-              : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈鍥炶灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
-          }}
-        </p>
+    <!-- 姝e父鍐呭 -->
+    <div v-else>
+      <div class="content-wrapper" v-if="!accomplish">
+        <div class="questionnaire-container">
+          <!-- 闂嵎鏍囬鍖哄煙 -->
+          <div class="questionnaire-header">
+            <h1 class="questionnaire-title">
+              {{ taskname ? taskname : "闂嵎" }}
+            </h1>
+            <div class="questionnaire-description">
+              {{
+                kcb
+                  ? kcb
+                  : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖婚櫌鐨勫尰鎶や汉鍛橈紝涓轰簡鏇村ソ鍦颁簡瑙f偍鐨勫悍澶嶆儏鍐碉紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤闅忚闂嵎銆�"
+              }}
+            </div>
+          </div>
+
+          <el-divider class="custom-divider"></el-divider>
+
+          <!-- 闂嵎棰樼洰鍖哄煙 -->
+          <div class="questions-section">
+            <div
+              class="question-item"
+              v-for="(item, index) in visibleQuestions"
+              :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"
+                  >{{ getVisibleQuestionIndex(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,
+                        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 class="submit-section">
+            <el-button
+              type="primary"
+              @click="cache(true)"
+              class="submit-button"
+            >
+              鎻愪氦闂嵎
+            </el-button>
+          </div>
+        </div>
+      </div>
+
+      <!-- 瀹屾垚椤甸潰 -->
+      <div class="completion-page" v-else>
+        <div class="completion-content">
+          <div class="completion-icon">鉁�</div>
+          <h2 class="completion-title">鎰熻阿鎮ㄧ殑閰嶅悎!</h2>
+          <p class="completion-message">
+            {{
+              jsy
+                ? jsy
+                : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈鍥炶灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
+            }}
+          </p>
+        </div>
       </div>
     </div>
   </div>
@@ -172,6 +189,7 @@
 export default {
   data() {
     return {
+      loading: true,
       taskid: 355,
       patid: 265823,
       kcb: "",
@@ -179,7 +197,7 @@
       isabnormal: 0,
       taskname: "",
       questionList: [],
-      param6:null,
+      param6: null,
       jsy: null,
       dialogVisible: false,
       Endornot: true,
@@ -233,7 +251,6 @@
             res.data.param5
           );
           this.param6 = res.data.param6;
-
         }
       });
     },
@@ -253,6 +270,8 @@
       this.taskid = decodeURIComponent(param1);
       this.patid = decodeURIComponent(param2);
       this.taskname = decodeURIComponent(param3);
+      this.loading = true;
+
       // let taskid =
       //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw==";
       // let patid =
@@ -262,8 +281,8 @@
       // let taskids = this.encrypt(this.taskid);
       // let patids = this.encrypt(this.patid);
       // 鍏堝彇缂撳瓨
-      getCachequestionnaire({ param1: this.taskid, param2: this.patid }).then(
-        (res) => {
+      getCachequestionnaire({ param1: this.taskid, param2: this.patid })
+        .then((res) => {
           if (res.code == 200) {
             this.questionList = res.data.result;
             this.accomplish = res.data.submit;
@@ -275,6 +294,8 @@
                   item.scriptResult = item.scriptResult.split("&");
                 }
               });
+              this.loading = false;
+
               return;
             } else {
               this.getExternalfollowup();
@@ -282,13 +303,13 @@
           } else {
             this.getExternalfollowup();
           }
-        }
-      );
+        })
+        .finally(() => {});
     },
     // 鑾峰彇鏁版嵁
     getExternalfollowup() {
-      getExternalfollowup({ param1: this.taskid, param2: this.patid }).then(
-        (res) => {
+      getExternalfollowup({ param1: this.taskid, param2: this.patid })
+        .then((res) => {
           if (res.code == 200) {
             this.questionList = res.data.script;
             this.jsy = res.data.jsy;
@@ -300,9 +321,12 @@
                 item.scriptResult = [];
               }
             });
+            this.loading = false;
           }
-        }
-      );
+        })
+        .finally(() => {
+          this.loading = false;
+        });
     },
     // 鍔犲瘑鍑芥暟
     encrypt(txt) {
@@ -851,4 +875,39 @@
     font-size: 60px;
   }
 }
+.loading-container {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  min-height: 70vh;
+}
+
+.loading-content {
+  text-align: center;
+  padding: 40px;
+  background: #fff;
+  border-radius: 8px;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
+}
+
+.loading-icon {
+  font-size: 40px;
+  color: #409eff;
+  margin-bottom: 15px;
+  animation: rotating 2s linear infinite;
+}
+
+.loading-text {
+  font-size: 16px;
+  color: #606266;
+}
+
+@keyframes rotating {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
 </style>
diff --git a/src/views/outsideChainxjnew.vue b/src/views/outsideChainxjnew.vue
index d1014b3..0e45e36 100644
--- a/src/views/outsideChainxjnew.vue
+++ b/src/views/outsideChainxjnew.vue
@@ -1,52 +1,49 @@
 <template>
   <div class="questionnaire">
-    <!-- <div class="CONTENT">
-      <div class="title">鏅畞浜烘皯鍖婚櫌鍖绘姢鐭ヨ瘑瀹f暀</div>
-      <div class="preview-left">
-        <div v-html="richText"></div>
+    <!-- 鍔犺浇鐘舵�� -->
+    <div v-if="loading" class="loading-container">
+      <div class="loading-content">
+        <i class="el-icon-loading loading-icon"></i>
+        <div class="loading-text">瀹f暀鍐呭鍔犺浇涓紝璇风◢鍊�...</div>
       </div>
+    </div>
 
-    </div> -->
-    <div class="CONTENT">
-      <div class="preview-left">
-        <div class="toptitle">
-          <div class="title">
-            {{ taskname ? taskname : "鍖绘姢鐭ヨ瘑瀹f暀" }}
+    <!-- 姝e父鍐呭 -->
+    <div v-else>
+      <div class="CONTENT">
+        <div class="preview-left">
+          <div class="toptitle">
+            <div class="title">
+              {{ taskname ? taskname : "鍖绘姢鐭ヨ瘑瀹f暀" }}
+            </div>
+            <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
+              {{
+                kcb
+                  ? kcb
+                  : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖绘姢浜哄憳锛屼负浜嗘洿濂藉湴浜嗚В鎮ㄧ殑搴峰鎯呭喌锛岃鎮ㄦ娊涓�鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�"
+              }}
+              <!-- 浜茬埍鐨勬偅鑰�/瀹跺睘鎮ㄥソ锛屼负浜嗘洿濂界殑浜嗚В鎮ㄥ嚭闄㈠悗鐨勫悍澶嶆儏鍐碉紝缁欐偍閫傚綋鍙婃椂鐨勫仴搴锋寚瀵硷紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤鍑洪櫌闅忚闂嵎璋冩煡銆� -->
+            </div>
           </div>
-          <div style="font-size: 22px; margin-bottom: 20px; line-height: 1.5">
+          <el-divider></el-divider>
+          <div v-html="richText"></div>
+          <div
+            style="
+              text-align: center;
+              padding-top: 50px;
+              font-size: 24px;
+              color: #175997;
+              font-weight: 600;
+              margin-bottom: 10px;
+            "
+          >
             {{
-              kcb
-                ? kcb
-                : "浜茬埍鐨勬偅鑰�-瀹跺睘锛屾垜浠槸鍖绘姢浜哄憳锛屼负浜嗘洿濂藉湴浜嗚В鎮ㄧ殑搴峰鎯呭喌锛岃鎮ㄦ娊涓�鐐瑰疂璐垫椂闂达紝瑙傜湅杩欎唤瀹f暀璧勮銆�"
+              jsy
+                ? jsy
+                : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
             }}
-            <!-- 浜茬埍鐨勬偅鑰�/瀹跺睘鎮ㄥソ锛屼负浜嗘洿濂界殑浜嗚В鎮ㄥ嚭闄㈠悗鐨勫悍澶嶆儏鍐碉紝缁欐偍閫傚綋鍙婃椂鐨勫仴搴锋寚瀵硷紝璇锋偍鎶戒竴鐐瑰疂璐垫椂闂达紝瀹屾垚杩欎唤鍑洪櫌闅忚闂嵎璋冩煡銆� -->
           </div>
         </div>
-        <el-divider></el-divider>
-        <div v-html="richText"></div>
-        <div
-          style="
-            text-align: center;
-            padding-top: 50px;
-            font-size: 24px;
-            color: #175997;
-            font-weight: 600;
-            margin-bottom: 10px;
-          "
-        >
-          {{
-            jsy
-              ? jsy
-              : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
-          }}
-        </div>
-        <!-- <div style="font-size: 20px">
-          {{
-            jsy
-              ? jsy
-              : "鐢熸椿涓婅鍔抽�哥粨鍚堬紝娉ㄦ剰浼戞伅鍜岃惀鍏伙紝閫傚綋閿荤偧锛屾垝鐑熼檺閰掞紝淇濇寔蹇冩儏鑸掔晠锛屽畾鏈熷璇娿�傞偅鏈瀹f暀鍐呭灏卞埌杩欓噷锛岀鎮ㄨ韩浣撳仴搴凤紒"
-          }}
-        </div> -->
       </div>
     </div>
   </div>
@@ -83,6 +80,7 @@
       taskname: "",
       kcb: "",
       jsy: "",
+      loading: true, // 鏂板锛氬姞杞界姸鎬�
     };
   },
 
@@ -92,69 +90,62 @@
   methods: {
     // 瑙f瀽urlid
     geturlinfo() {
-      // let url = window.location.href;
+      this.loading = true; // 寮�濮嬪姞杞�
       let url = this.$route.query.p;
-      // let url = 'http://218.108.11.22:8093/sf/003';
-      // let urlid = this.extractLastSegmentFromUrl(url);
 
-      geturlinfo(url).then((res) => {
-        if (res.code == 200) {
-          this.getQuestionnaire(
-            res.data.param1,
-            res.data.param2,
-            res.data.param3,
-            res.data.param5
-          );
-        }
-      });
+      geturlinfo(url)
+        .then((res) => {
+          if (res.code == 200) {
+            this.getQuestionnaire(
+              res.data.param1,
+              res.data.param2,
+              res.data.param3,
+              res.data.param5
+            );
+          } else {
+            this.loading = false; // 鑾峰彇URL淇℃伅澶辫触鏃跺叧闂姞杞�
+          }
+        })
+        .catch(() => {
+          this.loading = false; // 鍑洪敊鏃跺叧闂姞杞�
+        });
     },
-    //     extractLastSegmentFromUrl(url) {
-    //     // 鎵惧埌鏈�鍚庝竴涓�'/'鐨勪綅缃�
-    //     const lastSlashIndex = url.lastIndexOf('/');
-    //     // 濡傛灉鎵惧埌浜�'/'锛屾埅鍙栧叾鍚庣殑鎵�鏈夊瓧绗�
-    //     if (lastSlashIndex !== -1) {
-    //         return url.substring(lastSlashIndex + 1);
-    //     }
-    //     // 濡傛灉娌℃湁鎵惧埌'/'锛岃繑鍥炵┖瀛楃涓�
-    //     return '';
-    // },
+
     // 鑾峰彇鏁版嵁
     getQuestionnaire(param1, param2, param3) {
       this.taskid = decodeURIComponent(param1);
       this.patid = decodeURIComponent(param2);
       this.taskname = decodeURIComponent(param3);
-      // // let taskid =
-      // //   "OFp7tn/B6x7IzKJetvGWHdSWBj7msRlnlj6am9dyuHTH6sEt4uBbVCUXs5kcF/e4O2W6vqHf2Bz9K3/evbYDmw==";
-      // // let patid =
-      // //   "CVk0j8O86AeCqhV5WPsBBYDg9fec0wDoDlP9imYK4wDBNIkxywZzMJEGlPagOxnq6qr2WYZo0U8MUGWRGnq8ZA==";
-      // this.taskid = this.decrypt(taskid);
-      // this.patid = this.decrypt(patid);
 
-      // // this.$modal.msgSuccess("鐢ㄦ埛id涓�" + this.patid);
-      // // this.$modal.msgSuccess("浠诲姟id涓�" + this.taskid);
-      // let taskids = this.encrypt(this.taskid);
-      // let patids = this.encrypt(this.patid);
-      getExternalfollowup({ param1: this.taskid, param2: this.patid }).then(
-        (res) => {
+      getExternalfollowup({ param1: this.taskid, param2: this.patid })
+        .then((res) => {
           if (res.code == 200) {
             this.url = res.data.script[0].richText;
             this.jsy = res.data.jsy;
             this.kcb = res.data.kcb;
-            // 涓存椂鑾峰彇鏁版嵁
+
+            // 鑾峰彇瀵屾枃鏈唴瀹�
             axios
               .get(this.url)
               .then((response) => {
-                console.log(response.data, "鏁版嵁"); // 杈撳嚭鑾峰彇鍒扮殑鏂囦欢鍐呭
+                console.log(response.data, "鏁版嵁");
                 this.richText = response.data;
                 this.richText = this.addStyleToImages(this.richText);
+                this.loading = false; // 鏁版嵁鍔犺浇瀹屾垚
               })
               .catch((error) => {
                 console.error("Failed to fetch file:", error);
+                this.loading = false; // 鑾峰彇鍐呭澶辫触鏃跺叧闂姞杞�
               });
+          } else {
+            this.loading = false; // API杩斿洖閿欒鏃跺叧闂姞杞�
           }
-        }
-      );
+        })
+        .catch(() => {
+          this.loading = false; // API璋冪敤澶辫触鏃跺叧闂姞杞�
+        });
     },
+
     addStyleToImages(html) {
       if (!html) return html;
 
@@ -231,6 +222,7 @@
   min-height: 100vh;
   margin: 0;
   padding: 0;
+
   .CONTENT {
     padding-top: 15px;
     padding-bottom: 15px;
@@ -243,16 +235,15 @@
     }
   }
 }
+
 .preview-left {
   margin: 10px;
   margin-bottom: 60px;
   background-color: #fff;
   border-radius: 5px;
-  //   margin: 20px;
   padding: 10px;
   padding-bottom: 100px;
   height: 100%;
-  // 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);
@@ -264,4 +255,66 @@
     }
   }
 }
+
+/* 鏂板鍔犺浇鏍峰紡 */
+.loading-container {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: rgba(255, 255, 255, 0.9);
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 9999;
+}
+
+.loading-content {
+  text-align: center;
+  padding: 40px 60px;
+  background: #fff;
+  border-radius: 8px;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+  border: 1px solid #e4e7ed;
+}
+
+.loading-icon {
+  font-size: 40px;
+  color: #3769f3;
+  margin-bottom: 20px;
+  animation: loading-rotate 1.5s linear infinite;
+  display: block;
+}
+
+.loading-text {
+  font-size: 18px;
+  color: #606266;
+  font-weight: 500;
+  margin-top: 10px;
+}
+
+@keyframes loading-rotate {
+  0% {
+    transform: rotate(0deg);
+  }
+  100% {
+    transform: rotate(360deg);
+  }
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+  .loading-content {
+    padding: 30px 40px;
+  }
+
+  .loading-icon {
+    font-size: 32px;
+  }
+
+  .loading-text {
+    font-size: 16px;
+  }
+}
 </style>
diff --git a/src/views/patient/medtechnician/Compositeeditdetails.vue b/src/views/patient/medtechnician/Compositeeditdetails.vue
index 0b1e6d5..03b776a 100644
--- a/src/views/patient/medtechnician/Compositeeditdetails.vue
+++ b/src/views/patient/medtechnician/Compositeeditdetails.vue
@@ -120,7 +120,8 @@
                 icon="el-icon-plus"
                 v-if="!Whetherall"
                 type="primary"
-                @click="getTaskservelist()"
+                @click="
+      getTaskservelist()"
                 >娣诲姞浠诲姟娴佺▼</el-button
               >
             </div>
@@ -653,7 +654,8 @@
       });
     },
     // 鏂板浠诲姟
-    getTaskservelist() {
+
+      getTaskservelist() {
       this.serviceVisible = true;
     },
     // 瀵煎叆鎮h��
diff --git a/src/views/patient/patient/hospital.vue b/src/views/patient/patient/hospital.vue
index 0415c74..69db263 100644
--- a/src/views/patient/patient/hospital.vue
+++ b/src/views/patient/patient/hospital.vue
@@ -47,7 +47,7 @@
           </el-form-item>
           <el-form-item label="绉戝鍚嶇О" prop="inhospno">
             <el-input
-              v-model="queryParams.deptname"
+              v-model="queryParams.leaveldeptname"
               placeholder="璇疯緭鍏ョ瀹ゅ悕绉�"
               clearable
               style="width: 250px"
@@ -262,8 +262,8 @@
           <el-table-column
             label="绉戝"
             align="center"
-            key="deptname"
-            prop="deptname"
+            key="leaveldeptname"
+            prop="leaveldeptname"
             width="120"
           />
           <el-table-column
@@ -402,7 +402,7 @@
                 width="120"
                 align="center"
               />
-              <el-table-column prop="deptname" label="绉戝" align="center" />
+              <el-table-column prop="leaveldeptname" label="绉戝" align="center" />
               <el-table-column
                 prop="leavehospitaldistrictname"
                 label="鐥呭尯"
diff --git a/src/views/patient/patient/profile/index.vue b/src/views/patient/patient/profile/index.vue
index 08dab86..5426870 100644
--- a/src/views/patient/patient/profile/index.vue
+++ b/src/views/patient/patient/profile/index.vue
@@ -1243,6 +1243,7 @@
     },
     // 鏌ヨ鏈嶅姟璁板綍
     handleClickfw() {
+
       getTaskservelist({
         patid: this.id,
       }).then((res) => {
diff --git a/src/views/patient/physical/index.vue b/src/views/patient/physical/index.vue
index ea58a31..95ed6d6 100644
--- a/src/views/patient/physical/index.vue
+++ b/src/views/patient/physical/index.vue
@@ -875,6 +875,11 @@
       this.loading = true;
 
 
+
+      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;
diff --git a/src/views/patient/propaganda/Missionotice.vue b/src/views/patient/propaganda/Missionotice.vue
index ee36792..0bdd8a5 100644
--- a/src/views/patient/propaganda/Missionotice.vue
+++ b/src/views/patient/propaganda/Missionotice.vue
@@ -458,6 +458,11 @@
         this.topqueryParams.deptOrDistrict=1;
       }
 
+
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
       getTaskservelist(this.topqueryParams).then((response) => {
         this.userList = response.rows;
         this.total = response.total;
diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index e31466e..4b8848b 100644
--- a/src/views/patient/propaganda/QuestionnaireTask.vue
+++ b/src/views/patient/propaganda/QuestionnaireTask.vue
@@ -1523,6 +1523,9 @@
         this.form.icd10code = this.diagglist
           .map((item) => item.icdcode)
           .join(",");
+          this.form.icd10name = this.diagglist
+          .map((item) => item.icdname)
+          .join(",");
         Editsingletask(this.form).then((res) => {
           if (res.code == 200) {
             if (this.form.taskid) {
diff --git a/src/views/patient/propaganda/index.vue b/src/views/patient/propaganda/index.vue
index ae2df75..8bef086 100644
--- a/src/views/patient/propaganda/index.vue
+++ b/src/views/patient/propaganda/index.vue
@@ -857,6 +857,11 @@
         this.topqueryParams.deptOrDistrict = 1;
       }
       console.log(55);
+
+      if (!this.followupAuthority()) {
+        this.$message.warning("鏈厤缃瀹�/鐥呭尯鐩稿叧鏉冮檺涓嶅彲鏌ヨ");
+        return Promise.reject(new Error("鏃犳潈闄愭煡璇�"));
+      }
       getTaskservelist(this.topqueryParams).then((response) => {
         this.userList = response.rows[0].serviceSubtaskList;
         this.userList.forEach((item) => {
diff --git a/src/views/patient/propaganda/particty.vue b/src/views/patient/propaganda/particty.vue
index 16c9912..4eae84f 100644
--- a/src/views/patient/propaganda/particty.vue
+++ b/src/views/patient/propaganda/particty.vue
@@ -1556,6 +1556,9 @@
         this.form.icd10code = this.diagglist
           .map((item) => item.icdcode)
           .join(",");
+        this.form.icd10name = this.diagglist
+          .map((item) => item.icdname)
+          .join(",");
         Editsingletask(this.form).then((res) => {
           if (res.code == 200) {
             if (this.form.taskid) {
diff --git a/src/views/patient/questionnaire/index.vue b/src/views/patient/questionnaire/index.vue
index bc6774b..b26d81d 100644
--- a/src/views/patient/questionnaire/index.vue
+++ b/src/views/patient/questionnaire/index.vue
@@ -875,6 +875,11 @@
       }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;
diff --git a/src/views/patient/shadow/index.vue b/src/views/patient/shadow/index.vue
index 41991e7..f5f9997 100644
--- a/src/views/patient/shadow/index.vue
+++ b/src/views/patient/shadow/index.vue
@@ -875,6 +875,11 @@
       }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;
diff --git a/src/views/patient/subsequent/index.vue b/src/views/patient/subsequent/index.vue
index ed7c07e..f99bcb0 100644
--- a/src/views/patient/subsequent/index.vue
+++ b/src/views/patient/subsequent/index.vue
@@ -875,6 +875,11 @@
       this.loading = true;
 
 
+
+      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;
diff --git a/vue.config.js b/vue.config.js
index e4f2db2..e196b88 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -40,10 +40,10 @@
         // 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:8083`,//鍗楀崕
         // target: `http://192.168.191.181:8095`,
         changeOrigin: true,
         pathRewrite: {
diff --git "a/\351\200\232\347\224\250 \0502\051.zip" "b/\351\200\232\347\224\250 \0502\051.zip"
deleted file mode 100644
index c0a04ae..0000000
--- "a/\351\200\232\347\224\250 \0502\051.zip"
+++ /dev/null
Binary files differ
diff --git "a/\351\200\232\347\224\250.zip" "b/\351\200\232\347\224\250.zip"
deleted file mode 100644
index 56cff3b..0000000
--- "a/\351\200\232\347\224\250.zip"
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3