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);
frm点击网网页框中的cpt的按钮控件(cpt中的按钮控件需要设置控件名称)
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
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
fr-js
js插入行 var id = $("td[id^=A]:last").attr("id"); //获取A列最后一行的单元格编号 //id^=A代表A列,last代表最后一行 _g().appendReportRC(1, id); /……
<<上一篇
下一篇>>
文章目录
关闭
目 录