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) } } }