FineReport进阶篇-报表设计与美化

报表设计与美化

报表开发规范

  • 数据层面:SQL性能优化规范
明确字段,不取多余
大表关联,先做过滤
提取共性,减少重复
减少不必要的扫描计算
创建索引,有明确边界
避免显示转换
排序需放在最后一步
决策报表中、尽量将多个数据集合并为同一个数据集,减少并发数量	
  • 工程层面:报表开发环境规范
1、开发的环境规范
Jar包与本地环境
远程设计环境
2、开发的环境规范
权限控制
一致性(UI风格、配色、自适应配置、模板命名)
备份策略
3、过程控制规范
  • 报表层面:报表命名规范
1、目录命名规则
见名知意,与业务模块相关
报表目录层级尽量不要超过四层
2、模板命名规则
模板目录名+下划线+编号 例如
market_sale_001
编号可以按照制作顺序递增,不可重复
3、数据集命名规则
参数面板数据集:以para_开头,例如地区选择下拉框的数据集para_area
数据字典数据集:以dic_开头,例如产品映射数据集dic_product
报表主体数据集:以report_开头,例如客户销售数据report_customerSaleData
图表数据集:以chart_开头,例如产品占比图标chart_productRatio
4、参数命名规则
全局参数:以g开头,例如gSaleGroup,gProduct,gPerson
模板参数:以p开头,例如pDate,pCurrency,pUnit
数据集参数:以s开头,例如sCompany,sProject 
  • 功能层面:功能实现方法规范
1、展示报表制作
图块多的报表(如驾驶舱、大屏)使用frm开发
减少前端过滤的使用,尽量在数据集中过滤
公式中也要注意格式
大屏模板制作,用外置图片,否则非常影响性能
2、填报报表制作
大数据量填报报表要尽量读写分离
业务主键字段通常设置不可修改,如必须修改则应用数据库表中代理主键UUID字段做填报主键,新增数据时公式赋值新的UUID
3、参数开发
统一采用英文命名方式
参数大小写一致,建议都用大写
避免参数名称和fr系统参数重名,避免混淆
4、条件属性
一个条件属性能解决的问题不要用多个条件属性
尽量合并多个条件属性为一个
隐藏行列一定不要直接隐藏行列!
  • UI层面:报表UI设计规范
风格一致,整齐清爽

报表设计思路

  1. 创建数据集(不加参数)—主要为了设计报表
  2. 报表设计(设计报表主体、设计子报表主体)
  3. 完整数据源(设置模板/数据集参数、根据单元格完成图表展现)
  4. 主子报表传参(绑定控件或者添加超链中参数)
  5. 添加相应的填报属性
  6. 添加条件属性、样式修改

报表美化原则

1、美化的具体对象:表格和图表
2、需要美化的点:

  • 配色
和谐的配色(多颜色、过渡色慎用)
 - https://coolors.co/palettes/trending
 - https://webgradients.com/
 
自己手动调整颜色
 - http://www.peise.net/tools/web/

用GeteRGB自己取色,上传报表demo/网页网址取色
 - http://www.colorfavs.com/
  • 交互
  • 样式

3、美化:

  • 报表的可读性

    对比(突出显示,折线/柱子高亮)
    在这里插入图片描述
    交互
    省略
    样式

  • 图表的和谐性

