yhdata_xrvXuQqg白银一
昨天 16:27 发布在问答
日期范围参数过滤怎么优化?
本帖最后由 yhdata_xrvXuQqg 于 2025-7-7 16:29 编辑

设置了两个文本参数,设置成日期格式,分别为开始日期和结束日期,设置了一个下拉列表组件,设置成列表,
增加了快捷日期如昨日,本周,本月,本年这些


希望点击昨日的时候,开始日期和结束日期都是昨天的日期

实际操作中,点击了昨日,还是习惯直接去日期过滤中重新筛选日期,这个时候日期可以点击,但是由于脚本控制了是昨日,导致虽然重新选择了日期但是心日期并不会生效,还会恢复到昨天的日期,导致体验很差

怎么能让我点击昨天的时候,无法再选择其他的筛选日期?

或者点击“昨天”,开始日期和结束日期还能自由选择其他的日期时间?



日期现在用的是日期过滤的范围模式  

也做了一个日期用文本参数的日期格式的样式,也是同样的问题
微信图片_20250707160313.png
83
6
精彩评论6
yhdata_lyaa
发表于 昨天 16:40 显示全部楼层
要先选择日期类型,去控制日期组件的日期,这个只能在变化时运行的脚本里写了,因为下拉列表参数变了就会让日期组件生效,这时候只要报告有改变就会执行一次赋值脚本,就不能再自己修改日期了。
除非赋值只写了 装载时运行的脚本,只给一次默认值,后面才能再选,但是你这个有不同的默认值需求只能写在变化时运行。
回复

使用道具 2#

yhdata_xrvXuQqg白银一 回复yhdata_lyaa
发表于 2025-07-07 16:53:00
我已经写在了变化时运行的脚本,现在基本也满足需求,是因为那个独立选择日期的操作体验不好 就是必须要点击自定义,才能自由选择能生效的日期 那我现在想既然日期不能生效是否能不让我选择其他的日期时间,比如选择本周,那么开始日期只能选择本周第一天的日期,结束时间只能选择本周最后一天的日期,而不是可以所有日期都出来,但是点了又不生效
回复

yhdata_xrvXuQqg白银一 回复yhdata_lyaa
发表于 2025-07-07 16:57:25
我这个需求,就是常用的报表查询非常常见,您们有其他的实现方式吗?我这里因为固定的快捷日期选项如果单独选了开始日期和结束日期后不生效,被N多吐槽 但是我感觉这个应该大家都会要我这个日期的查询条件的,没有更合适的吗?
回复

yhdata_xrvXuQqg白银一
发表于 昨天 16:53 显示全部楼层
本帖最后由 yhdata_xrvXuQqg 于 2025-7-7 16:55 编辑

