在默认情况下,我们已经可以基于标题
和描述
来筛选数据了。在这里,我们再添加基于出差时间
和出差地点
的筛选
1. 基本概念
在CabloyJS中,筛选字段也是通过JSON Schema
来配置的。业务数据只需指定JSON Schema
,前端自动获取相应的JSON Schema
,并自动渲染为表单,供用户输入。当进行搜索时,也会自动把用户的输入组合成筛选条件,发往后端完成数据的查询工作
接下来,我们由浅入深,先添加出差地点
,再添加出差时间
2. 出差地点
src/module/bz-businesstrip/backend/src/config/validation/schema/businesstrip.js
- 1 schemas.businesstripSearch = {
- 2 type: 'object',
- 3 properties: {
- 4 description: {
- 5 type: 'string',
- 6 ebType: 'text',
- 7 ebTitle: 'Description',
- 8 },
- 9+ tripAddress: {
- 10+ type: 'string',
- 11+ ebType: 'text',
- 12+ ebTitle: 'Trip Address',
- 13+ },
- 14 },
- 15 };
名称 | 说明 |
---|---|
type | 字段值的类型 |
ebType | 前端渲染时所使用的渲染组件类型 |
ebTitle | 前端渲染时显示的字段标题 |
- 同样,
ebTitle
也需要添加国际化语言资源,但是在前面的环节中我们已经添加过了,这里就不用做了
3. 出差地点(进阶)
在默认情况之下,string
类型的字段,在进行检索时是按照包含关系进行模糊匹配的,具体到SQL查询条件,就是like ‘%query%’
接下来,我们增加一些配置,使得出差地点
可以支持更精确的匹配关系
- 1 schemas.businesstripSearch = {
- 2 type: 'object',
- 3 properties: {
- 4 ...
- 5 tripAddress: {
- 6 type: 'string',
- 7 ebType: 'text',
- 8 ebTitle: 'Trip Address',
- 9+ ebSearch: {
- 10+ operators: 'like,likeLeft,likeRight,=',
- 11+ },
- 12 },
- 13 },
- 14 };
名称 | 说明 |
---|---|
ebSearch | 与检索相关的配置节点 |
operators | 当前字段支持的操作符 |
名称 | 说明 | 对应的SQL查询条件 |
---|---|---|
like | 包含 | like ‘%query%’ |
likeLeft | 左匹配 | like ‘%query‘ |
likeRight | 右匹配 | like ‘query%’ |
= | 等于 | = ‘query’ |
4. 出差时间
- 1 schemas.businesstripSearch = {
- 2 type: 'object',
- 3 properties: {
- 4 ...
- 5+ tripTime: {
- 6+ type: 'string',
- 7+ ebType: 'dateRange',
- 8+ ebTitle: 'Trip Time',
- 9+ ebParams: {
- 10+ dateFormat: 'YYYY-MM-DD',
- 11+ header: false,
- 12+ toolbar: true,
- 13+ },
- 14+ ebSearch: {
- 15+ combine: {
- 16+ actionModule: 'a-basefront',
- 17+ actionComponent: 'combineSearch',
- 18+ name: 'dateRange',
- 19+ },
- 20+ },
- 21+ },
- 22 },
- 23 };
名称 | 说明 |
---|---|
type | 字段值的类型。在这里指定string ,前端在组合查询条件时,会自动把输入的时间转换为UTC时间 ,从而支持对时区差异 的处理 |
ebType | dateRange 是系统内置的渲染组件类型。该组件会显示两个输入项,方便我们输入起始时间 和终止时间 |
ebTitle | 前端渲染时显示的字段标题 |
ebParams | 前端渲染参数,具体配置由渲染组件决定 |
ebSearch | 与检索相关的配置节点 |
combine | 时间段 在组合SQL查询条件时相对比较复杂,因此需要提供一个单独的组件来完成。当然,这个combine组件 也是系统内置的 |
名称 | 说明 |
---|---|
actionModule | 组件所属模块名 |
actionComponent | 组件名称 |
name | 方法名称 |
根据配置的指示,前端会自动加载模块a-basefront
,然后创建组件combineSearch
的一个实例,再执行方法dateRange
,从而完成SQL查询条件
的组合逻辑
下一步
接下来,我们看看如何为业务表单添加审批工作流
评论: