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

110 lines
3.5 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 { encrypt, decrypt } from '@/utils/encrypt'
2025-06-27 11:23:33 +08:00
// import { useMessage } from 'naive-ui'
2025-06-17 16:01:11 +08:00
import router from '@/router'
2025-06-27 11:23:33 +08:00
import { createDiscreteApi } from 'naive-ui'
2025-07-19 15:30:41 +08:00
import { set } from 'lodash'
2025-06-27 11:23:33 +08:00
const { message } = createDiscreteApi(['message'])
2025-06-17 16:01:11 +08:00
let baseApiURL = import.meta.env.VITE_APP_baseApiURL //api原始链接
2025-06-27 11:23:33 +08:00
const timeout = 10000 //api请求超时时间
2025-06-17 16:01:11 +08:00
export const service = axios.create({
//可创建多个 axios实例
2025-07-21 12:11:01 +08:00
baseURL: baseApiURL, //设置公共的请求前缀
2025-06-17 16:01:11 +08:00
timeout: timeout, //超时终止请求
})
service.interceptors.request.use(
(config) => {
const userData = userDataStore()
config.headers = config.headers || {}
2025-06-25 18:22:07 +08:00
// config.headers['token'] = userData.userInfo.token
if (userData?.userInfo?.token) {
config.headers['Authorization'] = 'Bearer ' + userData?.userInfo?.token
} else {
config.headers['Token'] = 'test'
2025-06-25 18:22:07 +08:00
}
2025-06-17 16:01:11 +08:00
return config
},
() => {
return Promise.reject({
msg: '请求发生错误,请稍后再试',
})
},
)
let modelShow = false
service.interceptors.response.use(
(response) => {
response.data = decrypt(response.data)
console.log(
'%c🔍-- 解密后出参 --',
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 60px; border-radius: 5px; font-weight: bold;',
'',
)
console.log(
'%c原始数据', //增加样式
'color: #FF6B6B; padding: 5px 0; border-radius: 5px; font-weight: bold;',
'',
'\n',
response.data,
)
console.log(
'%cJSON格式',
'color: #4ECDC4; padding: 5px 0; border-radius: 5px; font-weight: bold;',
'\n',
JSON.stringify(response.data, null, 2),
)
2025-06-17 16:01:11 +08:00
const data = response.data
2025-06-17 16:01:11 +08:00
if (!data) {
return Promise.reject({
msg: '请求发生错误',
})
}
2025-06-24 18:12:02 +08:00
const status = data?.status || response.status
2025-06-17 16:01:11 +08:00
switch (status) {
case 200:
2025-06-24 18:12:02 +08:00
// return data
return Promise.resolve(response)
2025-06-17 16:01:11 +08:00
case 401: //表示需要重新登录
2025-07-19 15:30:41 +08:00
// if (!modelShow) {
// modelShow = true
// if (window.confirm('登录已经失效,是否重新登录?')) {
// router.push({
// path: '/login',
// })
// }
// modelShow = false
// }
setTimeout(() => {
message.error('登录已经失效,请重新登录')
2025-07-21 12:11:01 +08:00
window.location.href = 'http://sgwpdm.ah.sgcc.com.cn/iws/#/unified/'
2025-07-19 15:30:41 +08:00
}, 500)
2025-06-17 16:01:11 +08:00
return Promise.reject(data)
case 202: //表示失败,参数或其他原因
return Promise.reject(data)
case 500: //表示报错。未知原因
return Promise.reject(data)
default:
return Promise.reject(data)
}
},
2025-06-27 11:23:33 +08:00
(error) => {
2025-06-17 16:01:11 +08:00
//数据请求发生错误
2025-06-27 11:23:33 +08:00
message.error('请求发生错误,请稍后再试')
2025-06-17 16:01:11 +08:00
return Promise.reject({
msg: '请求发生错误,请稍后再试',
})
},
)