SAMS/sams-ui/src/utils/request.js

66 lines
1.7 KiB
JavaScript

import axios from 'axios'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getToken } from '@/utils/auth'
import config from '@/config'
// 创建axios实例
const service = axios.create({
baseURL: config.baseUrl,
timeout: 10000
})
// 请求拦截器
service.interceptors.request.use(
config => {
const token = getToken()
if (token && config.url !== '/login') {
config.headers.Authorization = `Bearer ${token}`
}
return config
},
error => {
console.log(error)
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
if (res.code !== 200) {
ElMessage({
message: res.message || '系统错误',
type: 'error',
duration: 5 * 1000
})
// 401: 未登录或token过期
if (res.code === 401) {
ElMessageBox.confirm('登录状态已过期,请重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
location.reload()
})
}
return Promise.reject(new Error(res.message || '系统错误'))
} else {
return res
}
},
error => {
console.log('err' + error)
ElMessage({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service