From 7a71dd49b0258845593fb00176235e074f43c321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=B4=87=E6=A0=8B?= <786631302qq.com> Date: Wed, 26 Aug 2020 10:25:55 +0800 Subject: [PATCH] =?UTF-8?q?message=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 5 +++-- src/utils/index.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/App.vue b/src/App.vue index 39041f6..f396465 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,8 +16,9 @@ export default { item => item.rights === "duojiSystem" ) ) { - let authList = this.translateDataToTree( - e.data.userInfo.permissionList + let authList = this.$utils.translateDataToTree( + e.data.userInfo.permissionList, + 'duojiSystem' ); e.data.userInfo.permissionList = this.$utils.treeToArray( authList diff --git a/src/utils/index.js b/src/utils/index.js index b1f2c05..c5b37e7 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -240,5 +240,34 @@ export default { newArr.push(item); }); return newArr; + }, + translateDataToTree(data, key) { + let parents = data.filter(value => value.parentId === 0); + let children = data.filter(value => value.parentId !== 0); + let translator = (parents, children) => { + parents && + parents.forEach(parent => { + children && + children.forEach((current, index) => { + if (current.parentId === parent.id) { + // 深拷贝 + let temp = JSON.parse( + JSON.stringify(children) + ); + // 减少递归时节点数 + temp.splice(index, 1); + // 加入父节点的children + parent.children && parent.children.length + ? parent.children.push(current) + : (parent.children = [current]); + // 将匹配的子节点作为下一次的父节点开始滚雪球 + translator([current], temp); + } + }); + }); + }; + translator(parents, children); + parents = parents.filter(item => item.rights === key); + return parents && parents.length && parents[0].children; } }