FineReport 动态传入参数的查询js事件

在帆软报表开发时,会有按照日周月展示,分别对应日表周表和月表,如何用一个数据集实现三个表的数据切换,就需要用到js动态传入参数。例如写一个数据集:

SELECT
    a.volume1
   ,a.volume2
   ,a.volume3
   ,a.${pt}     as    time
from  ${tablename} a

WHERE ${pt}>='${startdate}' and ${pt}<='${enddate}'

此处定义了四个控件,空间名分别为pt,tablename,startdate,enddate

如实现切换需要定义点击的js事件,如下

function getWeek(adate){

    var week = adate.getDay();
    var monday=new Date();
    var sunday = new Date();
    if(week==0){
        monday.setTime(adate.getTime()-6*24*3600*1000);
        sunday.setTime(adate.getTime());
    }else{
        monday.setTime(adate.getTime()-(week-1)*24*3600*1000);
        sunday.setTime(monday.getTime()+6*24*3600*1000);
    }
    return monday.getFullYear()+""+((monday.getMonth()+1)>=10?monday.getMonth()+1:"0"+(monday.getMonth()+1))+""+(monday.getDate()>=10?monday.getDate():"0"+monday.getDate())+"-"+sunday.getFullYear()+""+((sunday.getMonth()+1)>=10?sunday.getMonth()+1:"0"+(sunday.getMonth()+1))+""+(sunday.getDate()>=10?sunday.getDate():"0"+sunday.getDate());
}


function getM(adate){
    return adate.getFullYear()+""+((adate.getMonth()+1)>=10?adate.getMonth()+1:"0"+(adate.getMonth()+1));
}


var date_from = this.options.form.getWidgetByName("datefrom");
var date_to = this.options.form.getWidgetByName("dateto");
var type = this.options.form.getWidgetByName("periodtype").getValue();
var table_Name = this.options.form.getWidgetByName("tableName");
var pt = this.options.form.getWidgetByName("pt");
var start_date = this.options.form.getWidgetByName("startdate");
var end_date = this.options.form.getWidgetByName("enddate");


if(date_from == "" || date_from == null)
{
  alert("请选择开始日期");
  return false;
}
if(date_to == "" || date_to == null)
{
  alert("请选择结束日期");
  return false;
}
var starttime=new Date(date_from.getValue().split("-")[0],date_from.getValue().split("-")[1]-1,date_from.getValue().split("-")[2]);
var starttimes=starttime.getTime()/24/3600/1000;


var lktime=new Date(date_to.getValue().split("-")[0],date_to.getValue().split("-")[1]-1,date_to.getValue().split("-")[2]);
var lktimes=lktime.getTime()/24/3600/1000;


if(lktimes<starttimes){
alert('结束日期必须大于等于开始日期');
return false;
}
if(lktimes - starttimes >=90&&type=="day")
{
alert('时间范围应在90天内,请检查');
return false;
}
if(lktimes - starttimes >=180&&type=="week")
{
alert('时间范围应在24周内,请检查');
return false;
}
if(lktimes - starttimes >=365&&type=="month")
{
alert('时间范围应在12月内,请检查');
return false;
}


if (type=='day'){ 
  start_date.setValue(date_from.getValue().split("-")[0]+""+date_from.getValue().split("-")[1]+""+date_from.getValue().split("-")[2]);
  end_date.setValue(date_to.getValue().split("-")[0]+""+date_to.getValue().split("-")[1]
  +""+date_to.getValue().split("-")[2]);
  pt.setValue("pt_d");
  table_Name.setValue("ads_smarthome_app_user_attr_dm");
}else if (type=='week'){
  start_date.setValue(getWeek(starttime));
  end_date.setValue(getWeek(lktime));
  pt.setValue("pt_w");
  table_Name.setValue("ads_smarthome_app_user_attr_wm");
}else if(type=='month'){
  start_date.setValue(getM(starttime));
  end_date.setValue(getM(lktime));
  pt.setValue("pt_m");
  table_Name.setValue("ads_smarthome_app_user_attr_mm");
}

关注微信公众号【飞哥大数据】,回复666 获取2022年100+公司面试真题,以及spark与flink面试题汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值