按钮控制:vue,根据用户权限,控制按钮的显示和隐藏

1、登录成功后,后端返回的数据格式

{

    "code": 100,

    "msg": "登录成功",

    "role": 1,

    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNjQ2NzI3NDkzLCJlbWFpbCI6IiJ9.9cBPqkkTxXS2aAjwRadcWuQLc5wgHdAG_YeRc82hGz0",

    "data": {

        "username": "admin",

        "icon": "/media/icon/avatar09.jpg/",

        "get_position": "系统管理员",

        "role": 1

    },

    "right": [

        {

            "id": 1,

            "authName": "用户管理",

            "icon": "el-icon-user-solid",

            "children": [

                {

                    "id": 1,

                    "authName": "创建用户",

                    "path": "createuser",

                    "right": "add",

                    "component": "createuser"

                }

            ]

        },

        {

            "id": 2,

            "authName": "部门管理",

            "icon": "el-icon-user-solid",

            "children": [

                {

                    "id": 2,

                    "authName": "创建部门",

                    "path": "createpart",

                    "right": "add", //这里就是控制按钮的功能

                    "component": "createpart"

                }

            ]

        },

    ]

}

2、在main.js中,自定义指令permission

Vue.directive('permission', {
  inserted:function (el, binding) {
    //拿到el-button这个按钮标签
    //拿到v-permission自定义指令中{action:'add'}
    const action = binding.value.action		//action就拿到v-permission中的action对应的值.
    //判断,当前的路由所对应的组件中,如何判断用户是否具备action的权限,currentRoute拿到当前组件的路由规则
    console.log(router.currentRoute)
    console.log('ssssss')
    const currentRight = router.currentRoute.meta
    console.log(currentRight)
    let cur_list = [currentRight]
    console.log(cur_list)
    if (cur_list.indexOf(action) === -1) {
      //删除el元素
      el.parentNode.removeChild(el)
      //禁用元素
      // el.disabled = true
      // el.classList.add('is-disabled')
    }

  }

})

解释:cur_list.indexOf(action)
cur_list是用户在这个路由中能使用的权限
action:是在使用自定义指令时,传递的数据,如果cur_list有相应的权限,就显示,反之就删除掉。这样就看到不按钮了。

3、在组件中使用自定义指令

<button v-permission="{action:'delete'}">测试</button>
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值