SOURCE

const treeSeData = [
    { ptype_id: 0, type_id: 1, type_name: '一级分类1', ptype_name: '0', type_dept: '总公司', type_desc: '总公司', type_proc: '总公司流程', type_sel: '郑飞' },
    { ptype_id: 1, type_id: 2, type_name: '二级分类1', ptype_name: '一级分类1', type_dept: '锦源公司', type_desc: '锦源子公司', type_proc: '子公司流程', type_sel: '陆玲' },
    { ptype_id: 0, type_id: 3, type_name: '一级分类2', ptype_name: '0', type_dept: '集团公司', type_desc: '集团投资公司', type_proc: '集团投资公司', type_sel: '陈俭东' },
    { ptype_id: 3, type_id: 4, type_name: '二级分类2', ptype_name: '一级分类2', type_dept: '综合管理公司', type_desc: '综合管理公司', type_proc: '综合管理公司', type_sel: '罗文聪' },
    { ptype_id: 1, type_id: 5, type_name: '二级分类3', ptype_name: '二级分类3', type_dept: '众德公司', type_desc: '众德公司', type_proc: '众德公司', type_sel: '段军' }
]


const toTree = (data) => {
    let map = {};
    data.forEach(function (it) {
        map[it.type_id] = it;
    })
    let treeData = [];
    data.forEach(function (it) {
        let parent = map[it.ptype_id];
        if (parent) {
            ((parent.children) || (parent.children = [])).push(it);
        } else {
            treeData.push(it);
        }
    });
    return treeData;
}

console.log(toTree(treeSeData))
function toTree(data) {
       let result = []
       if (!Array.isArray(data)) {
         return result
       }
       data.forEach(item => {
           delete item.children;
       });
       let map = {};
       data.forEach(item => {
           map[item.id] = item;
       });
       data.forEach(item => {
         let parent = map[item.pid];
         if (parent) {
             (parent.children || (parent.children = [])).push(item);
         } else {
             result.push(item);
         }
       });
       return result;
     }
     console.log(toTree(source)
console 命令行工具 X clear

                    
>
console