hospital-admin/src/utils/request.js
2024-10-23 08:58:07 +08:00

124 lines
3.1 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.

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;