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):框架 ...
随机推荐
- PHP获取某段文字作为标题
<?php mb_internal_encoding('utf-8'); // 提取文字标题,多余文字用省略号替换 $arr=[ '用心用情用功,进行无愧于时代的文艺创造', '一图了解第二届一 ...
- Java是面向对象的编程语言。它不仅吸收了C++语言的优点
Java是面向对象的编程语言.它不仅吸收了C++语言的优点,而且摒弃了C++中难于理解的多继承和指针的概念.因此,Java语言具有功能强大.使用方便的特点.Java语言作为静态面向对象的编程语言的代表 ...
- Centos6.8 rabbitmq搭建且修改默认端口
一.安装依赖环境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ ...
- 1 c#传递表变量去存储数据的例子
1 c# 代码 using (SqlConnection con = GetEditorConnection()) { con.Open(); using (SqlCommand command = ...
- python lambda表达式的两种用处
1 用处1定义匿名函数 不带参数的: a = ") 带参数的 b = lambda x, y:x * y 2 当函数作为参数时,直接为该函数传参. def func1(m, n): retu ...
- django orm 数据查询详解
一 在django里面创建模型 from django.db import models class Blog(models.Model): name = models.CharField(max_l ...
- 币种大写算法(js)
注意事项:小数精度处理问题,n*10出现精度误差,如1.88*10计算得18.799999999999997,实际想要的数据是18.8: 思路一:小数变成整数(通过字符串处理),计算后,变成小数: 思 ...
- C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能
本文通过ANTS Memory Profiler工具探索c#中+.string.Concat.string.Format.StringBuilder.Append四种方式进行字符串拼接时的性能. 本文 ...
- MySql学习笔记【二、库相关操作】
命令规范 关键字.函数名称大写 数据库.表名.字段名小写 语句须以分号结尾 切换使用数据库 USE database_name 如:USE test 查看数据库列表 SHOW {DATABASES|S ...
- SpringBoot-核心依赖说明
spring-boot-dependencies 一般用来放在父项目中,来声明依赖,子项目引入相关依赖而不需要指定版本号,好处就是解决依赖冲突,统一管理依赖版本号 利用pom的继承,一处声明,处处使用 ...