layui

基于复杂结构的自定义模版相关介绍

我这里的接口给的格式数据
在这里插入图片描述

我这里搜索往返时候要显示成这样的
在这里插入图片描述

layui.use(['table','form'], function(){  
						  var table = layui.table;  
							var form = layui.form;
						  // 渲染表格  
						  table.render({  
						    	elem: '#test-table-reload',
						    	toolbar: '#toolbarDemo',  
								data:jsonData[0].airwheretolists,
								cols: [  
							      // 定义列的配置  
							      [  
							      	{field: 'flightInfo', title: '航司信息', templet: '#flightInfoTpl', align: 'center'},
							      	{field: 'fromSegments', title: '出发时间', templet: '#flightInfoTpl1',sort:true, align: 'center'},
							      	{field: 'fromSegments.timeDif', title: '用时', templet: '#flightInfoTpl2',sort:true, align: 'center'},
							      	{field: 'arrTime', title: '达到时间', templet: '#flightInfoTpl4', align: 'center'},
							      	{field: 'adultPrice', title: '价格', templet: '#flightInfoTpl3',sort:true, align: 'center'},
							      	{field:'button', title:'操作', templet: '#buttonTpl', align: 'center'}
							      ]  
							    ],
							    done: function(res, curr, count){  
								      // 在这里执行渲染完成后的操作  
								    	console.log('渲染完成');  
								      // $("td[data-field='0']").css("display", "none");  
								      // $(".layui-table-tool-self").css("display","none");
								      // $(".layui-table-header").css('display',"none");
								    	$('tr[data-index]').each(function() {  
										    // 获取 data-index 的值  
										    var index = $(this).data('index');  
									        if(index % 2 == 0){
									        	$(this).css('background-color','#f8f8f8');
									        }
										});
									  $('tr[data-index="myself"]:even').find('td.dashedTd_rt').each(function() {  
										    $(this).css('border-bottom','1px dashed #ccc'); 
										});
									  if(tripType == 'ow'){
									    	$(".layui-table-body .layui-table-cell").css('height','108px');
									    }else{
									    	$(".layui-table-body .layui-table-cell").css('height','210px');
									    }
									    $(".layui-table-cell table").css('width','100%');
									// 监听排序事件
							        table.on('sort(user)', function (obj) {
							          var field = obj.field; // 排序字段
							          var data = res.data; // 当前排序的数据
							          console.log(obj);
							          console.log(obj.type);
							          // 获取表格数据
							          var tableData = layui.table.cache['test-table-reload'];
							          // 对 fromMesage 中的 flightNumber 进行排序
							          if (field === 'fromSegments') {
							            tableData.sort(function (a, b) {
							            	var dateA = new Date(a.fromSegments[0].depTime).getTime();
      										var dateB = new Date(b.fromSegments[0].depTime).getTime();
							              if (obj.type === 'asc') {
									        return dateA - dateB; // 升序排列
									      } else if (obj.type === 'desc') {
									        return dateB - dateA; // 降序排列
									      } else {
									        return 0; // 默认情况
									      }
							            });
							          }else if(field === 'fromSegments.timeDif'){
							          		tableData.sort(function (a, b){
							          			if(a.retSegments != null){

							          			}
							          			var ass = a.fromSegments[0].timeDif.TotalMilliseconds;
							          			if (obj.type === 'asc') {
											        return a.fromSegments[0].timeDif.TotalMilliseconds - b.fromSegments[0].timeDif.TotalMilliseconds; // 升序排列
											    } else if (obj.type === 'desc') {
											        return b.fromSegments[0].timeDif.TotalMillisecondss - a.fromSegments[0].timeDif.TotalMilliseconds; // 降序排列
											    } else {
											        return 0; // 默认情况
											    }
							          		})
							          }
							           // 渲染表格
									  	var jsonDatas = [{'airwheretolists':tableData}];
					            		renderTable(jsonDatas,tripType);
							         
							        });  
								}  
						  });
						   

					});  
	<script type="text/html" id="flightInfoTpl">
    <table style="width: 100%;">
        
        {{# layui.each(d.fromSegments, function(index, item){ }}
          <tr>
            <td class="dashedTd_rt">
            	<p class="aviation_name">{{ item.companyName }}</p><div class="flightNo">{{ item.flightNumber }}</div>
            </td>
          </tr>
          
        {{# }); }}
      {{# layui.each(d.retSegments, function(index, item){ }}
        <tr>
          	<td class="dashedTd_rt">
            	<p class="aviation_name">{{ item.companyName }}</p><div class="flightNo">{{ item.flightNumber }}</div>
            </td>
        </tr>
        
      {{# }); }}
    </table>
</script>
<script type="text/html" id="flightInfoTpl1">
    <table style="width: 100%;">
        
        {{# layui.each(d.fromSegments, function(index, item){ }}
          <tr>
            <td class="dashedTd_rt">
				<p class='takeoff_time'>{{ item.depTime }}</p>
				<span class='departure_code'>{{ item.depAirport }}</span>
				<span class='departure_name'>{{ item.derairportname }}</span>
            </td>
          </tr>
          
        {{# }); }}
      {{# layui.each(d.retSegments, function(index, item){ }}
        <tr>
            <td class="dashedTd_rt">
				<p class='takeoff_time'>{{ item.depTime }}</p>
				<span class='departure_code'>{{ item.depAirport }}</span>
				<span class='departure_name'>{{ item.derairportname }}</span>
            </td>
        </tr>
        
      {{# }); }}
    </table>
</script>
<script type="text/html" id="flightInfoTpl2">
    <table style="width: 100%;">
        
        {{# layui.each(d.fromSegments, function(index, item){ }}
          <tr>
            <td class="dashedTd_rt"><div class="type">直飞</div><img src="../../res/style/imgs/ticket.png" alt="" class="UI_list_icon_con"><div class="time_use">{{ item.timeDif.Hours }}h{{ item.timeDif.Minutes }}m</div></td>
          </tr>
          
        {{# }); }}
      {{# layui.each(d.retSegments, function(index, item){ }}
        <tr>
            <td class="dashedTd_rt"><div class="type">直飞</div><img src="../../res/style/imgs/ticket.png" alt="" class="UI_list_icon_con"><div class="time_use">{{ item.timeDif.Hours }}h{{ item.timeDif.Minutes }}m</div></td>
        </tr>
        
      {{# }); }}
    </table>
</script>
<script type="text/html" id="flightInfoTpl4">
    <table style="width: 100%;">
        
        {{# layui.each(d.fromSegments, function(index, item){ }}
          <tr>
            <td class="dashedTd_rt">
				<p class='takeoff_time'>{{ item.arrTime }}</p>
				<span class='departure_code'>{{ item.arrAirport }}</span>
				<span class='departure_name'>{{ item.arrairportname }}</span>
            </td>
          </tr>
          
        {{# }); }}
      {{# layui.each(d.retSegments, function(index, item){ }}
        <tr>
            <td class="dashedTd_rt">
				<p class='takeoff_time'>{{ item.arrTime }}</p>
				<span class='departure_code'>{{ item.arrAirport }}</span>
				<span class='departure_name'>{{ item.arrairportname }}</span>
            </td>
        </tr>
        
      {{# }); }}
    </table>
</script>
<script type="text/html" id="flightInfoTpl3">
    <table style="width: 100%;" class="flightInfoTpl3">
        
        {{# layui.each(d.fromSegments, function(index, item){ }}
          <tr>
            <td class="priceL" rowspan="2">CNY {{ d.adultPrice }}</td>
			<!-- <td rowspan="2"><button class="layui-btn" id="reserveBtn">预定</button></td> -->
          </tr>
          
        {{# }); }}
      
    </table>
</script>
<script type="text/html" id="buttonTpl">
	<table style="width: 100%;height: 100%;" >
		<tr>
			<td rowspan="2">
				<button class="layui-btn" id="reserveBtn">预定</button>
			</td>
		</tr>
	</table>
</script>

渲染和排序主要代码部分以上大概贴出来了

table 部分


注意此处lay-filter=“user” table.on(‘sort(user)’, 这里要对应
我 这里犹豫想让一组往返数据显示在一个tr里面所以我在tr里又组装了一个表格 两行的
在这里插入图片描述
2 筛选这块

function eachcheckbox(datas) {
					console.log('eachcheckbox'+datas);
		            var div = document.getElementById("toolbarDemo");
		            div.innerHTML = "";
		            var result = "";
		            var dateta = [];
		            var data = datas[0].airwheretolists;
		            for (var i = 0; i < data.length; i++) {
		                if (dateta == null || dateta == [] || dateta.indexOf(data[i].ticketingAirline) == -1) {
		                    dateta.push(data[i].ticketingAirline);
		                }
		            }
		            $.each(dateta, function (index, item) {
		                result += '<input lay-filter="switchSap" checked="checked" type="checkbox" lay-skin="primary" name="labelType"  value="' + item + '" title="' + item + '" id="' + item + '">';
		               
		            });
		            result += "";
		            document.getElementById("toolbarDemo").innerHTML = result;

        		}

监听下 操作复选框的事件form.on('checkbox(switchSap)', function (data) { var arr = []; var tripType = $("input[name='type']:checked").val();// 单程 往返 $('input[name=labelType]:checked').each(function () { arr.push($(this).val()); }); operateCheckData(arr, jsonData,tripType); });

//执行筛选数据 以及更新筛选框选中状态
				function operateCheckData(data, jsonData,tripType) {
		            console.log(data);
		            console.log(jsonData);
		            if (data != null && data != undefined && data.length > 0) {
		                var dataArr = [];
		                for (var i = 0; i < jsonData[0].airwheretolists.length; i++) {
		                    if (data.indexOf(jsonData[0].airwheretolists[i].ticketingAirline) != -1) {
		                        dataArr.push(jsonData[0].airwheretolists[i]);
		                    }
		                }
		                var jsonDatas = [{'airwheretolists':dataArr}];
		                
		            } else {
		            	var jsonDatas = [{'airwheretolists':[]}];
		            }
		            eachcheckbox2(data);
		            renderTable(jsonDatas,tripType);
		            
		        }
		        
 function eachcheckbox2(arrid) {
		            var div = document.getElementById("toolbarDemo");
		            var dateta=[];
		            // 获取所有输入元素  
					$('.layui-table-tool-temp input').each(function () {
	                    dateta.push($(this).val());
	                });
		            div.innerHTML = "";
		            var result = "";
		            // for (var i = 0; i < data.length; i++) {
		            //     if (dateta == null || dateta == [] || dateta.indexOf(data[i].carrier) == -1) {
		            //         dateta.push(data[i].carrier);
		            //     }
		            // }
		            console.log(dateta);
		            console.log(arrid);
		            $.each(dateta, function (index, item) {
		                if (arrid.includes(item)) {
		                    var chedk = 'checked="checked"';
		                    result += '<input lay-filter="switchSap" ' + chedk + ' type="checkbox" lay-skin="primary" name="labelType"  value="' + item + '" title="' + item + '" id="' + item + '">';
		                } else {
		                    result += '<input lay-filter="switchSap" type="checkbox" lay-skin="primary" name="labelType"  value="' + item + '" title="' + item + '" id="' + item + '">';
		                }
		                
		            });
		            result += "";
		            console.log(result);
		            document.getElementById("toolbarDemo").innerHTML = result;

        		}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python基础】seaborn 使用指南(超详细!)

文章目录 seaborn1 seaborn简介1.1 主要特征&#xff1a;1.2 seaborn主要内容 2 seaborn基本设置2.1 图表大小&#xff1a;context2.2 设置风格2.3 设置字体与支持中文2.4 设置临时风格2.5 设置调色板2.6 set方法 3 调色板3.1 分类色板&#xff08;qualitative&#xff09;3.2 …

3.0 Hadoop 概念

本章着重介绍 Hadoop 中的概念和组成部分&#xff0c;属于理论章节。如果你比较着急可以跳过。但作者不建议跳过&#xff0c;因为它与后面的章节息息相关。 Hadoop 整体设计 Hadoop 框架是用于计算机集群大数据处理的框架&#xff0c;所以它必须是一个可以部署在多台计算机上…

chisel RegInit/UInt/U

val reg RegInit(0.U(8.W)) //ok val reg RegInit(0.UInt(8.W)) //errU 使用在数字 . 后边50.U UInt 使用在IO(new Bundle val a Input(UInt(8.W)) 或者 def counter(max:UInt, a1:UInt) package emptyimport chisel3._ import chisel3.util._class MyCounter extends …

Java技术栈 —— Hive与HBase

Java技术栈 —— Hive与HBase 一、 什么是Hive与HBase二、如何使用Hive与HBase&#xff1f;2.1 Hive2.1.1 安装2.1.2 使用2.1.2.1 使用前准备2.1.2.2 开始使用hive 2.2 HBase2.2.1 安装2.2.2 使用 三、Apache基金会 一、 什么是Hive与HBase 见参考文章。 一、参考文章或视频链…

神经网络激活函数到底是什么?

激活函数 其实不是很难啦&#xff0c;归结一下就是大概这样几个分类&#xff0c;详情请参考【神经网络】大白话直观理解&#xff01;_哔哩哔哩_bilibili神经网络就是干这个事的~ 如果队伍不长&#xff0c;一个ykxb就可以了&#xff0c;如果 如果 队伍太长 就加一个激活函数也…

C语言函数递归详解

递归是什么&#xff1f; 递归&#xff0c;顾名思义&#xff0c;就是递推和回归。 递归是一种解决问题的方法&#xff0c;在C语言中&#xff0c;递归就是函数自己调用自己。 #include <stdio.h> int main() {printf("hehe\n");main();//main函数中⼜调⽤了main…

C++ 调用lua 脚本

需求&#xff1a; 使用Qt/C 调用 lua 脚本 扩展原有功能。 步骤&#xff1a; 1&#xff0c;工程中引入 头文件&#xff0c;库文件。lua二进制下载地址&#xff08;Lua Binaries&#xff09; 2&#xff0c; 调用脚本内函数。 这里调用lua 脚本中的process函数&#xff0c;并…

FFMPEG推流到B站直播

0、参考 ffmpeg安装参考小弟另外的一个博客&#xff1a;FFmpeg和rtsp服务器搭建视频直播流服务-CSDN博客推流参考&#xff1a;用ffmpeg 做24小时推流直播_哔哩哔哩_bilibili 一、获取b站直播码 点击开始直播后&#xff0c;会出现以下的画面 二、ffmpeg进行直播推流 ffmpeg -r…

const

当我们在c语言中碰到这么一种情况&#xff1a;我们现在有一个变量&#xff0c; 这个变量呢&#xff0c;我们指向访问它&#xff0c; 但不会修改它。但是又担心在后续的代码中不小心将它修改&#xff0c; 这种情况该怎么做呢&#xff1f;这种情况下可以使用const. 被const修饰的…

全套电气自动化样例图纸分享,使用SuperWorks自动化版免费设计软件!

今天给大家分享一套完备的电气自动化样例图纸&#xff0c;结构准确、内容清晰&#xff0c;适合初学者入门操作练习。 整套图纸包含图纸目录、原理图、端子列表、连接列表、元件列表、接线图&#xff0c;具有较高的参考价值&#xff0c;请大家点击自行下载文件&#xff01; 1e8…

springcloud-gateway升级版本allowedOrigins要改allowedOriginPatterns

前言 报错: java.lang.IllegalArgumentException: When allowCredentials is true,allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin"response header. To allow credentials to a se…

如何让虚拟机拥有愉快网络环境,vmware,ubuntu,centos

博客原文 文章目录 前言拥有愉快网络环境步骤:测试网关连接 Ubuntu修改 http 与 sock 代理地址修改 /etc/resolv.conf配置 apt 使用代理测试连接 Centos设置代理地址修改 NetworkManager最后重启网卡&#xff1a;测试代理 前言 相信计算机专业的同学在学习 linux 时, 一定会被无…

L1-027 出租-java

输入样例&#xff1a; 18013820100输出样例&#xff1a; int[] arr new int[]{8,3,2,1,0}; int[] index new int[]{3,0,4,3,1,0,2,4,3,4,4}; java import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);St…

无线远程多层立体土壤墒情监测仪

TH-GTS03无线远程多层立体土壤墒情监测仪是一款用于监测土壤水分状况的智能设备&#xff0c;可以帮助农民和农业科技人员实时了解土壤的含水量和土壤温度&#xff0c;科学地进行农田管理和合理安排灌溉、施肥等农事活动&#xff0c;提高作物产量和品质。 该仪器采用了先进的传感…

时隔3年 | 微软 | Windows Server 2025 重磅发布

最新功能 以下是微软产品团队正在努力的方向&#xff1a; Windows Server 2025 为所有人提供的热补丁下一代 AD 活动目录和 SMB数据与存储Hyper-V 和人工智能还有更多… Ignite 发布视频 Windows Server 2025 Ignite Video 介绍 Windows Server 2022 正式发布日期是2021年…

Go 中 struct tag 如何用?基于它实现字段级别的访问控制

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 小技巧第十篇&#xff0c;系列文章查看&#xff1a;Go 语言小技巧。 在 Go 中&#xff0c;结构体主要是用于定义复杂数据类型。而 struct tag 则是附加在 struct 字段后的字符串&#xff0c;提供了一种方式来存储关于字段的…

Oracle12c之Sqlplus命令行窗口基本使用

Oracle12c之Sqlplus命令行窗口基本使用 文章目录 Oracle12c之Sqlplus命令行窗口基本使用1. 连接1. 超级用户2. 普通用户1. 创建普通用2. 连接 2. 修改用户连接数1. 查看默认连接最多用户数1. PL/SQL developer中查看2. Sqlplus中查看 2. 查看目前已经连接的用户数3. 修改用户连…

20240203在WIN10下安装Anaconda

20240203在WIN10下安装Anaconda 2024/2/3 20:45 缘起&#xff1a;最近学习stable-diffusion-webui.git&#xff0c;在Ubuntu20.04.6下配置SD成功。 不搞精简版本&#xff1a;Miniconda了。直接上Anacoda&#xff01; 百度搜索&#xff1a;Anaconda 下载 https://www.anaconda.c…

Office恢复旧UI|Office UI问题|Word UI|小喇叭找不到

Office恢复旧UI&#xff5c;Office UI问题&#xff5c;Word UI&#xff5c;小喇叭找不到 问题描述&#xff1a;Office新版本默认新UI&#xff0c;主界面没有小喇叭可以切换到旧UI. 解决方案&#xff1a; 以下述内容新建.txt&#xff0c;保存并改后缀为.reg&#xff0c;双击打开…

如何更改Outlook阅读邮件时的默认字体?

如果收到的邮件中未指定字体&#xff0c;outlook默认使用宋体显示。 如果觉得不好看&#xff0c;可以进行更改。但不是在outlook中更改&#xff0c;outlook中只是修改编辑器中的字体&#xff0c;和纯文本邮件浏览的字体&#xff0c;不能更改未指定字体的HTML邮件的显示字体。 …