// 定义一些和权限有关的 Vue指令
|
|
// 必须包含列出的所有权限,元素才显示
|
export const hasPermission = {
|
install(Vue) {
|
Vue.directive('hasPermission', {
|
bind(el, binding, vnode) {
|
const permissions = vnode.context.$store.state.account.permissions
|
const value = binding.value
|
let flag = true
|
for (const v of value) {
|
if (!permissions.includes(v)) {
|
flag = false
|
}
|
}
|
if (!flag) {
|
if (!el.parentNode) {
|
el.style.display = 'none'
|
} else {
|
el.parentNode.removeChild(el)
|
}
|
}
|
}
|
})
|
}
|
}
|
|
// 当不包含列出的权限时,渲染该元素
|
export const hasNoPermission = {
|
install(Vue) {
|
Vue.directive('hasNoPermission', {
|
bind(el, binding, vnode) {
|
const permissions = vnode.context.$store.state.account.permissions
|
const value = binding.value
|
let flag = true
|
for (const v of value) {
|
if (permissions.includes(v)) {
|
flag = false
|
}
|
}
|
if (!flag) {
|
if (!el.parentNode) {
|
el.style.display = 'none'
|
} else {
|
el.parentNode.removeChild(el)
|
}
|
}
|
}
|
})
|
}
|
}
|
|
// 只要包含列出的任意一个权限,元素就会显示
|
export const hasAnyPermission = {
|
install(Vue) {
|
Vue.directive('hasAnyPermission', {
|
bind(el, binding, vnode) {
|
const permissions = vnode.context.$store.state.account.permissions
|
const value = binding.value
|
let flag = false
|
for (const v of value) {
|
if (permissions.includes(v)) {
|
flag = true
|
}
|
}
|
if (!flag) {
|
if (!el.parentNode) {
|
el.style.display = 'none'
|
} else {
|
el.parentNode.removeChild(el)
|
}
|
}
|
}
|
})
|
}
|
}
|