You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.0 KiB
Plaintext

import axios from 'axios'
import { decodeResponseParams } from './decode'
import { useUserStore } from '@/stores/user'
const { VITE_GLOB_API_URL } = import.meta.env
const service = axios.create({
baseURL: import.meta.env.MODE === 'development' ? '/api' : VITE_GLOB_API_URL,
withCredentials: true
})
// 请求拦截
service.interceptors.request.use(
(config) => {
const user = useUserStore()
let url = config.url
if (config.params) {
if (!config.params.Token) config.params.Token = user.getToken
url += '?'
const keys = Object.keys(config.params)
for (const key of keys) {
try {
url += `${key}=${decodeURIComponent(config.params[key])}&`
} catch (e) {
throw new Error('不受支持的字符')
}
}
url = url?.substring(0, url?.length - 1)
config.params = {}
}
config.url = url
// config.headers = {
// 'Content-Type': 'multipart/form-data',
// };
return config
},
(error) => {
console.error(error)
return Promise.reject(error)
}
)
service.interceptors.response.use(
(response) => {
const { data } = response
// if (!!data && typeof data === 'string') {
// if (data.startsWith('err@')) {
// //const errMsg = data.replace('err@', '');
// if (data.indexOf('err@登录信息丢失') != -1) {
// setTimeout(() => {
// // @ts-ignore
// window?.top?.vm?.logoutExt()
// })
// }
// return Promise.reject(data.replace('err@', ''))
// }
// if (data.startsWith('url@')) {
// return decodeResponseParams(data)
// // window.location.href = data.replace('url@', '');
// // return Promise.resolve();
// }
// try {
data.data = JSON.parse(data.data);
return data;
// } catch (_) {
// return data
// }
// }
// return data
},
(error) => {
return Promise.reject(error)
}
)
export default service