var a = 下拉列表参数1.getSelectedObjects()[0];
if(a == '昨日'){
var star_date = param["_LAST_FULL_DAY_"];
var end_date = param["_LAST_FULL_DAY_"];

var year1 = year(star_date);
var month1 = month(star_date);
var day1 = day(star_date);

开始日期.value=formatDate(date(year1,month1,day1),"yyyy-MM-dd") ;
结束日期.value=formatDate(date(year1,month1,day1),"yyyy-MM-dd") ;

}else if(a == '本周'){
var star_date = param["_THIS_YEAR_WEEK_"];
var end_date = param["_LAST_FULL_DAY_"];
var week_date= weekdayname(param["_THIS_FULL_DAY_"]);
var lastweek_date = param["_LAST_YEAR_WEEK_"];
var lastweekend_date = dateAdd(param["_THIS_YEAR_WEEK_"],"dayofyear",-1);

if(week_date=='星期一'){
var year1 = year(lastweek_date);
var month1 = month(lastweek_date);
var day1 = day(lastweek_date);

var year2 = year(lastweekend_date);
var month2 = month(lastweekend_date);
var day2 = day(lastweekend_date);


}else{
var year1 = year(star_date);
var month1 = month(star_date);
var day1 = day(star_date);

var year2 = year(end_date);
var month2 = month(end_date);
var day2 = day(end_date);

}

开始日期.value=formatDate(date(year1,month1,day1),"yyyy-MM-dd") ;
结束日期.value=formatDate(date(year2,month2,day2),"yyyy-MM-dd") ;


}else if(a == '本月'){

var star_date = param["_THIS_YEAR_MONTH_"];
var end_date = param["_LAST_FULL_DAY_"];
var month_date= param["_THIS_FULL_DAY_"];
var lastmonth_date = param["_LAST_YEAR_MONTH_"];
var lastmonthend_date = dateAdd(param["_THIS_YEAR_MONTH_"],"dayofyear",-1);


if(day(month_date)=='01'){   
var year1 = year(lastmonth_date);
var month1 = month(lastmonth_date);
var day1 = day(lastmonth_date);

var year2 = year(lastmonthend_date);
var month2 = month(lastmonthend_date);
var day2 = day(lastmonthend_date);

}else{
var year1 = year(star_date);
var month1 = month(star_date);
var day1 = day(star_date);

var year2 = year(end_date);
var month2 = month(end_date);
var day2 = day(end_date);


}

开始日期.value=formatDate(date(year1,month1,day1),"yyyy-MM-dd") ;
结束日期.value=formatDate(date(year2,month2,day2),"yyyy-MM-dd") ;

}else if(a == '本季'){

var star_date = param["_THIS_YEAR_QUARTER_"];
var end_date = param["_LAST_FULL_DAY_"];
var quarter_date= param["_THIS_FULL_DAY_"];
var lastquarter_date = param["_LAST_YEAR_QUARTER_"];
var lastquarterend_date = dateAdd(param["_THIS_YEAR_QUARTER_"],"dayofyear",-1);

if(year(star_date)==year(quarter_date)&&month(star_date)==month(quarter_date)&&day(star_date)==day(quarter_date)){
var year1 = year(lastquarter_date);
var month1 = month(lastquarter_date);
var day1 = day(lastquarter_date);

var year2 = year(lastquarterend_date);
var month2 = month(lastquarterend_date);
var day2 = day(lastquarterend_date);

}else{
var year1 = year(star_date);
var month1 = month(star_date);
var day1 = day(star_date);

var year2 = year(end_date);
var month2 = month(end_date);
var day2 = day(end_date);

}

开始日期.value=formatDate(date(year1,month1,day1),"yyyy-MM-dd") ;
结束日期.value=formatDate(date(year2,month2,day2),"yyyy-MM-dd") ;

}else if(a == '本年'){

var star_date = param["_THIS_YEAR_MONTH_"];
var end_date = param["_LAST_FULL_DAY_"];
var year_date= param["_THIS_FULL_DAY_"];

if(month(star_date)=='01'&&day(star_date)=='01'){

var year1 = year(star_date)-1;
var month1 = month(star_date);
var day1 = day(star_date);

var year2 = year(end_date);
var month2 = month(end_date);
var day2 = day(end_date);

}else{
var year1 = year(star_date);
var month1 = month(star_date);
var day1 = day(star_date);

var year2 = year(end_date);
var month2 = month(end_date);
var day2 = day(end_date);

}



开始日期.value=formatDate(date(year1,'01','01'),"yyyy-MM-dd") ;
结束日期.value=formatDate(date(year2,month2,day2),"yyyy-MM-dd") ;

}
else if(a == '自定义'){

}
else{
//无需写脚本
}
微信图片_20250707165459.png
回复

使用道具 3#

yhdata_lyaa
发表于 昨天 17:49 显示全部楼层


把你每次选择的开始日期和结束日期,赋值给a,b两个参数,
这里设置最大最小值,选a,b两个参数

回复

使用道具 4#

yhdata_xrvXuQqg白银一 回复yhdata_lyaa
发表于 2025-07-07 18:00:13
这个可以让昨日这些只能选择固定值,这部分已经处理了。 还有‘’自定义‘’这里原来是可以选择任意日期的,按照这个处理之后自定义选不到任意日期了 自定义这里要怎么调整一下可以选择任意日期?
回复

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
1500W

用户等你来哦

Copyright   ©2012-2025  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部