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

113 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*jshint esversion: 9 */
/**
* http请求配置
*/
import axios from 'axios'
import { userDataStore } from '@/store/user'
import { encrypt, decrypt } from '@/utils/encrypt'
// import { useMessage } from 'naive-ui'
import router from '@/router'
import { createDiscreteApi } from 'naive-ui'
import { set } from 'lodash'
const { message } = createDiscreteApi(['message'])
let baseApiURL = import.meta.env.VITE_APP_baseApiURL //api原始链接
const timeout = 30000 //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
if (userData?.userInfo?.token) {
// config.headers['Authorization'] = 'Bearer ' + userData?.userInfo?.token
config.headers['Token'] = userData?.userInfo?.token
} else {
config.headers['Token'] = 'test'
}
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),
)
const data = response.data
if (!data) {
return Promise.reject({
msg: '请求发生错误',
})
}
const status = data?.status || response.status
switch (status) {
case 200:
// return data
return Promise.resolve(response)
case 401: //表示需要重新登录
// if (!modelShow) {
// modelShow = true
// if (window.confirm('登录已经失效,是否重新登录?')) {
// router.push({
// path: '/login',
// })
// }
// modelShow = false
// }
setTimeout(() => {
message.error('登录已经失效,请重新登录')
// 清除所有localStorage
localStorage.clear()
window.location.href = 'http://sgwpdm.ah.sgcc.com.cn/iws/#/unified/'
}, 500)
return Promise.reject(data)
case 202: //表示失败,参数或其他原因
return Promise.reject(data)
case 500: //表示报错。未知原因
return Promise.reject(data)
default:
return Promise.reject(data)
}
},
(error) => {
//数据请求发生错误
message.error('请求发生错误,请稍后再试')
return Promise.reject({
msg: '请求发生错误,请稍后再试',
})
},
)