108 lines
3.5 KiB
JavaScript
108 lines
3.5 KiB
JavaScript
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"];
|
|
// 判断当前的运行环境 process.env.NODE_ENV
|
|
// isDev 为真 开发环境 --- npm run serve
|
|
// isDev 为假 非开发环境(测试环境,生产环境)- npm run build
|
|
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://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.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";
|
|
}
|
|
}, 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;
|