FineReport
(THIS BLOG IS STILL IN PROGRESS)
Ref
层次坐标
用来表示扩展后的单元格位置,分为相对层次坐标和绝对层次坐标。
公式
Cell_X[Cell_Y : Z]
参数 说明 Cell_X 需要返回结果的单元格 Cell_Y 位移时参考的单元格 Z 位移量,例如:+2表示相对坐标且后移2位;-2表示相对坐标且前移2位;2表示绝对坐标从前往后第2位;!-2表示绝对坐标从后往前第2位
相对层次坐标
⚠ 第一个向前位移-1时,数据为空;位移-2才是列中的最后一个数据。相当于列最后有一个看不见的空数据。
绝对层次坐标
常用公式
- CellX[!0]: 获取单元格CellX扩展出来的所有值,常用于占比
- CellX[!0]{条件表达式}: 通过条件筛选单元格CellX扩展出来的部分数据,常用于条件汇总
- &CellX: 获取单元格CellX扩展出来的每个数据的位置,常用于环比
- $CellX: 获取单元格CellX扩展出来的每个位置对应的值,常用于条件汇总
跨域调用iframe嵌套报表
思路:使用HTML5的postMessage方法实现。
页面调用代码:
- 在报表中引用一个外部js,代码如下:
1 | window.addEventListener("message", (event)=>{ |
Excel导入
Excel导入的单元格必须设置为可扩展,并且必须设置为列表而不是分组!否则会提示找不到不定行单元格
帆软8.0的Excel导入貌似有bug,建议是在界面上添加按钮先删除数据,然后再导入Excel
- Excel导入前:
- 按钮事件:click.js
1
2
3
4
5
6
7
8
9
10
11
12
13FR.Msg.confirm('警告', `是否确定要清空字典数据?`, function(val) {
if (val) {
FR.Msg.confirm('警告', `请再次确认是否确定要清空字典数据?请确保您已备份`, function(val) {
if (val) {
let clause = "SQL('HRP_BI', \"call hrp_pas.delete_putout_dict_team()\", 1, 1)"
console.log(clause)
console.log(FR.remoteEvaluate(clause))
FR.Msg.alert('提示', '数据清空成功')
_g().parameterCommit()
}
})
}
})
JS API
contentPane
contentPane.deleteRows
contentPane.deleteRows(['A2', 'A3', 'A4'])
_g()
_g().parameterCommit()
curLGP
FAQ
Vue中报表弹窗
代码见FRModal.vue
1 | <template> |
1 | showBills (outVisit) { |
调用存储过程(remoteEvaluate)
帆软内置SQL方法:
需要注意的是,使用帆软内置SQL方法不支持DML语句如update/delete.
使用remoteEvaluate方法来调用帆软内置的SQL方法,进而调用存储过程。
1 | FR.Msg.prompt('重置密码', "新密码", '123456', function(password) { |
调用外部接口
1 | var presetMessage = `您好,您${appdate}申请的${pname}患者的${appname}(${appno})项目由于以下原因无法执行:[此处填写原因],请先完善。` |
外部页面触发报表接口
1 | // 报表中引用本js文件 |
1 | // 以vue为例,通过postMessage通讯: |
JS常用函数
_g().getCellValue
getCellValue
的第一个参数是列号,且是0 based。