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自定义权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • vue2中如何使用swiper@5.4.5

    vue2中如何使用swiper@5.4.5

    这篇文章主要介绍了vue2中如何使用swiper@5.4.5问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 策略模式实现 Vue 动态表单验证的方法

    策略模式实现 Vue 动态表单验证的方法

    策略模式(Strategy Pattern)又称政策模式,其定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。封装的策略算法一般是独立的,策略模式根据输入来调整采用哪个算法。这篇文章主要介绍了策略模式实现 Vue 动态表单验证,需要的朋友可以参考下
    2019-09-09
  • 使用typescript构建Vue应用的实现

    使用typescript构建Vue应用的实现

    这篇文章主要介绍了使用typescript构建Vue应用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Vue打包为相对路径的具体实现方法

    Vue打包为相对路径的具体实现方法

    在Vue.js项目中,构建后的资源文件(如CSS、JavaScript文件、图片等)通常会被放置在指定的目录下,为了确保这些文件能够被正确加载,Vue CLI 提供了配置选项来指定这些文件的路径,本文给大家介绍了Vue打包为相对路径的具体实现方法,需要的朋友可以参考下
    2024-09-09
  • Vue.js构建你的第一个包并在NPM上发布的方法步骤

    Vue.js构建你的第一个包并在NPM上发布的方法步骤

    这篇文章主要介绍了Vue.js构建你的第一个包并在NPM上发布的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • vue顶部菜单栏实现小结

    vue顶部菜单栏实现小结

    这篇文章主要介绍了vue顶部菜单栏实现小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • vue-cli脚手架打包静态资源请求出错的原因与解决

    vue-cli脚手架打包静态资源请求出错的原因与解决

    这篇文章主要给大家介绍了关于vue-cli脚手架打包静态资源请求出错的原因与解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用vue-cli具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Vue非父子组件通信详解

    Vue非父子组件通信详解

    这篇文章主要为大家详细介绍了Vue非父子组件通信的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 如何利用vite快速搭建vue3项目

    如何利用vite快速搭建vue3项目

    这篇文章主要介绍了如何利用vite快速搭建vue3项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Elementui表格组件+sortablejs实现行拖拽排序的示例代码

    Elementui表格组件+sortablejs实现行拖拽排序的示例代码

    这篇文章主要介绍了Elementui表格组件+sortablejs实现行拖拽排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论