UNPKG

create-iking-admin

Version:

金合技术中台脚手架

125 lines (115 loc) 3.61 kB
/* * @Author : wfl * @LastEditors : wfl * @description : * @updateInfo : * @Date : 2024-02-29 14:41:18 * @LastEditTime : 2024-03-11 12:19:13 */ import axios from 'axios' import router from '@main/router' import useSettingsStore from '@main/store/modules/settings' import useUserStore from '@main/store/modules/user' const { remberRoute } = systemConfig const { msgWarning } = useMessage() function toLogin(statu = true) { // useUserStore().clearCache() const query = (statu && remberRoute) ? { redirect: router.currentRoute.value.path !== '/login' ? router.currentRoute.value.fullPath : undefined, } : {} router.push({ path: '/login', query, }) // location.href = `${location.href}` } const api = axios.create({ baseURL: (import.meta.env.DEV && import.meta.env.VITE_OPEN_PROXY === 'true') ? '/api/' : import.meta.env.VITE_APP_API_BASEURL, timeout: 1000 * 20, responseType: 'json', }) api.interceptors.request.use( (request) => { // 全局拦截请求发送前提交的参数 const settingsStore = useSettingsStore() const userStore = useUserStore() // 设置公共请求头 if (request.headers) { request.headers['Accept-Language'] = settingsStore.settings.app.defaultLang request.headers.Authorization = userStore.token || ikStore.local.getItem(ELocal.TOKEN) if (userStore.isLogin) { // const menuId = ikStore.local.getItem('menuid') // request.headers['menu-id'] = menuId // request.headers['X-TENANT'] // = userStore?.tenant?.code || ikStore.local.getItem(ELocal.TENANT)?.code // request.headers['X-ORG'] // = userStore?.organiza?.select || ikStore.local.getItem(ELocal.ORGANIZA)?.select } // 设置域标识 setDomainHeader(request.headers) } // 是否将 POST 请求参数进行字符串化处理 if (request.method === 'post') { // request.data = qs.stringify(request.data, { // arrayFormat: 'brackets', // }) } return request }, ) api.interceptors.response.use( (response: any) => { /** * 全局拦截请求发送后返回的数据,如果数据有报错则在这做全局的错误提示 */ if ( response.status === 200 || response.data.status === 1 || response.data.code === 0 ) { if ( !excludeUrl.includes(response?.config?.url) && !response.data.success ) { msgWarning(response.data.msg) return Promise.resolve(response.data) } } else { // TODO:返回登录页的条件 useUserStore().logout() } return Promise.resolve(response.data) }, (error) => { let message = error.message if (message === 'Network Error') { msgWarning('网络错误,请稍后重试') } else if (message.includes('timeout')) { msgWarning('请求超时,请稍后重试') toLogin() return Promise.reject(error) } // 登录过期,返回登录页 else if (message.includes('401')) { message = '登录失效, 即将返回登录页面' useUserStore().logout() } else if (message.includes('Request failed with status code')) { message = `请求[${error?.config?.url}]${message.substr(message.length - 3)}异常` msgWarning(message) } else { msgWarning(message) } return Promise.reject(error) }, ) export default api