fr-js
js插入行
var id = $("td[id^=A]:last").attr("id");
//获取A列最后一行的单元格编号
//id^=A代表A列,last代表最后一行
_g().appendReportRC(1, id);
//插入1行
自由调整单元格插件调整顺序后按照调整后的序号入库,需要在填报Web属性里设置加载结束事件
//const tableBody = document.querySelector('.rows-height-counter')
const tableBody = document.querySelector('#frozen-center>.x-table>tbody');
new Sortable(tableBody, {
sort: true,
animation: 150,
onEnd: function (evt) {
console.log(evt);
var itemEl = evt.item;
evt.to;
evt.from;
evt.oldIndex;
evt.newIndex;
evt.clone
evt.pullMode;
var $tds =$('.x-table td[col=1][idx=0]:visible:not([fmt="T"])');
//获取第1列中可见的序号单元格(A列)
var n = 0;
$tds.each(function(i, e) {
n = n + 1;
var row = $(e).attr("row");
//获取行号
_g().setCellValue(0, 1, row, n);
//将当前编号重新设置
// 需要将td[col=1]和_g().setCellValue(0, 1, row, n)中的1对应,两个数字需要相同。对应单元格的索引,填报单元格索引从0开始
})
}
});
普通报表-填报预览-获取控件单元格所在位置
var city=contentPane.getWidgetByName("txt3").options.location;
alert(city);
返回值:A5
设置uuid为主键,智能提交,在uuid那一列上,加条件属性:如果当前值($$$)的长度为0,则生成一个uuid,否则就是当前值($$$)。
获取数据集P_S_FMEA_DETAIL_V与B3单元格对应的字段TASKID所对应的值
value('P_S_FMEA_DETAIL_V', 'TASKID', B3);
/**
* 发起流程
* accountid VALUE('SYS_BPMUSER',1,2,$fine_username)
* fabid $doc_fab
* versionnum $doc_version
* txt1 'http://crm-finereport.crmicro.com/webroot/decision/view/report?viewlet=TEST%252F1.frm'
* fmeadomian $fmeadomain
*/
let sid;
var accountid = accountid.toString();
try {
// 获取frm里网页框里的cpt的单元格的值
sid = top.document.getElementsByName('RHIFRAME0')[0].contentWindow._g().getCellValue(0, 1, 0)
}
catch {
sid = $(".bi-iframe:visible", window.top.document)[0].contentWindow.document.getElementsByName('RHIFRAME0')[0].contentWindow._g().getCellValue(0, 1, 0);
}
var nurl = fmeadomian + decodeURIComponent(decodeURIComponent(txt1)).replace(/^(?:[^/]*\/){3}(.*)$/, "$1");
var conf = '<MyField><uuid>' + sid + '</uuid><fabid>' + fabid + '</fabid><pstatus>' + 1 + '</pstatus><fstatus>' + 2 + '</fstatus><txt1>' + '<![CDATA[' + nurl + ']]>' + '</txt1><versionnum>' + 1 + '</versionnum></MyField>';
//alert(conf);
send(accountid, 'P_A_EXPORT001', conf);
let a = _g().getWidgetByName('doc_export_type').getValue().toString();
try {
if (a == 'PDF') {
top.document.getElementsByName('RHIFRAME0')[0].contentWindow.contentPane.getWidgetByName('btn_export_pdf').fireEvent("click");
} else {
top.document.getElementsByName('RHIFRAME0')[0].contentWindow.contentPane.getWidgetByName('btn_export_excel').fireEvent("click");
}
} catch {
if (a == 'PDF') {
$(".bi-iframe:visible", window.top.document)[0].contentWindow.document.getElementsByName('RHIFRAME0')[0].contentWindow.contentPane.getWidgetByName('btn_export_pdf').fireEvent("click");
} else {
$(".bi-iframe:visible", window.top.document)[0].contentWindow.document.getElementsByName('RHIFRAME0')[0].contentWindow.contentPane.getWidgetByName('btn_export_excel').fireEvent("click");
}
}
//关闭当前弹窗
window.top.layer.closeAll("iframe");
frm内使用url向网页框传值
var paras = _g().getWidgetByName('doc_more_paras').getValue();
var fab = _g().getWidgetByName('doc_fab').getValue();
var fmea_code = _g().getWidgetByName('doc_fmea_code').getValue();
var product = _g().getWidgetByName('doc_product').getValue();
var process_platform = _g().getWidgetByName('doc_process_platform').getValue();
var core_team = _g().getWidgetByName('doc_core_team').getValue();
var owner = _g().getWidgetByName('doc_owner').getValue();
var date_start = _g().getWidgetByName('doc_date_start').getValue();
var date_modify = _g().getWidgetByName('doc_date_modify').getValue();
var status = _g().getWidgetByName('doc_status').getValue();
var colname = _g().getWidgetByName('r_btn_select_col_1').getValue();
_g().getWidgetByName('rHIframe0').setValue(url + '&colname=' + paras + colname + '&doc_fab=' + fab + '&doc_fmea_code=' + fmea_code + '&doc_product=' + product + '&doc_product=' + product + '&doc_process_platform=' + process_platform + '&doc_core_team=' + core_team + '&doc_owner=' + owner + '&doc_date_start=' + date_start + '&doc_date_modify=' + date_modify + '&doc_status=' + status);
frm网页框里的cpt向上传值
parent._g().getWidgetByName('doc_export_flow_conf').setValue(conf);
获取组件的可见与不可见状态
_g().getWidgetByName('r_btn_select_col_1').isVisible();
js点击网页框里的按钮
document.getElementById('rHIframe0').contentWindow._g().getWidgetByName('btn_export_pdf').fireEvent('click');
导出插件的语法示例(会把你的文件存到指定的目录里,文件名自定义,文件路径自定义。目前语法只能放在cpt里用,只支持pdf和excel)
FR.backExport(sessionID, "excel", "D://tomcat//webapps//webroot//fmea_file//", "创建FMEA (1).xlsx");
获取网页框的url
alert(_g().getWidgetByName("rHIframe0").getValue());
获取当前url-导出表-显示URL(字段)
alert(window.location.href);
按钮点击事件-设置回调函数(提示 成功或失败)
if (fr_submitinfo.success) {
FR.Msg.toast('提交成功');
} else {
FR.Msg.toast('提交失败,错误信息为:' + fr_submitinfo.failinfo);
}
--
当前列全选
var flag = this.getValue();
//获取当前值
var boxes = _g().getWidgetsByName("box");
//获取当前页的复选按钮控件数组
if (typeof(boxes[0]) != "undefined") {
var configs = [];
for (i = 0; i < boxes.length; i++) {
var cr=FR.cellStr2ColumnRow(boxes[i].options.location);
//获取行列号对象
configs.push({reportIndex:0,col:cr.col,row:cr.row,value:flag});
//如果控件大于1个,则遍历将行列号以及值信息插入数组中
_g().setCellsQuick(configs);
//批量赋值
//如果模板存在冻结,且被赋值单元格的行高列宽会改变,则需要替换此句为:_g().setCellsValueInBatch(configs);
}
} else {
var cr=FR.cellStr2ColumnRow(boxes.options.location);
//获取行列号对象
_g().setCellValue(0,cr.col,cr.row,flag);
//如果控件只有1个,则直接赋值
}
消除选中黑色边框线
//消除选中黑色边框线。在填报WEB属性-事件编辑-加载结束
_g().curLGP.hideSelectFrame();
--
使用js点击填报报表的提交按钮(已经确定,元素固定):
//点击网页框1里面的cpt提交按钮
document.getElementsByName('RHIFRAME0')[0].contentWindow._g().verifyAndWriteReport(true);
//点击网页框2里面的cpt提交按钮
document.getElementsByName('RHIFRAME0_C')[0].contentWindow._g().verifyAndWriteReport(true);
相关链接:
https://help.fanruan.com/finereport/doc-view-4279.html
(链接里主要关注,右边的目录,比如函数verifyAndWriteReport(true))
//弃用,能不用就不用DOM元素
$(function(){
document.querySelector("#fr-btn-Submit > div > em > button").click();
});
--
隐藏工具栏(创建一个js文件,在模板Web属性中引入即可)
(因为要调用cpt的提交按钮,但是帮助文档里的隐藏工具栏的方法都是直接整个div没了,网页中连工具栏的元素都找不到了,就没办法使用提交按钮了)
/ * 通过高度为0隐藏工具栏,但是页面上还是有工具栏的元素 * /
$(function () {
setTimeout(function(){
document.querySelector("#id_container > div.x-toolbar.ui-state-enabled.fs-tab-content-top-toolbar").style.height=0;
},50)
})
--
隐藏组件-设置组件事件
_g().getWidgetByName('report0').setVisible(false);
JS实现点击超链切换Tab块
_g().getWidgetByName("tabpane0").showCardByIndex(0);
--
跑马灯并隐藏滚动条
setTimeout(function(){
_g().getWidgetByName('report1').setVScrollBarVisible(false);//滚动条自动隐藏
_g().getWidgetByName('report1').startMarquee({//跑马灯
offset: 2,
interval: 0.2
})
}, 500)
使时间刷新不会有间隙
FR.HtmlLoader.loadingEffect=function(){}
使组件透明度为50%
setTimeout(function() {
$("div[widgetname=R_1_2]").css({
'opacity': '0.5'
});
}, 50);
js调用背景图片
setTimeout(function() {
$('.content-container').css({"background": "url(/webroot/help/image/INDEX/body.png)no-repeat","background-size":"100% 100%"});//body背景
$("div[widgetname=R_1_1]").css({"background","url(/webroot/help/image/INDEX/R_1_1.png;)center center / 100% 100% no-repeat"}); //顶部标题-背景
$("div[widgetname=R_1_2]").css({"background","url(/webroot/help/image/INDEX/R_1_2.png;)center center / 100% 100% no-repeat"}); //顶部标题-小图片标题
}, 1000);
Tomcat下通过IP直接访问数据决策系统后,报表块如何调用图片,比如你按照帆软教程设置的话,那么报表块调用图片时,图片的路径把webroot删掉即可。
$("div[widgetname=R_1_1]").css({"background","url(/help/image/INDEX/R_1_1.png;)center center / 100% 100% no-repeat"});
关于window.location.href的用法
javascript中的location.href有很多种用法,主要如下。
self.location.href="/url" 当前页面打开URL页面location.href="/url" 当前页面打开URL页面windows.location.href="/url" 当前页面打开URL页面,前面三个用法相同。this.location.href="/url" 当前页面打开URL页面parent.location.href="/url" 在父页面打开新页面top.location.href="/url" 在顶层页面打开新页面
如果页面中自定义了frame,那么可将parent self top换为自定义frame的名称,效果是在frame窗口打开url地址
此外,window.location.href=window.location.href;和window.location.Reload()和都是刷新当前页面。区别在于是否有提交数据。当有提交数据时,window.location.Reload()会提示是否提交,window.location.href=window.location.href;则是向指定的url提交数据
资料来源:https://www.cnblogs.com/huifeidezhuzai/p/10334813.html
点击组件跳转页面
window.open('/webroot/..............','_self');
点击刷新当前页面到新的url(不新建标签页)
window.location.href="url"
柱形图点击不同的柱子下钻到不同的页面(特效-交互属性-添加链接-JavaScript,记住要在js界面添加参数)
if(val == "存货"){
window.parent.FS.tabPane.addItem({title:"存货分析",src:"${servletURL}?viewlet=test/存货分析.frm"})
}else{
window.parent.FS.tabPane.addItem({title:"应收账款分析",src:"${servletURL}?viewlet=test/应收账款分析.frm"})
}
获取当前控制值
this.getValue();
this.options.form.getWidgetByName("c1").getValue();
获取当前行号
var widget = _g().getWidgetByCell(FR.columnRow2CellStr({
col: 2,
row: ro
}));
数据集里的参数为空则查询全部,否则按照条件查询
SELECT * FROM 销量 ${if(len(area) == 0,"","where 地区 = '" + area + "'")}
下拉复选框查询为空显示全部
SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}
根据账号权限来控制填报工具栏上的按钮是否可用
(例如,重大事项有一个超级管理员,有若干分块管理员。想让分块管理员无法使用原样导出和增量导入的功能。)
(原理:根据工具栏上的位置来识别是第几个按钮,然后设置其不可用,工具栏上的按钮位置索引从0开始)
(特殊提醒:但凡是根据权限控制什么的事情,写js时,设置一个参数获取角色名称用来判断)
setTimeout(
function() {
if (user != '纪检管理') {
//_g().getToolbar().getWidgetByName("Verify").setEnable(false);
contentPane.toolbar.options.items[2].setEnable(false); //工具栏的第3个按钮
contentPane.toolbar.options.items[3].setEnable(false); //工具栏的第4个按钮
}
}, 1000);
js跳转页面
window.parent.FS.tabPane.addItem({title:"零部件产销存分析看板",src:"${servletURL}?viewlet=mobile/零部件产销分析看板_mobile.frm"})
window.location = encodeURI(encodeURI("${servletURL}?viewlet=mobile/零部件产销分析看板_mobile.frm"));
window.open('');
FR.doHyperlinkByGet({url:'ReportServer?formlet=mobile/零部件产销分析看板_mobile.frm',title:'TITLE_NAME'});
横向跑马灯
当前单元格插入公式、单元格属性-其他-高级-显示内容:用HTML显示内容
"<marquee id='affiche' style='text-align:center;display:table-cell;vertical-align:middle;' behavior='scroll' bgcolor='#ffffff' direction='left' height='100%' width='500px' hspace='0' vspace='2' loop='-1' scrollamount='10' scrolldelay='80' onMouseOut='this.start()' onMouseOver='this.stop()'>" + REPLACE(J10,","," ") + "</marquee>"
cpt自定义按钮 点击事件 插入行
_g().appendReportRC(1);//点击按钮新增一行
contentPane.deleteReportRC();//点击按钮删除一行
单个组件控件修改样式
setTimeout(function() {
$("div[widgetname=TEXTEDITOR0]").find('.fr-texteditor').css('background-color', 'blue');
$("div[widgetname=TEXTEDITOR0]").find('.fr-texteditor').css('color', 'white');
}, 100);
--
版权声明:
作者:kukey-admin
链接:http://kuyour.top/index.php/2022/07/27/fr-js/
来源:KuKey
文章版权归作者所有,未经允许请勿转载。
![](http://kuyour.top/wp-content/uploads/2024/07/微信赞赏码.png)
![](http://kuyour.top/wp-content/uploads/2024/07/支付宝扫码领红包.png)
![](http://kuyour.top/wp-content/uploads/2023/04/wordpress-logo.png)
共有 0 条评论