34 lines
983 B
TypeScript
Raw Normal View History

2023-03-11 15:05:46 +08:00
import { useUserStore } from '/admin/stores/modules/user'
import { MenuType } from '/admin/enum/app'
function checkAction(el: any, action: any) {
if (action.value && typeof action.value === 'string') {
const userStore = useUserStore()
const permissions = userStore.getPermissions
action = action.value.replace('@', '.').toLowerCase()
const hasAction = permissions?.some(permission => {
if (permission.type === MenuType.Button_Type) {
const a: string = permission.module + '.' + permission.permission_mark.replace('@', '.')
return action === a.toLowerCase()
}
})
if (!hasAction) {
// el.style.display = 'none'
el.parentNode && el.parentNode.removeChild(el)
}
} else {
2023-05-25 07:53:35 +08:00
throw new Error(`need action! Like v-action="module.controller.action"`)
2023-03-11 15:05:46 +08:00
}
}
export default {
mounted(el: any, binding: any) {
checkAction(el, binding)
},
updated(el: any, binding: any) {
checkAction(el, binding)
},
}