栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

layui动态表头的实现代码

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

layui动态表头的实现代码

又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";
     }
     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"+stotal+""+sumCols+"";
   
   for(var i=0;i" +
    "" +
      ""+
    data[i].renshu+"" +
    ""+data[i].total+ partCols[i] +
    "";
     }
   }
   
 }
 $("#table_status").empty();
 $("#table_status").append(tablex);
   
 },
      error : function() {
 layer.msg('系统异常,请联系管理员!',{icon:2,time:2000});
      }
    });
    
    
  }

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

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";
     }
     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"+stotal+""+sumCols+"";
   
   for(var i=0;i" +
    "" +
      ""+
    data[i].renshu+"" +
    ""+data[i].total+ partCols[i] +
    "";
     }
   }
   
 }
 $("#table_status").empty();
 $("#table_status").append(tablex);
   
 },
      error : function() {
 layer.msg('系统异常,请联系管理员!',{icon:2,time:2000});
      }
    });
    
    
  }

这块是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
],

这个就是动态数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/74165.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号