吉安感知网项目-前端
罗广辉
2026-02-28 006bbfe600da32ef23ec155f5a355cdc39f5b896
applications/task-work-order/src/axiosXT.js
@@ -1,16 +1,34 @@
import axios from 'axios'
import store from '@/store/'
import router from '@/router/'
import { serialize } from '@/utils/util'
import { ElMessage } from 'element-plus'
// 全局未授权错误提示状态,只提示一次
const { VITE_APP_API_XT } = import.meta.env
import { getToken, removeToken, removeRefreshToken } from '@/utils/auth'
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({
   timeout: 600000,
   baseURL: VITE_APP_API_XT,
   baseURL: VITE_APP_ENV === 'development' ? VITE_APP_API_XT : VITE_APP_URL_XT,
   //跨域请求,允许保存cookie
   withCredentials: false,
})
function logOutFun () {
   store.dispatch('FedLogOut').then(() => {
      const { VITE_APP_PARENT_SYSTEM, VITE_APP_ENV } = import.meta.env
      const isDev = VITE_APP_ENV === 'development'
      isErrorShown = false
      _retry = false
      isDev
         ? router.push({ path: '/login' })
         : window.location.replace(`${VITE_APP_PARENT_SYSTEM}/#/login`)
   })
}
//http request拦截
serviceXT.interceptors.request.use(
@@ -41,6 +59,26 @@
   res => {
      const status = res?.data?.code || res?.data?.error_code || res?.status
      const message = res?.data?.msg || res?.data?.message || '系统错误'
      // 如果是401并且已经重试过,直接跳转到登录页面
      if ((status === 500 || status === 401) && !_retry) {
         _retry = true
         // 首次报错时提示
         if (!isErrorShown) {
            isErrorShown = true
            ElMessage({
               message: '用户令牌过期,请重新登录',
               type: 'error',
            })
         }
         // 清除token信息
         removeToken()
         removeRefreshToken()
         // 重定向到登录页
         logOutFun()
         return Promise.reject(new Error(message))
      }
      // 如果请求为非200默认统一处理
      if (status !== 200 && status !== 0) {
         ElMessage({ message: message, type: 'error', })