【vue】按钮权限的实现

这篇具有很好参考价值的文章主要介绍了【vue】按钮权限的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

普通按钮或者组件按钮,都可。


问题描述

判断用户是否拥有新增、编辑、删除、查询等功能的按钮权限。


具体操作:

  • 先获取权限集合,存储到vxe中------一般都是在接口里面获取
  • 创建js页面,封装函数
  • 创建子组件页面,封装button组件
  • 再到所需的父组件页面引用子组件页面

实现:

  1. 举个例子:在首页中拿个函数,把权限存储到vxe中

initData(){
	let arr = [
		"dept:shareDept:add",
		"dept:shareDept:edit"
	]
	store.commit("setPerms",arr)
}

      2. 在src目录下创建个目录[permission],再创个index.js文件

/*
  * index.js
*/

import store from '@/store'
 
 export function hasPermission(perms){
	 let hasPermission = false; //决定按钮的禁用启用
	 let permissions = store.state.index.perms; //某某js页面的变量,此变量包含所有权限集合
	 for (let i = 0, len = permissions.length; i < len; i++) {
			if(permissions[i]===perms){ //permissions是否含有所传来的perms
				hasPermission = true; //启用
				break;
			}
	 }
	 return hasPermission
 }
//vxe页面
export default{
	state: {
		perms:[]
	},
	getters: {
		
	},
	mutations: {
		setPerms(state,perms){
			state.perms = perms
			console.log(state.perms);
		}
	},
	actions: {
	},
	modules: {
	}
}

      3.在components创建KtButton页面,用来封装按钮组件

<!-- KtButton页面 -->
<template>
	<el-button 
		:size="size"
		:type="type"
		:plain="plain"
		:round="round"
		:icon="icon"
		:loading="loading"
		:disabled="!hasPerms(perms)"
		@click="handleClick"
	>
	{{label}}
	</el-button>
</template>

<script>
	import {hasPermission} from "@/permission/index.js"
	export default{
		name:"KtButton",
		props:{
			label:{     //按钮显示文本
				type:String,
				default:""
			},
			size:{      //按钮尺寸
				type:String,
				default:"mini"
			},
			type:{      //按钮类型
				type:String,
				default:null
			},
			plain:{      //按钮镂空
				type:Boolean,
				default:false
			},
			round:{      //按钮圆角
				type:Boolean,
				default:false
			},
			icon:{      //按钮图标
				type:String,
				default:""
			},
			loading:{      //按钮加载状态
				type:Boolean,
				default:false
			},
			perms:{        //按钮权限标识,外部使用者传入
				type:String,
				default:null
			},
			disabled:{     //按钮是否禁用
				type:Boolean,
				default:false
			}
		},
		data(){
			return{}
		},
		methods:{
            //按钮事件
			handleClick(){
				this.$emit("click",{})
			},
            //是否禁用的函数
			hasPerms(perms){
				console.log(perms);
				return hasPermission(perms) & !this.$props.disabled
			}
		}
	}
</script>

        4. 在所需页面使用按钮

<template>
	<div>
		<!-- 按钮 -->
		<kt-button label="新增" perms="dept:shareDept:add" type="success" plain />
		<kt-button label="搜索" perms="dept:shareDept:search" type="primary"  />
		<kt-button label="编辑" perms="dept:shareDept:edit" type="primary" plain />
	</div>
</template>

<script>
    import KtButton from "@/components/KtButton"//引用按钮组件
    export default{
		components:{
			KtButton
		},
    }
</script>

效果:

 

只存粗了新增和编辑权限,没有查询权限,为禁用.....

总结:

封装按钮组件,把所有属性都写了,避免有些页面需要这个属性有些页面不需要;索性全部都加上,需要某些属性的在引用的按钮组件填写就好了。

这篇文章应该是能看得懂怎么写哈,步骤也写出来了,再不懂就锤系....

【vue】按钮权限的实现

 文章来源地址https://www.toymoban.com/news/detail-495698.html

 

