bootstrap-table前端实现多条件时间段查询数据
实现思路:通过正则匹配到字段是否符合条件,时间段转换为时间戳比对。
这是大体的效果图:

页面的html代码
<div class="content-head mgb10">
<div class="form-group">
<label class="sr-only"></label>
<input type="text" class="form-control" id="sn-val" placeholder="请输入单据号">
</div>
<div class="form-group">
<a href="javascript:;" class="btn btn-default btn-sm" id="sn-btn">
<i class="fa fa-search"></i>
</a>
</div>
<div class="form-group">
<label >采购部门:</label>
<select name="warehouse_name" class="form-control" id="purchaseSearch">
{foreach name="ware_list" item="vo" }
<option value="{$vo.warehouse_id}">{$vo.warehouse_name}</option>
{/foreach}
</select>
</div>
<div class="form-group">
<label class="date-label">单据日期:</label>
<div class="date-container">
<i class="fa fa-calendar date-icon"></i>
<input type="text" id="startData" class="form-control date-input">
</div> </div>
<div class="form-group">
<label class="date-label">--</label>
<div class="date-container">
<i class="fa fa-calendar date-icon"></i>
<input type="text" id="endData" class="form-control date-input">
</div>
</div>
<div class="form-group">
<a href="javascript:;" id="searchware" class="btn btn-default btn-sm"><i class="fa fa-search"></i>查 询</a>
</div>
</div>
<div class="tb-container">
<table id="tb_data" data-mobile-responsive="true"></table>
</div>
下面为请求数据:
var productList=[]; //订单数据
//生成订单数据
$.ajax({
url:dataUrl,
type:'get',
async:false,
success:function(res){
var response=JSON.parse(decodeURIComponent(res));
productList=response;
$('#tb_data').bootstrapTable({
data:response,
height:base.countTbodyHeight("#tb_data") + 100, //高度调整
striped: true, //是否显示行间隔色
pagination: true, //是否显示分页(*)
sortable: true, //是否启用排序
pageSize:10, //单页记录数
pageList:[5,10,20,30], //分页步进值
columns:[
{
title:'制单日期',
field:'arrive_time',
formatter:function(value,row,index){
var thisStr=changeTime(value*1000);
return thisStr;
}
},
{
title:'单据号',
field:'sn',
},
{
title:'采购部门',
field:'warehouse_name',
},
{
title:'制单人',
field:'operator',
},
{
title:'货品条目',
field:'product_detail_id',
formatter:function(value,row,index){
var AllNum=0;
var valueArry=JSON.parse(value);
for(var i in valueArry){
var thisNum=parseFloat(valueArry[i].num);
AllNum+=thisNum;
}
return AllNum;
}
},
{
title:'金额总计',
field:'product_detail_id',
formatter:function(value,row,index){
var AllPrice=0;
var valueArry=JSON.parse(value);
for(var i in valueArry){
var thisPrice=parseFloat(valueArry[i].purchase_price);
AllPrice+=thisPrice;
}
return AllPrice;
}
},
{
title:'状态',
field:'audit_status',
formatter:function(value,row,index){
var thisStr='';
if(value==0){
thisStr='待审核(查看进度)';
}else if(value==1){
thisStr='<span class="ex-cur">审核中</span>(查看进度)';
}else if(value==2){
thisStr='<span class="ex-suc">审核通过</span>(查看进度)';
}
else if(value==3){
thisStr='<span class="ex-err">已拒绝</span>(查看进度)';
}
return thisStr;
}
},
{
title:'操作',
field:'id',
formatter:function(value,row,index){
var thisStr='<a href="/view/purchase_detail?id='+value+'">查看详情</a>';
return thisStr;
}
}
]
});
}
});
首先实现一个单据号单条件查询,遍历查询单据号字段,有符合条件的添加到newArry中,遍历完毕之后表格加载newArry数据展现查询结果:
//点击搜索单据号
$('#sn-btn').click(function(){
var snVal=$('#sn-val').val();
searchFun(snVal,'sn');
});
查询实现:
// 查询单据号
function searchFun(searchVal,snNameStr){ //searchVal为用户输入的搜索值,snNameStr为搜索的字段
var newArry=[];
for(var i in productList){
var snName=productList[i][snNameStr];
searchVal=new RegExp(searchVal);
var isHasName=searchVal.test(snName); //匹配当前单据号是否符合条件
if(isHasName){
newArry.push(productList[i]); //符合条件添加到newArry中
}
}
$('#tb_data').bootstrapTable('load',newArry); //加载数据
}

