1. 概述
1.1 问题描述
在企业的日常业务中,肯定会有一些上报和审核的流程,那么如何通过填报功能来实现此流程呢?
1.2 解决方案
平台的多级上报功能可以满足一部分的上报审核流程需求,但如果有一些个性化的需求,无法通过多级上报功能实现的,那就可以自己制作填报模板来实现。
核心思路是利用标记字段:在数据库相关表中设置一个用于记录上报流程节点的标记字段,后续利用该字段即可判断不同数据在流程中的状态,进而实现自定义的上报审核流程需求。
2. 示例
2.1 准备数据
1)使用第三方数据库工具连接 FineReport 内置的 FRDemo 数据库,打开 雇员 表
选择「属性」,在表格空白处右击,点击「新建 列」。如下图所示:
新建「状态」、「退回原因」两列,数据类型选择「TEXT」,点击保存。如下图所示:
2)选择「数据」,双击空白单元格即可给「状态」和「退回原因」两列赋值。如下图所示:
2.2 设计模板
一共需要 2 张模板来实现此示例的场景,一张用于员工填报,一张用于负责人审核。
员工填报表设计如下:
负责人审核表设计如下:
2.3 制作员工填报表
2.3.1 设置权限
1)新建 ds1数据集,利用系统参数 fine_username 实现员工只能看到自己填写的数据。
sql 为:SELECT * FROM 雇员 where 雇员ID = '${fine_username}'
2)将查询出的字段拖入员工填报表,这样员工就可以查看自己填写的数据,以及上报流程的状态了。
2.3.2 设置填报属性
1)如图所示设置员工填报表的填报属性,标记字段输入固定值 0 ,代表待审核状态。
本示例中标记字段值的含义为:0 代表待审核,1 代表审核通过,2 代表被退回,空 代表未提交。
2)如果是待审核或者审核通过状态,则不能让用户重复提交。此处可以用「数据校验」来实现,判断只有标记字段为空或者 2 时,才可以提交。公式为:len(C9)=0||C9=2
2.3.3 设置页面权限
1) 当数据处于待审核或者审核通过状态时,不允许用户再次修改数据,只能查看。此处可以利用条件属性来实现,在 C6、F6、C7、F7、C8、F8 单元格设置条件属性,判断 C9 单元格的值为 0 或者 1 时,禁用控件。
2)C9 单元格的状态为实际值,是数字,此处可以利用单元格形态的数据字典,来将其转换为文字说明。
3)如果状态为被退回时,需要展示退回原因,其他状态则不需要展示退回原因。此处可以在 B10 单元格设置条件属性来判断状态,当状态不等于 2 时,隐藏退回原因行。
2.4 制作负责人审核表
2.4.1 过滤数据
新建 ds1数据集,利用标记字段过滤出待审核的数据,sql 为:SELECT * FROM 雇员 where 状态=0
2.4.2 设置单选按钮组
在 H2 单元格添加单选按钮组,数据字典设置如下:
2.4.3 设置填报属性
1)如图设置填报属性,并勾选未修改不更新,这样在数据较多时能提高提交速度。
2)审核结果为空的数据不需要提交,此处可以通过提交条件设置来实现。公式为:len(H2)!=0
3)当数据通过审核时,是不需要填写退回原因的;当数据被退回时,则需要填写退回原因。此处可以通过数据校验设置来实现。公式如下:
if(H2 = 1, len(I2) = 0, true):当状态为审核通过时,退回原因需为空。
if(H2 = 2, len(I2) != 0, true):当状态为被退回时,退回原因不能为空。
2.5 效果预览
员工填报:
保存模板,点击「填报预览」。分别填写姓名、性别、出生日期、雇佣日期、职务和国家,点击左上角提交后刷新页面,即可看到审核状态
负责人审核:
保存模板,点击「填报预览」。编辑审核结果和退回原因后,刷新员工填报页面,审核状态改变
注:该方案支持移动端。