资讯专栏INFORMATION COLUMN

layui动态表头

GitCafe / 1127人阅读

摘要:思路是通过将调用接口返回出来的数据,动态的部分放到一个键值对数组下。动态表头就是动态数组的键。当时拼接的是分两步,先是表头,然后是数据。元这块就是动态的数据,表头,总计,具体数据,加到下就行。

又get到一种思路,不光是layui。

外面这层table,就是用原生拼接的。

@Override
    public List> distribution(String begin,String end,String name,String hospitalCode) {
        HashMap params = new HashMap();
        StringBuffer buf = new StringBuffer();
        
        List hRateAllotDepartment = rateAllotDepartmentDao.getRateDepartment(hospitalCode);
        String str1 = "";
        String str2 = "";
        for(int i=0;i=:begin  and g.createDate<=:end and b.name like :name and a.state ="02"  group by b.`id`,d.`id` ) d group by d.productId_ WITH ROLLUP  ");
        if(begin == null || begin.length() == 0){
            begin = "1970-01-01";
        }
        if(end == null || end.length() == 0){
            end = "2099-01-01";
        }
        params.put("begin",begin);
        params.put("end",end);
        params.put("name","%"+name+"%");
        return this.getMapListByMap(buf.toString(), params); 
        
        
    }

可以看到,一开始是有一个list,这个list是医院医生可以配置的科室,这些科室就是动态的。这样一来后台即可得到动态数据。同理,如果在layui时用到page,在这里返回成page类型即可。接下来再看js

function toList(begin,end,name){
        
        console.log(begin);
        console.log(end);
        
        $.ajax({
            url: basePath + "/biz/hospital/rate/allot/list.do",
            data: {
                begin:begin,
                end:end,
                name:name
            },
            type : "post",
            dataType : "json",
            success : function(data) {
                    
                var arrayPrice = new Array();

                for(var i=0;i"+key+"(元)";
                        }
                        if(i==(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
                            sumCols+=""+arrayPrice[i][key]+"";
                        }
                        if(i!=(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
                            partColsStr += ""+arrayPrice[i][key]+"";
                            
                        }
                     
                    }
                    
                    partCols.push(partColsStr);
                    
                }

                var sRenshu = 0;
                var stotal = 0;
                
                var tablex = "";
                
                tablex += "项目名称检查人数金额(元)"+title+"";
                
                if(data!=null && data.length>0){
                    for(var i=0;i总计"+sRenshu+""+stotal+""+sumCols+"";
                    
                    for(var i=0;i"+data[i].name+"" +
                                    "" +
                                        ""+
                                                                                            data[i].renshu+"" +
                                    ""+data[i].total+ partCols[i] +
                                    "";
                        }
                    }
                    
                }
                $("#table_status").empty();
                $("#table_status").append(tablex);
                    
                },
            error : function() {
                layer.msg("系统异常,请联系管理员!",{icon:2,time:2000});
            }
        });
        
        
    }

可以在最上方图看到,有些字段是固定的,但是有些字段是动态的。思路是通过将调用接口返回出来的数据,动态的部分放到一个键值对数组下。这样一来,固定的部分,依然可以用返回的data得到,而动态的部分,用处理的数组循环赋值即可。动态表头就是动态数组的键。数据就是值。

if(key!="name"&&key!="productId_"&&key!="renshu"&&key!="total"){
                        arrayPrice1[key]=data[i][key];
                    }    

这块是name这些的是固定的,就排除掉,然后将数据放到arrayPrice1下再push到数组下。tablex就是表格的html。当时拼接的是分两步,先是表头,然后是数据。有个总计,后来在sql下加了WITH ROLLUP就得到了。

