import { message } from 'ant-design-vue' import axios, { AxiosInstance, AxiosResponse } from 'axios' import defaultSetting from '../../config/defaultSetting' import { useModule } from '@/hooks' import { useUserStore } from '@/store' export const instance = axios.create({ baseURL: '', timeout: 100000 }) /** * 该函数捕获一个错误并返回一个被拒绝的承诺。 * @param {any} error - `error` 参数是 `any` 类型,这意味着它可以是任何数据类型。它用作 `catchErr` 函数的输入参数。 * @returns `catchErr` 函数返回一个被拒绝的 Promise,并传递了 `error` 参数作为拒绝的原因。 */ const catchErr = (response: AxiosResponse) => { const { data } = response if (data.code === 500) { message.error(data.msg) } else if (data.code === 400) { message.error(data.msg) } } /** * 登录失效后重定向地址 */ const redirectUrl = () => { window.open(defaultSetting.logout + `?redirectUrl=${useModule().path}`) } instance.interceptors.request.use(config => { config.headers.Authentication = useUserStore().userInfo.token return config }, function (error) { return Promise.reject(error) }) instance.interceptors.response.use(function (response) { catchErr(response) if (response.status === 403) { redirectUrl() } return response.data }, error => Promise.reject(error)) export const setBaseUrl = (baseURL: string) => instance.defaults.baseURL = baseURL export default function request (config: any) { return instance.request>(config) }