Commit 9eff5a70 authored by smallwei's avatar smallwei

增加axios防止重复请求

parent 8b2e43fe
export default {
'000': '操作太频繁,请勿重复请求',
'401': '当前操作没有权限',
'403': '当前操作没有权限',
'404': '资源不存在',
......
......@@ -57,6 +57,7 @@ RouterPlugin.install = function(router, store) {
},
//动态路由
formatRoutes: function(aMenu, first) {
if (!aMenu) return;
const aRouter = []
const propsConfig = this.$website.menu.props;
const propsDefault = {
......@@ -71,48 +72,48 @@ RouterPlugin.install = function(router, store) {
name = oMenu[propsDefault.label],
icon = oMenu[propsDefault.icon],
children = oMenu[propsDefault.children];
if (component) {
const isChild = children.length !== 0;
const oRouter = {
path: path,
component(resolve) {
// 判断是否为首路由
if (first) {
require(['../page/index'], resolve)
return
// 判断是否为多层路由
} else if (isChild && !first) {
require(['../page/index/layout'], resolve)
return
// 判断是否为最终的页面视图
} else {
require([`../${component}.vue`], resolve)
}
},
name: name,
icon: icon,
redirect: (() => {
if (!isChild && first) return `${path}/index`
else return '';
})(),
// 处理是否为一级路由
children: !isChild ? (() => {
if (first) {
oMenu[propsDefault.path] = `${path}/index`;
return [{
component(resolve) { require([`../${component}.vue`], resolve) },
icon: icon,
name: name,
path: 'index'
}]
}
return [];
})() : (() => {
return this.formatRoutes(children, false)
})()
}
aRouter.push(oRouter)
const isChild = children.length !== 0;
const oRouter = {
path: path,
component(resolve) {
// 判断是否为首路由
if (first) {
require(['../page/index'], resolve)
return
// 判断是否为多层路由
} else if (isChild && !first) {
require(['../page/index/layout'], resolve)
return
// 判断是否为最终的页面视图
} else {
require([`../${component}.vue`], resolve)
}
},
name: name,
icon: icon,
redirect: (() => {
if (!isChild && first) return `${path}/index`
else return '';
})(),
// 处理是否为一级路由
children: !isChild ? (() => {
if (first) {
oMenu[propsDefault.path] = `${path}/index`;
return [{
component(resolve) { require([`../${component}.vue`], resolve) },
icon: icon,
name: name,
path: 'index'
}]
}
return [];
})() : (() => {
return this.formatRoutes(children, false)
})()
}
aRouter.push(oRouter)
})
return aRouter
}
......
......@@ -20,15 +20,22 @@ axios.defaults.timeout = 30000;
//跨域请求,允许保存cookie
axios.defaults.withCredentials = true;
NProgress.configure({ showSpinner: false }) // NProgress Configuration
//HTTPrequest拦截
const requestMap = new Map();
//HTTPrequest拦截
axios.interceptors.request.use(config => {
const keyString = JSON.stringify(Object.assign({}, { url: config.url, method: config.method }, config.data));
if (requestMap.get(keyString)) {
return Promise.reject('code:000')
}
requestMap.set(keyString, true);
config = Object.assign(config, { _keyString: keyString });
NProgress.start() // start progress bar
if (store.getters.access_token) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
}
if (sessionStorage.getItem('tenantId')){
config.headers['TENANT_ID'] = sessionStorage.getItem('tenantId') // 租户ID
if (sessionStorage.getItem('tenantId')) {
config.headers['TENANT_ID'] = sessionStorage.getItem('tenantId') // 租户ID
}
return config
}, error => {
......@@ -36,9 +43,12 @@ axios.interceptors.request.use(config => {
return Promise.reject(error)
})
//HTTPresponse拦截
axios.interceptors.response.use(data => {
axios.interceptors.response.use(res => {
NProgress.done();
return data
// 重置requestMap
const config = Object.assign(res.config);
requestMap.set(config._keyString, false);
return res
}, error => {
NProgress.done()
let errMsg = error.toString()
......@@ -47,7 +57,7 @@ axios.interceptors.response.use(data => {
message: errorCode[code] || errorCode['default'],
type: 'error'
})
if(parseInt(code) === 401 || parseInt(code) === 403){
if (parseInt(code) === 401 || parseInt(code) === 403) {
store.dispatch('FedLogOut').then(() => {
router.push({ path: '/login' });
})
......@@ -56,4 +66,4 @@ axios.interceptors.response.use(data => {
})
export default axios
export default axios
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment