实现思路:通过正则匹配到字段是否符合条件,时间段转换为时间戳比对。

这是大体的效果图:

页面的html代码

  1. <div class="content-head mgb10">
  2. <div class="form-group">
  3. <label class="sr-only"></label>
  4. <input type="text" class="form-control" id="sn-val" placeholder="请输入单据号">
  5. </div>
  6. <div class="form-group">
  7. <a href="javascript:;" class="btn btn-default btn-sm" id="sn-btn">
  8. <i class="fa fa-search"></i>
  9. </a>
  10. </div>
  11. <div class="form-group">
  12. <label >采购部门:</label>
  13. <select name="warehouse_name" class="form-control" id="purchaseSearch">
  14. {foreach name="ware_list" item="vo" }
  15. <option value="{$vo.warehouse_id}">{$vo.warehouse_name}</option>
  16. {/foreach}
  17. </select>
  18. </div>
  19. <div class="form-group">
  20. <label class="date-label">单据日期:</label>
  21. <div class="date-container">
  22. <i class="fa fa-calendar date-icon"></i>
  23. <input type="text" id="startData" class="form-control date-input">
  24. </div>
  25.  
  26. </div>
  27. <div class="form-group">
  28. <label class="date-label">--</label>
  29. <div class="date-container">
  30. <i class="fa fa-calendar date-icon"></i>
  31. <input type="text" id="endData" class="form-control date-input">
  32. </div>
  33. </div>
  34. <div class="form-group">
  35. <a href="javascript:;" id="searchware" class="btn btn-default btn-sm"><i class="fa fa-search"></i>查 询</a>
  36. </div>
  37. </div>
  38. <div class="tb-container">
  39. <table id="tb_data" data-mobile-responsive="true"></table>
  40. </div>

  

