import axios from ‘axios’
import store from ‘@/vuex’
import {generateUUID} from ‘@/utils/uuIdUtils’
import {Encrypt,Decrypt} from ‘@/utils/cryptoUtils’
import { Message } from ‘element-ui’
export default api
export const esopUrl = “http://xxxx”
var thisTime=new Date();
axios.interceptors.request.use(config => { //请求拦截,所有请求都先经过组装处理
let requestMsg={
header:{
timestamp:formatDate(thisTime,“yyyyMMddhhmmss”),
messageId:generateUUID(),
access_token:’’
},
content:{ }
};
config.timeout=10000
config.baseURL=remoteUrl//后台环境地址
var xtoken=store.getters.access_token
if(typeof(xtoken)!‘undefined’&&xtoken!’’){
config.headers[‘access_token’] = xtoken
requestMsg.header.access_token=xtoken
}
if(typeof(config.data)=‘undefined’||config.datanull){
config.data = {}
}
//console.log(“请求报文:”,config.url,"/",config.data)
if(config.method==‘post’&&config.url.indexOf(‘upload’)<0){//fileops
requestMsg.content= Encrypt(JSON.stringify(config.data));//对post请求进行加密
config.data=requestMsg;
}else if(config.method==‘get’){
requestMsg.content={
…config.params
};
config.params =requestMsg
}
if(config.method==‘post’&&(config.url.indexOf(‘download’)>=0||config.url.indexOf(‘getexcel’)>=0)){
config.responseType=‘blob’
config.timeout=60000
}
if(config.url.indexOf(‘upload’)>0){
config.timeout=60000
}
return config
},function(error){
Message.error(‘抱歉,系统出了点问题’)
return Promise.reject(error)
}
)
axios.interceptors.response.use(response=> {//响应拦截,所有相应都先经过拆分处理
let responseMsg = {
header: {
resDesc: ‘’,
resCode: ‘’
},
content: {}
}
let responseUrl=response.config.url
responseMsg = response.data;
if(responseUrl.indexOf(‘download’)>=0||responseUrl.indexOf(‘getexcel’)>=0){
return response;
}
if (responseMsg.header.resCode == 200) {
response.data = JSON.parse(Decrypt(responseMsg.content))
} else if (responseMsg.header.resCode == 401||responseMsg.header.resCode == 40101) {
Message.error(‘登录超时或无权限,请重新登录’)
setTimeout(() => {
sessionStorage.clear()
window.location.href = esopUrl
}, 3000);
} else{
Message.error(responseMsg.header.resDesc)
}
//console.log(“返回报文:”,responseUrl,"/", response.data)
return response;
}, function (error) {
// 对响应错误做点什么
console.log(“错”,error.response)
if(error.response){
let errorCode=error.response.status
switch(errorCode) {
case 401:
Message.error(‘登录超时或无权限,请重新登录’)
setTimeout(() => {
sessionStorage.clear()
window.location.href = esopUrl
}, 3000);
break;
default:
Message.error(‘抱歉,系统出了点问题’)
}
}
//router.replace({path: ‘/500’})
return Promise.reject(error);
});