import { axiosFactory } from './setup' import { Message } from 'bill/index' import { showLoad, hideLoad } from '@/utils' import * as URL from './constant' import { ResCode, ResCodeDesc } from './constant' import { appBackRoot, appType, baseURL, params } from '@/env' const instance = axiosFactory() export const { axios, addUnsetTokenURLS, delUnsetTokenURLS, addReqErrorHandler, addResErrorHandler, delReqErrorHandler, addUnsetResErrorURLS, delResErrorHandler, getToken, setToken, delToken, setDefaultURI, addHook, delHook, setHook } = instance const gotoLogin = () => { const loginHref = import.meta.env.DEV ? 'http://localhost:5174' : appBackRoot[params.app] location.href = loginHref + '?redirect=' + escape(location.href) + '#/login' } addReqErrorHandler(err => { // Message.error(err.message) console.error(err) hideLoad() // gotoLogin() }) addResErrorHandler( (response, data) => { if (response && response.status !== 200) { Message.error(response.statusText) } else if (data) { const msg = data.code && ResCodeDesc[data.code] ? ResCodeDesc[data.code] : (data?.message || data?.msg) if (data.code === ResCode.TOKEN_INVALID) { gotoLogin() } else { Message.error(msg) } } } ) addHook({ before: (config) => { if (config.url !== URL.RECORD_STATUS) { showLoad() } }, after: (config) => { if (!config || config.url !== URL.RECORD_STATUS) { hideLoad() } } }) setDefaultURI(baseURL) params.token && setToken(params.token) export default axios