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>

 

相关推荐

  1. vue定义指令配置程序按钮权限

    2023-12-06 05:50:03       37 阅读
  2. Vue定义指令

    2023-12-06 05:50:03       28 阅读
  3. Vue定义指令

    2023-12-06 05:50:03       30 阅读
  4. Vue-------定义指令

    2023-12-06 05:50:03       17 阅读
  5. Vue定义指令

    2023-12-06 05:50:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 05:50:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 05:50:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 05:50:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 05:50:03       20 阅读

热门阅读

  1. 第八章 List、Set、数据结构、Collections

    2023-12-06 05:50:03       35 阅读
  2. cookie,session、中间件、csrf认证相关【补充】

    2023-12-06 05:50:03       33 阅读
  3. 【ListView】

    2023-12-06 05:50:03       39 阅读
  4. docker安装常用的中间件脚本

    2023-12-06 05:50:03       29 阅读
  5. 水库监管AI视觉算法与边缘计算盒子

    2023-12-06 05:50:03       63 阅读
  6. 在Vue3中使用缓存组件keep-alive vue3缓存组件

    2023-12-06 05:50:03       43 阅读
  7. 企业微信协议开发,API接口调用

    2023-12-06 05:50:03       38 阅读
  8. C#-剖析文件和流并快速使用

    2023-12-06 05:50:03       41 阅读
  9. Docker 安装 Redis 挂载配置

    2023-12-06 05:50:03       30 阅读