低代码系列之代码生成器模型配置--filter

2022-09-08 18:42:18 浏览数 (1)

filters是用来配置表格上方的多条件查询,通过它配置数据检索的方式,目前支持模糊查询,分类查询,时间查询等

模糊查询配置

代码语言:javascript复制
 filters: {
        couponName: {
            label: '优惠券名称',
            type: 'text',
        }
    }

filters里面的属性必须在fields里面存在,换句话是filters的键必须从fields里面。键名就是字段名 label:为提示文字 type:为表单类型

分类查询

本地分类查询

本地分类的意思是分类是写死的并没有纳入系统管理

代码语言:javascript复制
  filters: {
        person: {
            label: '适用人群',
            type: 'select',
   }

上述配置配置了person.type=select,那么要确保你的fileds里面的person是这样配置的

代码语言:javascript复制
fileds:{
    person:{
            type:'string',
            comment: '适用人群',
            meta:{
                formType: 'select',
                chineseMap: {
                    1:"男",
                    0:"女"
                 
                }
            }
           
        },
}

也就是person必须配置chineseMap属性 此时会在视图生成如下表单

外键分类查询

外键分类查询的意思是,分类项并不是写死,分类项是一张单独的表,或者有单独管理作用 这个时候要想正常使用外键分类查询你需要进行如下配置

以goods模型的person字段为例 首先创建一个分类表,category 模型配置如下

代码语言:javascript复制
module.exports = {
    modelCn: '人群', 
    modelIcon: 'el-icon-eleme',
    fields: {
        name: {
            type: 'string', 
            comment: '人群名称',
            meta: {
                formType: 'input', 
                isInline: false, 
                inputType: 'text', 
                placeholder: '请输入人群名称' 
            }
        },
        }

然后在goods模型的person字段作如下配置

代码语言:javascript复制
module.exports = {
    modelCn: '商品', 
    modelIcon: 'el-icon-eleme',
    fields: {
        name: {
            type: 'string', 
            comment: '商品名称',
            meta: {
                formType: 'input', 
                isInline: false, 
                inputType: 'text', 
                placeholder: '请输入商品名称' 
            }
        },
        person:{
            type:'string',
                comment:'适用人群',
                meta:{
                   formType:'select',
                     // 注意这里的chineseMap接受一个对象(外键查询)
                     chineseMap:{
                        useForeign: 'goods_person' // 这里的值去的foreign的属性即外键名称
                      }
                }
        },
        filter:{
             person: {
                label: '适用的人群',
                type: 'select'
             },
        },
        foreign: {
           // key 表示外键名称
            article_category: {
                key: 'person', // 当前模型的外键字段
                refer: 'id', // 关联表的字段 // 用作表单,表格的取值
                referLabel: 'name', // 关联表用于展示的字段,主要用于 table,form的展示
                onTable: 'category', // 关联的模型
                foreignDesc: '外键描述'
        },
}
}

日期时间查询

单日期查询

指定日期字段查询[小于 | 小于等于 | 大于 | 大于等于]的该字段记录

代码语言:javascript复制
  fields: {
        ...
        goods_date:{
            comment:'创建日期',
            type:'date',
            meta: {
                formType: 'date',
            }
        }
    },
  filters: {
        goods_date: {
            label: '开始月份',
            type: 'date',
            sign:'gte' // 大于等于
        },
    }

这里我们设置了sign,生成器会将生成“查询大于等于goods_date的记录” 生成条件筛选代码与视图

根据条件查询结果

sign的取值如下

  • gt 大于
  • gte大于等于
  • lt 小于
  • lte 小于等于
  • ne 不等于
  • eq 等于

默认情况下sign取值为gte

双日期查询 查询两个日期之间的记录

代码语言:javascript复制
  fields: {
        ...
        goods_date:{
            comment:'创建日期',
            type:'date',
            meta: {
                formType: 'date',
            }
        }
    },
  filters: {
        goods_date: {
            label: '日期范围',
            type: 'doubleDate',
        },
    }

查询 goods_date 在 20226月1日到20226月30日之间的记录

0 人点赞