vue项目使用自定义指令实现按钮级权限管理

在后台管理项目上经常要求权限控制到按钮级,既如果当前登录用户没有新建、编辑、删除等权限就无法看到对应的功能按钮,这种需求可以使用vue的自定义指令实现

首先针对自定义指令进行封装

在util文件夹内新建permission.js

import Vue from 'vue'
import store from '../index'

// 定义自定义指令
const has = Vue.directive('has', {
  bind: function (el, binding, vnode) {
    if (!Vue.prototype.$_has(binding.value)) {
      let className = el.getAttribute('class')
      if (className) {
        className = className.concat(' hiddenHandle')
      } else {
        className = 'hiddenHandle'
      }
      el.setAttribute('class', className)
    }
  }
})

// 定义用户权限检查方法
Vue.prototype.$_has = function (value) {
  let isExist = true
  const arrPermission = value.split(',')
  // 从vuex中获取用户的具体权限列表
  const PermissionsStr = store.getters.roles.permissionList
  if (PermissionsStr === undefined || PermissionsStr == null) {
    return false
  }
  arrPermission.forEach(item => {
    if (PermissionsStr.indexOf(item) === -1) {
      isExist = false
    }
  })
  return isExist
}
export default has

在main.js中引入,保证可以全局使用

import has from './util/permission'

Vue.use(has)

在全局样式中定义hiddenHandle为吟唱

.hiddenHandle{
  display: none !important;
}

在页面中的使用

<a-button v-has="'sys_role_add'" type="primary" icon="plus" @click="add">新建</a-button>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值