Tree data, building related structures

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
      );
    }
  }
}

Guess you like

Origin blog.csdn.net/qq_44871531/article/details/129200776