case/src/utils/axios.js
zoujiandong 5850bdee94 first
2025-03-07 17:11:01 +08:00

244 lines
6.6 KiB
JavaScript

import axios from "axios";
import { showToast,showDialog } from 'vant';
import host from "./host"
import wx from 'jweixin-1.6.0'
// 1. 创建axios实例
const instance = axios.create({
// 接口
baseURL: import.meta.env.VITE_BASE_URL,
// 超时时间
timeout: 100000,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
}
});
// 2.请求拦截
instance.interceptors.request.use(
config => {
let token='';
let token_gandan = localStorage.getItem('token_gandan');
let token_other = localStorage.getItem('token_other');
const params = new URLSearchParams(window.location.search);
let source=params.get('source');
if(source==3){
if(token_other){
token=token_other;
}
}else{
if(token_gandan){
token=token_gandan;
}
}
if (token) {
config.headers['Authorization'] ='Bearer '+token
}
return config;
},
error => {
// 请求发生错误,抛出异常
Promise.reject(error);
}
);
// 3.响应拦截
instance.interceptors.response.use(
res => {
const params = new URLSearchParams(window.location.search);
let source=params.get('source');
if (res.data && res.data.code === 200 ) {
//let status=res.data.code;
return res.data;
}else{
let status=res.data.code;
switch (status) {
case 201:
localStorage.clear();
showToast("该账户已被禁用");
break;
case -1:
if(res.data.data.source==3){
showDialog({
width: '80%',
title: '提示',
message: '跳转失败,请返回重试',
}).then(() => {
wx.miniProgram.navigateBack({
fail:function(res) {
wx.miniProgram.switchTab({
url: '/pages/media_home/index'
})
}
});
// wx.miniProgram.switchTab({
// url: '/pages/media_home/index',
// success(res) {
// consoe.log('跳转成功');
// },
// fail(res) {
// consoe.log('跳转失败');
// }
// });
});
}else{
showToast(res.data.message);
}
return res.data;
break;
case -2:
localStorage.clear();
//showToast('该账户未注册');
let url='https://dev-wx.igandan.com';
if(host.indexOf('//dev-caseplatform.igandan.com')==-1){
url='https://wx.igandan.com'
}
window.location.href = url+"/hcp/Signup2020online_tologin?back_url="+host+"/web/home"
break;
case 400:
showToast("请求错误");
break;
case 401:
showToast("未授权,请重新登录");
if(source==3){
localStorage.clear();
wx.miniProgram.navigateBack({
fail:function(res) {
wx.miniProgram.switchTab({
url: '/pages/media_home/index'
})
}
});
// wx.miniProgram.switchTab({
// url: '/pages/media_home/index',
// success(res) {
// consoe.log('跳转成功');
// },
// fail(res) {
// consoe.log('跳转失败');
// }
// });
}else{
localStorage.clear();
window.location.reload();
}
break;
case 403:
showToast("拒绝访问");
break;
case 404:
showToast("请求错误,未找到相应的资源");
break;
case 405:
showToast("未授权,请重新登录");
if(source==3){
localStorage.clear();
wx.miniProgram.navigateBack({
fail:function(res) {
wx.miniProgram.switchTab({
url: '/pages/media_home/index'
})
}
});
// wx.miniProgram.switchTab({
// url: '/pages/media_home/index',
// success(res) {
// consoe.log('跳转成功');
// },
// fail(res) {
// consoe.log('跳转失败');
// }
// });
}else{
localStorage.clear();
window.location.reload();
}
break;
case 408:
showToast("请求超时");
break;
case 500:
showToast("服务器内部错误");
break;
case 501:
showToast("网络未实现");
break;
case 502:
showToast("网络错误");
break;
case 503:
showToast("服务不可用");
break;
case 504:
showToast("网络超时");
break;
case 505:
showToast("HTTP版本不支持该请求");
break;
default:
return res.data;
//ElMessage.error("请求失败");
}
//return res;
}
},
error => {
if (error && error.response) {
const status = error.response.status
switch (status) {
case 201:
localStorage.clear()
showToast("该账户已被禁用");
break;
case 400:
showToast("请求错误");
break;
case 401:
localStorage.clear()
window.location.reload();
showToast("未授权,请重新登录");
break;
case 403:
showToast("拒绝访问");
break;
case 404:
showToast("请求错误,未找到相应的资源");
break;
case 408:
showToast("请求超时");
break;
case 500:
showToast("服务器内部错误");
break;
case 501:
showToast("网络未实现");
break;
case 502:
showToast("网络错误");
break;
case 503:
showToast("服务不可用");
break;
case 504:
showToast("网络超时");
break;
case 505:
showToast("HTTP版本不支持该请求");
break;
default:
showToast("请求失败");
}
} else {
if (JSON.stringify(error).includes("timeout")) {
showToast("服务器响应超时,请刷新页面");
}
showToast("连接服务器失败");
}
return Promise.reject(error);
}
);
// 4.导出 axios 实例
export default instance;