perf: 代码优化 utils/permission 和 directives/permission

This commit is contained in:
pany 2023-06-01 18:00:08 +08:00
parent 8520fd3df2
commit 4c08e5f190
2 changed files with 10 additions and 18 deletions

View File

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

View File

@ -1,13 +1,10 @@
import { useUserStoreHook } from "@/store/modules/user" import { useUserStoreHook } from "@/store/modules/user"
/** 全局权限判断函数,和指令 v-permission 功能类似 */ /** 全局权限判断函数,和权限指令 v-permission 功能类似 */
export const checkPermission = (value: string[]): boolean => { export const checkPermission = (permissionRoles: string[]): boolean => {
if (value && value instanceof Array && value.length > 0) { if (Array.isArray(permissionRoles) && permissionRoles.length > 0) {
const roles = useUserStoreHook().roles const { roles } = useUserStoreHook()
const permissionRoles = value return roles.some((role) => permissionRoles.includes(role))
return roles.some((role) => {
return permissionRoles.includes(role)
})
} else { } else {
console.error("need roles! Like checkPermission(['admin','editor'])") console.error("need roles! Like checkPermission(['admin','editor'])")
return false return false