vue 前端配置按钮权限

  1. 拿到产品需要配置的按钮权限清单,如下
    在这里插入图片描述
  2. 在中台 资源管理 配置中,根据页面位置添加,'权限标识’名称不可重复
    在这里插入图片描述
    在这里插入图片描述
    注意一定要是菜单类型按钮,然后在"权限管理"通过勾选赋予按钮权限
    在这里插入图片描述
  3. 登录后获取后台返回的按钮权限数据,转换得到按钮key数组:btnPermissions(根据后台返回结构自行决定是否需要转换),将btnPermissions存储到session storage
let btnPermissions = ['domain:query','domain:add','domain:edit','domain:cache','domain:del','domain:define','domain:transition']
sessionStorage.setItem('btnPermissions', JSON.stringify(btnPermissions));

在这里插入图片描述

  1. 新建个js,directive.js
import Vue from 'vue'
const has = Vue.directive('has', {
	inserted: function (el, binding, vnode) {
		let btnPermissions = el.getAttribute("value");
		if (!Vue.prototype.$_has(btnPermissions)) {
			//这个时候就是没有权限,需要删除掉按钮
			el.parentNode.removeChild(el);
		}
	}
});
// 权限检查方法
Vue.prototype.$_has = function (value) {
	let isExist = false;
	let btnPermissionsStr = JSON.parse(sessionStorage.getItem("btnPermissions"));
	if (btnPermissionsStr == undefined || btnPermissionsStr == null) {
		return false;
	}
	if (btnPermissionsStr.indexOf(value) > -1) {
		isExist = true;
	}
	return isExist;
};

export default has;
  1. 在main.js中引入js
import has from '@/api/directive.js';
  1. 在页面中,按钮上加入 v-has 指令和 value=‘zt:cop-add’ 绑定按钮权限
<el-form-item>
	<el-button type="primary" icon="el-icon-search" v-on:click="getRows" value='domain:query' v-has>查询</el-button>
</el-form-item>

原理解析

v-has是自定义的钩子,会在inserted的时机,去调用directive.js中的方法,去判断自己是否显示,value='domain:query’是其中的判断条件,必须唯一,所以这里强制约定为routes定义的component属性的一个字母小写
在这里插入图片描述

注意:不能和v-if共同使用,可以和v-show共同使用

此篇为补充声明,原博客:https://blog.csdn.net/qq_34652478/article/details/100927471

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值