From f92324b5cdc5ecb05c5b56af9fc907c3ffe270c7 Mon Sep 17 00:00:00 2001 From: danshihao Date: Thu, 18 Jan 2024 11:02:38 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=BF=AB=E6=8D=B7=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=B7=B2=E5=8B=BE=E9=80=89=E4=BD=86=E6=B2=A1=E6=9C=89=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=9A=84=E5=A4=84=E7=90=86=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/dashboard/modules/MenuManageModal.vue | 16 +++++++++++++--- src/views/dashboard/modules/QuickEnterCard.vue | 9 ++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/views/dashboard/modules/MenuManageModal.vue b/src/views/dashboard/modules/MenuManageModal.vue index 4c1b01aa..194b9a35 100644 --- a/src/views/dashboard/modules/MenuManageModal.vue +++ b/src/views/dashboard/modules/MenuManageModal.vue @@ -47,6 +47,8 @@ export default { dataSource: [], // 已选数据id targetKeys: [], + // 已勾选的菜单 + selectedMenu: [], // 打开弹框传入的ids ids: [], // 多语言 @@ -63,10 +65,12 @@ export default { * 打开弹框 * @param ids - 已经选择的ids */ - show (ids) { + show (ids, selectedMenu) { this.visible = true // 清空之前的数据,然后重新请求 this.dataSource = [] + // 存储已经勾选的菜单 + this.selectedMenu = selectedMenu this.targetKeys = ids || [] this.ids = ids this.getMenuList() @@ -76,8 +80,14 @@ export default { this.loading = true getQuickEntryList().then(res => { if (res.success) { - // 穿梭框需要这个格式否则会报错 - this.dataSource = res.result || [] + // 处理之前有权限,后来没有权限 + // 没有权限的菜单接口不会返回,但是已经勾选的菜单需要显示出来 + const data = res.result || [] + // 所有有权限的菜单id + const hasPermissionIds = data.map(item => item.id) + // 获取已选择但没有权限的列表 + const notPermissionMenu = this.selectedMenu.filter(item => !hasPermissionIds.includes(item.id)) + this.dataSource = data.concat(notPermissionMenu) } else { this.$message.warning(res.message) } diff --git a/src/views/dashboard/modules/QuickEnterCard.vue b/src/views/dashboard/modules/QuickEnterCard.vue index ad47583d..d7d45fe0 100644 --- a/src/views/dashboard/modules/QuickEnterCard.vue +++ b/src/views/dashboard/modules/QuickEnterCard.vue @@ -118,7 +118,14 @@ export default { // 菜单管理 menuManage () { const ids = this.dataSource.map(item => item.id) - this.$refs.menuManageModal.show(ids) + // 已经选中的菜单(之前有权限,后来没有了,这时接口不会返回没权限的菜单导致取消不了,需要前端处理) + const selectedMenu = this.dataSource.map(item => { + return { + id: item.id, + name: item.name + } + }) + this.$refs.menuManageModal.show(ids, selectedMenu) } } }