From 05c363fdd7ab04e3bd9a753e2c5d5bfff04d681c Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 09 六月 2026 10:21:35 +0800
Subject: [PATCH] 备份上传

---
 utils/request.js |  150 +++++++++++++++----------------------------------
 1 files changed, 47 insertions(+), 103 deletions(-)

diff --git a/utils/request.js b/utils/request.js
index 65f07de..38fcda0 100644
--- a/utils/request.js
+++ b/utils/request.js
@@ -1,109 +1,87 @@
+import getConfig from "./config.js";
+const { baseURL } = getConfig();
 // @/utils/request.js
-// 娣诲姞鍏ㄥ眬鏍囪
 let isRedirectingToLogin = false;
-/**
- * 鏄剧ずToast鎻愮ず锛堝吋瀹箄view-plus锛�
- * @param {string} message 鎻愮ず鍐呭
- */
+
+// 鍏ㄥ眬 SSO 澶勭悊鏍囪锛堟寕杞藉埌 uni 涓婏紝渚夸簬璺ㄦā鍧楀叡浜級
+uni.__isSSOHandling = false;
+
 const showToast = (message) => {
   if (uni.$u?.toast) {
     uni.$u.toast(message);
   } else {
-    uni.showToast({
-      title: message,
-      icon: "none",
-    });
+    uni.showToast({ title: message, icon: "none" });
   }
 };
+console.log(baseURL,'baseURL');
 
-// 鍩虹閰嶇疆 - 浠庣幆澧冨彉閲忎腑鑾峰彇baseURL
 const config = {
-  baseURL: "/api", // 浣跨敤鐜鍙橀噺涓殑閰嶇疆
+  baseURL: baseURL,
   timeout: 60000,
   header: {
     "Content-Type": "application/json",
     "X-Business-System": "medical-system",
   },
-  // 鏂板閰嶇疆椤�
-  loginPage: "/pages/login/Login", // 鐧诲綍椤佃矾寰�
-  tokenExpiredCode: 401, // 鍚庣杩斿洖鐨凾oken杩囨湡鐘舵�佺爜
-  noPermissionCode: 403, // 鏃犳潈闄愮姸鎬佺爜
-  // 娣诲姞鐧藉悕鍗曢厤缃紙涓嶉渶瑕佹牎楠宼oken鐨勬帴鍙o級
-  whiteList: [
-    "/login", // 鐧诲綍鎺ュ彛
-    "/getToken",
-    // '/dingtalk/auth/login', // 閽夐拤鎺堟潈鐧诲綍鎺ュ彛
-    // '/dingtalk/auth/bind' // 閽夐拤鎺堟潈鐧诲綍缁戝畾鎺ュ彛
-  ],
+  loginPage: "/pages/login/Login",
+  tokenExpiredCode: 401,
+  noPermissionCode: 403,
+  whiteList: ["/login", "/getToken", "/GiLink/getCode"],
 };
 
-/**
- * 妫�鏌ヨ姹傛槸鍚﹀湪鐧藉悕鍗曚腑
- * @param {string} url 璇锋眰URL
- */
 const isInWhiteList = (url) => {
-  // 鎻愬彇鐩稿璺緞锛堢Щ闄aseURL锛夊苟蹇界暐鏌ヨ鍙傛暟
   const relativeUrl = url.replace(config.baseURL, "").split("?")[0];
   return config.whiteList.some((path) => {
-    // 澶勭悊閫氶厤绗︽儏鍐�
-    if (path.endsWith("/")) {
-      return relativeUrl.startsWith(path);
-    }
-    // 绮剧‘鍖归厤璺緞
+    if (path.endsWith("/")) return relativeUrl.startsWith(path);
     return relativeUrl === path;
   });
 };
 
-/**
- * 璺宠浆鍒扮櫥褰曢〉
- */
 const navigateToLogin = () => {
-  if (isRedirectingToLogin) {
-    console.log('姝e湪璺宠浆鐧诲綍椤典腑锛岃烦杩�');
+  // SSO 澶勭悊涓紝涓嶉噸澶嶈烦杞�
+  if (isRedirectingToLogin || uni.__isSSOHandling) {
+    console.log("姝e湪璺宠浆鐧诲綍椤垫垨SSO澶勭悊涓紝璺宠繃");
     return;
   }
-  
+
   isRedirectingToLogin = true;
-  
+
   const pages = getCurrentPages();
   const currentPage = pages[pages.length - 1];
-  const isLoginPage = currentPage && currentPage.route && 
-                     currentPage.route.includes('login/Login');
-  
+  const isLoginPage =
+    currentPage &&
+    currentPage.route &&
+    currentPage.route.includes("login/Login");
+
   if (isLoginPage) {
-    console.log('褰撳墠宸插湪鐧诲綍椤碉紝涓嶈烦杞�');
+    console.log("褰撳墠宸插湪鐧诲綍椤碉紝涓嶈烦杞�");
     isRedirectingToLogin = false;
     return;
   }
-  
-  console.log('璺宠浆鍒扮櫥褰曢〉');
+
+  console.log("璺宠浆鍒扮櫥褰曢〉");
   setTimeout(() => {
     uni.redirectTo({
-      url: config.loginPage + "?redirect=" + encodeURIComponent(getCurrentPagePath()),
+      url:
+        config.loginPage +
+        "?redirect=" +
+        encodeURIComponent(getCurrentPagePath()),
       success: () => {
-        console.log('璺宠浆鐧诲綍椤垫垚鍔�');
+        console.log("璺宠浆鐧诲綍椤垫垚鍔�");
         isRedirectingToLogin = false;
       },
       fail: () => {
-        console.log('璺宠浆鐧诲綍椤靛け璐�');
+        console.log("璺宠浆鐧诲綍椤靛け璐�");
         isRedirectingToLogin = false;
-      }
+      },
     });
   }, 100);
 };
 
-/**
- * 鑾峰彇褰撳墠椤甸潰璺緞锛堢敤浜庣櫥褰曞悗璺冲洖锛�
- */
 const getCurrentPagePath = () => {
   const pages = getCurrentPages();
   return pages[pages.length - 1]?.route || "";
 };
 
-/**
- * 妫�鏌oken鏄惁杩囨湡
- * @param {number} statusCode HTTP鐘舵�佺爜
- */
 const checkTokenExpired = (statusCode) => {
   if (statusCode === config.tokenExpiredCode) {
     showToast("鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�");
@@ -113,101 +91,71 @@
   return false;
 };
 
-/**
- * 璇锋眰鎷︽埅鍣�
- */
 const requestInterceptor = (options) => {
   const token = uni.getStorageSync("token");
 
-  // 濡傛灉璇锋眰鍦ㄧ櫧鍚嶅崟涓紝鐩存帴鏀捐
   if (isInWhiteList(options.url)) {
-    console.log('鐧藉悕鍗曟帴鍙o紝璺宠繃token鏍¢獙:', options.url);
+    console.log("鐧藉悕鍗曟帴鍙o紝璺宠繃token鏍¢獙:", options.url);
     return options;
   }
 
-  // 鉁� 鍏抽敭淇敼锛氬湪鐧诲綍椤垫椂涓嶈繘琛岃烦杞�
   if (!token) {
     const pages = getCurrentPages();
     const currentPage = pages[pages.length - 1];
-    const isLoginPage = currentPage && currentPage.route && 
-                       (currentPage.route.includes('login/Login') || 
-                        currentPage.route.includes('login/DingTalkLogin'));
-    
+    const isLoginPage =
+      currentPage &&
+      currentPage.route &&
+      (currentPage.route.includes("login/Login") ||
+        currentPage.route.includes("login/DingTalkLogin"));
+
     if (isLoginPage) {
-      console.log('褰撳墠鏄櫥褰曢〉锛屽厑璁告棤token璇锋眰');
+      console.log("褰撳墠鏄櫥褰曢〉锛屽厑璁告棤token璇锋眰");
       return options;
     }
-    
-    // 涓嶅湪鐧诲綍椤碉紝鎵嶈烦杞�
-    console.log('鏈櫥褰曚笖涓嶅湪鐧诲綍椤碉紝璺宠浆鍒扮櫥褰曢〉');
+
+    console.log("鏈櫥褰曚笖涓嶅湪鐧诲綍椤碉紝璺宠浆鍒扮櫥褰曢〉");
     navigateToLogin();
     throw new Error("鏈櫥褰�");
   }
 
-  // 娣诲姞Token鍒癏eader
   options.header = {
     ...options.header,
     Authorization: `Bearer ${token}`,
   };
-
   return options;
 };
 
-/**
- * 鍝嶅簲鎷︽埅鍣�
- */
 const responseInterceptor = (response) => {
   const { statusCode, data } = response;
-
-  // Token杩囨湡澶勭悊
-  if (checkTokenExpired(statusCode)) {
-    return Promise.reject(data);
-  }
-
-  // 鏃犳潈闄愬鐞�
+  if (checkTokenExpired(statusCode)) return Promise.reject(data);
   if (statusCode === config.noPermissionCode) {
     showToast("鏃犳潈闄愯闂�");
     return Promise.reject(data);
   }
-
-  // 鍏朵粬閿欒鐘舵�佺爜
   if (statusCode !== 200) {
     showToast(`璇锋眰澶辫触: ${statusCode}`);
     return Promise.reject(data);
   }
-
-  // 鎺ュ彛鑷畾涔夐敊璇爜澶勭悊锛堝亣璁綿ata.code涓�0琛ㄧず鎴愬姛锛�
   if (data?.code !== 200) {
     showToast(data?.msg || "鎿嶄綔澶辫触");
     return Promise.reject(data);
   }
-
-  return data; // 杩斿洖瀹為檯涓氬姟鏁版嵁
+  return data;
 };
 
-/**
- * 鏍稿績璇锋眰鏂规硶
- */
 const request = async (options) => {
   try {
-    // 鍚堝苟閰嶇疆
     options = {
       ...config,
       ...options,
       url: config.baseURL + options.url,
       header: { ...config.header, ...options.header },
     };
-
-    // 璇锋眰鎷︽埅
     options = await requestInterceptor(options);
-
-    // 鍙戣捣璇锋眰
     return new Promise((resolve, reject) => {
       uni.request({
         ...options,
-        success: (res) => {
-          resolve(responseInterceptor(res));
-        },
+        success: (res) => resolve(responseInterceptor(res)),
         fail: (err) => {
           showToast("缃戠粶閿欒锛岃閲嶈瘯");
           reject(err);
@@ -219,7 +167,6 @@
   }
 };
 
-// 蹇嵎鏂规硶灏佽
 const http = {
   get(url, data = {}, options = {}) {
     return request({ url, data, method: "GET", ...options });
@@ -233,7 +180,6 @@
   delete(url, data = {}, options = {}) {
     return request({ url, data, method: "DELETE", ...options });
   },
-  // 鏂板锛氫笂浼犳枃浠舵柟娉�
   upload(url, filePath, name = "file", formData = {}) {
     return request({
       url,
@@ -246,7 +192,5 @@
   },
 };
 
-// 鎸傝浇鍒板叏灞�
 uni.$uapi = http;
-
 export default http;

--
Gitblit v1.9.3