下面我们用采购部门和时间段联合查询
//时间段查询采购部门
$('#searchware').bind('click',function(){
var wareId=$('#purchaseSearch').val();
var startTime=getTimeStamp($('#startData').val()); //获取开始时间戳
var endTime=getTimeStamp($('#endData').val()); //获取结束时间戳
searchTimeFun(wareId,'warehouse_id',startTime,endTime,'arrive_time');
});
因为我们获取到的时间是2018-08-31格式的时间,所以我们需要把时间转换为时间戳:
// 获取时间戳
function getTimeStamp(val){
val=val+' 00:00:00'
var getTimes=new Date(val),
getTimes=getTimes.getTime()/1000;
return getTimes;
}
因为后台给我返回的时间是时间戳,所以匹配的时候时间不用转换,查询实现:
// 时间段查询采购部门
function searchTimeFun(wareId,wareIdStr,startTime,endTime,makeTimeStr){ //wareId采购部门ID,wareIdStr采购部门字段,startTime查询开始时间,endTime开始结束时间,makeTimeStr匹配的时间字段
console.log(wareId,wareIdStr,startTime,endTime,makeTimeStr)
var newArry=[];
for(var i in productList){
var warehouseId=productList[i][wareIdStr];
wareId=new RegExp(wareId)
var isHasName=wareId.test(warehouseId);
var makeTime=productList[i][makeTimeStr];
var isTimeSlot=false;
console.log(makeTime,startTime)
if(makeTime>=startTime && makeTime<=endTime){
console.log('true')
isTimeSlot=true;
}
if(isHasName && isTimeSlot){
newArry.push(productList[i]);
}
}
$('#tb_data').bootstrapTable('load',newArry);
}
如果采购部门不选择,那就是查询时间段内所有的信息,实现效果图:

bootstrap-table前端实现多条件时间段查询数据的更多相关文章
- Bootstrap table前端分页(ssm版)
说明bootstrap table可以前端分页,也可以后端sql用limit分页.前端分页下性能和意义都不大,故一般情况下不用这种,请看我的另一篇后端分页的博客源码下载地址:https://git.o ...
- jeecg 扩展封装查询条件 时间段查询
使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...
- bootstrap table 前端搜索
1.bootstrap-table对于前端的搜索可以通过官网设置,但发现前端搜索出现bug,网上找到一个bootstrap-table的扩充js bootstrap-table-mytoolbar. ...
- bootstrap table分页,重新数据查询时页码为当前页问题
问题描述: 使用bootstrap table时遇到一个小问题,第一次查询数据未5页,翻页到第5页后,选中条件再次查询数据时,传到后端页码仍旧为5,而此时数据量小于5页,表格显示为未查询到数据. 处理 ...
- 161221、bootstrap table 实例
bootstrap table 封装了一套完善的数据表格组件,把下面的代码复制一下估计你需要的基本功能都有了,没有的再看看手册对比着我给的实例也能很快的熟悉了 客户端 <!DOCTYPE htm ...
- 【转】bootstrap table轻松实现数据表格
在使用bootstrap table时可能在很多时候回用的表格来显示数据,如果自己写那肯定没问题,但是数据展示出来就麻烦多了,然而bootstrap table 封装了一套完善的数据表格组件,把从后台 ...
- 新的表格展示利器 Bootstrap Table Ⅱ
上一篇文章介绍了Bootstrap Table的基本知识点和应用,本文针对上一篇文章中未解决的文件导出问题进行分析,同时介绍BootStrap Table的扩展功能,当行表格数据修改. 1.B ...
- Bootstrap Table表格一直加载(load)不了数据-解决办法
bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架 ...
随机推荐
- 美国cst时间和夏令时
美国6 PM CST相当于北京时间几点? 换算北京时间是:8:00,上午8点,日期是第二天.(换算公式:18点+14小时=第二天8点) 6 PM CST:6:00 PM Central Standar ...
- JS中数组与对象的遍历方法实例小结
一.数组的遍历: 首先定义一个数组 1 arr=['snow','bran','king','nightking']; 1.for循环,需要知道数组的长度; 2.foreach,没有返回值,可以不知道 ...
- VSCode中Markdown目录显示异常
更新最新的VSCode之后编辑Markdown文件发现TOC标签的目录格式异常,发现是因为行尾字符导致,必须设置行尾字符进行解决.
- UE中正则表达式
UltraEdit(后简称UE),是我经常使用的文本编辑软件,其功能的强大,令我由衷地爱上了它.每天不用就全身不爽.从最开始的9.0到现在的 12.10a(本人只用到这个版本),UE都是系统重装后必安 ...
- 第十一章、特性property
目录 第十一章.特性property 一.property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 二.为什么要用property 三.封装与拓展性 第十一章.特性property ...
- Java并发与多线程
1. 并发与并行 并发是指某个时间段内,多任务交替处理的能力:并行是指同时处理多任务的能力,多核CPU可以实现并行任务. 并发执行的特点: (1)并发程序间相互制约:程序执行结果的相互依赖以及共享资源 ...
- cmake 判断操作系统平台
转载自 cmake 判断操作系统平台 MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}") IF (CMAKE_SYSTEM_ ...
- 上班时能不能戴耳机?V
上班时能不能戴耳机? 新入职一公司, 上班时间不能戴耳机在V站一石激起千层浪,网友意见主要分几派: 甩手走人型: 神经病公司,这还不赶紧走 不走等着过年 不走留着转正 离职,下一题 还是赶紧离职吧 这 ...
- linux 用户和用户组
groupadd group1 useradd -g group1 user1 passwd user1 groups 查看当前用户的用户组 finger和id命令可以查看用户信息
- 计算机基础之BIOS
BIOS BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统".在IBM PC兼容系统上,是 ...