Tp3.2页面公用的时间快捷搜索按钮

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_43187460/article/details/83993209

Tp3.2页面公用的时间快捷搜索按钮–

情景:

在改后台的BUG的时候,接上了一个小功能,就是在原有的所有有搜索功能的页面上,再加一个 #时间快捷选择按钮# 的功能 ,并且可以和原搜索条件互动,分别是:今天,昨天,本周,上周,本月,上月。

跑去看了一下前端代码,用的时间控件是***WdatePicker***,搜索按钮的javascript事件如下:

##只是其中一个页面:

$(".souzixun").click(function(){
	var name = $("#name").val();
	var userid = $("#userid").val();
	var keyword = name;
	var datemin = $("#datemin").val();
	var datemax = $("#datemax").val();
	var orders_status=$("input[name=orders_status]:checked").val();
	$.ajax({
	//可以看到原搜索的参数是用的GET。
		type:"get",
		url:"__URL__/saveticket_list.html",
		data:{"keyword":keyword,"datemin":datemin,"datemax":datemax,"orders_status":orders_status,"userid":userid},
		beforeSend: function(){
				$(".loading").fadeIn();
		},
		success:function(text){
			$("#search").html(text);
			$(".loading").fadeOut();
		},
		async:true
	});

});

可以看到原搜索的传参是用的GET,还有其他的搜索条件。

我是直接单独写了这个功能模板再include进去的,直接在a标签上实现地址就可以了。

需要注意的是每个页面的参数,除了时间控件的参数外,其他都不一定相同。我们要写的模块是要能共用的,所以代码如下:

	//调用预先写好的时间函数
				<!-- {$today 	 = GetDateRange('today','f')} -->
				<!-- {$yestoday  = GetDateRange('yestoday','f')} -->
				<!-- {$week 	 = GetDateRange('week','f')} -->
				<!-- {$lastweek  = GetDateRange('lastweek','f')} -->
				<!-- {$month 	 = GetDateRange('month','f')} -->
				<!-- {$lastmonth = GetDateRange('lastmonth','f')} -->
//HTML页面
			<a href="{:U('',array_merge($_GET,array('datemin'=>$today['startime'],'datemax'=>$today['endtime'])))}" style="color:#fff">
					<button type="button" class="btn btn-success radius " id="" name="">今天</button>
			</a>

array_merge把2个数组合并为一个数组,用到这个的原因是:

每个页面 搜索的时候 提交的 参数 是不一样的,所以我们在href上,把原地址参数$_GET 和我们自己写的时间参数datemin datemax的值,进行组合,成为正确的本页面模块的搜索参数地址,并且时间控件的参数的值又改成了我们自己写的快捷时间,最后此功能才正确可用,否则参数缺失会引起sql查询语句报错。

快捷时间搜索的时间段,是自己写的一个函数,加进公共的函数库里,调用就好了。也一并发出来,如果有用可以拿去,只截取了今天选项的代码,其他选项都是一样的格式,复制组装一下就可以了:

//时间函数
function GetDateRange($when,$date_format='all')
{
    switch($when)
        {   
            //当天时间
            case "today":
                //php获取今日开始时间戳和结束时间戳
                $int_start  =mktime(0,0,0,date('m'),date('d'),date('Y'));
                $int_over   =mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
                //php获取今日开始年月日和结束年月日
                $time_start = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d'),date('Y')));
                $time_over  = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d'),date('Y')));
                if($date_format=='all')
                {
                    $time_arr   =  array 
                    ( 
                        "timestamp" => array 
                            ( 
                                "startime" => $int_start,
                                "endtime" => $int_over,
                            ),
                        "timeformat"=> array 
                            ( 
                                "startime" => $time_start,
                                "endtime" => $time_over,
                            )
                    ); 
                }
                else if($date_format=='s')
                {
                    $time_arr   =  array 
                    ( 
                                "startime" => $int_start,
                                "endtime" => $int_over,
                    ); 
                }
                else if($date_format=='f')
                {
                    $time_arr   =  array 
                    ( 
                                "startime" => $time_start,
                                "endtime" => $time_over,
                    ); 
                }
                return $time_arr;
            break;
            
            //如果没有以上条件,全部输出
            default:
                //php获取今日开始时间戳和结束时间戳
                $todat_intstart     =mktime(0,0,0,date('m'),date('d'),date('Y'));
                $today_intover      =mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
                //php获取今日开始年月日和结束年月日
                $today_timestart    = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d'),date('Y')));
                $today_timeover     = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d'),date('Y')));
                //php获取昨日开始时间戳和结束时间戳
                $yestoday_intstart  = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
                $yestoday_intover   = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
                //php获取昨天开始年月日和结束年月日
                $yestoday_timestart = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d')-1,date('Y')));
                $yestoday_timeover  = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d')-1,date('Y')));
                //php获取本周开始时间戳和结束时间戳
                $week_intstart      = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'));
                $week_intover       = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y'));
                //php获取本周开始年月日和结束年月日
                $week_timestart     = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y')));
                $week_timeover      = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y')));
                //php获取上周开始时间戳和结束时间戳
                $lastweek_intstart  = mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
                $lastweek_intover   = mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
                //php获取上周开始年月日和结束年月日
                $lastweek_timestart = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')));
                $lastweek_timeover  = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')));
                //php获取本月开始时间戳和结束时间戳
                $month_intstart     = mktime(0,0,0,date('m'),1,date('Y'));
                $month_intover      = mktime(23,59,59,date('m'),date('t'),date('Y'));
                //php获取本月开始年月日和结束年月日
                $month_timestart    = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),1,date('Y')));
                $month_timeover     = date('Y-m-d H:i:s',mktime(23,59,59,date('m'),date('t'),date('Y')));
                //php获取上月开始时间戳和结束时间戳
                $lastmonth_intstart = strtotime(date('Y-m-01 00:00:00',strtotime('-1 month')));
                $lastmonth_intover  = strtotime(date("Y-m-d 23:59:59", strtotime(-date('d').'day')));
                //php获取上月开始年月日和结束年月日
                $lastmonth_timestart = date('Y-m-01 00:00:00',strtotime('-1 month'));
                $lastmonth_timeover  = date("Y-m-d 23:59:59", strtotime(-date('d').'day'));
                if($date_format=='all')
                {
                    $time_arr  =  array 
                    ( 
                        "today" => array
                            (
                                "timestamp" => array 
                                    ( 
                                        "startime" => $todat_intstart,
                                        "endtime" => $today_intover,
                                    ),
                                "timeformat"=> array 
                                    ( 
                                        "startime" => $today_timestart,
                                        "endtime" => $today_timeover,
                                             
                                    )
                            );
                       
                }
                else if($date_format=='s')
                {
                    $time_arr  =  array 
                    ( 
                        "today" => array
                            (
                                        "startime" => $todat_intstart,
                                        "endtime" => $today_intover,
                            );
                }
                else if($date_format=='f')
                {
                    $time_arr  =  array 
                    ( 
                        "today" => array
                            (
                                        "startime" => $today_timestart,
                                        "endtime" => $today_timeover,
                            );
                }
                return $time_arr;
        }
}

在这里插入图片描述在需要此功能的页面引入它即可,如上:

猜你喜欢

转载自blog.csdn.net/qq_43187460/article/details/83993209