From 3ec8d3625e6fb7614e2ec4bb02ed99a3cdf4cdb7 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Thu, 12 Feb 2026 11:28:47 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/jagzwxm/ja_web

---
 applications/task-work-order/src/axiosXT.js |   65 +++++++++++++++++++-------------
 1 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/applications/task-work-order/src/axiosXT.js b/applications/task-work-order/src/axiosXT.js
index edc95df..7b7c234 100644
--- a/applications/task-work-order/src/axiosXT.js
+++ b/applications/task-work-order/src/axiosXT.js
@@ -1,36 +1,34 @@
 import axios from 'axios'
 import store from '@/store/'
 import { serialize } 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'
+let _retry = false
 // 全局未授权错误提示状态,只提示一次
-const { VITE_APP_API_XT } = import.meta.env
-
-// 创建作用域的 axios 实例
+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,
 })
+
+function logOutFun () {
+	store.dispatch('FedLogOut').then(() => {
+		const { VITE_APP_PARENT_SYSTEM, VITE_APP_ENV } = import.meta.env
+		const isDev = VITE_APP_ENV === 'development'
+		isDev
+			? router.push({ path: '/login' })
+			: window.location.replace(`${VITE_APP_PARENT_SYSTEM}/#/login`)
+	})
+}
 
 //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 +49,30 @@
 //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 === 500 || status === 401) && !_retry) {
+			// 首次报错时提示
+			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',
-			})
+			ElMessage({ message: message, type: 'error', })
 			return Promise.reject(new Error(message))
 		}
 		return res

--
Gitblit v1.9.3