From a53ece5036c1fa61a63fe5f9e0cd3519210ab928 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 07 Aug 2026 09:44:27 +0800
Subject: [PATCH] feat:兼容分辨率低不出现滚动条
---
applications/task-work-order/src/axiosXT.js | 62 +++++++++++++++++--------------
1 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/applications/task-work-order/src/axiosXT.js b/applications/task-work-order/src/axiosXT.js
index edc95df..679980f 100644
--- a/applications/task-work-order/src/axiosXT.js
+++ b/applications/task-work-order/src/axiosXT.js
@@ -1,36 +1,28 @@
import axios from 'axios'
import store from '@/store/'
-import { serialize } from '@/utils/util'
+import { serialize, logOutFun } from '@/utils/util'
import { getToken, removeToken, removeRefreshToken } from '@/utils/auth'
-import { isURL, validatenull } from '@/utils/validate'
-import { ElMessage } from 'element-plus'
-import website from '@/config/website'
-import { Base64 } from 'js-base64'
-import { baseUrl } from '@/config/env'
-import crypto from '@/utils/crypto'
-// 全局未授权错误提示状态,只提示一次
-const { VITE_APP_API_XT } = import.meta.env
-// 创建作用域的 axios 实例
+import { ElMessage } from 'element-plus'
+let isErrorShown = false
+let _retry = false
+// 全局未授权错误提示状态,只提示一次
+const { VITE_APP_API_XT, VITE_APP_ENV, VITE_APP_URL_XT } = import.meta.env
const serviceXT = axios.create({
- // 超时时间设置为10分钟,部分接口上传比较慢,如固件上传
timeout: 600000,
- baseURL: VITE_APP_API_XT,
- //返回其他状态码
- validateStatus: function (status) {
- return status >= 200 && status <= 500 // 默认的
- },
+ baseURL: VITE_APP_ENV === 'development' ? VITE_APP_API_XT : VITE_APP_URL_XT,
//跨域请求,允许保存cookie
- withCredentials: true,
+ withCredentials: false,
})
+
//http request拦截
serviceXT.interceptors.request.use(
config => {
- //headers判断是否需要
const authorization = config.authorization === false
- if (!authorization) {
- config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`
+ const xtToken = store.state.user.xtToken
+ if (xtToken && !authorization) {
+ config.headers['Authorization'] = xtToken
}
const meta = config.meta || {}
@@ -51,17 +43,31 @@
//http response拦截
serviceXT.interceptors.response.use(
res => {
- const status = res.data.error_code || res.data.code || res.status
- const statusWhiteList = website.statusWhiteList || []
+ const status = res?.data?.code || res?.data?.error_code || res?.status
const message = res?.data?.msg || res?.data?.message || '系统错误'
- //如果在白名单里则自行catch逻辑处理
- if (statusWhiteList.includes(status)) return Promise.reject(res)
+
+ // 如果是401并且已经重试过,直接跳转到登录页面
+ if ((status === 401) && !_retry) {
+ _retry = true
+ // 首次报错时提示
+ if (!isErrorShown) {
+ isErrorShown = true
+ ElMessage.error('用户令牌过期,请重新登录')
+ }
+ // 清除token信息
+ removeToken()
+ removeRefreshToken()
+ // 重定向到登录页
+ logOutFun().then(() => {
+ isErrorShown = false
+ _retry = false
+ })
+ return Promise.reject(new Error(message))
+ }
+
// 如果请求为非200默认统一处理
if (status !== 200 && status !== 0) {
- ElMessage({
- message: message,
- type: 'error',
- })
+ ElMessage({ message: message, type: 'error', })
return Promise.reject(new Error(message))
}
return res
--
Gitblit v1.9.3