版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}
在需要此功能的页面引入它即可,如上: