在默认情况下,我们已经可以基于标题描述来筛选数据了。在这里,我们再添加基于出差时间出差地点的筛选

1. 基本概念

在CabloyJS中,筛选字段也是通过JSON Schema来配置的。业务数据只需指定JSON Schema,前端自动获取相应的JSON Schema,并自动渲染为表单,供用户输入。当进行搜索时,也会自动把用户的输入组合成筛选条件,发往后端完成数据的查询工作

接下来,我们由浅入深,先添加出差地点,再添加出差时间

2. 出差地点

src/module/bz-businesstrip/backend/src/config/validation/schema/businesstrip.js

  1. 1 schemas.businesstripSearch = {
  2. 2 type: 'object',
  3. 3 properties: {
  4. 4 description: {
  5. 5 type: 'string',
  6. 6 ebType: 'text',
  7. 7 ebTitle: 'Description',
  8. 8 },
  9. 9+ tripAddress: {
  10. 10+ type: 'string',
  11. 11+ ebType: 'text',
  12. 12+ ebTitle: 'Trip Address',
  13. 13+ },
  14. 14 },
  15. 15 };
名称 说明
type 字段值的类型
ebType 前端渲染时所使用的渲染组件类型
ebTitle 前端渲染时显示的字段标题
  • 同样,ebTitle也需要添加国际化语言资源,但是在前面的环节中我们已经添加过了,这里就不用做了

3. 出差地点(进阶)

在默认情况之下,string类型的字段,在进行检索时是按照包含关系进行模糊匹配的,具体到SQL查询条件,就是like ‘%query%’

接下来,我们增加一些配置,使得出差地点可以支持更精确的匹配关系

  1. 1 schemas.businesstripSearch = {
  2. 2 type: 'object',
  3. 3 properties: {
  4. 4 ...
  5. 5 tripAddress: {
  6. 6 type: 'string',
  7. 7 ebType: 'text',
  8. 8 ebTitle: 'Trip Address',
  9. 9+ ebSearch: {
  10. 10+ operators: 'like,likeLeft,likeRight,=',
  11. 11+ },
  12. 12 },
  13. 13 },
  14. 14 };
名称 说明
ebSearch 与检索相关的配置节点
operators 当前字段支持的操作符
名称 说明 对应的SQL查询条件
like 包含 like ‘%query%’
likeLeft 左匹配 like ‘%query‘
likeRight 右匹配 like ‘query%’
= 等于 = ‘query’

4. 出差时间

  1. 1 schemas.businesstripSearch = {
  2. 2 type: 'object',
  3. 3 properties: {
  4. 4 ...
  5. 5+ tripTime: {
  6. 6+ type: 'string',
  7. 7+ ebType: 'dateRange',
  8. 8+ ebTitle: 'Trip Time',
  9. 9+ ebParams: {
  10. 10+ dateFormat: 'YYYY-MM-DD',
  11. 11+ header: false,
  12. 12+ toolbar: true,
  13. 13+ },
  14. 14+ ebSearch: {
  15. 15+ combine: {
  16. 16+ actionModule: 'a-basefront',
  17. 17+ actionComponent: 'combineSearch',
  18. 18+ name: 'dateRange',
  19. 19+ },
  20. 20+ },
  21. 21+ },
  22. 22 },
  23. 23 };
名称 说明
type 字段值的类型。在这里指定string,前端在组合查询条件时,会自动把输入的时间转换为UTC时间,从而支持对时区差异的处理
ebType dateRange是系统内置的渲染组件类型。该组件会显示两个输入项,方便我们输入起始时间终止时间
ebTitle 前端渲染时显示的字段标题
ebParams 前端渲染参数,具体配置由渲染组件决定
ebSearch 与检索相关的配置节点
combine 时间段在组合SQL查询条件时相对比较复杂,因此需要提供一个单独的组件来完成。当然,这个combine组件也是系统内置的
名称 说明
actionModule 组件所属模块名
actionComponent 组件名称
name 方法名称

根据配置的指示,前端会自动加载模块a-basefront,然后创建组件combineSearch的一个实例,再执行方法dateRange,从而完成SQL查询条件的组合逻辑

下一步

接下来,我们看看如何为业务表单添加审批工作流