import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';
import { Session } from '/@/utils/storage';
import qs from 'qs';
const service: AxiosInstance = axios.create({
baseURL: import.meta.env.VITE_API_URL,
timeout: 50000,
headers: { 'Content-Type': 'application/json' },
paramsSerializer: {
serialize(params) {
return qs.stringify(params, { allowDots: true });
},
},
});
service.interceptors.request.use(
(config: InternalAxiosRequestConfig) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
service.interceptors.response.use(
(response) => {
const res = response.data;
if (res.code && res.code !== 0) {
console.log(res);
if (res.code === 401 || res.code === 4001) {
Session.clear();
window.location.href = '/';
ElMessageBox.alert('无权限访问或会话过期,请重新登录', '提示', {
customClass: 'single-alert',
})
.then(() => {})
.catch(() => {});
}
return response.data;
} else {
return response.data;
}
},
(error) => {
if (error.message.indexOf('timeout') != -1) {
ElMessage.error('网络超时');
} else if (error.message == 'Network Error') {
ElMessage.error('网络连接错误');
} else if (error.status == '500') {
ElMessage.error('服务器内部错误');
} else {
if (error.response.data) {
if (error.response.data.code == 401) {
ElMessageBox.alert('无权限访问或会话过期,请重新登录', '提示', {
customClass: 'single-alert',
confirmButtonText: '确定',
callback: () => {
Session.clear();
window.location.href = '/';
}
})
} else {
ElMessage.error(error.response.statusText);
}
} else {
ElMessage.error('接口路径找不到');
}
}
return Promise.reject(error);
}
);
export default service;