parent
8c71163907
commit
e35e6309be
@ -0,0 +1,67 @@
|
||||
// tree 工具
|
||||
|
||||
export function buildTreeNode(nodes, titleKey, nodeKey) {
|
||||
return nodes.map(item => {
|
||||
const res = {};
|
||||
if (item.children) {
|
||||
res.children = buildTreeNode(item.children, titleKey, nodeKey);
|
||||
}
|
||||
res.title = `${item.id}-${item[titleKey]}`;
|
||||
res.key = item[nodeKey];
|
||||
return res;
|
||||
});
|
||||
}
|
||||
|
||||
// @primary
|
||||
function findNodes(id, nodes) {
|
||||
const res = [];
|
||||
for (let i = 0; i < nodes.length; i += 1) {
|
||||
const node = nodes[i];
|
||||
if (node.key === id) {
|
||||
res.push(node.key);
|
||||
break;
|
||||
} else {
|
||||
const childNodes = findNodes(id, node.children);
|
||||
if (childNodes.length) {
|
||||
res.push(node.key);
|
||||
for (let j = 0; j < childNodes.length; j += 1) {
|
||||
res.push(childNodes[j]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
export function findAllNodes(resourceIds, nodes) {
|
||||
const findNodesArray = [];
|
||||
for (let i = 0; i < resourceIds.length; i += 1) {
|
||||
const findNodesData = findNodes(resourceIds[i], nodes);
|
||||
if (findNodesData) {
|
||||
for (let j = 0; j < findNodesData.length; j += 1) {
|
||||
const jD = findNodesData[j];
|
||||
if (findNodesArray.indexOf(jD) === -1) {
|
||||
findNodesArray.push(jD);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return findNodesArray;
|
||||
}
|
||||
|
||||
export function findCheckedKeys(nodes) {
|
||||
let res = [];
|
||||
for (let i = 0; i < nodes.length; i += 1) {
|
||||
const node = nodes[i];
|
||||
if (node.children) {
|
||||
const findChildrenNodes = findCheckedKeys(node.children);
|
||||
if (findChildrenNodes) {
|
||||
res = res.concat(findChildrenNodes);
|
||||
}
|
||||
} else if (node.assigned === true) {
|
||||
res.push(node.id);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
Loading…
Reference in new issue