on-site-robots-screen/src/http/request.js

71 lines
2.0 KiB
JavaScript
Raw Normal View History

2025-06-17 16:01:11 +08:00
/*jshint esversion: 9 */
/**
* http请求配置
*/
import axios from 'axios'
import { userDataStore } from '@/store/user'
import router from '@/router'
let baseApiURL = import.meta.env.VITE_APP_baseApiURL //api原始链接
const timeout = 13000 //api请求超时时间
export const service = axios.create({
//可创建多个 axios实例
baseURL: baseApiURL, //设置公共的请求前缀
timeout: timeout, //超时终止请求
})
service.interceptors.request.use(
(config) => {
const userData = userDataStore()
config.headers = config.headers || {}
config.headers['token'] = userData.userInfo.token
return config
},
() => {
return Promise.reject({
msg: '请求发生错误,请稍后再试',
})
},
)
let modelShow = false
service.interceptors.response.use(
(response) => {
const data = response.data
if (!data) {
return Promise.reject({
msg: '请求发生错误',
})
}
const status = data.status
switch (status) {
case 200:
return data
case 401: //表示需要重新登录
if (!modelShow) {
modelShow = true
if (window.confirm('登录已经失效,是否重新登录?')) {
router.push({
path: '/login',
})
}
modelShow = false
}
return Promise.reject(data)
case 202: //表示失败,参数或其他原因
return Promise.reject(data)
case 500: //表示报错。未知原因
return Promise.reject(data)
default:
return Promise.reject(data)
}
},
() => {
//数据请求发生错误
return Promise.reject({
msg: '请求发生错误,请稍后再试',
})
},
)