From 0082fa417fb2af9add3406bf05ab3e3e45890c34 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Thu, 12 Jun 2025 14:30:02 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/drone/drone-web-manage

---
 src/axios.js |   30 ++++++++++++++++++++++++------
 1 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/axios.js b/src/axios.js
index ac199bb..979b7c0 100644
--- a/src/axios.js
+++ b/src/axios.js
@@ -5,6 +5,7 @@
  * isSerialize是否开启form表单提交
  * isToken是否需要token
  */
+
 import axios from 'axios';
 import store from '@/store/';
 import router from '@/router/';
@@ -37,6 +38,7 @@
 // 全局未授权错误提示状态,只提示一次
 let isErrorShown = false;
 
+let _retry = false;
 // 超时时间设置为10分钟,部分接口上传比较慢,如固件上传
 axios.defaults.timeout = 600000;
 //返回其他状态码
@@ -61,6 +63,7 @@
 			config.url = baseUrl + config.url;
 		}
 		//安全请求header
+		config.headers['areaCode'] = store?.state?.user?.userInfo?.detail?.areaCode
 		config.headers['Blade-Requested-With'] = 'BladeHttpRequest';
 		//headers判断是否需要
 		const authorization = config.authorization === false;
@@ -113,15 +116,30 @@
 		NProgress.done();
 		const status = res.data.error_code || res.data.code || res.status;
 		const statusWhiteList = website.statusWhiteList || [];
-		const message = res.data.msg || res.data.error_description || '系统错误';
+		const message = res.data.msg || res.data.error_description || res.data.message ||'系统错误';
 		const config = res.config;
 		const cryptoData = config.cryptoData === true;
+		if (status === 511) {
+			ElMessage({
+				message: '请联系运维人员上传密钥证书!',
+				type: 'error',
+			});
+			// 获取当前路由名称
+			const currentRouteName = router.currentRoute.value.name;
+			// 如果当前路由不是登录页,则跳转到登录页
+			if (currentRouteName !== '登录页') {
+				store.dispatch('FedLogOut').then(() => router.push({
+					path: '/login'
+				}));
+			}
+			return Promise.reject(new Error(message));
+		}
 		//如果在白名单里则自行catch逻辑处理
 		if (statusWhiteList.includes(status)) return Promise.reject(res);
 		// 如果是401并且没有重试过,尝试刷新token
-		if (status === 401 && !config._retry) {
+		if (status === 401 && !_retry) {
 			// 标记此请求已尝试刷新token
-			config._retry = true;
+			_retry = true;
 			// 调用RefreshToken action来刷新token
 			return store
 				.dispatch('RefreshToken')
@@ -159,7 +177,7 @@
 				});
 		}
 		// 如果是401并且已经重试过,直接跳转到登录页面
-		if (status === 401 && config._retry) {
+		if (status === 401 && _retry) {
 			// 首次报错时提示
 			if (!isErrorShown) {
 				isErrorShown = true;
@@ -190,7 +208,7 @@
 			return Promise.reject(new Error(message));
 		}
 		// 如果请求为非200默认统一处理
-		if (status !== 200) {
+		if (status !== 200 && status !== 0) {
 			if (!isErrorShown) {
 				ElMessage({
 					message: message,
@@ -211,4 +229,4 @@
 	}
 );
 
-export default axios;
\ No newline at end of file
+export default axios;

--
Gitblit v1.9.3