117 lines
2.4 KiB
JavaScript
117 lines
2.4 KiB
JavaScript
/* 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 |