layui动态加载表格列

该博客主要介绍了一段JavaScript代码,用于从接口获取数据并动态构建表格,包括行和列的动态加载。代码中,首先检查输入日期,然后调用接口获取数据。在数据处理阶段,将接口返回的`unitReservedTotal`数组作为动态列,并计算合计行的总和。同时,将合计行添加到数据数组末尾。最后,使用laytable库动态生成带有合计行的表格,突出显示合计行并调整表格样式。
摘要由CSDN通过智能技术生成

首先根据接口返回的数据拼装成动态表格加载的格式,我这里这个表格部分列数据需要动态加载,行需要动态加载,最后还有一行合计,合计行取接口字段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);

          

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值