vue自定义指令配置小程序按钮权限

先创建一个js文件  plugins.js

// import {
// 	auth,
// 	authAll
// } from "./tools";
import tools from "./tools.js"
// import Vue from 'vue'function install(Vue, options) {Vue.prototype.$auth = tools.auth;Vue.prototype.$authAll = tools.authAll;// 注册 v-auth 和 v-auth-all 指令Vue.directive('auth', {inserted: (el, binding) => {if (!auth(binding.value)) {el.remove()}}})Vue.directive('auth-all', {inserted: (el, binding) => {if (!authAll(binding.value)) {el.remove()}}})
}
export default {install
}

 再在同级创建一个tools.js文件

var roles = [];
roles = uni.getStorageSync("storeRoleRules") ? uni.getStorageSync("storeRoleRules").split(",") : [];
var storeUserType = uni.getStorageSync("storeUserType")
// console.log(roles, '权限');
console.log(storeUserType, '身份');
// 管理员是0  普通员工是1
function hasPermission(permission) {return roles.includes(permission)
}/*** 权限数据,如果传入为 array 时,匹配到其中一项则鉴权通过,并显示 slot 内容* @param value* @returns {*}*/
function auth(value) {let auth;if (storeUserType == '0') {return true}if (typeof value === 'string') {auth = value !== '' ? hasPermission(value) : true} else {auth = value.length > 0 ? value.some(item => hasPermission(item)) : true;}return auth
}/*** 权限数据,如果传入为 array 时,全部匹配则鉴权通过,并显示 slot 内容* @param value* @returns {*}*/
function authAll(value) {if (storeUserType == '0') {return true}if (value && value.constructor === Array) {return value.length > 0 ? value.every(item => hasPermission(item)) : true}return true;
}export default {auth,authAll
}

在main.js中全局引入


// 权限
import plugins from '@/utils/plugins.js';
Vue.use(plugins);

 最后就可以在页面上使用了   

 v-auth="['admin-contract-barter-add']" 或 v-auth="admin-contract-barter-add" 

看别人写的这两种也行  但是我只有下面这种方法起作用了

<view class="go-publish" v-auth="['admin-add']" v-if="$auth(['admin-add'])" @click="goPublish1">
发布商品券
</view>

authAll表示必须有所有的权限才可以,缺一不可

 

<view v-authAll="['admin-add','admin-edit']" v-if="$authAll(['admin-add','admin-edit'])"></view>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web安全-初识SQL注入(一)

1、初识SQL注入 1.1、什么是注入&#xff1f; 将不受信任的数据作为命令或查询的一部分发送到解析器时&#xff0c;会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。 注入能导…

前端知识笔记(二十五)———JS中的异步编程与Promise

一、JavaScript的异步编步机制 在了解JavaScript的异步机制之前&#xff0c;我们首先需要理解JavaScript是一种单线程语言。单线程就意味着所有的任务需要按照顺序一次执行&#xff0c;如果前一个任务没有完成&#xff0c;后一个任务就无法开始。这个特性在执行大量或耗时任务时…

mysql有哪些锁,理解各种表锁和行锁

全局锁 主要用于数据库的备份&#xff0c;但会使得备份期间不能有任何事务插入删除更新数据&#xff0c;这很影响实际业务。所以通常不用这个全局锁来完成数据库的备份。假设数据库的存储引擎支持可重复读&#xff0c;那么常见的方法是通过MVCC来实现的&#xff0c;也就是备份…

解决ant-design-vue中Select组件v-model值为空字符串不显示placeholder的bug

方法一&#xff1a; 1.找到node_modules/ant-design-vue/es/vc-select/SingleSelector.js文件 搜索renderPlacehoder方法 将其修改为 const renderPlacehoder () > {const list props.values.filter(val > val.value ! );if (list[0]) {return null}... }2.在此文件中…

springboot遇到的问题02

问题1 JsonFormat(patter"yyyy-MM-dd HH:mm:ss") 这种返回给前端&#xff0c;时间可能会相差8个小时&#xff0c;&#xff0c;&#xff0c;因为JsonFormat 默认的timeZone 是 GMT &#xff08;即标准时区&#xff09;,会造成输出少8个小时 修改为&#xff1a;JsonFor…

ROS2教程05 ROS2服务

ROS2服务 版权信息 Copyright 2023 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. The author holds all right…

Dockerfile脚本编写流程及示例

学习dockerfile指令 Dockerfile 指令 说明 FROM 指定基础镜像 MAINTAINER 声明镜像的维护者 LABEL 添加元数据标签 RUN 在容器中执行命令 CMD 容器启动后默认执行的命令 EXPOSE 暴露容器的端口 ENV 设置环境变量 ADD 将文件、目录或远程文件添加到容器中 COP…

Maxwell学习笔记

1 概述 Maxwell 是由美国 Zendesk 开源&#xff0c;用 Java 编写的 MySQL 实时抓取软件。 实时读取MySQL 二进制日志 Binlog&#xff0c;并生成 JSON 格式的消息&#xff0c;作为生产者发送给 Kafka&#xff0c;Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台…