到了这里,关于【vue】按钮权限的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue递归函数|树形结构或者权限使用

    👉vue获取到树形结构后递归遍历数据,生成树形结构数据,无限级_vue遍历树形数据_常威在打来福~的博客-CSDN博客 需求是:三级联动数据,获取到的数据也是树形结构的,需要不停的往下循环,但是又不确定是几层,那么这样需要用到递归方法。 代码实现:

    2024年02月06日
    浏览(38)
  • vue3项目引入本地js文件,实现一个音频播放按钮

    目前有一个需求就是在网页上放置一个音乐控制按钮,并且是在vue3项目里面。于是小白的我遇到了2个问题,第一个问题是如何实现没有进度条的播放按钮,这个网上有现成的代码,可以通过js代码切换不同的图片或者是别的样式,并不算难;第二个问题是如何在vue3项目中引

    2024年02月19日
    浏览(57)
  • Vue实现角色权限动态路由详细教程,在vue-admin-template基础上修改,附免费完整项目代码

    vue-admin-template是一个最基础的后台管理模板,只包含了一个后台需要最基础的东西,如果 clone 的是它的 master分支 ,是没有权限管理的,只有完整版 vue-element-admin 有这个功能,但是为了小小的一个权限管理而用比较复杂的有点得不偿失。 我在网上找了一堆教程和资料,发现

    2023年04月13日
    浏览(40)
  • U3D通过按钮点击实现场景切换

    1.新建UI,选择button选项,新建button;   3.新建一个空对象,挂载一个scenechange c#脚本; 4.编写脚本,1头文件using UnityEngine.SceneMangement                    2public void change() {                     scenemanager.loadscene (1)  }//括号中的数字为第2步中场景后面的数字          

    2024年02月07日
    浏览(47)
  • 超级实用!React-Router v6实现页面级按钮权限

    大家好,我是王天~ 今天咱们用 reac+reactRouter来实现页面级的按钮权限功能。这篇文章分三部分,实现思路、代码实现、踩坑记录。 嫌啰嗦的朋友,直接拖到第二章节看代码哦。 通常情况下,咱们为用户添加权限时,除了页面权限,还会细化到按钮级别,比如、新增、删除

    2024年02月08日
    浏览(41)
  • 【HTML】HTML 表单 ② ( 按钮表单 | 普通按钮 | 提交按钮 | 重置按钮 | 图片按钮 | 文件域 )

    将 input / 标签 的 type 属性设置为 button , 就可以将该 表单组件 设置为 普通按钮 类型表单 ; 通过 value 属性 可以设置 该 普通按钮 显示的 文本内容 ; 完整代码示例 : 小时效果 : 将 input / 标签 的 type 属性设置为 submit , 就可以将该 表单组件 设置为 提交按钮 类型表单 ; 提交按钮

    2024年02月10日
    浏览(44)
  • vue项目中按钮防抖处理

    1. 概念 连续点击按钮时,按钮的点击事件只会触发触发一次,结束连续点击后,再次点击按钮时才会触发按钮的点击事件 2. 意义 按钮防抖是针对按钮操作时,用户连续点击按钮时也会每次触发按钮的绑定的点击事件,这会造成多次无效的触发 1. 通过定义指令方式 通过定义

    2024年02月13日
    浏览(47)
  • nginx 部署vue项目,页面白屏或者页面刷新出现404问题

    将vue项目打包部署到nginx上面运行 问题一: 运行时页面白屏。 问题二: 页面可以正常显示,当刷新页面的时候页面报404 错误。 页面白屏分析: 我们可以先查看一下nginx下的 logs/error.log 日志文件,确定我的问题是因为项目打包时候路劲配置问题。 页面404分析 :我们在将

    2024年02月15日
    浏览(42)
  • 【MATLAB GUI】 1. 普通按钮、静态文本和可编辑文本

    看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求:点击一次“100”按钮,按钮上的文字值就递增1;点击“close”按钮,关闭所有窗口 命令行打开GUI:命令行guide,或者appdesigner 如果左边方块没有文字说明,则点击文件-预设-在组件选项板中显示名称

    2024年02月19日
    浏览(38)
  • 给普通用户赋予docker权限

    1、 查看当前用户组中是否有docker组 2、 如果没有则创建 3、 将用户加入docker组 4、 退出用户重连即可

    2024年02月16日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包