vue自定义指令配置小程序按钮权限
2023-12-13 03:26:10
先创建一个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>
?
文章来源:https://blog.csdn.net/qq_51538602/article/details/134812195
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!