feat: init

This commit is contained in:
ygx
2026-03-05 23:45:39 +08:00
commit 8fab91c5c7
214 changed files with 33682 additions and 0 deletions

8
src/directive/index.ts Normal file
View File

@@ -0,0 +1,8 @@
import { App } from 'vue'
import permission from './permission'
export default {
install(Vue: App) {
Vue.directive('permission', permission)
},
}

View File

@@ -0,0 +1,30 @@
import { DirectiveBinding } from 'vue'
import { useUserStore } from '@/store'
function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
const { value } = binding
const userStore = useUserStore()
const { role } = userStore
if (Array.isArray(value)) {
if (value.length > 0) {
const permissionValues = value
const hasPermission = permissionValues.includes(role)
if (!hasPermission && el.parentNode) {
el.parentNode.removeChild(el)
}
}
} else {
throw new Error(`need roles! Like v-permission="['admin','user']"`)
}
}
export default {
mounted(el: HTMLElement, binding: DirectiveBinding) {
checkPermission(el, binding)
},
updated(el: HTMLElement, binding: DirectiveBinding) {
checkPermission(el, binding)
},
}