index.ts 701 B

1234567891011121314151617
  1. import { type Directive } from "vue"
  2. import { useUserStoreHook } from "@/store/modules/user"
  3. /** 权限指令,和权限判断函数 checkPermission 功能类似 */
  4. export const permission: Directive = {
  5. mounted(el, binding) {
  6. const { value: permissionRoles } = binding
  7. const { roles } = useUserStoreHook()
  8. if (Array.isArray(permissionRoles) && permissionRoles.length > 0) {
  9. const hasPermission = roles.some((role) => permissionRoles.includes(role))
  10. // hasPermission || (el.style.display = "none") // 隐藏
  11. hasPermission || el.parentNode?.removeChild(el) // 销毁
  12. } else {
  13. throw new Error(`need roles! Like v-permission="['admin','editor']"`)
  14. }
  15. }
  16. }