68 lines
1.7 KiB
Java
68 lines
1.7 KiB
Java
// 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.title = `${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 if (node.children) {
|
|
const childNodes = findNodes(id, node.children);
|
|
for (let j = 0; j < childNodes.length; j += 1) {
|
|
res.push(childNodes[j]);
|
|
}
|
|
}
|
|
}
|
|
return res;
|
|
}
|
|
|
|
export function findAllNodes(resourceIds, nodes) {
|
|
console.log('resourceIds', resourceIds);
|
|
|
|
const findNodesArray = [];
|
|
for (let i = 0; i < resourceIds.length; i += 1) {
|
|
const findNodesData = findNodes(resourceIds[i], nodes);
|
|
console.log('findNodesData', findNodesData);
|
|
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;
|
|
}
|