76 lines
2.2 KiB
JavaScript
76 lines
2.2 KiB
JavaScript
import axios from 'axios'
|
|
import { DEFAULT_MOCK_USER, getStoredMockUser, MOCK_USER_HEADER } from '@/utils/mockUserStorage'
|
|
import { message, Modal, notification } from 'ant-design-vue'
|
|
|
|
const service = axios.create({
|
|
baseURL: import.meta.env.VITE_APP_BASE_API || '/',
|
|
timeout: 30000,
|
|
})
|
|
|
|
service.interceptors.request.use(
|
|
(config) => {
|
|
const token = localStorage.getItem('token')
|
|
if (token) {
|
|
config.headers['Authorization'] = 'Bearer ' + token
|
|
}
|
|
const mockUser = getStoredMockUser() || DEFAULT_MOCK_USER
|
|
config.headers[MOCK_USER_HEADER] = mockUser
|
|
return config
|
|
},
|
|
(error) => Promise.reject(error),
|
|
)
|
|
|
|
service.interceptors.response.use(
|
|
(res) => {
|
|
if (
|
|
res.request.responseType === 'blob' ||
|
|
res.request.responseType === 'arraybuffer'
|
|
) {
|
|
return res
|
|
}
|
|
const code = res.data?.code
|
|
const normalizedCode =
|
|
code === undefined || code === null ? undefined : String(code)
|
|
const msg = res.data?.message || res.data?.msg || '系统错误'
|
|
|
|
if (normalizedCode === '401') {
|
|
Modal.confirm({
|
|
title: '系统提示',
|
|
content: '登录状态已过期,请重新登录',
|
|
okText: '重新登录',
|
|
cancelText: '取消',
|
|
onOk: () => {
|
|
localStorage.removeItem('token')
|
|
location.reload()
|
|
},
|
|
})
|
|
return Promise.reject('无效的会话,或者会话已过期。')
|
|
} else if (normalizedCode === '500') {
|
|
message.error(msg)
|
|
return Promise.reject(new Error(msg))
|
|
} else if (
|
|
normalizedCode !== undefined &&
|
|
normalizedCode !== '200' &&
|
|
normalizedCode !== '0000'
|
|
) {
|
|
notification.error({ message: '提示', description: msg })
|
|
return Promise.reject('error')
|
|
}
|
|
return Promise.resolve(res.data)
|
|
},
|
|
(error) => {
|
|
let msg = error.message
|
|
if (msg === 'Network Error') {
|
|
msg = '后端接口连接异常'
|
|
} else if (msg.includes('timeout')) {
|
|
msg = '系统接口请求超时'
|
|
} else if (msg.includes('Request failed with status code')) {
|
|
msg = '系统接口' + msg.substr(msg.length - 3) + '异常'
|
|
}
|
|
message.error(msg)
|
|
return Promise.reject(error)
|
|
},
|
|
)
|
|
|
|
export default service
|