/*
* axios定义
* */
import Vue from 'vue';
import axios from 'axios';
import ElementUI from 'element-ui';
import store from '@/store/index.js';
import { getCookie, setCookie } from '@/utils/util.js';
import { ajaxCtx, ajaxCtx2, ajaxCtx0 } from '@/config/config.js';
// import { ajaxCtx, ajaxCtx2, ajaxCtx0 } from '../../static/js/config.js';
// 平台拦截处理
import { apiIsPassProject, requestConfig, responseConfig, APIPro } from './axiosPass.js';
// axios支持跨域cookie
axios.defaults.withCredentials = true;
// axios添加一个请求拦截器
axios.interceptors.request.use((config) => {
// console.log('nb', config.url)
// console.log('hz', new Date().getTime())
// var returnFlag = false;
// let allPrivilege = window.localStorage.getItem('allPrivilege') ? JSON.parse(window.localStorage.getItem('allPrivilege')) : [];
// let ownPrivilege = window.localStorage.getItem('ownPrivilege') && window.localStorage.getItem('ownPrivilege') !== 'undefined' ? JSON.parse(window.localStorage.getItem('ownPrivilege')) : [];
// let menuID = '';
// if (allPrivilege != null && allPrivilege.length !== 0) {
// var tempArr = allPrivilege.filter(function (x) {
// var setStratIndex = config.url.indexOf('pass') === -1 ? 0 : config.url.indexOf('pass') + 4;
// var setEndIndex = config.url.indexOf('?') === -1 ? config.url.length : config.url.indexOf('?');
// var a = config.url.substring(setStratIndex, setEndIndex);
// // console.log('a', a);
// // console.log('x.menuUrl', x.menuUrl);
// // 判断当前菜单ID是否等于接口所在的菜单id
// if (x.menuUrl && x.menuUrl.indexOf(a) !== -1) {
// menuID = x.pId
// }
// return x.menuUrl ? x.menuUrl.indexOf(a) !== -1 : false;
// });
// if (tempArr.length > 0) {
// var setArr = ownPrivilege.filter(function (x) {
// var setStratIndex = config.url.indexOf('pass') === -1 ? 0 : config.url.indexOf('pass') + 4;
// var setEndIndex = config.url.indexOf('?') === -1 ? config.url.length : config.url.indexOf('?');
// var a = config.url.substring(setStratIndex, setEndIndex);
// return x.menuUrl ? x.menuUrl.indexOf(a) !== -1 : false;
// });
// if (setArr.length === 0) {
// returnFlag = menuID === window.localStorage.getItem('activeMenuId');
// }
// }
// }
// if (returnFlag) {
// console.log('这个接口叫' + config.url)
// if (config.method === 'get') {
// config.method = 'post'
// }
// config.url = '';
// return config;
// }
// 判断是否平台接口
if (config.url.indexOf('configCenter') === 0) {
config.url = 'pass/' + config.url
}
config = requestConfig(config);
return config;
}, (error) => {
return Promise.reject(error);
});
// axios添加一个响应拦截器
axios.interceptors.response.use(function (response) {
// 判断是否是平台接口
// if (response.config.url === '') {
// response.status = '405'
// }
if (apiIsPassProject(response.config.url, APIPro)) {
// 是平台接口
// 处理配置
response = responseConfig(response);
} else {
// 不是
let flag = false, msg = '';
if (response && response.data) {
if (response.data.success === false) {
flag = true;
msg = response.data.message;
}
let resCode = response.data.state;
if (resCode === -1 || resCode === '-1') {
flag = true;
msg = response.data.message;
} else if (resCode === 500 || resCode === '500') {
flag = true;
msg = response.data.msgInfo ? response.data.msgInfo : response.data.errorInfo;
} else if (resCode === 300 || resCode === '300') {
// 后台session失效
flag = true;
msg = '登录已过期,请重新登录';
window.top.location.href = store.getters.ctx;
// window.location.href = this.$store.state.ctx + '/views/index.html';
// window.location.href = './index.html';
}
}
if (flag) {
if (msg) { ElementUI.Message({ message: msg, type: 'error', dangerouslyUseHTMLString: true }); }
return null;
}
}
return response;
}, function (error) {
let errorMsg = '操作失败
' +
'请刷新页面重新操作,如果问题依旧存在,请联系管理员';
if ((error.response.data.exception && error.response.data.exception.indexOf('ShiroJwtException') >= 0) || (error.response.data.message && (error.response.data.message.indexOf('Token') >= 0))) {
ElementUI.Message({
message: '登录失效,请重新登录',
dangerouslyUseHTMLString: true,
type: 'error'
});
setTimeout(() => {
window.top.location.href = store.getters.ctx;
setCookie('accessToken', '', -1, '/');
setCookie('refreshToken', '', -1, '/');
setCookie('workDate', '', -1);
setCookie('ticket', '', -1, '/');
}, 500)
return
}
if (error && error.response && error.response.data) {
let errorData;
if (typeof error.response.data === 'string') {
errorData = error.response.data.substring(0, error.response.data.length - 2);
try {
errorData = JSON.parse(errorData);
let index = errorData.message.indexOf(':') + 1
if (errorData.message) { errorMsg = errorData.message.substring(index); }
} catch (err) {
errorData = {
message: error.response.data,
code: error.response.status
}
}
} else {
errorData = error.response.data
if (errorData.message) { errorMsg = errorData.message; }
}
let mCode = errorData.code;
// data.error
if (errorData.error) {
if (errorData.error.message) { errorMsg = errorData.error.message; }
mCode = errorData.error.code;
}
if (mCode === '-99' || mCode === -99) {
errorMsg = '登录已过期,请重新登录';
window.top.location.href = store.getters.ctx;
// window.location.href = './index.html';
} else if (mCode === '405' || mCode === 405) {
errorMsg = '无权限访问,请联系系统管理员';
}
// console.log('执行2', errorData.message, errorMsg)
}
// 提示
ElementUI.Message({
message: errorMsg,
dangerouslyUseHTMLString: true,
type: 'error'
});
return Promise.reject(error);
});
Vue.prototype.axios = axios;
export default axios;