import axiosClient from 'axios'
|
import type { AxiosRequestConfig } from 'axios'
|
import { ElMessage } from 'element-plus'
|
import { getToken } from '@/common/utils/index'
|
import router from '../../router/index'
|
|
const instance = axiosClient.create({
|
responseType: 'json',
|
withCredentials: true // 允许携带 cookie
|
})
|
|
/**
|
* 请求拦截器
|
*/
|
instance.interceptors.request.use(
|
(config) => {
|
// 若是有做鉴权token , 就给头部带上token
|
const token = getToken()
|
if ((token == null || token == '' || token == 'undefined') && config.url != '/api/base/login') {
|
router.push('/login')
|
return config
|
// window.location = `//${window.location.hostname}:9080`+'/login'
|
} else if (token) {
|
config.headers.Authorization = 'Bearer ' + token
|
}
|
|
return config
|
},
|
(error) => {
|
return Promise.reject(error)
|
}
|
)
|
|
/**
|
* 响应拦截器
|
*/
|
instance.interceptors.response.use(
|
(res) => {
|
if (res.data.code == 200) {
|
return res.data
|
} else {
|
ElMessage({
|
message: res.data.msg,
|
type: 'error',
|
duration: 3 * 1000
|
})
|
return Promise.reject(res?.data)
|
}
|
},
|
(error) => {
|
if (error.response.status === 401) {
|
// alert('JWT失效,即将跳转至登录页..')
|
router.push('/login')
|
}
|
let { message } = error
|
if (message === 'Network Error') {
|
message = '后端接口连接异常'
|
} else if (message.includes('timeout')) {
|
message = '系统接口请求超时'
|
} else if (message.includes('Request failed with status code')) {
|
message = '系统接口' + message.substr(message.length - 3) + '异常'
|
}
|
const token = getToken()
|
if (token) {
|
ElMessage({
|
message: message,
|
type: 'error',
|
duration: 3 * 1000
|
})
|
}
|
return Promise.reject(error)
|
}
|
)
|
|
const axios = <T>(cfg: AxiosRequestConfig) => instance.request<any, T>(cfg)
|
|
export default axios
|