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:
@@ -226,7 +226,7 @@ export default {
|
|||||||
async mounted() {
|
async mounted() {
|
||||||
this.username = await getUsername()
|
this.username = await getUsername()
|
||||||
const allRoutes = _.cloneDeep(
|
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()
|
const user = await getUser()
|
||||||
@@ -240,6 +240,9 @@ export default {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
level1.children = level1.children.filter((level2) => {
|
level1.children = level1.children.filter((level2) => {
|
||||||
|
if (!level2.meta.requiresMenu) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
for (const menu_ of menus) {
|
for (const menu_ of menus) {
|
||||||
if (_.startsWith(menu_.url, level1.path + '/' + level2.path)) {
|
if (_.startsWith(menu_.url, level1.path + '/' + level2.path)) {
|
||||||
hasChildren = true
|
hasChildren = true
|
||||||
@@ -258,6 +261,9 @@ export default {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
level1.children = level1.children.filter((level2) => {
|
level1.children = level1.children.filter((level2) => {
|
||||||
|
if (!level2.meta.requiresMenu) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if (!level2.meta.requiresAuth) {
|
if (!level2.meta.requiresAuth) {
|
||||||
hasChildren = true
|
hasChildren = true
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const affairRouter = {
|
|||||||
name: 'affairAdd',
|
name: 'affairAdd',
|
||||||
meta: {
|
meta: {
|
||||||
title: '事务添加',
|
title: '事务添加',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: true,
|
requiresScrollbar: true,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -19,6 +20,7 @@ const affairRouter = {
|
|||||||
name: 'PersonalAffairs',
|
name: 'PersonalAffairs',
|
||||||
meta: {
|
meta: {
|
||||||
title: '我的事务',
|
title: '我的事务',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: true,
|
requiresScrollbar: true,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -29,6 +31,7 @@ const affairRouter = {
|
|||||||
component: async () => await import('@/pages/affair/Affair.vue'),
|
component: async () => await import('@/pages/affair/Affair.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '事务审批',
|
title: '事务审批',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: true,
|
requiresScrollbar: true,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -39,6 +42,7 @@ const affairRouter = {
|
|||||||
name: 'affairApproved',
|
name: 'affairApproved',
|
||||||
meta: {
|
meta: {
|
||||||
title: '审批记录',
|
title: '审批记录',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: true,
|
requiresScrollbar: true,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -47,6 +51,7 @@ const affairRouter = {
|
|||||||
meta: {
|
meta: {
|
||||||
title: '事务',
|
title: '事务',
|
||||||
icon: shallowRef(IconPinnacleAffairs),
|
icon: shallowRef(IconPinnacleAffairs),
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const attendanceRouter = {
|
|||||||
name: 'attendanceManage',
|
name: 'attendanceManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '考勤管理',
|
title: '考勤管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -18,6 +19,7 @@ const attendanceRouter = {
|
|||||||
name: 'user',
|
name: 'user',
|
||||||
meta: {
|
meta: {
|
||||||
title: '员工考勤',
|
title: '员工考勤',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -25,6 +27,7 @@ const attendanceRouter = {
|
|||||||
],
|
],
|
||||||
meta: {
|
meta: {
|
||||||
title: '考勤',
|
title: '考勤',
|
||||||
|
requiresMenu: true,
|
||||||
icon: shallowRef(IconPinnacleAttendance),
|
icon: shallowRef(IconPinnacleAttendance),
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ const router = createRouter({
|
|||||||
meta: {
|
meta: {
|
||||||
title: '首页',
|
title: '首页',
|
||||||
icon: shallowRef(IconPinnacleHome),
|
icon: shallowRef(IconPinnacleHome),
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true,
|
requiresPadding: true,
|
||||||
requiresAuth: false
|
requiresAuth: false
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ const noticeRouter = {
|
|||||||
meta: {
|
meta: {
|
||||||
title: '公告',
|
title: '公告',
|
||||||
icon: shallowRef(IconPinnacleNotice),
|
icon: shallowRef(IconPinnacleNotice),
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
},
|
},
|
||||||
@@ -14,6 +15,7 @@ const noticeRouter = {
|
|||||||
name: 'noticeManage',
|
name: 'noticeManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '公告管理',
|
title: '公告管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -25,6 +27,7 @@ const noticeRouter = {
|
|||||||
redirect: '/notice/noticeView/all',
|
redirect: '/notice/noticeView/all',
|
||||||
meta: {
|
meta: {
|
||||||
title: '公告查看',
|
title: '公告查看',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
},
|
},
|
||||||
@@ -52,6 +55,7 @@ const noticeRouter = {
|
|||||||
name: 'noticeTypeManage',
|
name: 'noticeTypeManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '公告类型管理',
|
title: '公告类型管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const powerRouter = {
|
|||||||
component: async () => await import('@/pages/power/RoleManagement.vue'),
|
component: async () => await import('@/pages/power/RoleManagement.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '角色管理',
|
title: '角色管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -19,6 +20,7 @@ const powerRouter = {
|
|||||||
component: async () => await import('@/pages/power/GroupManagement.vue'),
|
component: async () => await import('@/pages/power/GroupManagement.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '用户组管理',
|
title: '用户组管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -29,6 +31,7 @@ const powerRouter = {
|
|||||||
component: async () => await import('@/pages/power/UserManagement.vue'),
|
component: async () => await import('@/pages/power/UserManagement.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '用户管理',
|
title: '用户管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -37,6 +40,7 @@ const powerRouter = {
|
|||||||
meta: {
|
meta: {
|
||||||
title: '权限管理',
|
title: '权限管理',
|
||||||
icon: shallowRef(IconPinnaclePower),
|
icon: shallowRef(IconPinnaclePower),
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true,
|
requiresPadding: true,
|
||||||
requiresAuth: true
|
requiresAuth: true
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const workRouter = {
|
|||||||
name: 'workManage',
|
name: 'workManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '工作管理',
|
title: '工作管理',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -31,6 +32,7 @@ const workRouter = {
|
|||||||
],
|
],
|
||||||
meta: {
|
meta: {
|
||||||
title: '工作事项',
|
title: '工作事项',
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
@@ -39,6 +41,7 @@ const workRouter = {
|
|||||||
meta: {
|
meta: {
|
||||||
title: '工作事项',
|
title: '工作事项',
|
||||||
icon: shallowRef(IconPinnacleWork),
|
icon: shallowRef(IconPinnacleWork),
|
||||||
|
requiresMenu: true,
|
||||||
requiresScrollbar: false,
|
requiresScrollbar: false,
|
||||||
requiresPadding: true
|
requiresPadding: true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user