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, }