结合vuex设置按钮权限

自定义一个permission指令,路径:src/plugins/permission.js

import store from '@/store';

const directives = {
  permission: {
    inserted(el,bindling){
      // bindling.value为指令的绑定值
      let perVal = bindling.value;
      if(bindling.value) {
        // 登录时获取该登录用户的按钮权限 pers
        // console.log(store.state.permissionList)
        let pers = store.state.permissionList;
        // hasPer为true为有权限 hasPer为false为无权限
        let hasPer = pers.some(item=>{
            return item == perVal
        });
        // 没有权限就隐藏此元素
        if(!hasPer){
            el.style.display="none"
        }
      }
    }
  }
}

// 注册的一般写法,循环遍历directives,通过vue.directive注册
export default {
  install(Vue) {
    Object.keys(directives).forEach(key=>{
      Vue.directive(key,directives[key])
    })
  }
}

main.js:


// 权限
import Permission from './plugins/permission';
Vue.use(Permission);

getPermissionsApi().then(response => {
    // 将权限存储到vuex里
    store.commit('setPermissionList', ['add', 'edit', 'delete'])
})

代码中使用指令:

<el-button v-permission="'add'">添加</el-button>
<el-button v-permission="'edit'">编辑</el-button>
<el-button v-permission="'delete'">删除</el-button>

如果接口返回该用户有权限,则会显示对应button。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值