124 lines
3.1 KiB
JavaScript
124 lines
3.1 KiB
JavaScript
import axios from 'axios';
|
||
import { Message } from '@arco-design/web-vue';
|
||
import { useUserStore } from '../store/userInfo'
|
||
import {globals} from '../main.js'
|
||
|
||
|
||
// create an axios instance
|
||
console.log("________"+import.meta.env.VITE_BASE_URL)
|
||
const service = axios.create({
|
||
baseURL:import.meta.env.VITE_BASE_URL,
|
||
timeout: 8000,
|
||
headers:{
|
||
'Content-Type':'application/json',
|
||
|
||
}
|
||
});
|
||
|
||
// request interceptor
|
||
service.interceptors.request.use(
|
||
(config) => {
|
||
// Store 必须在拦截器内部导入,在外部导入会显示 Pinia 未初始化
|
||
const store = useUserStore();
|
||
// 设置请求头部 Authorization
|
||
// if(config.method=="put"){
|
||
// config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
|
||
// }
|
||
if (store.token) {
|
||
config.headers['Authorization'] = 'Bearer ' + store.token;
|
||
//config.headers['Content-Type'] = 'multipart/form-data'
|
||
}
|
||
|
||
return config;
|
||
},
|
||
(error) => {
|
||
console.error(error);
|
||
return Promise.reject(error);
|
||
}
|
||
);
|
||
|
||
// response interceptor
|
||
service.interceptors.response.use(
|
||
(response) => {
|
||
var Authorization_token = response.headers.Authorization;
|
||
if (Authorization_token) {
|
||
sessionStorage.setItem('token', Authorization_token); //当token快过期时,服务器会返回新token,本地刷新
|
||
}
|
||
const store = useUserStore();
|
||
const { code, message } = response.data;
|
||
console.log(code);
|
||
if (code == 401 || code==405 || code==406) {
|
||
//Message.clear();
|
||
// Message.error({
|
||
// content: message,
|
||
// duration: 3000
|
||
// });
|
||
// 重定向路由到登陆页面
|
||
store.clearInfo();
|
||
window.location.href="/login";
|
||
}else if(code === 400){
|
||
Message.error({
|
||
content: '缺少参数',
|
||
duration: 3000
|
||
});
|
||
}else if(code == 402 || code==403){
|
||
Message.error({
|
||
content: '请求无权限',
|
||
duration: 3000
|
||
});
|
||
}else if(code == 201){
|
||
Message.error({
|
||
content: message,
|
||
duration: 3000
|
||
});
|
||
}else if(code==-1){
|
||
Message.clear();
|
||
Message.error({
|
||
content: message,
|
||
duration: 3000
|
||
});
|
||
}
|
||
|
||
return response.data;
|
||
},
|
||
(error) => {
|
||
const store = useUserStore();
|
||
const { code, message } = error.response.data;
|
||
// 如果过期则退出登录
|
||
if (code === 401 || code==405 || code==406) {
|
||
Message.error({
|
||
content: message,
|
||
duration: 3000
|
||
});
|
||
// 重定向路由到登陆页面
|
||
store.clearInfo();
|
||
window.location.href="/login";
|
||
}else if(code === 400){
|
||
Message.error({
|
||
content: '缺少参数',
|
||
duration: 3000
|
||
});
|
||
}else if(code === 402 || code==403){
|
||
Message.error({
|
||
content: '请求无权限',
|
||
duration: 3000
|
||
});
|
||
}else if(code === 201){
|
||
Message.error({
|
||
content: message,
|
||
duration: 3000
|
||
});
|
||
store.clearInfo();
|
||
window.location.href="/login";
|
||
}else {
|
||
Message.error({
|
||
content: error.message,
|
||
duration: 3000
|
||
})
|
||
}
|
||
globals?.$loading.hide();
|
||
return Promise.reject(message);
|
||
}
|
||
);
|
||
|
||
export default service; |