Skip to content
Snippets Groups Projects
Commit 222c9c07 authored by Pan's avatar Pan
Browse files

add tips

parent b8068a48
No related branches found
No related tags found
No related merge requests found
...@@ -20,8 +20,9 @@ import 'vue-multiselect/dist/vue-multiselect.min.css'; ...@@ -20,8 +20,9 @@ import 'vue-multiselect/dist/vue-multiselect.min.css';
import vueWaves from './directive/waves'; import vueWaves from './directive/waves';
import vueSticky from './directive/sticky'; import vueSticky from './directive/sticky';
import errLog from 'store/errLog'; import errLog from 'store/errLog';
import './mock/index.js'; // 使用api请求时请将此行注释,不然将被mock拦截 import './mock/index.js'; // 使用api请求时请将此行注释,不然将被mock拦截!!
// import './styles/mixin.scss'; // import './styles/mixin.scss';
import permission from 'store/permission';
// register globally // register globally
Vue.component('multiselect', Multiselect); Vue.component('multiselect', Multiselect);
...@@ -36,40 +37,58 @@ Object.keys(filters).forEach(key => { ...@@ -36,40 +37,58 @@ Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key]) Vue.filter(key, filters[key])
}); });
// permissiom judge
function hasPermission(roles, permissionRoles) { function hasPermission(roles, permissionRoles) {
if (roles.indexOf('admin') >= 0) return true; if (roles.indexOf('admin') >= 0) return true; // admin权限 直接通过
return roles.some(role => permissionRoles.indexOf(role) >= 0) return roles.some(role => permissionRoles.indexOf(role) >= 0)
} }
// register global progress. // register global progress.
const whiteList = ['/login', '/authredirect', '/reset', '/sendpwd'];// 不重定向白名单 const whiteList = ['/login', '/authredirect', '/reset', '/sendpwd'];// 不重定向白名单
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start(); NProgress.start(); // 开启Progress
if (store.getters.token) { if (store.getters.token) { // 判断是否有token
if (to.path === '/login') { if (to.path === '/login') {
next({ path: '/' }); next({ path: '/' });
} else { } else {
if (to.meta && to.meta.role && store.getters.uid) { if (to.meta && to.meta.role) { // 判断即将进入的页面是否需要权限
if (hasPermission(store.getters.roles, to.meta.role)) { if (store.getters.uid) { // 判断当前用户是否已拉去玩info信息
next(); if (hasPermission(store.getters.roles, to.meta.role)) { // 判断权限
} else { next(); // 有权限
next('/401'); } else {
next('/401'); // 无权限
}
} else { // 未拉去info信息
store.dispatch('GetInfo').then(() => { // 拉取info
permission.init({ // 初始化权限
roles: store.getters.roles,
router: router.options.routes
});
if (hasPermission(store.getters.roles, to.meta.role)) { // 判断权限
next();// 有权限
} else {
next('/401');// 无权限
}
}).catch(err => {
console.log(err);
});
} }
} else { } else { // 页面不需要权限 直接进入
next(); next();
} }
} }
} else { } else {
if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) { // 在免登入白名单,直接进入
next() next()
} else { } else {
next('/login'); next('/login'); // 否则全部重定向到登录页
NProgress.done(); // 在hash模式下 改变手动改变hash 不会触发afterEach 暂时hack方案 ps:history模式下无问题,可删除该行! NProgress.done(); // 在hash模式下 改变手动改变hash 重定向回来 不会触发afterEach 暂时hack方案 ps:history模式下无问题,可删除该行!
} }
} }
}); });
router.afterEach(() => { router.afterEach(() => {
NProgress.done(); NProgress.done(); // 结束Progress
}); });
// window.onunhandledrejection = e => { // window.onunhandledrejection = e => {
......
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
import store from 'store'; import store from 'store';
import router from 'router'; import router from 'router';
import permission from 'store/permission'; import permission from 'store/permission';
// import { Loading } from 'element-ui';
// let loadingInstance;
export default { export default {
name: 'layout', name: 'layout',
components: { components: {
...@@ -35,17 +33,13 @@ ...@@ -35,17 +33,13 @@
next(); next();
return return
} }
// loadingInstance = Loading.service({ fullscreen: true, text: '玩命加载中' });
store.dispatch('GetInfo').then(() => { store.dispatch('GetInfo').then(() => {
permission.init({ permission.init({
roles: store.getters.roles, roles: store.getters.roles,
router: router.options.routes router: router.options.routes
}); });
// loadingInstance.close();
next(); next();
}).catch(err => { }).catch(err => {
// loadingInstance.close();
console.log(err); console.log(err);
}); });
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment