From c93b1a67695becbfb79e54c47e231072401b8404 Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Mon, 7 Mar 2022 14:43:03 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=87=AA=E5=8A=A8=E5=8B=BE=E9=80=89=20?= =?UTF-8?q?perm=20view=20node=20(#1388)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: ibuler --- src/views/users/Role/RoleDetail/RoleInfo.vue | 50 ++++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/src/views/users/Role/RoleDetail/RoleInfo.vue b/src/views/users/Role/RoleDetail/RoleInfo.vue index c137dba3a..ae4a59580 100644 --- a/src/views/users/Role/RoleDetail/RoleInfo.vue +++ b/src/views/users/Role/RoleDetail/RoleInfo.vue @@ -61,11 +61,10 @@ export default { }, callback: { onCheck(event, treeId, treeNode) { - const checked = treeNode.checked + // 选择后,更新按钮可用 vm.$nextTick(() => { vm.isDisabled = false }) - console.log('on check click: ', checked) }, onSelected() { } @@ -114,21 +113,42 @@ export default { }) }, methods: { - updatePermissions() { + checkViewNodeIfNeed() { const ztree = this.$refs.tree.zTree - const checkedNodes = ztree.getCheckedNodes() - const permNodes = checkedNodes.filter(node => !node.isParent) - const permIds = permNodes.map(node => node.id) - - const roleDetailUrl = `/api/v1/rbac/${this.object.scope}-roles/${this.object.id}/` - const data = { - permissions: permIds + const viewPermMapper = [ + ['view_console', 'rbac.view_adminview'], + ['view_audit', 'rbac.view_auditview'], + ['view_workspace', 'rbac.view_userview'] + ] + for (const [viewId, permId] of viewPermMapper) { + const viewNode = ztree.getNodeByParam('id', viewId) + const permNode = ztree.getNodeByParam('title', permId) + if (!viewNode || !permNode) { + continue + } + const nodeStatus = viewNode.getCheckStatus() + const viewStatus = nodeStatus.checked || nodeStatus.half + ztree.checkNode(permNode, viewStatus) } - this.$axios.patch(roleDetailUrl, data).then(() => { - this.$message.success(this.$t('common.updateSuccessMsg')) - }).catch(error => { - this.$message.error(this.$t('common.updateErrorMsg') + error) - this.$log.error(error) + return Promise.resolve(true) + }, + updatePermissions() { + this.checkViewNodeIfNeed().then(() => { + const ztree = this.$refs.tree.zTree + const checkedNodes = ztree.getCheckedNodes() + const permNodes = checkedNodes.filter(node => !node.isParent) + const permIds = permNodes.map(node => node.id) + + const roleDetailUrl = `/api/v1/rbac/${this.object.scope}-roles/${this.object.id}/` + const data = { + permissions: permIds + } + this.$axios.patch(roleDetailUrl, data).then(() => { + this.$message.success(this.$t('common.updateSuccessMsg')) + }).catch(error => { + this.$message.error(this.$t('common.updateErrorMsg') + error) + this.$log.error(error) + }) }) } }