import axios from 'axios';
import { Loading } from 'element-ui';
//声明一个基础接口变量
let base_url;
//配置开发环境
if (process.env.NODE_ENV === 'development') {
base_url = window.Glob.development;
}
// 配置生产环境
if (process.env.NODE_ENV === 'production') {
base_url = window.Glob.production;
}
axios.defaults.baseURL = base_url;
// 请求数据转换成form-data格式
// axios.defaults.transformRequest = [function (data) {
// let src = ''
// for (let item in data) {
// src += encodeURIComponent(item) + '=' + encodeURIComponent(data[item]) + '&'
// }
// return src
// }]
// 发送请求前拦载
let loading;
let loadingNum=0;
function startLoading() {
if(loadingNum==0){
loading = Loading.service({
lock: true,
text: '处理中...',
spinner: 'el-icon-loading',
background: '#636a7b00'
})
}
//请求数量加1
loadingNum++;
}
function endLoading() {
//请求数量减1
loadingNum--
if(loadingNum<=0){
loading.close()
}
}
// 发送请求前拦载
axios.interceptors.request.use((config) => {
var urlsa = config.url;
var t = Date.parse(new Date()) / 1000;//时间戳
if (urlsa.indexOf("?") != -1) {
config.url = config.url + "&datest=" + t
} else {
config.url = config.url + "?datest=" + t
}
config.headers.token = window.localStorage.getItem("token");
config.headers.user = window.localStorage.getItem("username");
// 显示 Loading 效果
startLoading()
return config
}, (error) => {
endLoading(); // 隐藏 Loading
return Promise.reject(error)
})
//发送请求返回拦载
axios.interceptors.response.use(function (response) {
endLoading(); // 隐藏 Loading
// 对响应数据做点什么
var data = response.data;
//console.log("打印请求回来")
if (data.code == 2006) {
window.localStorage.clear('username');//删除
window.localStorage.clear('token');//删除
window.location.href = "/#/login";
return false;
}
// if (!data.code) {
// // console.error(data.message);
// // to 这里可以进一步处理错误
// return Promise.reject(data.message); // 抛出错误消息
// }
return response;
},
function (error) {
// 对响应错误做点什么
endLoading(); // 隐藏 Loading
return Promise.reject(error);
// return false;
}
);
/**
* 封装的请求基类方法
* @param url 地址
* @param method 请求类型
* @param headers 头部信息
* @param data 数据(post用)
* @param params 数据(get用)
* @param success 成功返回
* @param error 失败返回
* @constructor
*/
axios.Request = function ({ url, method = "GET", data = {}, params = {}, success, error }) {
let headers = '';
if (method == "GET" || method == "get") {
headers = 'Content-Type: application/json';
} else {
headers = 'Content-Type: application/x-www-form-urlencoded';
}
axios({
url: url,
headers: headers,
method: method,
data: data,
params: params,
}).then(res => {
typeof success === "function" && success(res.data);
}).catch(e => {
typeof error === "function" && error(e);
})
}
/**
* get封装请求
* @param url 地址
* @param data 数据
* @param success 成功返回
* @param error 失败返回
*/
axios.getRequest = function ({ url, data }, success, error) {
axios.Request({ url, method: "GET", params: data, success, error })
}
/**
* post请求
* @param url 地址
* @param data 数据
* @param success 成功返回
* @param error 失败返回
*/
axios.postRequest = function ({ url, data }, success, error) {
axios.Request({ url, method: "POST", data: data, success, error })
}
export default axios;
07-26
184
04-19
1719
12-11
8271
06-30
1115
05-01