diff --git a/src/plugins/authority-plugin.js b/src/plugins/authority-plugin.js index 860b1d5..7c40aad 100644 --- a/src/plugins/authority-plugin.js +++ b/src/plugins/authority-plugin.js @@ -42,33 +42,33 @@ const auth = function(authConfig, permission, role, permissions, roles) { return false } -/** - * 阻止的 click 事件监听 - * @param event - * @returns {boolean} - */ -const preventClick = function (event) { - event.preventDefault() - event.stopPropagation() - return false -} - const checkInject = function (el, binding,vnode) { const type = binding.arg const check = binding.value const instance = vnode.context const $auth = instance.$auth if (!$auth || !$auth(check, type)) { - el.classList.add('disabled') - el.setAttribute('title', '无此权限') - el.addEventListener('click', preventClick, true) + addDisabled(el) } else { - el.classList.remove('disabled') - el.removeAttribute('title') - el.removeEventListener('click', preventClick, true) + removeDisabled(el) } } +const addDisabled = function (el) { + if (el.tagName === 'BUTTON') { + el.setAttribute('disabled', 'disabled') + } else { + el.classList.add('disabled') + } + el.setAttribute('title', '无此权限') +} + +const removeDisabled = function (el) { + el.classList.remove('disabled') + el.removeAttribute('disabled') + el.removeAttribute('title') +} + const AuthorityPlugin = { install(Vue) { Vue.directive('auth', { @@ -77,6 +77,9 @@ const AuthorityPlugin = { }, update(el, binding,vnode) { checkInject(el, binding, vnode) + }, + unbind(el) { + removeDisabled(el) } }) Vue.mixin({ diff --git a/src/utils/routerUtil.js b/src/utils/routerUtil.js index 795f0cc..0a88cfb 100644 --- a/src/utils/routerUtil.js +++ b/src/utils/routerUtil.js @@ -36,6 +36,9 @@ function parseRoutes(routesConfig, routerMap) { page: routeCfg.page || router.page } } + if (routeCfg.invisible || router.invisible) { + route.meta.invisible = true + } if (routeCfg.children && routeCfg.children.length > 0) { route.children = parseRoutes(routeCfg.children, routerMap) }