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