前台转换后台传来的数据,转成easyui-tree所需格式

          作为一个java开发者,前台转换对我还是有点挑战的,难得写出来还是记录一下吧。

          等下直接贴代码(省时间),因业务需求,不是根据id作为父级id,而是当某个字段相同时,其他字段不同的为其子节点。

//整理数据,使其成为树形结构
function initNodes(data, workingPlaceId, treeType) { //treeType是为了满足几种情况,可以选择性看
    //定义数组,存放构建树所需的json格式
    var trees = [];
    var parentNode = null;

    var set = new Set();
    for (var i = 0; i < data.length; i++) {
        //将data中的所有品名放入set中进行去重(原来js也是可以set去重的,原谅我之前水准更低。。)
        set.add(data[i].MaterialName);
    }

    //定义索引
    var index = 0;
    var isPut = true;

    var materialManagementId = "";
    var materialName = "";
    var brand = "";
    var modelNumber = "";
    var standard = "";
    var enumName = "";
    var warningLine = "";
    //遍历去重后的父节点并将其放入树中
    set.forEach(function (element, sameElement, set) {
        trees.push({
            id: workingPlaceId,
            text: element
        });
        //遍历data数据
        for (var i = 0; i < data.length; i++) {
            //循环获取当物料名相同时的子节点
            materialManagementId = data[i].MaterialManagementId;
            materialName = data[i].MaterialName;
            brand = data[i].Brand;
            modelNumber = data[i].ModelNumber;
            standard = data[i].Standard;
            enumName = data[i].EnumName;
            warningLine = data[i].WarningLine;
            if(brand == undefined){
                brand = "";
            }
            if(modelNumber == undefined){
                modelNumber = "";
            }
            if(standard == undefined){
                standard = "";
            }
            if(enumName == undefined){
                enumName = "";
            }
            if (element == materialName) { //这就是我业务上的需求,正常情况你们可以直接id = pid 就搞定了
                //获取父节点的节点
                parentNode = trees[index];
                //当父节点不为空或未定义时
                if (parentNode != "" && parentNode != undefined) {
                    if (treeType == 0) { //看一个type就行了
                        //添加子节点
                        addNodeToChildren(parentNode, {
                            id: workingPlaceId,
                            text: "品牌:" + brand + "&nbsp;,&nbsp;" + "型号:" + modelNumber + "&nbsp;,&nbsp;" + "规格:" + standard + "&nbsp;,&nbsp;" + "类型:" + enumName + "&nbsp;,&nbsp;" + "警戒线:" + warningLine,
                            materialManagementId : materialManagementId
                        });
                    }
                    if (treeType == 1) {
                        //物料主键,之后作于形参传出

                        //添加子节点
                        addNodeToChildren(parentNode, {
                            id: workingPlaceId,
                            text: "品牌:" + brand + "&nbsp;,&nbsp;" + "型号:" + modelNumber + "&nbsp;,&nbsp;" + "规格:" + standard + "&nbsp;,&nbsp;" + "类型:" + enumName + "---------" + "<button id='addDtailNode'  onclick='addDtailNode(" + materialManagementId + "," + workingPlaceId + ")' style='font-size: 15px;'>=></button>"
                        });
                    }
                    if (treeType == 2) {
                        //物料主键,之后作于形参传出

                        //添加子节点
                        addNodeToChildren(parentNode, {
                            id: workingPlaceId,
                            text: "品牌:" + brand + "&nbsp;,&nbsp;" + "型号:" + modelNumber + "&nbsp;,&nbsp;" + "规格:" + standard + "&nbsp;,&nbsp;" + "类型:" + enumName + "---------" + "<button id='removeDetailNode'  onclick='removeDetailNode("+materialManagementId+","+workingPlaceId+")' style='font-size: 15px;'><=</button>"
                        });
                    }
                }
            }
        }
        //索引自增
        index++;
    });
    return trees;
}

//给子节点添加数据
function addNodeToChildren(parentNode, node) {
    if (parentNode.children) {
        //如果子节点有数据,添加
        parentNode.children.push(node);
    } else {
        parentNode.children = [ node ];
    }
}

就这样,希望下次轻松点~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值