From 6933522e3f1ffe8f8b1b7e169e2c54a7d24f0443 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 02 九月 2025 14:55:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
manager/src/views/order/order/orderList.vue | 16 +++--
manager/src/libs/axios.js | 116 +++++++++++++++++++++-----------------
2 files changed, 74 insertions(+), 58 deletions(-)
diff --git a/manager/src/libs/axios.js b/manager/src/libs/axios.js
index be90be5..f1f2832 100644
--- a/manager/src/libs/axios.js
+++ b/manager/src/libs/axios.js
@@ -21,15 +21,19 @@
const service = axios.create({
timeout: 8000,
- baseURL: managerUrl,
- headers: {
- accessToken: getStore("accessToken")
- },
+ baseURL: managerUrl
+ // 绉婚櫎鍥哄畾鐨刟ccessToken璁剧疆锛屾敼鍦ㄨ姹傛嫤鎴櫒涓姩鎬佽缃�
});
var isRefreshToken = 0;
const refreshToken = getTokenDebounce();
service.interceptors.request.use(
config => {
+ // 鍔ㄦ�佽缃產ccessToken
+ const accessToken = getStore("accessToken");
+ if (accessToken) {
+ config.headers.accessToken = accessToken;
+ }
+
if (config.method == "get") {
config.params = {
_t: Date.parse(new Date()) / 1000,
@@ -101,24 +105,34 @@
} else if (error.response.status === 404) {
// 閬垮厤鍒锋柊token鎶ラ敊
} else if (error.response.status === 403 || error.response.data.code === 20004) {
- isRefreshToken++;
- if (isRefreshToken === 1) {
+ // 鏀硅繘鐨則oken鍒锋柊鏈哄埗锛岄伩鍏嶇珵鎬佹潯浠�
+ if (isRefreshToken === 0) {
+ isRefreshToken = 1;
const getTokenRes = await refreshToken();
if (getTokenRes === "success") {
- // 鍒锋柊token
- if (isRefreshToken === 1) {
- error.response.config.headers.accessToken = getStore(
- "accessToken"
- );
- return service(error.response.config);
- } else {
- router.go(0);
- }
+ // 鍒锋柊token鎴愬姛锛岄噸鏂板彂璧疯姹�
+ error.response.config.headers.accessToken = getStore("accessToken");
+ isRefreshToken = 0;
+ return service(error.response.config);
} else {
+ // 鍒锋柊澶辫触锛岃烦杞埌鐧诲綍椤�
+ isRefreshToken = 0;
Cookies.set("userInfoManager", "");
+ setStore("accessToken", "");
+ setStore("refreshToken", "");
router.push("/login");
}
- isRefreshToken = 0;
+ } else {
+ // 濡傛灉宸茬粡鏈夎姹傚湪鍒锋柊token锛岀瓑寰呬竴灏忔鏃堕棿鍚庨噸璇�
+ await new Promise(resolve => setTimeout(resolve, 100));
+ if (isRefreshToken === 0) {
+ // token鍒锋柊瀹屾垚锛岄噸鏂板彂璧疯姹�
+ error.response.config.headers.accessToken = getStore("accessToken");
+ return service(error.response.config);
+ } else {
+ // 瓒呮椂鎴栧叾浠栭敊璇紝璺宠浆鍒扮櫥褰曢〉
+ router.push("/login");
+ }
}
} else {
// 鍏朵粬閿欒澶勭悊
@@ -133,46 +147,46 @@
// 鍘熷鐨刟xios鏆撮湶鍑哄幓鐢ㄥ嵆鍙�
export default service
-// 闃叉姈闂寘鏉ヤ竴娉�
+// 鏀硅繘鐨勯槻鎶栨満鍒�
function getTokenDebounce() {
let lock = false;
let success = false;
+ let resolveCallbacks = []; // 瀛樺偍绛夊緟鐨勫洖璋�
+
return function() {
- if (!lock) {
- lock = true;
- let oldRefreshToken = getStore("refreshToken");
- handleRefreshToken(oldRefreshToken)
- .then(res => {
- if (res.success) {
- let { accessToken, refreshToken } = res.result;
- setStore("accessToken", accessToken);
- setStore("refreshToken", refreshToken);
-
- success = true;
- lock = false;
- } else {
- success = false;
- lock = false;
- router.push("/login");
- }
- })
- .catch(err => {
- success = false;
- lock = false;
- });
- }
return new Promise(resolve => {
- // 涓�鐩寸湅lock,鐩村埌璇锋眰澶辫触鎴栬�呮垚鍔�
- const timer = setInterval(() => {
- if (!lock) {
- clearInterval(timer);
- if (success) {
- resolve("success");
- } else {
- resolve("fail");
- }
- }
- }, 500); // 杞鏃堕棿闂撮殧
+ if (!lock) {
+ lock = true;
+ resolveCallbacks = [resolve]; // 鍒濆鍖栧洖璋冩暟缁�
+
+ let oldRefreshToken = getStore("refreshToken");
+ handleRefreshToken(oldRefreshToken)
+ .then(res => {
+ if (res.success) {
+ let { accessToken, refreshToken } = res.result;
+ setStore("accessToken", accessToken);
+ setStore("refreshToken", refreshToken);
+ success = true;
+ } else {
+ success = false;
+ router.push("/login");
+ }
+ })
+ .catch(err => {
+ console.error('Token鍒锋柊澶辫触:', err);
+ success = false;
+ })
+ .finally(() => {
+ lock = false;
+ // 鍚屾椂瑙e喅鎵�鏈夌瓑寰呯殑Promise
+ const result = success ? "success" : "fail";
+ resolveCallbacks.forEach(callback => callback(result));
+ resolveCallbacks = [];
+ });
+ } else {
+ // 濡傛灉姝e湪鍒锋柊锛屽皢鍥炶皟鍔犲叆绛夊緟闃熷垪
+ resolveCallbacks.push(resolve);
+ }
});
};
}
diff --git a/manager/src/views/order/order/orderList.vue b/manager/src/views/order/order/orderList.vue
index 9e37593..9c855c5 100644
--- a/manager/src/views/order/order/orderList.vue
+++ b/manager/src/views/order/order/orderList.vue
@@ -395,6 +395,7 @@
key: "action",
align: "center",
width: 150,
+ fixed:"right",
render: (h, params) => {
const buttons = [];
@@ -641,21 +642,22 @@
deliverOrder(order) {
console.log('------------->鑾峰彇璁㈠崟淇℃伅',order);
console.log('璁㈠崟sn缂栧彿',order.sn);
- // 杩欓噷鍙互璋冪敤鐩稿叧鐨凙PI杩涜鍙戣揣鎿嶄綔
+ // 璋冪敤鍙戣揣API
API_Order.sendMessage(order.sn).then((res) => {
console.log('-------------->',res);
if (res.success) {
this.$Message.success('鏇存柊鐘舵�佹垚鍔�');
- this.getDataList(); // 鍒锋柊鍒楄〃
+ // 寤惰繜5绉掑埛鏂板垪琛╩q娑堟伅鏄紓姝ョ殑鏃犳硶瀹炴椂鍚屾闇�瑕佹墽琛屽欢杩熷埛鏂�
+ setTimeout(() => {
+ this.getDataList();
+ }, 5000);
} else {
this.$Message.error('鏇存柊鐘舵�佸け璐�');
}
+ }).catch((error) => {
+ console.error('鏇存柊鐘舵�佸け璐�:', error);
+ this.$Message.error('鏇存柊鐘舵�佸け璐ワ紝璇烽噸璇�');
});
-
- // 鏆傛椂妯℃嫙鎿嶄綔
- this.$Message.success(`璁㈠崟 ${order.sn} 鏇存柊鐘舵�佹垚鍔燂紒`);
- // 鍒锋柊鍒楄〃鏁版嵁
- this.getDataList();
},
// 瀵煎嚭璁㈠崟
async exportOrder() {
--
Gitblit v1.8.0