首先根据接口返回的数据拼装成动态表格加载的格式,我这里这个表格部分列数据需要动态加载,行需要动态加载,最后还有一行合计,合计行取接口字段unitReservedTota数组的total(即对所有unitReserved数组下unitReservedByDate对象中total数据的一个汇总),l如下图
所以将unitReservedTota数组作为动态列遍历,同时将其追加到unitReserved对象最后一条,展示
function reload(){
var startdateVal = $("#startDateTime").val();
var enddateVal = $("#endDateTime").val();
if(!startdateVal){
layer.msg("请输入开始日期!");
return false;
}
if(!enddateVal){
layer.msg("请输入结束日期!");
return false;
}
indexLoading = layer.load(0, {shade: 0.1});
var entity = {};
entity.limitTypeCode = thisTypeCode;
entity.unitCode = $("#unitCode").val()?$("#unitCode").val().trim():null;
entity.startDate = $("#startDateTime").val();
entity.endDate = $("#endDateTime").val();
ajax("post", getDateListPlan, false, JSON.stringify(entity),
function (result) {
if(result.data){
$(".nodata").hide();
queryColumn = result.data.unitReservedTotal
queryData = result.data.unitReserved
for(var i=0;i<queryData.length;i++){
if(queryData[i].unitReservedByDate){
for(var j=0;j<queryData[i].unitReservedByDate.length;j++){
queryData[i][queryData[i].unitReservedByDate[j].limitRoleCode+queryData[i].unitReservedByDate[j].limitRoleResult] = queryData[i].unitReservedByDate[j].total;
}
}
}
console.log(queryData)
let obj = {};
obj.planDate = '合计:';
for(var i=0;i<queryColumn.length;i++){
obj[queryColumn[i].limitRoleCode+queryColumn[i].limitRoleResult] = queryColumn[i].total;
}
if(queryData.length > 0){
queryData.push(obj);
}
dateTableCol();
}else{
$(".layui-border-box").remove();
$(".nodata").show();
layer.close(indexLoading);
}
}
)
}
/**
* 数据表格cols动态变化
* */
function dateTableCol() {
var colsColumn = [
// { type:'numbers', width: 120 },
{ field: 'planDate', title: '日期', align: 'center',
templet: function (d) {
if(d.planDate){
return d.planDate.slice(0,10);
}
}
},
{ field: 'week', title: '星期', align: 'center',
templet: function (d) {
if(d.week==0){
return "星期一";
}else if(d.week==1){
return "星期二";
}else if(d.week==2){
return "星期三";
}else if(d.week==3){
return "星期四";
}else if(d.week==4){
return "星期五";
}else if(d.week==5){
return "星期六";
}else if(d.week==6){
return "星期天";
}else{
return "";
}
}
}
];
for(var i=0;i<queryColumn.length;i++){
var thatColumn = { field: queryColumn[i].limitRoleCode+queryColumn[i].limitRoleResult, title: queryColumn[i].itemName, align: 'center'}
colsColumn.push(thatColumn);
}
var lastOpr = { fixed: 'right', title:'操作', toolbar: '#barOperate', width: 90, align: 'center' };
colsColumn.push(lastOpr);
setTimeout(() => {
laytable.render({
elem: '#tableList',
limit: 99999,
toolbar: '#toolbar',
defaultToolbar: ['exports'],
totalRow: false, //开启合计行
cols: [
colsColumn
],
data: queryData,
done: function(res, curr, count){
var tableView = this.elem.next(); // 当前表格渲染之后的视图
layui.each(queryData, function(i, item){
var thistr = tableView.find('tr[data-index='+i+']');
if(i == queryData.length-1){
thistr.css({'background': '#eee', 'font-weight': 'bold'})
}
})
$(".layui-table").find("tbody").find("tr:last").find("td:nth-child(2)").html("");
$(".layui-table").find("tbody").find("tr:last").find("td:last").html("");
layer.close(indexLoading);
}
})
}, 1000);
}