下面为请求数据:

  1. var productList=[];  //订单数据
    //生成订单数据
  2. $.ajax({
  3. url:dataUrl,
  4. type:'get',
  5. async:false,
  6. success:function(res){
  7. var response=JSON.parse(decodeURIComponent(res));
  8. productList=response;
  9. $('#tb_data').bootstrapTable({
  10. data:response,
  11. height:base.countTbodyHeight("#tb_data") + 100, //高度调整
  12. striped: true, //是否显示行间隔色
  13. pagination: true, //是否显示分页(*)
  14. sortable: true, //是否启用排序
  15. pageSize:10, //单页记录数
  16. pageList:[5,10,20,30], //分页步进值
  17. columns:[
  18. {
  19. title:'制单日期',
  20. field:'arrive_time',
  21. formatter:function(value,row,index){
  22. var thisStr=changeTime(value*1000);
  23. return thisStr;
  24. }
  25. },
  26. {
  27. title:'单据号',
  28. field:'sn',
  29. },
  30. {
  31. title:'采购部门',
  32. field:'warehouse_name',
  33. },
  34. {
  35. title:'制单人',
  36. field:'operator',
  37. },
  38. {
  39. title:'货品条目',
  40. field:'product_detail_id',
  41. formatter:function(value,row,index){
  42. var AllNum=0;
  43. var valueArry=JSON.parse(value);
  44. for(var i in valueArry){
  45. var thisNum=parseFloat(valueArry[i].num);
  46. AllNum+=thisNum;
  47. }
  48. return AllNum;
  49. }
  50. },
  51. {
  52. title:'金额总计',
  53. field:'product_detail_id',
  54. formatter:function(value,row,index){
  55. var AllPrice=0;
  56. var valueArry=JSON.parse(value);
  57. for(var i in valueArry){
  58. var thisPrice=parseFloat(valueArry[i].purchase_price);
  59. AllPrice+=thisPrice;
  60. }
  61. return AllPrice;
  62. }
  63. },
  64. {
  65. title:'状态',
  66. field:'audit_status',
  67. formatter:function(value,row,index){
  68. var thisStr='';
  69. if(value==0){
  70. thisStr='待审核(查看进度)';
  71. }else if(value==1){
  72. thisStr='<span class="ex-cur">审核中</span>(查看进度)';
  73. }else if(value==2){
  74. thisStr='<span class="ex-suc">审核通过</span>(查看进度)';
  75. }
  76. else if(value==3){
  77. thisStr='<span class="ex-err">已拒绝</span>(查看进度)';
  78. }
  79. return thisStr;
  80. }
  81. },
  82. {
  83. title:'操作',
  84. field:'id',
  85. formatter:function(value,row,index){
  86. var thisStr='<a href="/view/purchase_detail?id='+value+'">查看详情</a>';
  87. return thisStr;
  88. }
  89. }
  90. ]
  91. });
  92. }
  93. });

  首先实现一个单据号单条件查询,遍历查询单据号字段,有符合条件的添加到newArry中,遍历完毕之后表格加载newArry数据展现查询结果:

  1. //点击搜索单据号
  2. $('#sn-btn').click(function(){
  3. var snVal=$('#sn-val').val();
  4. searchFun(snVal,'sn');
  5. });

  查询实现:

  1. // 查询单据号
  2. function searchFun(searchVal,snNameStr){   //searchVal为用户输入的搜索值,snNameStr为搜索的字段
  3. var newArry=[];
  4. for(var i in productList){
  5. var snName=productList[i][snNameStr];
  6. searchVal=new RegExp(searchVal);
  7. var isHasName=searchVal.test(snName);  //匹配当前单据号是否符合条件
  8. if(isHasName){
  9. newArry.push(productList[i]);    //符合条件添加到newArry中 
  10. }
  11. }
  12. $('#tb_data').bootstrapTable('load',newArry);  //加载数据
  13. }

  

  下面我们用采购部门和时间段联合查询

  1. //时间段查询采购部门
  2. $('#searchware').bind('click',function(){
  3. var wareId=$('#purchaseSearch').val();
  4. var startTime=getTimeStamp($('#startData').val());  //获取开始时间戳
  5. var endTime=getTimeStamp($('#endData').val());     //获取结束时间戳
  6. searchTimeFun(wareId,'warehouse_id',startTime,endTime,'arrive_time');
  7. });

  因为我们获取到的时间是2018-08-31格式的时间,所以我们需要把时间转换为时间戳:

  1. // 获取时间戳
  2. function getTimeStamp(val){
  3. val=val+' 00:00:00'
  4. var getTimes=new Date(val),
  5. getTimes=getTimes.getTime()/1000;
  6. return getTimes;
  7. }

  因为后台给我返回的时间是时间戳,所以匹配的时候时间不用转换,查询实现:

  1. // 时间段查询采购部门
  2. function searchTimeFun(wareId,wareIdStr,startTime,endTime,makeTimeStr){ //wareId采购部门ID,wareIdStr采购部门字段,startTime查询开始时间,endTime开始结束时间,makeTimeStr匹配的时间字段
  3. console.log(wareId,wareIdStr,startTime,endTime,makeTimeStr)
  4. var newArry=[];
  5. for(var i in productList){
  6. var warehouseId=productList[i][wareIdStr];
  7. wareId=new RegExp(wareId)
  8. var isHasName=wareId.test(warehouseId);
  9. var makeTime=productList[i][makeTimeStr];
  10. var isTimeSlot=false;
  11. console.log(makeTime,startTime)
  12. if(makeTime>=startTime && makeTime<=endTime){
  13. console.log('true')
  14. isTimeSlot=true;
  15. }
  16. if(isHasName && isTimeSlot){
  17. newArry.push(productList[i]);
  18. }
  19. }
  20. $('#tb_data').bootstrapTable('load',newArry);
  21. }

  如果采购部门不选择,那就是查询时间段内所有的信息,实现效果图:

