tree數據扁平化
flatTree(data, treeMap = [], depth = 0) {
if (!(data && data.length)) return;
depth++;
return data.reduce((acc, cur) => {
cur.depth = depth;
acc.push(cur);
if (cur.children && cur.children.length) {
this.flatTree(cur.children, treeMap, depth);
}
return acc;
}, treeMap);
}
tree 鋪平方法
const getNodeMap = (node, parentNode) => {
node.parentNode = parentNode;
const nodeMap = [node];
if (node.children && node.children.length) {
node.children.forEach(item => nodeMap.push(...getNodeMap(item, node)));
}
return nodeMap;
};
export const getTreeMap = tree => {
if (!(tree instanceof Array)) return;
const treeMap = [];
tree.forEach(node => {
treeMap.push(...getNodeMap(node, tree));
});
return treeMap;
};
獲取樹結構下某個字段的集合
const getProvilegeCode = data => {
return data.reduce((acc, { resourceCode, children }) => {
acc.push(resourceCode);
if (children && children.length) acc.push(...getProvilegeCode(children));
return acc;
}, []);
};
const mutations = {
updatePrivilege(state, data) {
if (!(data.privilegeList && data.privilegeList.length)) return;
state.privilegeCode = getProvilegeCode(data.privilegeList);
}
};