/* eslint-disable */ /** * @desc axios数据API请求封装处理 */ import axios from 'axios' import Message from '@arco-design/web-vue/es/message/index' import store from '@/store' import { getLang, getHeaders } from './auth' import i18n from '@/lang/i18n.js'; const lang = i18n.global.locale; const messages = i18n.global.messages[lang]; /** * @constant * @desc 创建axios实例 */ const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, withCredentials: import.meta.env.MODE === 'development', timeout: 600 * 1000 }) // 登出 const logout = () => { store.dispatch('user/logout2').then(() => { store.dispatch('main/setShowLogin', true); Message.error({ content: messages.common.loginless, duration: 3000 }) }) } /** * axios接口请求入参 */ service.interceptors.request.use( (config) => { if (config.url && config.url.includes('file/upload')) { config.headers['Content-Type'] = 'multipart/form-data;boundary = ' + new Date().getTime() } config.headers = { ...getHeaders(), ...config.headers } if (config.url && config.url.indexOf('http') == -1) { let prefix = config.url.startsWith('/') ? '/dev-api' : '/dev-api/' if (import.meta.env.MODE == 'production') { prefix = config.url.startsWith('/') ? '' : '/' } config.url = prefix + config.url } if (config.method.toUpperCase() === 'GET' || config.method.toUpperCase() === 'PUT') { config.params = config.data } return config }, (error) => { return Promise.reject(error) } ) /** * axios接口请求后返回结果 */ service.interceptors.response.use( (response) => { const res = response.data // 处理文件流下载 let responseType = response.config.responseType if (responseType === 'blob') { return res } if (res.code == 200 || res.code == -1 || res.code == -2) { return res } else if (res.code == 401) { logout(); } else { Message.error({ content: res.msg || 'Server error', duration: 3000 }) return res } }, (error) => { const { response = {} } = error const { data: { message } = {}, status } = response if (status == 401) { logout() return Promise.reject(error) } if (response.config?.showErrorMessage != false) { Message.error({ content: message || 'Server error', // closable: true, duration: 3000 }) } return Promise.reject(message) } ) export default service