You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.3 KiB
61 lines
2.3 KiB
import type { InternalAxiosRequestConfig } from "axios";
|
|
import { Constant, initGlobalConfig } from "@ease-forge/shared";
|
|
import { initGlobalConfigWithRuntime } from "@ease-forge/runtime";
|
|
import router from "@/router";
|
|
|
|
function globalConfig() {
|
|
window.globalConfig.customAxios = axiosInstance => {
|
|
// 全局请求拦截
|
|
axiosInstance.interceptors.request.clear();
|
|
axiosInstance.interceptors.request.use(
|
|
(request: InternalAxiosRequestConfig) => request,
|
|
(error: any) => {
|
|
const err: AxiosInterceptorError = {
|
|
rawError: error,
|
|
title: "系统错误",
|
|
message: "发送请求给服务端失败,请检查电脑网络,再重试",
|
|
status: -1,
|
|
};
|
|
return Promise.reject(err);
|
|
},
|
|
);
|
|
// 全局拦截配置
|
|
axiosInstance.interceptors.response.clear();
|
|
axiosInstance.interceptors.response.use(
|
|
response => response,
|
|
(error: any) => {
|
|
const { response } = error;
|
|
const err: AxiosInterceptorError = {
|
|
rawError: error,
|
|
status: response?.status ?? -1,
|
|
title: "系统错误",
|
|
message: "",
|
|
};
|
|
if (!error || !response) {
|
|
err.message = "请求服务端异常";
|
|
} else if (response?.status === 401) {
|
|
err.title = "当前用户未登录";
|
|
err.message = "当前用户未登录,请先登录系统";
|
|
router.push({ name: "login" }).finally();
|
|
} else {
|
|
err.title = "操作失败";
|
|
const { data: { message, validMessageList } } = response;
|
|
if (validMessageList) {
|
|
err.message = "请求参数校验失败";
|
|
} else {
|
|
err.message = message ?? Constant.defHttpErrorMsg[response.status] ?? "服务器异常";
|
|
}
|
|
}
|
|
system.msg(err.message);
|
|
return Promise.reject(err);
|
|
},
|
|
);
|
|
return axiosInstance;
|
|
};
|
|
initGlobalConfig();
|
|
initGlobalConfigWithRuntime();
|
|
}
|
|
|
|
export {
|
|
globalConfig,
|
|
}
|