From c832bf2e80ac465e71b7a1c1f7a59d4252030989 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 05 Aug 2025 17:33:08 +0800
Subject: [PATCH] feat:事件工单滚动条
---
src/axios.js | 102 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 68 insertions(+), 34 deletions(-)
diff --git a/src/axios.js b/src/axios.js
index 23bebb6..d0039aa 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/';
@@ -13,31 +14,26 @@
import { isURL, validatenull } from '@/utils/validate';
import { ElMessage } from 'element-plus';
import website from '@/config/website';
-import NProgress from 'nprogress'; // progress bar
-import 'nprogress/nprogress.css'; // progress bar style
import { Base64 } from 'js-base64';
import { baseUrl } from '@/config/env';
import crypto from '@/utils/crypto';
-
+const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL;
// 全局未授权错误提示状态,只提示一次
let isErrorShown = false;
-axios.defaults.timeout = 10000;
+let _retry = false;
+// 超时时间设置为10分钟,部分接口上传比较慢,如固件上传
+axios.defaults.timeout = 600000;
//返回其他状态码
axios.defaults.validateStatus = function (status) {
return status >= 200 && status <= 500; // 默认的
};
//跨域请求,允许保存cookie
axios.defaults.withCredentials = true;
-// NProgress Configuration
-NProgress.configure({
- showSpinner: false,
-});
+
//http request拦截
axios.interceptors.request.use(
config => {
- // start progress bar
- NProgress.start();
// 初始化错误提示状态
isErrorShown = false;
//地址为已经配置状态则不添加前缀
@@ -45,6 +41,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;
@@ -67,16 +64,16 @@
: 'bearer ' + token;
}
// 开启报文加密
- if (cryptoData) {
- if (config.params) {
- const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
- config.params = { data };
- }
- if (config.data) {
- config.text = true;
- config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
- }
- }
+ // if (cryptoData) {
+ // if (config.params) {
+ // const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
+ // config.params = { data };
+ // }
+ // if (config.data) {
+ // config.text = true;
+ // config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
+ // }
+ // }
//headers中配置text请求
if (config.text === true) {
config.headers['Content-Type'] = 'text/plain';
@@ -94,18 +91,34 @@
//http response拦截
axios.interceptors.response.use(
res => {
- 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')
@@ -128,20 +141,30 @@
if (!isErrorShown) {
isErrorShown = true;
ElMessage({
- message: '用户令牌过期,请重新登录',
+ message: message,
type: 'error',
});
}
// 清除token信息
removeToken();
removeRefreshToken();
+ const env = import.meta.env.VITE_APP_ENV;
// 重定向到登录页
- store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
+ // store.dispatch('FedLogOut').then(() => router.push({
+ // path: '/login'
+ // }));
+ env === 'development'
+ ? store.dispatch('FedLogOut').then(() =>
+ router.push({
+ path: '/login',
+ })
+ )
+ : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`));
return Promise.reject(new Error(message));
});
}
// 如果是401并且已经重试过,直接跳转到登录页面
- if (status === 401 && config._retry) {
+ if (status === 401 && _retry) {
// 首次报错时提示
if (!isErrorShown) {
isErrorShown = true;
@@ -154,7 +177,17 @@
removeToken();
removeRefreshToken();
// 重定向到登录页
- store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
+ // store.dispatch('FedLogOut').then(() => router.push({
+ // path: '/login'
+ // }));
+ const env = import.meta.env.VITE_APP_ENV;
+ env === 'development'
+ ? store.dispatch('FedLogOut').then(() =>
+ router.push({
+ path: '/login',
+ })
+ )
+ : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`));
return Promise.reject(new Error(message));
}
// 如果请求为oauth2错误码则首次报错时提示
@@ -170,11 +203,13 @@
return Promise.reject(new Error(message));
}
// 如果请求为非200默认统一处理
- if (status !== 200) {
- ElMessage({
- message: message,
- type: 'error',
- });
+ if (status !== 200 && status !== 0) {
+ if (!isErrorShown) {
+ ElMessage({
+ message: message,
+ type: 'error',
+ });
+ }
return Promise.reject(new Error(message));
}
// 解析加密报文
@@ -184,7 +219,6 @@
return res;
},
error => {
- NProgress.done();
return Promise.reject(new Error(error));
}
);
--
Gitblit v1.9.3