| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import axios from 'axios'
- import { ElMessage, ElMessageBox } from 'element-plus'
- import { ACCESS_TOKEN, TOKEN_PREFIX } from '@/utils/constants'
- import { useUserStore } from '@/stores/user'
- import { logout } from '@/utils/micro'
- const request = axios.create({
- baseURL: import.meta.env.VITE_BASE_API
- })
- // 异常拦截处理器
- const errorHandler = (error: any) => {
- const status = error.response.status
- const data = error.response.data
- if (status === 400) {
- ElMessage.error(data.msg)
- } else if (status === 401) {
- ElMessageBox.confirm('无权限访问当前资源,请尝试重新登录后再操作。', '无权限访问', {
- type: 'error',
- closeOnClickModal: false,
- center: true,
- confirmButtonText: '重新登录'
- }).then(() => {
- logout()
- })
- } else if (status === 403) {
- ElMessage.error('无权限访问')
- } else if (status === 404) {
- ElMessage.error('接口不存在')
- } else if (status === 500) {
- ElMessage.error('服务器错误')
- }
- return Promise.reject(error.response)
- }
- request.interceptors.request.use(config => {
- const userStore = useUserStore()
- const token = TOKEN_PREFIX + userStore.token
- config.headers = config.headers || {}
- if (token) {
- config.headers[ACCESS_TOKEN] = token
- }
- return config
- })
- request.interceptors.response.use(res => {
- const data = res.data
- if (data.success || data.code === 200) {
- return data
- } else {
- if (data.code === 201 && data.msg === '登录超时,请登录') {
- logout()
- } else {
- ElMessage.error(data.msg)
- }
- return Promise.reject(data)
- }
- }, errorHandler)
- export default request
|