import router, {
|
resetRouter
|
} from './router'
|
import store from './store/'
|
import {
|
Message,
|
Loading
|
} from 'element-ui'
|
import NProgress from 'nprogress' // progress bar
|
import 'nprogress/nprogress.css' // progress bar style
|
import {
|
getCookie,
|
setCookie,
|
delCookie,
|
setSessionStorage,
|
getSessionStorage
|
} from '@/utils/base'
|
|
NProgress.configure({
|
showSpinner: false
|
})
|
const whiteList = ['/login', '/test', '/fonticon'];
|
|
// 在每个路由生效之前,先进行一些处理,请参考 vue-router官方文档-导航钩子
|
router.beforeEach(async (to, from, next) => {
|
const isLogin = getCookie('isLogin');
|
if (to.meta.title) {
|
let title='';
|
let shop_name=getCookie('shop_name');
|
if(shop_name&&typeof(shop_name)!='undefined'){
|
document.title = to.meta.title + '-'+shop_name;
|
}else{
|
document.title = to.meta.title + '-商城管理系统';
|
}
|
|
}
|
//判断是否登录
|
if (isLogin) {
|
NProgress.start();
|
let hasRoles = store.state.user.roles && store.state.user.roles.length > 0;
|
if (hasRoles) {
|
next();
|
NProgress.done();
|
} else {
|
try {
|
//参数暂时无效
|
const roles = Math.random();
|
const accessRoutes = await store.dispatch('user/generateRoutes', roles);
|
resetRouter();
|
router.addRoutes(accessRoutes);
|
next({ ...to,
|
replace: true
|
});
|
} catch (error) {
|
next('/login');
|
}
|
NProgress.done();
|
}
|
|
} else {
|
if (whiteList.indexOf(to.path.toLowerCase()) !== -1) {
|
next();
|
NProgress.done();
|
} else {
|
next('/login');
|
}
|
}
|
})
|
|
/*注册一个全局守卫*/
|
router.beforeResolve((to, from, next) => {
|
next();
|
})
|
|
/*全局后置钩子*/
|
router.afterEach(() => {
|
// finish progress bar
|
NProgress.done()
|
})
|