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