跳到主要内容

控件设置

为需要录入数据的单元格设置表单控件,并且设置控件的属性。如果需要将数据提交到数据库中,还需要绑定数据库字段。

设置方式

  • 1、选中单元格
  • 2、右侧选择控件设置。
  • 3、选择组件。

系统支持通过拖拽的方式快速设置控件

  • 4、修改数据绑定key(可选)

数据绑定key是当前控件的唯一标识,不可以重复,这个值在提交时,作为java和api处理器的字段key。每设置一个新的组件时,系统都会自动为该组件初始化一个唯一的绑定key。

  • 5、设置绑定数据库表(条件)

只有在添加了sql处理器之后,控件设置中才会出现该配置项。

该配置项用于将当前控件(单元格)和数据库表的字段关联起来。

  • 6、设置校验。

提交前系统将按照设置好的校验条件对数据进行校验。目前支持的校验有:

  • 必填
  • 限定输入格式(正则表达式匹配)
  • 重复校验 (version 1.8.2+)

支持的组件类型

控件类型使用场景
单行文本填写单行文本信息,如:姓名
多行文本填写多行文本,如:描述信息、个人简介等
数字填写数字,如:数量
金额填写金额,可设置前缀或后缀 如:单价、销售额等
单选框组多个选项,只可选择一个, 如:性别
多选框组多个选项,可选中多项 如:爱好
下拉选择框点击下拉显示多个选择,可设置单选或多选
日期可选择日期 年、年月、年月日三种类型可选 如:2024-09-06
日期时间可选择日期和时间 如:2024-09-06 08:00:00
时间可选择时间 如:08:00:00
开关开启关闭
颜色可根据需要选择颜色
省市区选择省市区 可设置省、省-市、省-市-区 三种方式
图片上传上传图片 可设置上传图片个数
文件上传上传文件,可设置上传文件个数
组织角色通过api获取角色选项,可设置单选或多选
部门通过api获取部门选项,可设置单选或多选
用户通过api获取用户选项,可设置单选或多选
下拉树通过api获取选项,以树形方式展现,可设置单选或多选

重复校验

重复校验效果:

配置方式:

  1. 选中控件
  2. 在控件设置-校验中,勾选不允许重复。
  3. 保存报表。

如果填报数据源使用的是sql处理器,那么积木报表会自动检查配置好的数据库表中是否存在重复数据。 但如果使用sql和java处理器,积木报表就无法自动检查数据是否重复了。此时就需要自行实现重复接口来检查是否重复。

java处理器

实现方法repeatCheck

/**
* @Description: 提交处理器示例
* @Author: chenrui
* @Date: 2024/8/14 17:33
*/
@Component("demoSubmitHandler")
public class DemoSubmitHandler implements ISubmitHandler {

// ..... other override ......

/**
* 重复验证
*
* @param field 字段名-对应控件数据绑定Key
* @param value 字段值-用户在页面上填写的字段的内容
* @param dataId 数据id-仅编辑时有值,被编辑数据的主键值
* @return
* @author chenrui
* @date 2024/9/14 15:21
*/
@Override
public boolean repeatCheck(String field, String value, String dataId) {
// TODO 检查数据是否重复.
return true;
}
}

api处理器

新增重复校验接口:

/**
* 重复校验
* @param field 字段名-对应控件数据绑定Key
* @param value 字段值-用户在页面上填写的字段的内容
* @param dataId 数据id-仅编辑时有值,被编辑数据的主键值
* @return
* @author chenrui
* @date 2024/8/29 16:58
*/
@GetMapping("/submit/handle/repeat/check")
public Result<?> formCheckRepeat(@RequestParam("field") String field, @RequestParam("value") String value,@RequestParam("dataId") String dataId) {
log.info("开始检查重复{}-{}-{}", field, value, dataId);
return Result.OK(true);
}

url规则: api填报数据源中设置的api地址+/repeat/check。 如下api处理器的地址是:jmreport/test/submit/handle,那么重复校验的地址就是:jmreport/test/submit/handle/repeat/check