最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

layui动态表头的实现代码

来源:懂视网 责编:小采 时间:2020-11-27 21:51:57
文档

layui动态表头的实现代码

layui动态表头的实现代码:又get到一种思路,不光是layui。 外面这层table,就是用原生拼接的。 @Override public List<Map<String, Object>> distribution(String begin,String end,String name,String hospitalCode)
推荐度:
导读layui动态表头的实现代码:又get到一种思路,不光是layui。 外面这层table,就是用原生拼接的。 @Override public List<Map<String, Object>> distribution(String begin,String end,String name,String hospitalCode)

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

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

@Override
 public List<Map<String, Object>> distribution(String begin,String end,String name,String hospitalCode) {
 HashMap<String, Object> params = new HashMap<String, Object>();
 StringBuffer buf = new StringBuffer();
 
 List<HRateAllotDepartment> hRateAllotDepartment = rateAllotDepartmentDao.getRateDepartment(hospitalCode);
 String str1 = "";
 String str2 = "";
 for(int i=0;i<hRateAllotDepartment.size();i++) {
 str1 +=",sum(`"+hRateAllotDepartment.get(i).getDepartmentName()+"`)`"+hRateAllotDepartment.get(i).getDepartmentName()+"`";
 str2 +=",max(case when e.`name`='"+hRateAllotDepartment.get(i).getDepartmentName()+"' then f.price else 0 end) `"+hRateAllotDepartment.get(i).getDepartmentName()+"`";
 
 }
 
 buf.append("select d.`name`,d.productId_,count(*) renshu,sum(price) total"+str1+" ");
 buf.append(" from ( SELECT b.`name`,b.id productId_ ,d.id,max(b.price) price ");
 buf.append(" "+str2+" FROM ");
 buf.append(" dt_pay_health_order_product a "
 + "JOIN dt_pay_health_order d ON a.orderId = d.id "
 + "JOIN dt_pay_health_product b ON a.productId = b.id ");
 buf.append(" JOIN dt_hospital_health_item c ON b.bizId = c.id "
 + "JOIN dt_hospital_health_order_use g ON g.orderProductId = a.id "
 + "JOIN dt_hospital_rate_allot f ON b.id = f.productId ");
 buf.append(" JOIN dt_hospital_department e ON f.departmentId = e.id where g.createDate>=: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<data.length;i++){
 var arrayPrice1 = new Array();
 for(var key in data[i]){
 
 if(key!="name"&&key!="productId_"&&key!="renshu"&&key!="total"){
 arrayPrice1[key]=data[i][key];
 } 
 }
 arrayPrice.push(arrayPrice1);
 }
 
 var title="";
 var sumCols="";
 var partCols=new Array();
 
 for(var i=0;i<arrayPrice.length;i++){
 
 var partColsStr = "";
 
 for(var key in arrayPrice[i]){
 
 if(i==0&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 title+="<th class='firstTh'>"+key+"(元)</th>";
 }
 if(i==(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 sumCols+="<td class='secondTd'>"+arrayPrice[i][key]+"</td>";
 }
 if(i!=(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 partColsStr += "<td class='thirdTd'>"+arrayPrice[i][key]+"</td>";
 
 }
 
 }
 
 partCols.push(partColsStr);
 
 }

 var sRenshu = 0;
 var stotal = 0;
 
 var tablex = "";
 
 tablex += "<tr class='firstTr'><th class='firstTh'>项目名称</th><th class='firstTh'>检查人数</th><th class='firstTh'>金额(元)</th>"+title+"</tr>";
 
 if(data!=null && data.length>0){
 for(var i=0;i<data.length-1;i++){
 sRenshu+=data[i].renshu;
 stotal+=data[i].total;
 }
 
 tablex += "<tr class='secondTr'><td class='secondTd'>总计</td><td class='secondTd'>"+sRenshu+"</td><td class='secondTd'>"+stotal+"</td>"+sumCols+"</tr>";
 
 for(var i=0;i<data.length-1;i++){
 {
 tablex += "<tr class='thirdTr'><td class='thirdTd'>"+data[i].name+"</td>" +
 "<td class='thirdTd'>" +
 "<a style='color:#ff5722' href="+basePath +" rel="external nofollow" rel="external nofollow" /biz/hospital/rate/allot/toPageMx.do?startDate="+$("#startDate").val().toString()
 +"&endDate="+$("#endDate").val().toString()
 +"&productId_="+data[i].productId_+">"+
 data[i].renshu+"</a></td>" +
 "<td class='thirdTd'>"+data[i].total+ partCols[i] +
 "</tr>";
 }
 }
 
 }
 $("#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<data.length;i++){
 var arrayPrice1 = new Array();
 for(var key in data[i]){
 
 if(key!="name"&&key!="productId_"&&key!="renshu"&&key!="total"){
 arrayPrice1[key]=data[i][key];
 } 
 }
 arrayPrice.push(arrayPrice1);
 }
 
 var title="";
 var sumCols="";
 var partCols=new Array();
 
 for(var i=0;i<arrayPrice.length;i++){
 
 var partColsStr = "";
 
 for(var key in arrayPrice[i]){
 
 if(i==0&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 title+="<th class='firstTh'>"+key+"(元)</th>";
 }
 if(i==(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 sumCols+="<td class='secondTd'>"+arrayPrice[i][key]+"</td>";
 }
 if(i!=(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 partColsStr += "<td class='thirdTd'>"+arrayPrice[i][key]+"</td>";
 
 }
 
 }
 
 partCols.push(partColsStr);
 
 }

 var sRenshu = 0;
 var stotal = 0;
 
 var tablex = "";
 
 tablex += "<tr class='firstTr'><th class='firstTh'>项目名称</th><th class='firstTh'>检查人数</th><th class='firstTh'>金额(元)</th>"+title+"</tr>";
 
 if(data!=null && data.length>0){
 for(var i=0;i<data.length-1;i++){
 sRenshu+=data[i].renshu;
 stotal+=data[i].total;
 }
 
 tablex += "<tr class='secondTr'><td class='secondTd'>总计</td><td class='secondTd'>"+sRenshu+"</td><td class='secondTd'>"+stotal+"</td>"+sumCols+"</tr>";
 
 for(var i=0;i<data.length-1;i++){
 {
 tablex += "<tr class='thirdTr'><td class='thirdTd'>"+data[i].name+"</td>" +
 "<td class='thirdTd'>" +
 "<a style='color:#ff5722' href="+basePath +" rel="external nofollow" rel="external nofollow" /biz/hospital/rate/allot/toPageMx.do?startDate="+$("#startDate").val().toString()
 +"&endDate="+$("#endDate").val().toString()
 +"&productId_="+data[i].productId_+">"+
 data[i].renshu+"</a></td>" +
 "<td class='thirdTd'>"+data[i].total+ partCols[i] +
 "</tr>";
 }
 }
 
 }
 $("#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+="<th class='firstTh'>"+key+"(元)</th>";
 }
 if(i==(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 sumCols+="<td class='secondTd'>"+arrayPrice[i][key]+"</td>";
 }
 if(i!=(arrayPrice.length-1)&&(arrayPrice[arrayPrice.length-1][key]!=0)){
 partColsStr += "<td class='thirdTd'>"+arrayPrice[i][key]+"</td>";
 
 }
 
 }

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

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

layui动态表头的实现代码

layui动态表头的实现代码:又get到一种思路,不光是layui。 外面这层table,就是用原生拼接的。 @Override public List<Map<String, Object>> distribution(String begin,String end,String name,String hospitalCode)
推荐度:
标签: 实现 代码 动态的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top