1. 概述
1.1 预期效果实现开关按钮,前端预览打开和关闭按钮时,可以跟报表元素联动。例如按钮打开时显示单价列表,关闭时隐藏单价列表,点击禁用开关按钮可以让开关效果失效,如下图所示:
1.2 实现思路2. 示例
2.1 下载文件1)点击下载 JavaScript 文件:Qbutton.js 2)将下载的 JavaScript 文件放到%FR_HOME%\webroot\help\css目录下,如下图所示: 2.2 引用文件新建决策报表,在 body 初始化事件中引入上面的 JavaScript 文件,如下图所示: JavaScript 代码如下:
- function dynamicLoadJs(url) {
- var oHead = document.getElementsByTagName('head').item(0);
- var oScript = document.createElement("script");
- oScript.type = "text/javascript";
- oScript.src = url;
- oHead.appendChild(oScript);
- }
- //封装的方法,无需任何改动
- dynamicLoadJs("/webroot/help/css/Qbutton.js");
- //调用方法,参数为js文件路径
复制代码
2.3 准备数据新建数据查询数据集 ds1 ,SQL 查询语句为:SELECT * FROM S产品 limit 10 2.4 设计报表1)决策报表 body 中拖入 3 个组件:报表块 report0 和 report1 ,按钮控件 button0,如下图所示: 2)编辑报表块 report0 ,设计表格样式,如下图所示: 3)编辑报表块 report1,设计表格样式,如下图所示: 其中,B1 单元格插入公式'<jelly-switch id="Qbutton" checked></jelly-switch>',并用HTML显示内容,通过该公式获取开关的样式,如下图所示: 4)选择按钮控件 button0,设置按钮名字为禁用开关按钮,如下图所示: 2.5 开关联动body 新增一个初始化事件用于为开关按钮绑定点击事件,获取值并传参给需要联动的组件,切换显示和隐藏单价列,如下图所示: JavaScript 代码如下: - setTimeout(function() {
- $("#Qbutton").click(function() {
- //给开关按钮绑定点击事件
- var state = this.checked;
- //获取按钮值,返回true和false
- _g().getWidgetByName("report0").gotoPage(1, "{checked:" + state + "}", true);
- //传参并刷新报表块report0
- if (state) {
- $("#REPORT1 td[id^='A1']").text('显示单价');
- $("#REPORT1 td[id^='A1']").css("color","#11c75d");
- } else {
- $("#REPORT1 td[id^='A1']").text('隐藏单价');
- $("#REPORT1 td[id^='A1']").css("color","#FF4651");
- }
- //动态修改A1内容和字体颜色
- });
- }, 500)
复制代码
2.6 禁用按钮
按钮控件 button0 添加点击事件,实现禁用按钮效果,如下图所示: JavaScript 代码如下: - Qbutton.disabled = true;//开关按钮灰化无法选取
复制代码
2.7 效果预览保存报表,点击表单预览,效果如下图所示: 注:不支持移动端。 3. 模板下载已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\JS实现开关按钮.frm 模板下载见附件 JavaScript 文件下载见附件
编辑于 2021-1-2 14:43
|