import { axiosFactory } from './setup' import { message } from 'ant-design-vue' import { showLoading, hideLoading } from '@/components/loading' import { ResCode, ResCodeDesc } from './constant' import { baseURL, token, mainURL } from '@/env' const instance = axiosFactory() export const { axios, addUnsetTokenURLS, delUnsetTokenURLS, addReqErrorHandler, addResErrorHandler, delReqErrorHandler, delResErrorHandler, getToken, setToken, delToken, setDefaultURI, addHook, delHook, setHook } = instance export const gotoLogin = () => { location.replace( mainURL + '/?redirect=' + escape(location.href) + '#/login/login' ) } const tokenInvalid = () => { message.error(ResCodeDesc[ResCode.TOKEN_INVALID]) setTimeout(gotoLogin, 1000) } addReqErrorHandler(err => { showLoading() tokenInvalid() }) addResErrorHandler((response, data) => { if (response && response.status !== 200) { } else if (data) { const msg = data.code && ResCodeDesc[data.code] ? ResCodeDesc[data.code] : data?.message || data?.msg if (data.code === ResCode.TOKEN_INVALID) { tokenInvalid() } else { message.error(msg) } } }) addHook({ before: () => showLoading(), after: config => config && hideLoading() }) console.log(baseURL) setDefaultURI(baseURL) if (!token) { tokenInvalid() } else { setToken(token) } export default axios