报表学习笔记

楼主
我是社区第174564位番薯,欢迎点我头像关注我哦~
一:关于网页框路劲不存在处理
此处是使用网页框展示pdf文件,取不到就会提示404。由于需求不想出现404页面,所以我就只能用js判断路径了。下面是我自己的代码示例(${pdfname}我的文件名是根据参数来判断选择的):

var Widget = this.options.form.getWidgetByName('rHIframe0');
var urlPath = "${serverURL}/WebReport/Pdf/${pdfname}/报告.pdf"
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", urlPath, false);
xmlhttp.send();
if(xmlhttp.readyState == 4) {
    if(xmlhttp.status == 200) {
        //文件存在就加载文件
        Widget.loadUrl(urlPath);
    }
    else if(xmlhttp.status == 404) {
        //如果文件不存在就空白 ,或者加载自定义error页面
        Widget.loadUrl("");
    }
    else {
        //例如加载自定义页面
        Widget.loadUrl("${serverURL}/WebReport/error.html");
    }
}


另外提一点,就是在frm决策表单里自定义出错模板是否不生效。我个人测试没有生效,如果生效是可以自定义出错页面来取代这个做法的。





二:使用仪表盘,显示百分比,鼠标悬浮显示数值(自定义提示)
在使用仪表盘的时候,遇到这样一个需求。就是仪表盘展示一个实时进度,鼠标悬浮提示的是实际收入数值。因为我没有找到别的办法,就使用了js执行sql完成自定义提示。
下面是自定义提示里的js代码:
1.执行sql案例
//JS执行sql脚本案例
function(){
  //取到分类截取到需要的信息,作为查询的条件
  var lettername=this.category.substring(0,this.category.length-4);

  //定义数据库连接
  var sql ="SQL(\"ORCLDB\",\"select ***** from *** where lettername='"+lettername+"')\",1,1)";

  //利用FR.remoteEvaluate(sql)函数执行sql返回结果
  return FR.remoteEvaluate(sql);
}



2.执行存储过程案例
function(){
     //参数根据存储过程的实际需求而定
     var sql=" {call PROC_SSSR ('"+lettername+"',?)}";
     //执行返回结果
     var result = FR.remoteEvaluate('sql("ORCLDB","' + sql + '",1,1)');

     return result;
}


三:加载闪过白屏(8.0下)在加载的时候8.0版本下的模板,会出现一个加载之后白屏一闪的现象。加载的数据越大越慢,白屏的时间就会越久。
这样一来体验不是很好,所以就加了这样一个需求。
我的做法就是报表初始化的时候给图表控件加一个隐藏,在加载数据完成的时候再显示图表控件。但是我不知道决策
表单怎么添加加载完成的事件。就利用加载的顺序在form的初始化事件里给控件加一个样式:
//不显示
setTimeout(function(){
        $("body > div.content-container.fr-quick-border-layout.ui-state-enabled > div.fr-quick-adaptive-layout.ui-state-enabled > div:nth-child(5)").css("visibility","hidden");
},100)


然后再到body的加载事件里加一个样式:
//显示
setTimeout(function(){
        $("body > div.content-container.fr-quick-border-layout.ui-state-enabled > div.fr-quick-adaptive-layout.ui-state-enabled > div:nth-child(5)").css("visibility","visible");
},1500)

不知我的做法是否可取,因为从数据加载的体验上 。这个延迟越大体验也会对应的较差,我也只是做了个投机取巧的事。

四:报表块跑马灯(如果做联动刷新,会出现报表块鼠标悬浮不停止)


在添加联动得地方,再加一个javascript事件 ,把滚动得js在复制一遍,这样可以解决这个问题

编辑于 2018-10-31 15:21  

编辑于 2018-11-1 14:20  


编辑于 2019-5-6 10:48  
分享扩散:
参与人数 +2 F豆 +132 理由
传说哥 + 66 骚年,我看好你哦
影丶 + 66 默默地点个赞,然后闪人

查看全部评分

沙发
发表于 2018-10-31 17:40:53
板凳
发表于 2018-10-31 17:49:58

谢谢 编辑于 2019-5-6 10:43  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2回帖数 1关注人数 7967浏览人数
最后回复于:2018-11-4 10:32

返回顶部 返回列表