|
@@ -4,6 +4,7 @@ import tokenInfo from '@/stores/modules/token';
|
|
|
import useUserInfo from "@/stores/modules/user";
|
|
import useUserInfo from "@/stores/modules/user";
|
|
|
import pinia from "@/stores/index";
|
|
import pinia from "@/stores/index";
|
|
|
import ENV_CONFIG from "@/config.json";
|
|
import ENV_CONFIG from "@/config.json";
|
|
|
|
|
+import client from '@/stores/modules/client';
|
|
|
|
|
|
|
|
// 加载动画的并发管理
|
|
// 加载动画的并发管理
|
|
|
const activeRequests = new Set<string>();
|
|
const activeRequests = new Set<string>();
|
|
@@ -21,6 +22,41 @@ function loadingClose(requestId: string) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 处理token失效
|
|
|
|
|
+ * 关闭所有子窗口,清空用户信息,跳转到首页
|
|
|
|
|
+ */
|
|
|
|
|
+async function handleTokenExpiry() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 关闭所有子窗口
|
|
|
|
|
+ try {
|
|
|
|
|
+ const clientStore = client();
|
|
|
|
|
+ await clientStore.ipc.invoke('controller.utils.closeAllWindows');
|
|
|
|
|
+ console.log('Token失效:所有子窗口已关闭');
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('Token失效:关闭子窗口失败:', error);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 清空用户信息
|
|
|
|
|
+ const useUserInfoStore = useUserInfo();
|
|
|
|
|
+ await useUserInfoStore.updateToken('');
|
|
|
|
|
+ await useUserInfoStore.updateUserInfo({});
|
|
|
|
|
+
|
|
|
|
|
+ // 跳转到首页
|
|
|
|
|
+ try {
|
|
|
|
|
+ window.location.href = '/'
|
|
|
|
|
+ console.log('Token失效:已跳转到首页');
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('Token失效:跳转到首页失败:', error);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 显示登录弹窗
|
|
|
|
|
+ useUserInfoStore.updateLoginShow(true);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('Token失效处理失败:', error);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
* 创建一个axios实例,用于发送HTTP请求
|
|
* 创建一个axios实例,用于发送HTTP请求
|
|
|
* 配置了请求拦截器和响应拦截器,支持加载动画和错误提示
|
|
* 配置了请求拦截器和响应拦截器,支持加载动画和错误提示
|
|
|
*/
|
|
*/
|
|
@@ -96,7 +132,8 @@ service.interceptors.response.use(
|
|
|
type: 'error',
|
|
type: 'error',
|
|
|
duration: 3 * 1000,
|
|
duration: 3 * 1000,
|
|
|
});
|
|
});
|
|
|
- useUserInfoStore.updateLoginShow(true)
|
|
|
|
|
|
|
+ // 处理token失效
|
|
|
|
|
+ handleTokenExpiry();
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
if (response.config.showErrorMessage) {
|
|
if (response.config.showErrorMessage) {
|
|
@@ -136,7 +173,8 @@ service.interceptors.response.use(
|
|
|
switch (error.response.status) {
|
|
switch (error.response.status) {
|
|
|
case 400: errMessage = '请求错误(400)'; break;
|
|
case 400: errMessage = '请求错误(400)'; break;
|
|
|
case 401: errMessage = '登录状态已失效,请重新登录';
|
|
case 401: errMessage = '登录状态已失效,请重新登录';
|
|
|
- useUserInfoStore.updateLoginShow(true)
|
|
|
|
|
|
|
+ // 处理token失效
|
|
|
|
|
+ handleTokenExpiry();
|
|
|
break;
|
|
break;
|
|
|
case 403: errMessage = '拒绝访问(403)'; break;
|
|
case 403: errMessage = '拒绝访问(403)'; break;
|
|
|
case 404: errMessage = '请求出错(404)'; break;
|
|
case 404: errMessage = '请求出错(404)'; break;
|