This commit is contained in:
jxxghp
2024-07-06 17:53:51 +08:00
parent 81fb44da80
commit b2e1fe314f
13 changed files with 373 additions and 207 deletions

View File

@@ -18,18 +18,65 @@ const appMode = computed(() => {
return localStorage.getItem('MP_APPMODE') != '0' && display.mdAndDown.value
})
// Vuex Storesuperuser
const superUser = store.state.auth.superUser
//
let superUser = store.state.auth.superUser
//
const permissions = store.state.auth.permissions
//
function hasPermission(permission: string | null = null) {
if (!permission) return true
// permission.'user.create'
const permissionList = permission.split('.')
let permissions_obj = permissions
for (const element of permissionList) {
if (!permissions_obj[element]) {
return false
} else if (typeof permissions_obj[element] === 'object') {
permissions_obj = permissions_obj[element]
} else {
return true
}
}
return false
}
//
const startMenus = ref<NavMenu[]>([])
//
const discoveryMenus = ref<NavMenu[]>([])
//
const subscribeMenus = ref<NavMenu[]>([])
//
const organizeMenus = ref<NavMenu[]>([])
//
const systemMenus = ref<NavMenu[]>([])
//
const getMenuList = (header: string) => {
return SystemNavMenus.filter((item: NavMenu) => item.header === header && (!item.admin || superUser))
return SystemNavMenus.filter(
(item: NavMenu) => item.header === header && (superUser || hasPermission(item.permission)),
)
}
//
function goBack() {
history.back()
}
onMounted(() => {
//
startMenus.value = getMenuList('开始')
discoveryMenus.value = getMenuList('发现')
subscribeMenus.value = getMenuList('订阅')
organizeMenus.value = getMenuList('整理')
systemMenus.value = getMenuList('系统')
})
</script>
<template>
@@ -61,36 +108,39 @@ function goBack() {
</template>
<template #vertical-nav-content>
<VerticalNavLink v-for="item in getMenuList('开始')" :item="item" />
<VerticalNavLink v-for="item in startMenus" :item="item" />
<!-- 👉 发现 -->
<VerticalNavSectionTitle
v-if="discoveryMenus.length > 0"
:item="{
heading: '发现',
}"
/>
<VerticalNavLink v-for="item in getMenuList('发现')" :item="item" />
<VerticalNavLink v-for="item in discoveryMenus" :item="item" />
<!-- 👉 订阅 -->
<VerticalNavSectionTitle
v-if="subscribeMenus.length > 0"
:item="{
heading: '订阅',
}"
/>
<VerticalNavLink v-for="item in getMenuList('订阅')" :item="item" />
<VerticalNavLink v-for="item in subscribeMenus" :item="item" />
<!-- 👉 整理 -->
<VerticalNavSectionTitle
v-if="organizeMenus.length > 0"
:item="{
heading: '整理',
}"
/>
<VerticalNavLink v-for="item in getMenuList('整理')" :item="item" />
<VerticalNavLink v-for="item in organizeMenus" :item="item" />
<!-- 👉 系统 -->
<VerticalNavSectionTitle
v-if="superUser"
v-if="systemMenus.length > 0"
:item="{
heading: '系统',
}"
/>
<VerticalNavLink v-for="item in getMenuList('系统')" :item="item" />
<VerticalNavLink v-for="item in systemMenus" :item="item" />
</template>
<template #after-vertical-nav-items />

View File

@@ -111,11 +111,11 @@ watch(isCompactMode, value => {
<VDivider class="my-2" />
<!-- 👉 Profile -->
<VListItem v-if="superUser" link @click="router.push('/setting?tab=account')">
<VListItem link @click="router.push('/profile')">
<template #prepend>
<VIcon class="me-2" icon="mdi-account-outline" size="22" />
</template>
<VListItemTitle>设定</VListItemTitle>
<VListItemTitle>个人信息</VListItemTitle>
</VListItem>
<!-- 👉 FAQ -->
@@ -123,7 +123,7 @@ watch(isCompactMode, value => {
<template #prepend>
<VIcon class="me-2" icon="mdi-help-circle-outline" size="22" />
</template>
<VListItemTitle>帮助</VListItemTitle>
<VListItemTitle>帮助文档</VListItemTitle>
</VListItem>
<!-- Divider -->