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 { 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']"`)
}

View File

@ -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