interface zTreeNode {
id: number
pid?: number
}
interface childrenTreeNode {
id: number
children?: childrenTreeNode[]
}
const zTreeToChildrenTree = (zTreeArray:zTreeNode[]) => {
const nodeMap = new Map();
zTreeArray.forEach((node) => {
nodeMap.set(node.id, { ...node, children: [] });
});
const rootNodes: childrenTreeNode[] = [];
zTreeArray.forEach((node) => {
const currentNode = nodeMap.get(node.id);
if (node.pid === null || node.pid === undefined) {
rootNodes.push(currentNode);
} else {
const parentNode = nodeMap.get(node.pid);
if (parentNode) {
parentNode.children.push(currentNode);
}
}
});
return rootNodes;
};
const data = [
{
"code": "anti",
"icon": "folder",
"id": 1,
"name": "防伪管理",
"pid": 0
},
{
"code": "fnce",
"icon": "folder",
"id": 113,
"name": "财务管理",
"pid": 0
},
{
"code": "pm",
"icon": "folder",
"id": 519,
"name": "生产管理",
"pid": 0
},
{
"code": "ws",
"icon": "folder",
"id": 597,
"name": "车间订单",
"pid": 519
},
{
"code": "apply",
"icon": "file",
"id": 2,
"name": "防伪码申请",
"pid": 1
},
{
"code": "code",
"icon": "file",
"id": 7,
"name": "防伪数据",
"pid": 1
},
{
"code": "log",
"icon": "file",
"id": 12,
"name": "防伪日志表",
"pid": 1
},
{
"code": "report",
"icon": "file",
"id": 17,
"name": "检验报告",
"pid": 1
},
{
"code": "traced",
"icon": "file",
"id": 22,
"name": "溯源信息",
"pid": 1
},
{
"code": "eam",
"icon": "folder",
"id": 27,
"name": "资产及设备管理",
"pid": 0
},
{
"code": "accept",
"icon": "file",
"id": 28,
"name": "设备工作受理单",
"pid": 27
},
{
"code": "part",
"icon": "folder",
"id": 33,
"name": "备件领料",
"pid": 28
},
{
"code": "dev",
"icon": "file",
"id": 38,
"name": "资产及设备清单",
"pid": 27
},
{
"code": "attr",
"icon": "folder",
"id": 43,
"name": "设备属性",
"pid": 38
},
{
"code": "check",
"icon": "folder",
"id": 48,
"name": "设备点检",
"pid": 38
},
{
"code": "lists",
"icon": "folder",
"id": 53,
"name": "点检明细",
"pid": 48
},
{
"code": "part",
"icon": "folder",
"id": 58,
"name": "设备备件",
"pid": 38
},
{
"code": "std",
"icon": "folder",
"id": 63,
"name": "点检标准",
"pid": 38
},
{
"code": "uses",
"icon": "folder",
"id": 68,
"name": "借用登记",
"pid": 38
},
{
"code": "log",
"icon": "file",
"id": 73,
"name": "资产日志",
"pid": 27
},
{
"code": "pandian",
"icon": "file",
"id": 78,
"name": "设备盘点",
"pid": 27
},
{
"code": "lists",
"icon": "folder",
"id": 83,
"name": "盘点明细",
"pid": 78
},
{
"code": "report",
"icon": "file",
"id": 88,
"name": "资产报表",
"pid": 27
},
{
"code": "lists",
"icon": "folder",
"id": 93,
"name": "报表明细",
"pid": 88
},
{
"code": "transfer",
"icon": "file",
"id": 98,
"name": "资产调拨",
"pid": 27
},
{
"code": "type",
"icon": "file",
"id": 103,
"name": "资产及设备类型",
"pid": 27
},
{
"code": "work",
"icon": "file",
"id": 108,
"name": "设备运行管理",
"pid": 27
},
{
"code": "account",
"icon": "file",
"id": 114,
"name": "账户管理",
"pid": 113
},
{
"code": "arrear",
"icon": "file",
"id": 119,
"name": "客户欠款流程",
"pid": 113
},
{
"code": "balance",
"icon": "file",
"id": 124,
"name": "财务期初表",
"pid": 113
},
{
"code": "budget",
"icon": "file",
"id": 129,
"name": "财务预算",
"pid": 113
},
{
"code": "flow",
"icon": "folder",
"id": 134,
"name": "预算申请",
"pid": 129
},
{
"code": "lists",
"icon": "folder",
"id": 139,
"name": "预算明细",
"pid": 129
},
{
"code": "cred",
"icon": "file",
"id": 144,
"name": "会计凭证表",
"pid": 113
},
{
"code": "lists",
"icon": "folder",
"id": 149,
"name": "会计凭证明细表",
"pid": 144
},
{
"code": "daybook",
"icon": "file",
"id": 154,
"name": "出纳日记账",
"pid": 113
},
{
"code": "lists",
"icon": "folder",
"id": 159,
"name": "日记账明细",
"pid": 154
},
{
"code": "log",
"icon": "file",
"id": 164,
"name": "财务日志表",
"pid": 113
},
{
"code": "month",
"icon": "file",
"id": 169,
"name": "月结期间",
"pid": 113
},
{
"code": "lists",
"icon": "folder",
"id": 174,
"name": "月结清单",
"pid": 169
},
{
"code": "stock",
"icon": "folder",
"id": 179,
"name": "月末库存",
"pid": 169
},
{
"code": "para",
"icon": "file",
"id": 184,
"name": "财务参数",
"pid": 113
},
{
"code": "project",
"icon": "file",
"id": 189,
"name": "财务项目",
"pid": 113
},
{
"code": "rptcol",
"icon": "file",
"id": 194,
"name": "财务报表列信息",
"pid": 113
},
{
"code": "rptinfo",
"icon": "file",
"id": 199,
"name": "财务报表信息",
"pid": 113
},
{
"code": "rptsub",
"icon": "file",
"id": 204,
"name": "财务报表项目与会计科目关系表",
"pid": 113
},
{
"code": "subject",
"icon": "file",
"id": 209,
"name": "会计科目表",
"pid": 113
},
{
"code": "hr",
"icon": "folder",
"id": 214,
"name": "人力管理",
"pid": 0
},
{
"code": "attd",
"icon": "folder",
"id": 215,
"name": "考勤管理",
"pid": 214
},
{
"code": "abs",
"icon": "file",
"id": 216,
"name": "请假数据",
"pid": 215
},
{
"code": "consume",
"icon": "file",
"id": 221,
"name": "消费刷卡数据",
"pid": 215
},
{
"code": "dev",
"icon": "file",
"id": 226,
"name": "设备管理",
"pid": 215
},
{
"code": "instruct",
"icon": "folder",
"id": 231,
"name": "设备指令",
"pid": 226
},
{
"code": "log",
"icon": "folder",
"id": 236,
"name": "设备日志",
"pid": 226
},
{
"code": "grp",
"icon": "file",
"id": 241,
"name": "设备组管理",
"pid": 215
},
{
"code": "dev",
"icon": "folder",
"id": 246,
"name": "绑定员工",
"pid": 241
},
{
"code": "hols",
"icon": "folder",
"id": 251,
"name": "节假日",
"pid": 241
},
{
"code": "time",
"icon": "folder",
"id": 256,
"name": "时间设置",
"pid": 241
},
{
"code": "user",
"icon": "folder",
"id": 261,
"name": "绑定员工",
"pid": 241
},
{
"code": "guard",
"icon": "file",
"id": 266,
"name": "门禁刷卡数据",
"pid": 215
},
{
"code": "hols",
"icon": "file",
"id": 271,
"name": "节假日",
"pid": 215
},
{
"code": "leak",
"icon": "file",
"id": 276,
"name": "签卡数据",
"pid": 215
},
{
"code": "log",
"icon": "file",
"id": 281,
"name": "考勤日志表",
"pid": 215
},
{
"code": "over",
"icon": "file",
"id": 286,
"name": "加班数据",
"pid": 215
},
{
"code": "prod",
"icon": "file",
"id": 291,
"name": "IC卡计件工时",
"pid": 215
},
{
"code": "recharge",
"icon": "file",
"id": 296,
"name": "工卡消费充值",
"pid": 215
},
{
"code": "records",
"icon": "file",
"id": 301,
"name": "考勤数据",
"pid": 215
},
{
"code": "regmeal",
"icon": "file",
"id": 306,
"name": "报餐数据",
"pid": 215
},
{
"code": "summary",
"icon": "file",
"id": 311,
"name": "考勤汇总表",
"pid": 215
},
{
"code": "list",
"icon": "folder",
"id": 316,
"name": "考勤汇总明细",
"pid": 311
},
{
"code": "watch",
"icon": "file",
"id": 321,
"name": "保安巡更数据",
"pid": 215
},
{
"code": "position",
"icon": "folder",
"id": 326,
"name": "巡更点数据",
"pid": 321
},
{
"code": "work",
"icon": "file",
"id": 331,
"name": "工作排班方案管理",
"pid": 215
},
{
"code": "calendar",
"icon": "folder",
"id": 336,
"name": "工作排班日历",
"pid": 331
},
{
"code": "team",
"icon": "folder",
"id": 341,
"name": "工作班段",
"pid": 331
},
{
"code": "user",
"icon": "folder",
"id": 346,
"name": "工作排班人员",
"pid": 331
},
{
"code": "log",
"icon": "file",
"id": 351,
"name": "人事日志表",
"pid": 214
},
{
"code": "pers",
"icon": "folder",
"id": 356,
"name": "人事管理",
"pid": 214
},
{
"code": "personnel",
"icon": "file",
"id": 357,
"name": "员工信息管理",
"pid": 356
},
{
"code": "adjust",
"icon": "folder",
"id": 362,
"name": "调整工作记录",
"pid": 357
},
{
"code": "contract",
"icon": "folder",
"id": 367,
"name": "合同管理",
"pid": 357
},
{
"code": "family",
"icon": "folder",
"id": 372,
"name": "家庭成员",
"pid": 357
},
{
"code": "hols",
"icon": "folder",
"id": 377,
"name": "假期管理",
"pid": 357
},
{
"code": "teach",
"icon": "folder",
"id": 382,
"name": "教育/培训经历",
"pid": 357
},
{
"code": "tmp",
"icon": "folder",
"id": 387,
"name": "生物识别模板",
"pid": 357
},
{
"code": "work",
"icon": "folder",
"id": 392,
"name": "工作经历",
"pid": 357
},
{
"code": "wage",
"icon": "folder",
"id": 397,
"name": "薪资管理",
"pid": 214
},
{
"code": "aperiod",
"icon": "file",
"id": 398,
"name": "工资期间表",
"pid": 397
},
{
"code": "detailed",
"icon": "file",
"id": 403,
"name": "日常应得与扣款明细",
"pid": 397
},
{
"code": "fixed",
"icon": "file",
"id": 408,
"name": "固定明细",
"pid": 397
},
{
"code": "log",
"icon": "file",
"id": 413,
"name": "工资日志表",
"pid": 397
},
{
"code": "rbtp",
"icon": "file",
"id": 418,
"name": "计件工资数据",
"pid": 397
},
{
"code": "salary",
"icon": "file",
"id": 423,
"name": "工资表管理",
"pid": 397
},
{
"code": "lists",
"icon": "folder",
"id": 428,
"name": "工资表明细",
"pid": 423
},
{
"code": "scheme",
"icon": "file",
"id": 433,
"name": "工资计算方案",
"pid": 397
},
{
"code": "formula",
"icon": "folder",
"id": 438,
"name": "工资计算方案公式",
"pid": 433
}]
const result = zTreeToChildrenTree(data);
console.log(result);