This commit is contained in:
hezhidong
2025-04-23 17:19:04 +08:00
parent 0fb61604d5
commit e1d13a3aeb
7 changed files with 557 additions and 555 deletions
+90 -81
View File
@@ -1,98 +1,107 @@
import axios from 'axios'
import { useRoute, useRouter } from 'vue-router'
import { useStore } from 'vuex';
import { Toast, Dialog } from 'vant';
import axios from "axios";
import { useRoute, useRouter } from "vue-router";
import { useStore } from "vuex";
import { Toast, Dialog } from "vant";
// import { getItem, setItem, removeItem, dalert } from '@/com/index'
const errorCode = {
'401': '登录状态已过期,即将返回首页重新登录。',
'403': '当前操作没有权限',
'404': '访问资源不存在',
'default': '系统未知错误,请反馈给管理员'
}
const route = useRoute()
const router = useRouter()
const store = useStore()
const loadNoCloseArr = ['/upload/face', ]
401: "登录状态已过期,即将返回首页重新登录。",
403: "当前操作没有权限",
404: "访问资源不存在",
default: "系统未知错误,请反馈给管理员",
};
const route = useRoute();
const router = useRouter();
const store = useStore();
const loadNoCloseArr = ["/upload/face"];
// 判断当前的运行环境 process.env.NODE_ENV
// isDev 为真 开发环境 --- npm run serve
// isDev 为假 非开发环境(测试环境,生产环境)- npm run build
const isDev = process.env.NODE_ENV === 'development'
const isDev = process.env.NODE_ENV === "development";
const request = axios.create({
// 根据环境 设置不同的baseURL
// 如果配置了单个的反向代理 --- 字符串模式
// 如果配置了多个的反向代理 --- 对象模式
// baseURL: isDev ? 'http://visitor.scdswj.cn/prod-api' : 'http://visitor.scdswj.cn/prod-api'
baseURL: isDev ? 'http://visitor.scdswj.cn/prod-api' : 'http://visitor.scdswj.cn/prod-api'
})
baseURL: isDev
? "http://visitor.scdswj.cn/prod-api"
: "http://visitor.scdswj.cn/prod-api",
// baseURL: isDev ? "http://192.168.31.124:8195" : "http://192.168.31.124:8195",
});
// 'http://rap2api.taobao.org/app/mock/297766/example/1643070528065'
// 请求拦截器 - 所有的请求开始之前先到此处
request.interceptors.request.use((config) => {
// 可以设置 加载的动画效果 的展示
// 在必要的路由设置一些额外的参数 ---- token信息携带放在此处
console.log(config)
return config
}, (error) => {
return Promise.reject(error)
})
request.interceptors.request.use(
(config) => {
// 可以设置 加载的动画效果 的展示
// 在必要的路由设置一些额外的参数 ---- token信息携带放在此处
console.log(config);
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 响应拦截器 --- 所有请求的相应先到此处
request.interceptors.response.use((response) => {
// 可以设置 加载的动画效果 的隐藏
const code = response.data.code || 200;
const message = errorCode[code] || response.data.msg || errorCode['default']
if(code == 200){
if(loadNoCloseArr.includes(response.config.url)){ // 设置请求不关闭加载动画接口
}else{
Toast.clear()
}
}else{
Toast.clear()
}
if (code === 401) {
Toast.fail(message)
setTimeout(()=>{
localStorage.removeItem('token');
localStorage.removeItem('user');
localStorage.removeItem('userToken');
const redirectUrl = localStorage.getItem('redirect')
if(redirectUrl){
window.location.href = redirectUrl
}else{
window.location.href = '/userHome'
request.interceptors.response.use(
(response) => {
// 可以设置 加载的动画效果 的隐藏
const code = response.data.code || 200;
const message =
errorCode[code] || response.data.msg || errorCode["default"];
if (code == 200) {
if (loadNoCloseArr.includes(response.config.url)) {
// 设置请求不关闭加载动画接口
} else {
Toast.clear();
}
},2000)
return Promise.reject('登录状态已过期,即将返回首页重新登录。')
} else if (code === 500) {
// Message({ message: msg, type: 'error' })
Toast.fail(message)
return Promise.reject(response.data)
} else if (code === 601) {
// Message({ message: msg, type: 'warning' })
Toast.fail(message)
return Promise.reject('error')
} else if (code != 200) {
Toast.fail(message)
return Promise.reject('error')
} else {
return response.data
}
}, error => {
Toast.clear()
console.log(error.message)
let { message } = error;
if (message == "Network Error") {
message = "后端接口连接异常";
} else if (message.includes("timeout")) {
message = "系统接口请求超时";
} else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常";
}
console.log(message)
Toast.fail(message)
return Promise.reject(error.response)
} else {
Toast.clear();
}
if (code === 401) {
Toast.fail(message);
setTimeout(() => {
localStorage.removeItem("token");
localStorage.removeItem("user");
localStorage.removeItem("userToken");
})
const redirectUrl = localStorage.getItem("redirect");
if (redirectUrl) {
window.location.href = redirectUrl;
} else {
window.location.href = "/userHome";
}
}, 2000);
return Promise.reject("登录状态已过期,即将返回首页重新登录。");
} else if (code === 500) {
// Message({ message: msg, type: 'error' })
Toast.fail(message);
return Promise.reject(response.data);
} else if (code === 601) {
// Message({ message: msg, type: 'warning' })
Toast.fail(message);
return Promise.reject("error");
} else if (code != 200) {
Toast.fail(message);
return Promise.reject("error");
} else {
return response.data;
}
},
(error) => {
Toast.clear();
console.log(error.message);
let { message } = error;
if (message == "Network Error") {
message = "后端接口连接异常";
} else if (message.includes("timeout")) {
message = "系统接口请求超时";
} else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常";
}
console.log(message);
Toast.fail(message);
return Promise.reject(error.response);
}
);
export default request
export default request;