layui

news2024/12/29 0:12:49

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

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

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

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;

        		}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PPT密码】ppt设置的编辑密码,如何取消?

不知道大家是否了解PPT文件的编辑密码&#xff0c;首先ppt中没有限制编辑功能&#xff0c;设置为只读模式后仍然可以编辑文件&#xff0c;但其实有一种类似于限制编辑的加密方式。在我们打开PPT文件的时候会有密码输入框。 如果我们没有输入密码&#xff0c;以只读方式进入&…

每日一题——LeetCode1403.非递增顺序的最小子序列

方法一 个人方法&#xff1a; 按题目要求&#xff0c;尽可能先取出nums里最大的值&#xff0c;这样才能满足子序列尽可能短且元素之和最大 var minSubsequence function(nums) {nums.sort((a,b)>a-b)let sum1nums.reduce((a,b)>ab,0),sum20,res[]while(sum1>sum2){…

libevent源码解析--evbuffer_chain,evbuffer,bufferevent,bufferevent_private

1.概述 前面我们已经分析了event&#xff0c;event_callback&#xff0c;event_base及监听套接字处理。 有了event_base我们便可实现事件监控&#xff0c;事件分发处理。 有了监听套接字处理&#xff0c;我们便可实现服务端监听&#xff0c;通过accept得到服务端通信套接字。 …

Linux---信号

前言 到饭点了&#xff0c;我点了一份外卖&#xff0c;然后又开了一把网游&#xff0c;这个时候&#xff0c;我在打游戏的过程中&#xff0c;我始终记得外卖小哥会随时给我打电话&#xff0c;通知我我去取外卖&#xff0c;这个时候游戏还没有结束。我在打游戏的过程中需要把外…

【Boost】:阶段性测试和阶段性代码合集(五)

阶段性测试和阶段性代码合集 一.编写测试程序-server.cc二.一些问题三.完整源代码 在这里添加了一些打印信息&#xff0c;方便我们观察&#xff0c;由于比较分散就不一一列举&#xff0c;可以看下面的完整源代码。 一.编写测试程序-server.cc 1.原版 只是简单的测试&#xff0…

多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-LSTM粒子群优化长短期记忆神经网络…

Java Arrays 的相关操作数组排序

Java Arrays 的相关操作数组排序 package com.zhong.arrays;import java.math.BigDecimal; import java.util.Arrays; import java.util.Comparator;public class ArraysDemo {public static void main(String[] args) {int[] arr {10, 20, 40, 30, 90, 60, 10, 30, 50};// A…

ReactNative实现文本渐变

我们直接上图&#xff0c;可以看到上面文本的效果&#xff0c;使用SVG实现 1.首先还是要引入react-native-svg库 2.使用该库下面的LinearGradient和Text 好&#xff0c;话不多说&#xff0c;我们看具体代码 <Svg width{422} height{30} viewBox{0 0 422 30}><Defs&…

以真机促创新!玻色量子联合中国运筹学会共商量子生态新模式

2024年1月29日&#xff0c;中国运筹学会算法软件与应用分会的一行领导莅临北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;&#xff0c;参观了玻色量子及光量子计算机真机“天工量子大脑”、自建的十万颗粒洁净度光量子信息技术实验室&#x1f517;&…

React 浮层组件实现思路

React 浮层组件&#xff08;也称为弹出组件或弹窗组件&#xff09;通常是指在用户界面上浮动显示的组件&#xff0c;它们脱离常规的文档流&#xff0c;并且可以在用户进行某些操作时出现在页面的最上层。React 浮层组件可以用于创建模态框&#xff08;Modal&#xff09;、下拉菜…

【TCP/IP】用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

centos间文件传输

scp /home/vagrant/minio zx192.168.56.34:/home/zx /home/vagrant/minio 是你要传输的文件而且是当前机器登录用户有权限操作的文件 zx是目标机器的用户192.168.56.34是目标机器的地址 /home/zx是要传到这个文件夹下 要确保zx有/home/zx这个文件夹的操作权限 本质就是ssh文…

黑豹程序员-ElementPlus选择图标器

ElementPlus组件提供了很多图标svg 如何在你的系统中&#xff0c;用户可以使用呢&#xff1f; 这就是图标器&#xff0c;去调用ElementPlus的icon组件库&#xff0c;展示到页面&#xff0c;用户选择&#xff0c;返回选择的组件名称。 效果 代码 <template><el-inpu…

【C语言】static关键字的使用

目录 一、静态本地变量 1.1 静态本地变量的定义 1.2 静态本地变量和非静态本地变量的区别 二、静态函数 2.1 静态函数的定义 2.2 静态函数与非静态函数的区别 三、静态全局变量 3.1 静态全局变量的定义 3.2 静态全局变量和非静态全局变量的区别 四、静态结构体变量 …

挑战杯 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

两次NAT

两次NAT即Twice NAT&#xff0c;指源IP和目的IP同时转换&#xff0c;该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。 如图所示&#xff0c;两次NAT转换的过程如下: 内网Host A要访问地址重叠的外部网络Host B&#xff0c;Host A向位于外部网络的DNS服务器发送…

图文并茂讲解Travelling Salesman

题目 思路 一道lca板子题&#xff0c;不会的同学可以先康康 详解最近公共祖先(LCA)-CSDN博客 我们可以发现&#xff0c;商人是从1开始&#xff0c;旅行到第一个城镇&#xff0c;再到第二个&#xff0c;第三个…… 那么我们只需要求出1~第一个城镇的距离&#xff0c;第一个城…

爱上算法:每日算法(24-2月4号)

&#x1f31f;坚持每日刷算法&#xff0c;&#x1f603;将其变为习惯&#x1f91b;让我们一起坚持吧&#x1f4aa; 文章目录 [232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/)思路CodeJavaC 复杂度 [225. 用队列实现栈](https://leetcode.cn/…

引入echarts环形图及显示后端数据

实现效果&#xff1a; 1.下载echarts 并引用 npm install echarts --save 或 pnpm install -S echarts 项目中引用&#xff1a; 在项目main.ts中 import * as echarts from "echarts"; //引入echarts 3.页面中使用 <div id"main" class&quo…