部门调整为树结构

This commit is contained in:
aixianling
2023-05-25 14:54:46 +08:00
parent 773913ef89
commit 5f8850dc00
6 changed files with 165 additions and 40 deletions

View File

@@ -308,5 +308,31 @@ export default {
qs,
permissions,
copy,
reg
reg,
arr2tree(list, config = {}) {
const {key = 'id', parent = 'parentId', children = 'children'} = config
const result = []
const itemMap = {}
const ids = list?.map(e => `#${e[key]}#`)?.toString()
for (const e of list) {
const id = e[key], pid = e[parent]
itemMap[id] = {...e, [children]: [itemMap[id]?.[children]].flat().filter(Boolean)}
const treeItem = itemMap[id]
if (!!pid && ids.indexOf(`#${pid}#`) > -1) {
if (!itemMap[pid]) {
itemMap[pid] = {
children: []
}
}
itemMap[pid].children.push(treeItem)
} else result.push(treeItem)
}
const removeNullChildren = node => {
if (node[children] && node[children].length > 0) {
node[children].map(c => removeNullChildren(c))
} else delete node[children]
}
result.forEach(removeNullChildren)
return result
}
}