1
0
mirror of https://github.com/FatttSnake/Pinnacle-OA.git synced 2026-04-05 15:01:23 +08:00

Optimized the dynamic menu

This commit is contained in:
2023-05-24 15:40:55 +08:00
parent 8ae54022c5
commit 7659979ec1
7 changed files with 27 additions and 1 deletions

View File

@@ -226,7 +226,7 @@ export default {
async mounted() {
this.username = await getUsername()
const allRoutes = _.cloneDeep(
_.filter(_.get(this.$router, 'options.routes[0].children'), 'meta.title')
_.filter(_.get(this.$router, 'options.routes[0].children'), 'meta.requiresMenu')
)
const user = await getUser()
@@ -240,6 +240,9 @@ export default {
return true
}
level1.children = level1.children.filter((level2) => {
if (!level2.meta.requiresMenu) {
return false
}
for (const menu_ of menus) {
if (_.startsWith(menu_.url, level1.path + '/' + level2.path)) {
hasChildren = true
@@ -258,6 +261,9 @@ export default {
return true
}
level1.children = level1.children.filter((level2) => {
if (!level2.meta.requiresMenu) {
return false
}
if (!level2.meta.requiresAuth) {
hasChildren = true
return true

View File

@@ -9,6 +9,7 @@ const affairRouter = {
name: 'affairAdd',
meta: {
title: '事务添加',
requiresMenu: true,
requiresScrollbar: true,
requiresPadding: true
}
@@ -19,6 +20,7 @@ const affairRouter = {
name: 'PersonalAffairs',
meta: {
title: '我的事务',
requiresMenu: true,
requiresScrollbar: true,
requiresPadding: true
}
@@ -29,6 +31,7 @@ const affairRouter = {
component: async () => await import('@/pages/affair/Affair.vue'),
meta: {
title: '事务审批',
requiresMenu: true,
requiresScrollbar: true,
requiresPadding: true
}
@@ -39,6 +42,7 @@ const affairRouter = {
name: 'affairApproved',
meta: {
title: '审批记录',
requiresMenu: true,
requiresScrollbar: true,
requiresPadding: true
}
@@ -47,6 +51,7 @@ const affairRouter = {
meta: {
title: '事务',
icon: shallowRef(IconPinnacleAffairs),
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}

View File

@@ -8,6 +8,7 @@ const attendanceRouter = {
name: 'attendanceManage',
meta: {
title: '考勤管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -18,6 +19,7 @@ const attendanceRouter = {
name: 'user',
meta: {
title: '员工考勤',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -25,6 +27,7 @@ const attendanceRouter = {
],
meta: {
title: '考勤',
requiresMenu: true,
icon: shallowRef(IconPinnacleAttendance),
requiresScrollbar: false,
requiresPadding: true

View File

@@ -26,6 +26,7 @@ const router = createRouter({
meta: {
title: '首页',
icon: shallowRef(IconPinnacleHome),
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true,
requiresAuth: false

View File

@@ -4,6 +4,7 @@ const noticeRouter = {
meta: {
title: '公告',
icon: shallowRef(IconPinnacleNotice),
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
},
@@ -14,6 +15,7 @@ const noticeRouter = {
name: 'noticeManage',
meta: {
title: '公告管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -25,6 +27,7 @@ const noticeRouter = {
redirect: '/notice/noticeView/all',
meta: {
title: '公告查看',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
},
@@ -52,6 +55,7 @@ const noticeRouter = {
name: 'noticeTypeManage',
meta: {
title: '公告类型管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}

View File

@@ -9,6 +9,7 @@ const powerRouter = {
component: async () => await import('@/pages/power/RoleManagement.vue'),
meta: {
title: '角色管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -19,6 +20,7 @@ const powerRouter = {
component: async () => await import('@/pages/power/GroupManagement.vue'),
meta: {
title: '用户组管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -29,6 +31,7 @@ const powerRouter = {
component: async () => await import('@/pages/power/UserManagement.vue'),
meta: {
title: '用户管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -37,6 +40,7 @@ const powerRouter = {
meta: {
title: '权限管理',
icon: shallowRef(IconPinnaclePower),
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true,
requiresAuth: true

View File

@@ -8,6 +8,7 @@ const workRouter = {
name: 'workManage',
meta: {
title: '工作管理',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -31,6 +32,7 @@ const workRouter = {
],
meta: {
title: '工作事项',
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}
@@ -39,6 +41,7 @@ const workRouter = {
meta: {
title: '工作事项',
icon: shallowRef(IconPinnacleWork),
requiresMenu: true,
requiresScrollbar: false,
requiresPadding: true
}