<think>好的,我现在需要处理用户关于FineReport填报高级用法或技巧的查询。首先,我得回顾用户提供的引用内容,看看有没有相关的信息。用户提到了几个引用,其中引用[1]到[5]主要涉及聚合报表、学习班、页面设置、美化、日期函数等内容,但直接关于填报的内容似乎没有。不过,用户的需求是填报的高级用法,可能需要结合这些引用中的某些功能,或者需要我根据已有的知识来回答。 首先,我应该明确填报在FineReport中的作用。填报通常涉及数据录入、提交、校验等流程。高级用法可能包括数据校验、联动编辑、权限控制、数据提交处理等。虽然用户提供的引用中没有直接提到填报,但可能有些功能可以间接应用,比如引用[5]中的日期函数可能在填报的数据处理中使用,或者引用[4]中的交互样式可以美化填报界面。 接下来,我需要考虑用户可能需要的高级技巧,例如: 1. 数据校验:确保用户输入的数据符合要求,如格式、范围等。 2. 动态控件:根据用户输入动态显示或隐藏某些字段。 3. 数据提交的扩展:如提交后触发其他操作,发送邮件或更新其他表。 4. 权限控制:不同用户只能编辑特定字段或行。 5. 使用公式和函数:比如引用[5]中的日期函数在填报中的应用。 6. 数据联动:下拉框之间的级联选择,依赖关系。 7. 自定义提交按钮:添加JS脚本增强交互。 8. 加载数据时的处理:如初始数据填充时的逻辑。 然后,我需要检查是否有引用中的内容可以支持这些点。例如,引用[5]中的日期函数可以在填报中用于默认值或校验,比如设置日期范围。引用[4]提到的交互样式可以美化填报控件,提升用户体验。引用[3]中的页面设置可能对填报界面布局有帮助。此外,引用[2]提到学习班可能包含填报的高级教程,但用户可能需要具体的教程链接或方法。 可能还需要提到填报性能优化,比如分页加载数据,避免数据量时的卡顿。另外,数据提交的异步处理或事务控制,确保数据一致性。另外,填报的数据绑定和数据库操作,如使用存储过程或触发器,但需要看用户是否有相关基础。 用户可能需要具体的步骤或示例,比如如何设置数据校验公式,如何动态控制控件显示,或者如何配置提交事件。由于引用中没有具体的填报教程,可能需要引导用户参考官方文档或学习班,如引用[2]提到的学习班。 最后,生成相关问题,需要围绕填报的高级功能,如性能优化、数据校验、权限控制、动态控件等展开。</think>### FineReport填报高级用法技巧详解 #### 一、动态数据校验联动 1. **公式校验** 在单元格属性中设置「数据校验」公式,例如: - 限制整数范围:`$VALUE >= 0 && VALUE <= 100$` - 日期有效性:`DATEDIF(VALUE, TODAY(), "d") <= 7`(日期不超过7天前)[^5] 2. **级联下拉控件** 通过「数据集筛选」实现联动效果,例如: - 省份下拉框绑定数据集`ds1`,城市下拉框筛选条件为`ds2.city where province=当前省份值`[^3]。 --- #### 二、权限交互优化 3. **行级编辑权限** 使用`角色`参数控制行可编辑性: ```java if (role == "部门主管") { return true; //允许编辑 } else { return false; //禁止编辑 } ``` 结合引用[2]的角色学习路径进行配置[^2]。 4. **动态控件显隐** 在「控件可见性」中设置条件公式,例如: `$IF(合同类型 == "长期", SHOW(), HIDE())$` 根据选项自动隐藏/显示补充条款字段[^4]。 --- #### 三、提交流程增强 5. **多阶段提交** 使用「提交事件链」实现分步操作: - 第一步:校验数据完整性 - 第二步:写入主表 - 第三步:更新关联日志表[^1] 6. **异步提交优化** 在`提交设置`中启用「异步提交」模式,避免数据量卡顿,同时通过`FR.Msg.toast("提交中...")`添加提示。 --- #### 四、数据加载回写 7. **默认值动态生成** 利用函数预设值: - 当前用户:`$=GetUser()$` - 上月最后一天:`$=DATEINMONTH(today(),-1)$`[^5] 8. **跨表数据回填** 通过`SQL`语句在提交时更新其他表: ```sql UPDATE inventory SET stock = stock - ${quantity} WHERE product_id = ${selected_id} ``` --- #### 五、界面美化体验 9. **高亮必填项** 在「单元格样式」中设置条件格式: `前景色 = IF(ISNULL(VALUE), "#FF0000", "#333333")`[^4] 10. **响应式布局** 使用「参数面板自适应」模式,并设置控件`占比宽度`,适配不同幕。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值