表格对于后台管理类的系统来说,至关重要,系统大多数功能都需要以表格的方式展示业务内容,系统开发人员多数时间也是围绕着表格进行业务编码,接触过很多后台管理系统的框架,我个人第一首先也是看表格功能是否强大。
对于低代码平台来说,也是非常核心的内容,关系到系统好不好用,功能能不能支撑各种业务场景的需求,所以也是至关重要的内容。
列表视图后续会写多篇文章来分解具体的功能设计,感兴趣可以查看前端相关代码,这篇文章主要是讲一下表格内容的使用配置,不涉及到查询及各种高级控件的使用。
请参照开源网站的“表单常规示例->控件综合应用”这个页面体验及对照查看相关配置,这个页面功能单一,但里面的各种列表使用场景比较复杂,将所有平常开发常见的功能的集成到里面了,并且是真正意义的零代码,全部通过配置完成,前后端都没有任何代码,界面配置立马生效。
基础功能参见antd的表格使用,特殊功能如下:
- 点击“字符字段”打开编辑对话框(点击字段接入规则引擎,将选中的行数据作为事件参数传入规则引擎,执行打开编辑视图对话框、根据选择行Id获取后端数据、将数据绑定到编辑视图)
- 日期、字典、电话等字段自定义显示
- 外键字段格式化显示(数据库只存储外键Id)
- 人员字段格式化显示(数据库只存储人员外键)
- 表格按钮权限控制
- 表头分页
- 是否换行显示
- 自定义列显示
- 多选行
- 表格扩展内容显示
列表视图属性设置
属性常规设置即为设置ant的table控件,其他一些扩展字段如下:
- tableDiv
设置a-table外层的div样式,默认样式为:'min-height: 560px' - rowKey
前端表格的行主键,一般情况为"id",可以不设置,当查询出来的列表数据主键不为id是,需要设置,如:id_a - tableType
自定义扩展字段,多数情况不需要设置,如果是树列表,需要设置为“tree” - columns
参见Table组件设置,定义表格列, 特殊处理(宽度width不设置,默认置为80;对齐align不设置,默认置为center,扩展linked属性,标识表格字段可以点击,点击事件可接入规则引擎;扩展option_is属性,标识字段列可自定义是否显示;扩展option_selected属性,配合option_is使用,标识字段列默认是否显示) - columnsExpanded columnsExpandedColSpan
columnsExpanded表格展开更多内容字段列定义,columnsExpandedColSpan定义展开显示多少行,值为1-4,默认为4 - colOperateWidth
定义列表操作列的宽度,当列表操作控件或者列表更多控件定义了,列表中的操作列才会显示。 - excelTemplate
导入导出Excel配置模版信息,参见附录【导入导出Excel模版】,如:[{"name":"电话","field":"phoneNumber","fieldType":5,"isRequred":true,"validateType":99,"validateValue":"[{'customerVal':'Phone','trigger':'blur'}]"},{"name":"学历","field":"education","fieldType":5,"validateType":11}]
- excelDicts
字段字典映射集合数据,表示Excel中用到的数据字典映射信息,定义哪个字段用到哪个数据字典,如:[{"dict":"sex","field":"sex"},{"dict":"edu","field":"education"},{"dict":"title","field":"positionalTitle"}]
- excelName
导入导出Excel文件名称,如:人员管理测试Excel数据 - uniqKey
导入时唯一字段检测(这里的字段为数据库字段,注意不是转换为驼峰命名之后的字段,多个字段组合用;号隔开),如:UserName。 - eval_query
执行后端方法获取查询参数后执行的JS脚本,自定义扩展处理查询条件,本质上执行eval函数,特殊场景使用,比如执行查询之前,将查询条件做自定义特殊处理,如:界面查询条件只查询年月,到后端映射为时间段查询sqlWhere.children.forEach(r=>{if(r.field==='checkTime'){r.value=[r.value.format('yyyy-MM')+'-01 00:00:00',r.value.add(1,'month').format('yyyy-MM')+'-01 00:00:00']}})
,参考附录:【自定义查询条件】 - defaultSorting
默认后端查询方法排序,如:checkTime desc,stockCheckType asc
等
高级功能说明
- 表头分页
参照antd设置即可,如果存在自定义列显示,且所有列都不显示时,分组字段也不显示
{
"title": "日期字段",
"children": [
{
"dataIndex": "dateTimeField",
"title": "日期字段",
"scopedSlots": {
"customRender": "dateTimeField"
},
"width": 160
},
{
"dataIndex": "dateField",
"title": "日期字段2",
"scopedSlots": {
"customRender": "dateField"
},
"width": 160,
"option_is": true,
"option_selected": true
}
]
}
- 自定义列显示
在表格右上角,用户可点击下拉勾选自定义显示哪些字段列option_is属性控制是否允许用户选择,option_selected控制默认是否勾选
{
"dataIndex": "dateField",
"title": "日期字段2",
"scopedSlots": {
"customRender": "dateField"
},
"width": 160,
"option_is": true,
"option_selected": true
}
- 是否换行显示
在表格右上角,checkbox选择,默认情况表格单元格内容超过展示宽度,用“...”代替,当勾选时,表格单元格内容换行显示所有内容。 - 超连接字段
扩展linked属性,点击单元格内容,可触发事件,接入规则引擎,触发的事件会将表格行作为事件参数传递到规则引擎,比如点击“合同编号”字段打开编辑合同对话框等(需要设置scopedSlots属性)。
{
"align": "center",
"dataIndex": "stringField",
"title": "字符",
"sorter": true,
"linked": true,
"scopedSlots": {
"customRender": "stringField"
}
}
- 表格更多内容
columnsExpanded表格展开更多内容字段列定义,columnsExpandedColSpan定义展开显示多少行,值为1-4,默认为4,表格更多列不支持option_is和option_selected属性,支持linked属性设置,“是否换行显示”功能也支持
- 超出内容自动横向滚动
表格控件设置了超出表格所有列长度时,自动出现横向滚动条
- 其他高级功能
更多高级功能,可增加列表自定义控件,格式化显示表格内容
个人业余时间开发进度确实快不起来,很多设计思想我认为还是很不错的,完全可以应用到实际项目中,欢迎关注。
https://gitee.com/kuangqifu/sprite/wikis/pages
https://gitee.com/kuangqifu/sprite
前端开源地址:https://gitee.com/kuangqifu/spritefronts
体验地址:http://47.108.141.193:8031 (首次加载可能有点慢,用的阿里云最差的服务器)
自定义表单文章地址:https://www.cnblogs.com/spritekuang/
流程引擎文章地址:https://www.cnblogs.com/spritekuang/category/834975.html (采用WWF开发,已过时,已改用Elsa实现,https://www.cnblogs.com/spritekuang/p/14970992.html