|
|
import axios from "axios";
|
|
|
import {
|
|
|
Message,
|
|
|
MessageBox
|
|
|
} from "element-ui";
|
|
|
// import { getToken, removeToken, setToken } from "@/utils/token";
|
|
|
import {
|
|
|
getCookie,
|
|
|
delCookie
|
|
|
} from "./utils.js";
|
|
|
import router from "../router/index.js";
|
|
|
import {
|
|
|
name
|
|
|
} from "../../config/dev.env.js";
|
|
|
let base = "/api";
|
|
|
let baseURL = base;
|
|
|
// 根据环境变量对host进行判断
|
|
|
// axios.defaults.baseURL = process.env.baseURL
|
|
|
|
|
|
// axios.defaults.baseURL = '/api'
|
|
|
axios.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8";
|
|
|
|
|
|
// const rLoading = this.openLoading();
|
|
|
// 创建axios实例
|
|
|
const service = axios.create({
|
|
|
// baseURL: baseURL,
|
|
|
timeout: 15000 // 请求超时时间
|
|
|
});
|
|
|
// request拦截器
|
|
|
service.interceptors.request.use(
|
|
|
config => {
|
|
|
// 在此处设置请求头参数
|
|
|
const token = localStorage.getItem("token");
|
|
|
|
|
|
if (token != null) {
|
|
|
config.headers.token = token;
|
|
|
}
|
|
|
return config;
|
|
|
},
|
|
|
error => {
|
|
|
return Promise.reject(error);
|
|
|
}
|
|
|
);
|
|
|
var flag = false;
|
|
|
// axios response 拦截器
|
|
|
service.interceptors.response.use(
|
|
|
response => {
|
|
|
// loadingObj.close();
|
|
|
switch (response.data.code) {
|
|
|
case "502001":
|
|
|
if (flag) {
|
|
|
break;
|
|
|
} else {
|
|
|
flag = true;
|
|
|
MessageBox.confirm(response.data.message + "!重新登录?", "提示", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
cancelButtonClass: "cancelbtnFalses",
|
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
|
type: "warning"
|
|
|
}).then(() => {
|
|
|
router.push("/login");
|
|
|
delCookie("token");
|
|
|
});
|
|
|
setTimeout(() => {
|
|
|
flag = false;
|
|
|
}, 15000);
|
|
|
console.log(flag);
|
|
|
}
|
|
|
break;
|
|
|
case "510002":
|
|
|
if (flag) {
|
|
|
break;
|
|
|
} else {
|
|
|
flag = true;
|
|
|
MessageBox.confirm("登录已过期 , 是否重新登录?", "提示", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
cancelButtonClass: "cancelbtnFalses",
|
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
|
type: "warning"
|
|
|
}).then(() => {
|
|
|
router.push("/login");
|
|
|
delCookie("token");
|
|
|
});
|
|
|
|
|
|
//解决当token过期时,同一个页面有多个请求造成 “是否重新登录”弹框多次弹出 的BUG
|
|
|
setTimeout(() => {
|
|
|
flag = false;
|
|
|
}, 15000);
|
|
|
break;
|
|
|
}
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
// 返回请求成功结果,status=200
|
|
|
return response.data;
|
|
|
},
|
|
|
err => {
|
|
|
// 判断请求失败
|
|
|
// 请求失败时,即status!=200
|
|
|
if (err && err.response) {
|
|
|
switch (err.response.status) {
|
|
|
case 400:
|
|
|
err.message = "错误格式请求";
|
|
|
break;
|
|
|
case 401:
|
|
|
err.message = "未授权,请重新登录";
|
|
|
break;
|
|
|
case 403:
|
|
|
err.message = "禁止访问";
|
|
|
break;
|
|
|
case 404:
|
|
|
err.message = "请求错误,未找到该请求方法";
|
|
|
break;
|
|
|
case 405:
|
|
|
err.message = "请求方法未允许";
|
|
|
break;
|
|
|
case 408:
|
|
|
err.message = "请求超时";
|
|
|
break;
|
|
|
case 413:
|
|
|
err.message = "上传文件过大";
|
|
|
break;
|
|
|
case 500:
|
|
|
err.message = "服务器端出错";
|
|
|
break;
|
|
|
case 501:
|
|
|
err.message = "网络未实现";
|
|
|
break;
|
|
|
case 502:
|
|
|
err.message = "网络错误";
|
|
|
break;
|
|
|
case 503:
|
|
|
err.message = "服务不可用";
|
|
|
break;
|
|
|
case 504:
|
|
|
err.message = "网络超时";
|
|
|
break;
|
|
|
case 505:
|
|
|
err.message = "http版本不支持该请求";
|
|
|
break;
|
|
|
default:
|
|
|
err.message = `连接错误,${err.res.message}`;
|
|
|
}
|
|
|
} else {
|
|
|
err.message = "连接不上服务器";
|
|
|
}
|
|
|
Message({
|
|
|
type: "warning",
|
|
|
message: err.message,
|
|
|
showClose: true,
|
|
|
duration: 1500
|
|
|
});
|
|
|
return Promise.reject(err);
|
|
|
}
|
|
|
);
|
|
|
// export default service;
|
|
|
export {
|
|
|
service
|
|
|
};
|