import axios from 'axios';
import qs from 'qs';
import { VALID_LOGIN } from '../config/url'
import context from '../main.js'
import router from '../router'
axios.defaults.timeout = 20000;
axios.defaults.baseURL = '';
axios.defaults.withCredentials = true;
//http request 拦截器
// axios.interceptors.request.use(
// config => {
// // const token = getCookie('名称');注意使用的时候需要引入cookie方法,推荐js-cookie
// // config.data = JSON.stringify(config.data);
// // config.data = qs.stringify(config.data)
// config.headers = {
// // "Content-Type":"application/json;charset=utf-8",
// "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
// // }
// // if(token){
// // config.params = {'token':token}
// }
// return config;
// },
// error => {
// return Promise.reject(err);
// }
// );
let errorFlags = true;
//http response 拦截器
axios.interceptors.response.use(
response => {
// if(response.data.errCode == 2){
// router.push({
// path:"/login",
// querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
// })
// }
return response;
},
error => {
let status = error.response.status
if (status == 403 || status == 401) {
if (errorFlag) {
post(VALID_LOGIN)
.then(data => {
if (data.status == 1 || data.status == '1') {
context.$message({
type: 'info',
message: '您没有当前菜单的访问权限,请联系管理员!'
});
} else if (data.status == -1 || data.status == '-1') {
context.$message({
type: 'error',
message: '您已掉线,请先登录!'
});
localStorage.clear();
setTimeout(function () {
selectPlate()
router.push('/login')
}, 2000);
}
})
.catch(err => {
console.log(err)
context.$message({
type: 'error',
message: err.response.data.msg
});
})
errorFlags = false
}
}
return Promise.reject(error)
}
)
var errorFlag = true;
//没有权限时返回登陆页面
$(document).ajaxComplete(function (evt, req, settings) {
if (null != req && req != '' && req != undefined) {
if (req.status == 403 || req.status == 401) {
if (errorFlag = true) {
post(VALID_LOGIN)
.then(data => {
if (data.status == 1 || data.status == '1') {
context.$message({
type: 'info',
message: '您没有当前菜单的访问权限,请联系管理员!'
});
} else if (data.status == -1 || data.status == '-1') {
context.$message({
type: 'error',
message: '您已掉线,请先登录!'
});
localStorage.clear();
setTimeout(function () {
selectPlate()
router.push('/login')
}, 2000);
}
})
.catch(err => {
console.log(err)
context.$message({
type: 'error',
message: err.response.data.msg
});
})
errorFlag = false;
} else { }
}
}
});
//退出到首页
function selectPlate() {
let a = document.createElement('a')
a.href = location.protocol + '//' + location.host
// a.click()
window.location.href = location.protocol + '//' + location.host;
const dom = window.parent.document.getElementsByClassName("menuContainer");
const dom1 = window.parent.document.getElementsByClassName("topContainer");
const dom2 = window.parent.document.getElementsByClassName("tabsBox");
$(dom).css("display", "none");
$(dom1).css("display", "none");
$(dom2).css("display", "none");
}
/**
* 封装get方法
* @param url
* @param data
* @returns {Promise}
*/
export function fetch(url, params = {}) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
reject(err)
})
})
}
/**
* 封装post请求
* @param url
* @param data
* @returns {Promise}
*/
export function post(url, data = {}) {
return new Promise((resolve, reject) => {
axios.post(url,
qs.stringify(data), {
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
}
}
)
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}
/**
* 同步
* @param {}} url
* @param {*} data
*/
export async function $postSync(url, data = {}) {
try {
let res = await axios.post(url, qs.stringify(data), {
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
}
});
console.log('$postAsync 服务端返回的结果是', res);
return Promise.resolve(res);
} catch (err) {
console.log('异常', err)
}
}
export async function $getSync(url, data = {}) {
try {
let res = await axios.get(url, {
params: data
});
console.log('$getAsync 服务端返回的结果是', res);
return Promise.resolve(res);
} catch (err) {
console.log('异常', err)
}
}
/**
* 封装post请求 json格式
* @param url
* @param data
* @returns {Promise}
*/
export function postjson(url, data = {}) {
return new Promise((resolve, reject) => {
axios.post(url, JSON.stringify(data), {
headers: {
"Content-Type": "application/json;charset=utf-8"
}
})
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}
/**
* 封装patch请求
* @param url
* @param data
* @returns {Promise}
*/
export function patch(url, data = {}) {
return new Promise((resolve, reject) => {
axios.patch(url, data)
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}
/**
* 封装put请求
* @param url
* @param data
* @returns {Promise}
*/
export function put(url, data = {}) {
return new Promise((resolve, reject) => {
axios.put(url, data)
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}
// 韩新玉
// 封装postToken请求
export function postToken(url, data = {}) {
let token = document.cookie.split('=')[1]
return new Promise((resolve, reject) => {
axios.post(url, qs.stringify(data),{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
'TowattToken': token
}
})
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}
// 封装postTokenJson请求
export function postTokenJson(url, data = {}) {
let token = document.cookie.split('=')[1]
return new Promise((resolve, reject) => {
axios.post(url, JSON.stringify(data),{
headers: {
"Content-Type": "application/json;charset=utf-8",
'TowattToken': token
}
})
.then(response => {
resolve(response.data);
}, err => {
reject(err)
})
})
}