【BootStrap】------- BootStrap treegrid 多表数据关联整合显示树结构展示

1.bootstrap treegrid  多表数据关联整合显示树结构展示(代码只是关键的部分呀)这是按我需求所写的实例代码;你只要看懂其中的逻辑你就可以自己写了哟。

                         //价格目录
                        var JgzbData = sourceData.json.Data.zbdata;//后台数据赋值
                        var JgzibData = sourceData.json.Data.zibdata;//后台数据赋值
                        // 结算
                        var TjzbData = sourceData.json.Data.jszbdata;//后台数据赋值
                        var TjzibData = sourceData.json.Data.jszibdata;//后台数据赋值

                        //价格目录主子表合并树
                        for (var i = 0; len = JgzbData.length, i < len; i++) {
                            JgzbData[i]["children"] = [];
                            for (var j = 0; lens = JgzibData.length, j < lens; j++) {
                                if (JgzbData[i]["ID"] == JgzibData[j]["FID"]) {
                                    JgzbData[i]["children"].push(JgzibData[j]);
                                }
                            }
                        }

                            // 把相同的部门合并
                            var tjzbdata = [];
                            var trues = true;
                            var dizeng = 0;
                            for (var i = 0; len = TjzbData.length, i < len; i++) {
                                if (tjzbdata.length > 0) {
                                    trues = true;
                                    for (var j = 0; lens = tjzbdata.length, j < lens; j++) {
                                        if (TjzbData[i]["支出部门编码"] == tjzbdata[j]["支出部门编码"]) {
                                            tjzbdata[j][TjzbData[i]["月"]] = TjzbData[i]["金额"];
                                            trues = false;
                                        }
                                    }
                                    if (trues) {
                                        TjzbData[i]["pid"] = 0;
                                        // TjzbData[i]["id"] = parseInt(TjzbData[i]["支出部门编码"], 16);
                                        TjzbData[i]["id"] = Number(TjzbData[i]["支出部门编码"]);
                                     
                                        TjzbData[i][TjzbData[i]["月"]] = TjzbData[i]["金额"];
                                        TjzbData[i]["项目名称"] = "";
                                        tjzbdata.push(TjzbData[i]);
                                        trues = true;
                                    }

                                } else {
                                    TjzbData[i]["pid"] = 0;
                                    // TjzbData[i]["id"] = parseInt(TjzbData[i]["支出部门编码"], 16);
                                    TjzbData[i]["id"] = Number(TjzbData[i]["支出部门编码"]);
                                    TjzbData[i][TjzbData[i]["月"]] = TjzbData[i]["金额"];
                                    TjzbData[i]["项目名称"] = "";
                                    tjzbdata.push(TjzbData[i]);
                                }

                            }
                            //过滤 所有结算单据子表数据
                            var tjzidata = [];//重新组合子表数据
                            var Ttrues = true;
                            for (var i = 0; len = TjzbData.length, i < len; i++) {
                                for (var j = 0; lens = TjzibData.length, j < lens; j++) {
                                    if (TjzbData[i]["ID"] == TjzibData[j]["FID"]) {
                                        if (tjzidata.length > 0) {
                                            Ttrues = true;
                                            for (var p = 0; lenp = tjzidata.length, p < lenp; p++) {
                                                if (tjzidata[p]["支出部门编码"] == TjzbData[i]["支出部门编码"] && tjzidata[p]["项目名称ID"] == TjzibData[j]["项目名称ID"]) {
                                                    tjzidata[p][TjzbData[i]["月"]] = TjzibData[j]["结算金额"];
                                                    Ttrues = false;
                                                }
                                            }
                                            if (Ttrues) {
                                                var data = {};
                                                data["支出部门编码"] = TjzbData[i]["支出部门编码"];
                                                data["项目名称"] = TjzibData[j]["项目名称"];
                                                data["项目名称ID"] = TjzibData[j]["项目名称ID"];
                                                data["ID"] = TjzibData[j]["ID"];
                                                data[TjzbData[i]["月"]] = TjzibData[j]["结算金额"];
                                                data["金额"] = TjzibData[j]["结算金额"];
                                                tjzidata.push(data);
                                                Ttrues = true;
                                            }
                                        } else {
                                            var data = {};
                                            data["支出部门编码"] = TjzbData[i]["支出部门编码"];
                                            data["项目名称"] = TjzibData[j]["项目名称"];
                                            data["项目名称ID"] = TjzibData[j]["项目名称ID"];
                                            data["ID"] = TjzibData[j]["ID"];
                                            data[TjzbData[i]["月"]] = TjzibData[j]["结算金额"];
                                            data["金额"] = TjzibData[j]["结算金额"];
                                            tjzidata.push(data);
                                        }
                                    }
                                }
                            }
                            //结算主表与结算项目组合
                            var tjzidatalist = [];
                            for (var i = 0; len = tjzbdata.length, i < len; i++) {
                                for (var j = 0; lens = tjzidata.length, j < lens; j++) {
                                    if (tjzbdata[i]["支出部门编码"] == tjzidata[j]["支出部门编码"]) {
                                        tjzidata[j]['pid'] = Number(tjzbdata[i]["id"]);
                                        tjzidata[j]["id"] = parseInt(tjzidata[j]["ID"], 16);
                                        tjzidatalist.push(tjzidata[j]);
                                    }
                                }
                            }
                            //价格目录主子树和结算管理子表对应结合
                            var TjzbDataW = [];
                            for (var j = 0; lenv = tjzidatalist.length, j < lenv; j++) {
                                for (var i = 0; len = JgzbData.length, i < len; i++) {
                                    if (tjzidatalist[j]["项目名称ID"] != undefined && tjzidatalist[j]["项目名称ID"] != "undefined") {
                                        if (tjzidatalist[j]["项目名称ID"] == JgzbData[i]["ID"]) {
                                            if (JgzbData[i]["children"].length > 0) {
                                                for (var p = 0; lenp = JgzbData[i]["children"].length, p < lenp; p++) {
                                                    var datachildren = {};
                                                    //  JgzbDataTwo[i]["children"][p]["id"] = JgzbDataTwo[i]["children"][p]["ID"];
                                                    datachildren["id"] = parseInt(JgzbData[i]["children"][p]["FID"], 16);
                                                    datachildren["pid"] = tjzidatalist[j]["id"];
                                                    datachildren["项目名称"] = JgzbData[i]["children"][p]["客体类型"];
                                                    for (var w = 1; w <= endyear; w++) {
                                                        if (w >= startyear && w <= endyear) {
                                                            if (w < 10) {
                                                                w = "0" + w;
                                                            }
                                                            if (tjzidatalist[j][w] != undefined && tjzidatalist[j][w] != "undefined") {
                                                                // console.log(tjzidatalist[w]);
                                                                datachildren[w] = parseFloat((tjzidatalist[j][w] / JgzbData[i]["单价"]) * JgzbData[i]["children"][p]["数值"]).toFixed(2);
                                                            }

                                                        }
                                                    }
                                                    TjzbDataW.push(datachildren);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            DataTable = tjzbdata.concat(tjzidatalist);//结算主表与结算子表
                            DataTable = DataTable.concat(TjzbDataW);//结算主表与结算子表与价格主子表数据结合;
                            for (var i = 0; len = DataTable.length, i < len; i++) {
                                var moeneycount = 0;
                                for (var w = 1; w <= endyear; w++) {
                                    if (w >= startyear && w <= endyear) {
                                        if (w < 10) {
                                            w = "0" + w;
                                        }
                                        if (DataTable[i][w] != undefined && DataTable[i][w] != "undefined") {
                                            // console.log(tjzidatalist[w]);
                                            moeneycount = parseFloat(Number(moeneycount) + Number(DataTable[i][w])).toFixed(2);
                                        }
                                    }
                                    DataTable[i]["总金额"] = moeneycount;
                                }
                            }
                        //总金额合计
                        var zonghejimoney = 0;
                        var LastArray = {
                            项目名称: "总计",
                            pid: 0,
                            id: 1
                        };
                        //总金额汇总
                        for (var i = 0; len = DataTable.length, i < len; i++) {
                            if (DataTable[i]["pid"] === 0) {
                                zonghejimoney = Number(zonghejimoney) + Number(DataTable[i]["总金额"]);
                            }
                        }
                        //所有矿对应一个月所有合计
                        for (var w = 1; w <= endyear; w++) {
                                    var moeneycount = 0;  
                                    if (w >= startyear && w <= endyear) {
                                        if (w < 10) {
                                            w = "0" + w;
                                        }
                                        for (var i = 0; lens = DataTable.length, i < lens; i++) {
                                            if (DataTable[i]["pid"] === 0) {
                                                  if (DataTable[i][w] != undefined && DataTable[i][w] != "undefined") {
                                                moeneycount = parseFloat(Number(moeneycount) + Number(DataTable[i][w])).toFixed(2);
                                            }
                                            }
                                        }
                                        LastArray[w] = moeneycount;//所有矿对应一个月所有合计
                                    }
                         }
                        LastArray["总金额"] = parseFloat(zonghejimoney).toFixed(2);
                        DataTable.push(LastArray);

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰要做大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值