From d1989018557df42fc8d26e13875f4e2de63e99cd Mon Sep 17 00:00:00 2001 From: yaojn Date: Fri, 26 Jan 2024 16:07:31 +0800 Subject: [PATCH] =?UTF-8?q?-=20[=E4=BF=AE=E5=A4=8D]=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=97=A0=E5=AF=B9=E5=BA=94=E6=9D=83=E9=99=90=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E8=AE=BF=E9=97=AE=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=8E=A5=E5=8F=A3=20=20=20-=20[=E5=85=B3?= =?UTF-8?q?=E8=81=94]#[1077335950852096]=E8=8F=9C=E5=8D=95=E6=97=A0?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E6=9D=83=E9=99=90=EF=BC=8C=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E8=AE=BF=E9=97=AE=E8=87=AA=E5=AE=9A=E4=B9=89=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=8E=A5=E5=8F=A3=20http://192.168.0.96:8090/demo/rdm?= =?UTF-8?q?.html#/bug-detail/939050947543040/939050947543057/1077335950852?= =?UTF-8?q?096?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/resources/store/modules/topMenu.js | 44 ++++++++++++++++------- src/views/pages/process/leftmenu/menu.vue | 13 +++---- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/src/resources/store/modules/topMenu.js b/src/resources/store/modules/topMenu.js index 81a29ae1..b05e1e94 100644 --- a/src/resources/store/modules/topMenu.js +++ b/src/resources/store/modules/topMenu.js @@ -1,4 +1,5 @@ import commonApi from '@/resources/api/common'; +import commonStore from '@/resources/store/index.js'; const state = { moduleList: [], //所有的模块及其描述、菜单、默认页等 @@ -91,15 +92,16 @@ const actions = { dispatch('updateDashboardMenu', { forceUpdate }); dispatch('updateReportMenu', { forceUpdate }); dispatch('updateCmdbMenu', { forceUpdate }); - dispatch('updateInspectMenu', { forceUpdate }); // 巡检结果 + dispatch('updateInspectMenu', { forceUpdate }); }, // process async updateProcessMenu({ commit, state, rootState }, { forceUpdate = true } = {}) { await state.gettingModuleList; const processModule = state.moduleList.find(item => item.moduleId === 'process'); - if (!processModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('process')) return; + if (!processModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('process')) || !hasCustomMenuAuthority('process', 'task-overview')) { + return; + } const res = await commonApi.updateProcessMenu({ isAll: 0 }); if (!res.Return || !res.Return.workcenterList || res.Return.workcenterList.length === 0) return; const processType = res.Return.workcenterList.map(type => ({ @@ -122,7 +124,9 @@ const actions = { await state.gettingModuleList; const knowledgeModule = state.moduleList.find(item => item.moduleId === 'knowledge'); if (!knowledgeModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('knowledge')) return; + if (!knowledgeModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('knowledge')) || !hasCustomMenuAuthority('knowledge', 'knowledge-overview')) { + return; + } const res = await commonApi.updateKnowledgeMenu(); if (!res.Return || res.Return.length === 0) return; const knowledgeType = res.Return.map(type => ({ @@ -144,8 +148,7 @@ const actions = { async updateDashboardMenu({ commit, state, rootState }, { forceUpdate = true } = {}) { await state.gettingModuleList; const dashboardModule = state.moduleList.find(item => item.moduleId === 'dashboard'); - if (!dashboardModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('dashboard')) { + if (!dashboardModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('dashboard')) || !hasCustomMenuAuthority('dashboard', 'dashboard-detail')) { return; } const res = await commonApi.updateDashboardMenu({ limit: 6 }); @@ -171,8 +174,9 @@ const actions = { async updateReportMenu({ commit, state, rootState }, { forceUpdate = true } = {}) { await state.gettingModuleList; const reportModule = state.moduleList.find(item => item.moduleId === 'report'); - if (!reportModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('report')) return; + if (!reportModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('report')) || !hasCustomMenuAuthority('report', 'reportinstance-show')) { + return; + } const res = await commonApi.updateReportMenu({ pageSize: 6 }); if (res.Return.tbodyList.length === 0) return; const reportInstanceList = res.Return.tbodyList.map(item => ({ @@ -194,8 +198,9 @@ const actions = { async updateCmdbMenu({ commit, state, rootState }, { forceUpdate = true } = {}) { await state.gettingModuleList; const cmdbModule = state.moduleList.find(item => item.moduleId === 'cmdb'); - if (!cmdbModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('cmdb')) return; + if (!cmdbModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('cmdb')) || !hasCustomMenuAuthority('cmdb', 'ci-view')) { + return; + } state.gettingCmdbMenu = commonApi.updateCmdbMenu(); const res = await state.gettingCmdbMenu; if (res.Return.length === 0) return; @@ -227,8 +232,9 @@ const actions = { // 巡检结果,需要拿到自定义菜单+巡检结果分类下的其他菜单 await state.gettingModuleList; const inspectModule = state.moduleList.find(item => item.moduleId === 'inspect'); - if (!inspectModule) return; - if (!forceUpdate && state.dynamicMenu.hasOwnProperty('inspect')) return; + if (!inspectModule || (!forceUpdate && state.dynamicMenu.hasOwnProperty('inspect')) || !hasCustomMenuAuthority('inspect', 'recent-issues')) { + return; + } const res = await commonApi.updateInspectMenu(); let recentIssuesRouteList = []; // 最新问题路由列表 if (res.Return && res.Return.length > 0) { @@ -433,6 +439,20 @@ function sortMenuList(menuList, module, configList) { return menuGroupList; } +function hasCustomMenuAuthority(moduleName, menuName) { + // 判断自定义菜单权限 + const routerConfig = getRouterConfig(); + const moduleRoutes = routerConfig[moduleName] || []; + + for (let item of moduleRoutes) { + if (item && item.name && item.name === menuName && item.meta && item.meta.authority) { + return hasAuthNoMenu(item, commonStore.getters.userAuthList); + } + } + + return true; +} + export default { state, getters, diff --git a/src/views/pages/process/leftmenu/menu.vue b/src/views/pages/process/leftmenu/menu.vue index 218e185a..817daf23 100644 --- a/src/views/pages/process/leftmenu/menu.vue +++ b/src/views/pages/process/leftmenu/menu.vue @@ -7,9 +7,9 @@ -
{{ $t('router.process.workordercenter') }}
-
-