bootstrap-table前端实现多条件时间段查询数据的更多相关文章

  1. Bootstrap table前端分页(ssm版)

    说明bootstrap table可以前端分页,也可以后端sql用limit分页.前端分页下性能和意义都不大,故一般情况下不用这种,请看我的另一篇后端分页的博客源码下载地址:https://git.o ...

  2. jeecg 扩展封装查询条件 时间段查询

    使用jeecg框架开发的小伙伴们知道,添加查询条件,通常是我们加一个配置(query="true")就可以将该字段设置为查询条件.简单方便.但是这样的配置查询条件仅适用于输入框输入 ...

  3. bootstrap table 前端搜索

    1.bootstrap-table对于前端的搜索可以通过官网设置,但发现前端搜索出现bug,网上找到一个bootstrap-table的扩充js  bootstrap-table-mytoolbar. ...

  4. bootstrap table分页,重新数据查询时页码为当前页问题

    问题描述: 使用bootstrap table时遇到一个小问题,第一次查询数据未5页,翻页到第5页后,选中条件再次查询数据时,传到后端页码仍旧为5,而此时数据量小于5页,表格显示为未查询到数据. 处理 ...

  5. 161221、bootstrap table 实例

    bootstrap table 封装了一套完善的数据表格组件,把下面的代码复制一下估计你需要的基本功能都有了,没有的再看看手册对比着我给的实例也能很快的熟悉了 客户端 <!DOCTYPE htm ...

  6. 【转】bootstrap table轻松实现数据表格

    在使用bootstrap table时可能在很多时候回用的表格来显示数据,如果自己写那肯定没问题,但是数据展示出来就麻烦多了,然而bootstrap table 封装了一套完善的数据表格组件,把从后台 ...

  7. 新的表格展示利器 Bootstrap Table Ⅱ

        上一篇文章介绍了Bootstrap Table的基本知识点和应用,本文针对上一篇文章中未解决的文件导出问题进行分析,同时介绍BootStrap Table的扩展功能,当行表格数据修改. 1.B ...

  8. Bootstrap Table表格一直加载(load)不了数据-解决办法

    bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一 ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(20)-多条件模糊查询和回收站还原的实现 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架 ...

随机推荐

  1. PHP获取某段文字作为标题

    <?php mb_internal_encoding('utf-8'); // 提取文字标题,多余文字用省略号替换 $arr=[ '用心用情用功,进行无愧于时代的文艺创造', '一图了解第二届一 ...

  2. Java是面向对象的编程语言。它不仅吸收了C++语言的优点

    Java是面向对象的编程语言.它不仅吸收了C++语言的优点,而且摒弃了C++中难于理解的多继承和指针的概念.因此,Java语言具有功能强大.使用方便的特点.Java语言作为静态面向对象的编程语言的代表 ...

  3. Centos6.8 rabbitmq搭建且修改默认端口

    一.安装依赖环境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ ...

  4. 1 c#传递表变量去存储数据的例子

    1 c# 代码 using (SqlConnection con = GetEditorConnection()) { con.Open(); using (SqlCommand command = ...

  5. python lambda表达式的两种用处

    1 用处1定义匿名函数 不带参数的: a = ") 带参数的 b = lambda x, y:x * y 2 当函数作为参数时,直接为该函数传参. def func1(m, n): retu ...

  6. django orm 数据查询详解

    一 在django里面创建模型 from django.db import models class Blog(models.Model): name = models.CharField(max_l ...

  7. 币种大写算法(js)

    注意事项:小数精度处理问题,n*10出现精度误差,如1.88*10计算得18.799999999999997,实际想要的数据是18.8: 思路一:小数变成整数(通过字符串处理),计算后,变成小数: 思 ...

  8. C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能

    本文通过ANTS Memory Profiler工具探索c#中+.string.Concat.string.Format.StringBuilder.Append四种方式进行字符串拼接时的性能. 本文 ...

  9. MySql学习笔记【二、库相关操作】

    命令规范 关键字.函数名称大写 数据库.表名.字段名小写 语句须以分号结尾 切换使用数据库 USE database_name 如:USE test 查看数据库列表 SHOW {DATABASES|S ...

  10. SpringBoot-核心依赖说明

    spring-boot-dependencies 一般用来放在父项目中,来声明依赖,子项目引入相关依赖而不需要指定版本号,好处就是解决依赖冲突,统一管理依赖版本号 利用pom的继承,一处声明,处处使用 ...