决策报表FRM自动换参
在给公司制作大屏,使用了fineReport 的决策报表 FRM。
大屏包含一个表单,需要滚屏,并且滚完以后通过换sql参数换成一个新的内容。

比如 先显示A部门的内容, 滚屏20秒后,更换sql忠的 部门参数, 页面显示 B部门的内容,  只是更换值,表头都是固定的。

所以大屏包含两个JS 内容: 表单滚屏, 和 自动换参。


滚屏借鉴官方文档已经写好了,并写了个clearinterval ,让页面滚到底部后停止滚动。


现在卡在参数这一块两天了。


尝试过的办法

1. 由于滚屏要和换参数写在一起,保证滚完才能换参,而滚屏是写在body处的,所以就都得写在body这个地方, 但是body处又无法操作参数界面,因为 FRM 没有contentpane这个接口,(只有CPT有)


2. 将参数拖到画布,形成一个控件,然后用this 来调用, 但是它直接跳到2了,并没有经过0,滚屏,换参为1,滚屏这样的操作。 这里也是写在body处的

代码如下: 

pid = this.options.form.getWidgetByName("pid");
//隐藏报表块report0的滚动条
setTimeout(function() {
  $("div[widgetname=REPORT0]").find("#frozen-north")[0].style.overflow = "hidden";
  $("div[widgetname=REPORT0]").find("#frozen-center")[0].style.overflow = "hidden";
}, 100);
window.flag = true;
var arr = ['0', '1', '2'];
for (let i = 0; i < arr.length; i++) {
  alert(arr[i]);
  pid.setValue(arr[i]);
  var old = -1;
  function move_screen() {
    if (window.flag) {
      currentpos = $("#frozen-center")[0].scrollTop;
      if (currentpos == old) {
        // $("#frozen-center")[0].scrollTop=0;  
        clearInterval(interval);
      } else {
        old = currentpos;
        $("#frozen-center")[0].scrollTop = currentpos + 1.5;
      }
    }
  };
  var interval=setInterval(move_screen,40);
  i = i+1
};


3. 使用tab,切换tab,但是同时又没法滚屏了。


问下大家有没有什么办法呢?


FineReport nankjune 发布于 2020-11-6 15:20
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
nankjuneLv4见习互助
发布于2020-11-16 14:13

已解决。 

For 循环是同步的, set_interval 是异步的,所以两个会有冲突。

分别写 滚屏和 换参在 para 和 body 两个地方, 用时间卡好即可。


换参的时间切换,可以根据不同分钟 的要求,对他取余数。

比如3分钟一切, 则%3

  • 1关注人数
  • 226浏览人数
  • 最后回答于:2020-11-16 14:13
    请选择关闭问题的原因
    确定 取消
    返回顶部