JS显示即时/实时时间

编辑
文档创建者:静听禅鸣 (60352 )     浏览次数:5712次     编辑次数:17次     最近更新:幽冥猫儿 于 2018-05-04     

目录:

1. 描述编辑

在论坛上经常会有人提出来,想在报表里显示即时的时间,由于在报表里使用公式,是只能显示静止的当前时间,而不是即时的时间,这里可以通过JS来实现即时的时间显示。

222


2. 思路编辑


获取当前的时间,一秒刷新一次报表,将当前时间显示在某个单元格里。
注:也可以使用数字时钟控件插件来显示即时时间。

3. cpt示例一编辑

获取当前的时间,一秒刷新一次 单元格,当前时间显示在C4单元格里。
3.1 事件设置
点击模板>模板web属性>填报页面设置,选择为该模板单独设置,在事件设置里面添加一个加载结束事件,完整js代码如下:
//每秒执行一次 setInterval(function() { //将当前时间赋值给M var M = FR.remoteEvaluate('FORMAT(now(),"yyyy-MM-dd HH:mm:ss")'); //给C4单元格赋值M contentPane.setCellValue("C4", null, M); }, 1000);

222


3.2 预览效果
PC端预览效果
222



注:此方法的优点是每秒只刷新指定的单元格,页面其他内容不会受到影响。
移动端预览效果
注:此JS不支持移动端使用

4. cpt示例二编辑

4.1 添加加载结束后事件

点击模板>模板web属性>填报页面设置,选择为该模板单独设置,在下面的事件设置里面添加一个加载结束事件,完整js代码如下:
function Appendzero(obj) { if(obj<10) return "0" +""+ obj; //判断obj是否小于10,如果小于10,则在数字前面加上"0"补位 else return obj; } FR.CLOCK = function(cell) { var cl = $('[id^='+cell+']'); //因为后面调用使用了 FR.CLOCK('A1'),即得到A1的句柄 setInterval(function(){ var date=new Date();//获取当时日期 var format=date.getFullYear()+"-"+Appendzero(date.getMonth()+1)+"-"+Appendzero(date.getDate())+" "+Appendzero(date.getHours())+":"+Appendzero(date.getMinutes())+":"+Appendzero(date.getSeconds());//format 是一个数符串,把年-月-日 小时:分钟:秒组合到一起了,调用了Appendzero()函数,进行补位操作 cl.html(format); //C1,传来的单元格,使单元格里显示日期 },1000); //1000毫秒=1秒,即1秒钟刷新一次 } ; FR.CLOCK('A1'); //这里是关键,A1是传的单元格,传给CLOCK方法

222

4.2 保存与预览
保存模板,点击填报预览(由于前面是在填报页面添加的事件),效果即如上。
PC端预览效果
222
移动端预览效果
注:此JS不支持移动端使用

5. frm示例编辑

上面讲解的是cpt里实现显示实时时间,那么如果我们frm里也想显示实时时间呢?

有两种方案:

方法一:使用决策报表内报表块刷新插件,在报表块的单元格A1里写公式=now(),然后使用定期刷新每秒刷新,或者监控刷新监控A1单元格每秒刷新,即可显示实时时间。

插件使用详细点击决策报表内报表块刷新插件

方法二:在报表块的单元格A1里写公式=now(),然后使用js,每秒刷新当前报表块,详细js如下:

var form = this.options.form; setInterval(function() { form.getWidgetByName('report0').gotoPage(1,"{}",true); }, 1000);

报表块局部刷新详细点击JS实现决策报表内报表块局部刷新/翻页

关键字:显示现在时间

附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?