Call
//Recursive function cannot set the return value, you need to set a new variable record, the following variable represents the line number
const p = { lineno: 0 };
// Coding, hierarchy, order, name reassignment
//Parameter 1: Tree Data, parameter 2: start code (1, 1.1...),
// parameter 3: level, parameter 4: start index value,
// parameter 5: adjacent parent id, parameter 6: self id (unique identifier),
//parameter seven: row number (the row where the looped data display belongs to)
resigncodeandparentid(temlist, "", 0, 0, 0, p);
------------------------------------------------------------------------------------
// 定义:编码重新赋值 在插入或删除后
function resigncodeandparentid(
tree: any[],
parentcode: string,
level: number,
startindex: number,
parentid: number,
param: any
): void {
for (let i = startindex; i < tree.length; i++) {
const it = tree[i];
it.fparentid = parentid;
param.lineno++;
it.fsecid = param.lineno;
let pre = "";
if (parentcode) {
pre = parentcode + ".";
}
it.fcode = pre + (i + 1).toString();
it.pid = search.value.pid;
// 顺序重新赋值
it.flevel = level + 1;
it.findex = i + 1;
if (it.fname) {
it.taskname = it.fname;
}
it.badd_ext = true;
it.fleaf = true;
delete it.fhelpcode;
if (it.children && it.children.length > 0) {
it.fleaf = false;
resigncodeandparentid(
it.children,
it.fcode,
it.flevel,
0,
it.fsecid,
param
);
}
}
}