当前位置: 代码迷 >> 综合 >> 【BootStrap】------- BootStrap treegrid 多表数据关联整合显示树结构展示
  详细解决方案

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

热度:54   发布时间:2023-12-17 01:54:00.0

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