for(var key in arrayPrice[i]){

        
                if(i==0&&(arrayPrice[arrayPrice.length-1][key]!=0)){
                     title+=""+key+"(元)";
                }
                if(i==(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
                    sumCols+=""+arrayPrice[i][key]+"";
                }
                if(i!=(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
                    partColsStr += ""+arrayPrice[i][key]+"";
                    
                }
             
            }
            
           

这块就是动态的数据,title表头,sumCols总计,partColsStr具体数据,加到tablex下就行。以上就是原生的思路。

这块table用到了layui,当时也是看着这个layui动态设置的思路去写的原生。主要思路是:cols是一个数组,通过ajax得到数据后放到数组下,再放到cols下即可。

$.ajax({
    url: basePath + "/biz/hospital/rate/allot/department/getDepartment.do",
    data: {
    
    },
    type : "post",
    dataType : "json",
    success : function(data) {
        mycols[0] =  {field : "nameTrue", title:"姓名", align:"center",width:"120"};
        mycols[1] =  {field : "telephoneTrue", title:"支付手机号", align:"center",width:"120"};
        mycols[2] =  {field : "orderNO", title:"订单号", align:"center",width:"120"};
        mycols[3] =  {field : "createDate", title:"订单创建时间", align:"center",width:"120"};
        mycols[4] =  {field : "modifyDate", title:"订单使用时间", align:"center",width:"120"};
        mycols[5] =  {field : "price", title:"支付金额(元)", align:"center",width:"120"};
        
        for (var i = 0;i < data.length; i++){ 
            var obj = data[i].departmentName;
            if(obj!=0){
                mycols[i+6] = {field : obj, title:obj+"(元)", align:"center",width:"120"};
            }
            
            }
        
    console.log(mycols);
    
    reload();
    
    },
    error : function() {
        layer.msg("系统异常,请联系管理员!",{icon:2,time:2000});
    }
});


以上是ajax调用后处理的数组。下面这些就是table。reload();就是重新渲染。

var options = {
            url: basePath + "/biz/hospital/rate/allot/list_mx.do",
            method: "post",
            where:{
                begin:$("#startDate").val().toString(),
                end:end,
                productId_:$("#productId_").val().toString(),
                orderNO:$("#qorderNO").val().toString(),
                name:$("#qname").val().toString()
            },
            //分页请求参数
            request:{
                pageName: "pageIndex", //页码
                limitName: "limit" //每页多少数据
            },
            //返回的数据格式
            response:{
                 statusName: "status", //数据状态的字段名称,默认:code
                 statusCode: 200, //成功的状态码,默认:0
                 msgName: "message", //状态信息的字段名称,默认:msg
                 countName: "total", //数据总数的字段名称,默认:count
                 dataName: "data" //数据列表的字段名称,默认:data
            },
            //每页10条数据
            limit: 10,
            
            //加载时出现加载条
            loading: true,
            elem: "#data_table",
            cols: [
                mycols
              ],
              

              
            id: "dataTable",
            page: true,
            };
    
    //方法级渲染
    table.render(options);

function reload(){
        
        date = new Date($("#endDate").val());
        
        date=date.setDate(date.getDate()+1);
        date=new Date(date);
    
        datemonth=date.getMonth()+1;      //获取当前月份(0-11,0代表1月)

        end=date.getFullYear()+"-"+datemonth+"-"+date.getDate();
        
        //options.where.departmentId = $("#departmentId").val();
        options.where.begin = $("#startDate").val();
        options.where.end = end;
        options.where.orderNO =  $("#qorderNO").val();;
        options.where.name =  $("#qname").val();;
         
        table.reload("dataTable",options);
        
    }
    

可以看到

cols: [
                mycols
              ],
              

这个就是动态数据。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106849.html

相关文章

  • layui实现动态和静态数据表分页

    开发管理后台是每一个开发人员都要熟悉的一个环节,作为后端程序员,公司的所有机密数据都掌握在我们手上,所以这个时候,如果不是公司的核心成员,是不能接触到某些数据的,这个时候所有的工作都落到了我们的手上,从PS到Linux都需要我们亲历亲为,还好发现了layui这个前端框架,很大程度上减轻了我们的压力. 今天我们先来学习一下layui实现动态数据表,静态数据表,以及表格的分页,其中还涉及到动态刷新数据...

    caige 评论0 收藏0
  • layui实现动态和静态数据表分页

    开发管理后台是每一个开发人员都要熟悉的一个环节,作为后端程序员,公司的所有机密数据都掌握在我们手上,所以这个时候,如果不是公司的核心成员,是不能接触到某些数据的,这个时候所有的工作都落到了我们的手上,从PS到Linux都需要我们亲历亲为,还好发现了layui这个前端框架,很大程度上减轻了我们的压力. 今天我们先来学习一下layui实现动态数据表,静态数据表,以及表格的分页,其中还涉及到动态刷新数据...

    Songlcy 评论0 收藏0
  • layUI做固定表头和左侧一列的

    摘要:最近在写一个复杂表头项目可以上下左右滑动表头和左侧固定的表格。此时需要获取设备的宽度作为横屏时的高度。代码如下获取设备信息定义空变量记录屏幕宽高判断是否是设备,则获取其宽度获取设备高度修改之后测试安卓和下都正常了。 最近在写一个复杂表头项目可以上下左右滑动表头和左侧固定的表格。此时页面要求是要在横屏下查看。在IOS系统下上下是不能滑动的,查其原因是因为在IOS下页面虽然已经被横屏了,但...

    haitiancoder 评论0 收藏0
  • 基于javaweb+jsp的学生成绩管理系统

    基于javaweb+jsp的学生成绩管理系统 JavaWeb JavaBean JSP MVC MySQL Tomcat JavaScript idea eclipse MyEclipse Servlet SSM Maven … 部分代码实现JSP let editIndex = layedit.build('LAY_demo_editor'); ...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<