选择测试自动化工具的4个技巧

预计至2026年&#xff0c;全球软件测试自动化市场价值将超过499亿美元&#xff0c;这意味着市场上的自动化测试工具数量也将同步增长。在这样的情况下&#xff0c;企业该如何选择最适合自己的自动化测试工具呢&#xff1f; 什么是测试自动化工具 数字经济迫使几乎每个企业都创建…

InnoDB的锁

自增锁 自增锁是一种特殊的表级别锁&#xff08;table-level lock&#xff09;&#xff0c;专门针对事务插入 AUTO_INCREMENT 类型的列。最简单的情况&#xff0c;如果一个事务正在往表中插入记录&#xff0c;所有其他事务的插入必须等待&#xff0c;以便第一个事务插入的行&a…

arcgis投影栅格不可用

1、使用【投影栅格】工具进行栅格数据投影转换时报错。 解决方法&#xff1a;如果使用的是arcgis10.5及以下的版本&#xff0c;则需要更换更高的版本&#xff0c;因为这个是软件问题&#xff0c;需要更换到arcgis10.6及以上版本&#xff0c;更高级别的版本已经修复了这个问题。…

优酷新国风动漫《师兄啊师兄 第二季》强势定档 看李长寿稳健归来!

看新国风&#xff0c;上优酷动漫&#xff01;由优酷出品&#xff0c;玄机科技制作&#xff0c;改编自阅文集团旗下起点读书小说《我师兄实在太稳健了》&#xff08;作者&#xff1a;言归正传&#xff09;的修仙喜剧动画《师兄啊师兄》第二季《海神扬名篇》今日正式官宣定档&…

HCIP —— 重发布

目录 路由重发布背景&#xff1a; 路由重发布的作用&#xff1a; ​编辑 部署条件&#xff1a; 1.必须存在ASBR设备 2.需要关注种子度量值 重发布的规则 重发布的名词 重发布的方向性问题&#xff08;单向/双向&#xff09; 重发布的ASBR数量问题 单点---只存在一个AS…

在ubuntu安装lighttpd时的一些错误记录和开发中的一些思考

今天在ubuntu安装lighttpd时的一些错误记录和开发中的一些思考。 相关平台&#xff1a;ARMv7,需要交叉编译&#xff0c;适用于ARM平台&#xff0c;其它平台可参考 交叉编译lighttpd先安装pcre支持&#xff0c;安装pcre却不顺利。错误一&#xff1a;Makefile:1438: recipe for …

陀螺仪防抖术语

陀螺仪防抖术语 fov 视场角 drift 零偏   MotionFusion即运动传感器的融合补偿&#xff0c;对陀螺仪、加速度计等运动测量器件的数据 进行预处理&#xff0c;通过标定和补偿&#xff0c;为防抖提供校准后的陀螺仪数据 ratio 系数 gyro 陀螺仪 calibration 校准 标定 DIS&…

SpringBoot整合Logback

什么是Logback Logback是日志框架SLF4J的一个实现&#xff0c;它被设计用来替代log4j。 引入依赖 SpringBoot默认使用Logback&#xff0c;所以加入了spring-boot-starter-web依赖后&#xff0c;他会自动包含Logback相关依赖&#xff0c;无需额外添加<dependency><g…

实力出圈,开源网安连续4年入选中国网络安全企业100强

近日&#xff0c;安全牛第十一版《中国网络安全企业100强》正式发布。开源网安突出的综合实力、技术创新能力&#xff0c;以及前沿技术的落地应用成果&#xff0c;再次受到权威认可&#xff0c;从数百家安全厂商中脱颖而出&#xff0c;连续多年上榜百强榜单。 《中国网络安全企…

2023年个人工作总结怎么写?工作任务完成自动记录的待办软件

2023年已经接近尾声&#xff0c;不少人已经开始期待新的一年到来了。不过对于大多数职场人士来说&#xff0c;最近还有一项让人头疼的任务需要完成&#xff0c;这就是撰写2023年个人工作总结。 那么年度个人工作总结怎么写呢&#xff1f;其实很简单&#xff0c;年度工作总结一…

【软件安装】在vm上安装Centos操作系统

文章目录 下载iso镜像安装 下载iso镜像 centos下载地址&#xff1a;阿里巴巴centos下载地址 安装 基本按照下面的步骤走就可以了 新手一般建议典型就可以了&#xff0c;而且自定义也改不了什么东西&#xff0c;没太大必要 选择自己下载的iso镜像文件 用户名和密码 安装位置 指…

前端知识笔记(三十二)———TCP 连接建立

&#xff1a;TCP 三次握手过程是怎样的&#xff1f; 客户端和服务端都处于 CLOSE 状态&#xff0c;服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 第一次握手&#xff1a;客户端带着序号和SYN为1&#xff0c;把第一个 SYN 报文发送给服务端&#xff0c;客户端处于 SYN-S…