import store from '@/store' /** * 判断是否允许访问该DOM * @param {*} permission 权限 * @param {*} user 当前用户实例 * @param {*} permissions 当前管理员所在分组权限集 */ function isAllowed(permission, user, permissions) { if (user.admin) return true if (typeof permission === 'string') { return permissions.includes(permission) } if (permission instanceof Array) { return permission.some(auth => permissions.indexOf(auth) >= 0) } return false } export default { beforeMount(el, binding) { let type let permission const element = el if (Object.prototype.toString.call(binding.value) === '[object Object]') { ;({ permission } = binding.value); ({ type } = binding.value) } else { permission = binding.value } const isAllow = isAllowed(permission, store.state.user || {}, store.state.permissions) if (!isAllow && permission) { if (type) { element.disabled = true element.style.opacity = 0.4 element.style.cursor = 'not-allowed' } else { element.style.display = 'none' } } }, }