vue自定义权限指令的实现

 更新时间:2024年05月15日 10:37:25   作者:​​​​​​​ 枫沂  
本文主要介绍了vue自定义权限指令的实现

定义v-hasPermi指令

 /**
 * v-hasPermi 操作权限处理
 */
 
import useUserStore from '@/store/modules/user'

export default {
  mounted(el, binding, vnode) {
    const { value } = binding
    const all_permission = "*:*:*";
    const permissions = useUserStore().permissions;
    //permission为数组,在系统登录后获取保存至vueX中

    if (value && value instanceof Array && value.length > 0) {
      const permissionFlag = value

      const hasPermissions = permissions.some(permission => {
        return all_permission === permission || permissionFlag.includes(permission)
      })

      if (!hasPermissions) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      throw new Error(`请设置操作权限标签值`)
    }
  }
}

接口返回的permissions的格式

permissions: [
        "plan:planadd:add",
        "plan:planadd:edit",
        "performance:plan:add",
        "performance:plan:edit",
        "system:role:submit",
        "performance:plan:list",
        ]

注册指令

在index.js文件中

在这里插入图片描述

import hasPermi from './permission/hasPermi'

export default function directive(app){
  app.directive('hasPermi', hasPermi)
}

挂载安装指令

/*
* main.js文件
*/
import { createApp } from 'vue'
import directive from './directive' // directive

const app = createApp(App)
directive(app)

在项目中使用

 <el-button
              type="primary"
              @click="addTable(scope)"
              :disabled="btnDis"
              v-hasPermi="['deptManage:yearDispatch:add']"
              >添加</el-button
            >

到此这篇关于vue自定义权限指令的实现的文章就介绍到这了,更多相关vue自定义权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 总结4个方面优化Vue项目

    总结4个方面优化Vue项目

    在本篇文章里我们给大家整理了一篇关于优化VUE项目的四个总要点,对此有需要的朋友们学习下天。
    2019-02-02
  • vue踩坑记录:属性报undefined错误问题

    vue踩坑记录:属性报undefined错误问题

    这篇文章主要介绍了vue踩坑记录:属性报undefined错误问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • axios向后台传递数组作为参数的方法

    axios向后台传递数组作为参数的方法

    今天小编就为大家分享一篇axios向后台传递数组作为参数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Vue实现多点涂鸦效果的示例代码

    Vue实现多点涂鸦效果的示例代码

    这篇文章主要为大家详细介绍了如何利用Vue实现多点涂鸦效果,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • vue插件实现v-model功能

    vue插件实现v-model功能

    最近在开发自己的富文本编辑器插件,在开发中遇到了很多问题其中我觉得比较好的问题就是在你定义的插件中实现双向绑定。这篇文章主要介绍了vue插件实现v-model功能,需要的朋友可以参考下
    2018-09-09
  • vue动态循环出的多个select出现过的变为disabled(实例代码)

    vue动态循环出的多个select出现过的变为disabled(实例代码)

    本文通过实例代码给大家分享了vue动态循环出的多个select出现过的变为disabled效果,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-11-11
  • 解决node-sass安装报错无python等情况

    解决node-sass安装报错无python等情况

    在国内安装node-sass常因无法稳定连接GitHub而失败,解决方法包括手动下载对应的binding.node文件并放入缓存目录,操作步骤详细,适合非Python用户,无需额外环境配置
    2024-10-10
  • Vue项目安装less和less-loader的详细步骤

    Vue项目安装less和less-loader的详细步骤

    这篇文章主要介绍了Vue项目安装less和less-loader的详细步骤,本文分步骤结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • vue-cli点击实现全屏功能

    vue-cli点击实现全屏功能

    这篇文章主要为大家详细介绍了vue-cli点击实现全屏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • vue实现提示保存后退出的方法

    vue实现提示保存后退出的方法

    下面小编就为大家分享一篇vue实现提示保存后退出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03

最新评论