级联选择器数据处理
由于后台返回的树形数据最后的叶子节点默认children是空数组,elementUI的级联选择框要求叶子节点是null,所以用这个函数处理下数据从而达到组件需求
// 递归处理tree接口,children设置为null
function manageTree(data, setNullFun) {
data.forEach((item) => {
if (item.children && item.children.length) {
manageTree(item.children, setNullFun);
} else {
item.children = null;
if (setNullFun) {
setNullFun(item);
}
}
});
return data;
}
查找递归内父节点数据
/**
*
* @param {元数据} tree
* @param {目标的id} targetId
* @param {返回的命中路径} currentPath
* @param {原数据中匹配targetId的字段} targetIdField
* @returns
*/
export function findNodeAndParents(tree, targetId, currentPath = []) {
for (let i = 0; i < tree.length; i++) {
const node = tree[i];
if (node.id === targetId) {
return [...currentPath, node];
}
if (node.children && node.children.length > 0) {
const foundPath = findNodeAndParents(node.children, targetId, [
...currentPath,
node,
]);
if (foundPath) {
return foundPath;
}
}
}
return null;
}