From 4c08e5f1908c90dc55fd5b2e2d0683c003fa1aa2 Mon Sep 17 00:00:00 2001 From: pany <939630029@qq.com> Date: Thu, 1 Jun 2023 18:00:08 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=20?= =?UTF-8?q?utils/permission=20=E5=92=8C=20directives/permission?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/directives/permission/index.ts | 15 +++++---------- src/utils/permission.ts | 13 +++++-------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/directives/permission/index.ts b/src/directives/permission/index.ts index 841b686..64d258c 100644 --- a/src/directives/permission/index.ts +++ b/src/directives/permission/index.ts @@ -1,20 +1,15 @@ import { type Directive } from "vue" import { useUserStoreHook } from "@/store/modules/user" -/** 权限指令 */ +/** 权限指令,和权限判断函数 checkPermission 功能类似 */ export const permission: Directive = { mounted(el, binding) { - const { value } = binding + const { value: permissionRoles } = binding const { roles } = useUserStoreHook() - if (Array.isArray(value) && value.length > 0) { - const permissionRoles = value + if (Array.isArray(permissionRoles) && permissionRoles.length > 0) { const hasPermission = roles.some((role) => permissionRoles.includes(role)) - if (!hasPermission) { - // 隐藏 - // el.style.display = "none" - // 销毁 - el.parentNode?.removeChild(el) - } + // hasPermission || (el.style.display = "none") // 隐藏 + hasPermission || el.parentNode?.removeChild(el) // 销毁 } else { throw new Error(`need roles! Like v-permission="['admin','editor']"`) } diff --git a/src/utils/permission.ts b/src/utils/permission.ts index e95f845..f736e3f 100644 --- a/src/utils/permission.ts +++ b/src/utils/permission.ts @@ -1,13 +1,10 @@ import { useUserStoreHook } from "@/store/modules/user" -/** 全局权限判断函数,和指令 v-permission 功能类似 */ -export const checkPermission = (value: string[]): boolean => { - if (value && value instanceof Array && value.length > 0) { - const roles = useUserStoreHook().roles - const permissionRoles = value - return roles.some((role) => { - return permissionRoles.includes(role) - }) +/** 全局权限判断函数,和权限指令 v-permission 功能类似 */ +export const checkPermission = (permissionRoles: string[]): boolean => { + if (Array.isArray(permissionRoles) && permissionRoles.length > 0) { + const { roles } = useUserStoreHook() + return roles.some((role) => permissionRoles.includes(role)) } else { console.error("need roles! Like checkPermission(['admin','editor'])") return false