龙空技术网

企业级自定义表单引擎解决方案(六)——列表属性设置

spritekuang 209

前言:

而今大家对“js中定义列表”都比较关切,你们都需要知道一些“js中定义列表”的相关知识。那么小编也在网上收集了一些关于“js中定义列表””的相关内容,希望大家能喜欢,姐妹们快快来学习一下吧!

表格对于后台管理类的系统来说,至关重要,系统大多数功能都需要以表格的方式展示业务内容,系统开发人员多数时间也是围绕着表格进行业务编码,接触过很多后台管理系统的框架,我个人第一首先也是看表格功能是否强大。

对于低代码平台来说,也是非常核心的内容,关系到系统好不好用,功能能不能支撑各种业务场景的需求,所以也是至关重要的内容。

列表视图后续会写多篇文章来分解具体的功能设计,感兴趣可以查看前端相关代码,这篇文章主要是讲一下表格内容的使用配置,不涉及到查询及各种高级控件的使用。

请参照开源网站的“表单常规示例->控件综合应用”这个页面体验及对照查看相关配置,这个页面功能单一,但里面的各种列表使用场景比较复杂,将所有平常开发常见的功能都集成到里面了,并且是真正意义的零代码,全部通过配置完成,前后端都没有任何代码,界面配置立马生效。

配置页面:

功能页面:

基础功能参见antd的表格使用

基础功能参考antd的table控件,特殊功能如下:

点击“字符字段”打开编辑对话框(点击字段接入规则引擎,将选中的行数据作为事件参数传入规则引擎,执行打开编辑视图对话框、根据选择行Id获取后端数据、将数据绑定到编辑视图)日期、字典、电话等字段自定义显示外键字段格式化显示(数据库只存储外键Id)人员字段格式化显示(数据库只存储人员外键)表格按钮权限控制表头分页是否换行显示自定义列显示多选行表格扩展内容显示列表视图属性设置

属性常规设置即为设置ant的table控件,其他一些扩展字段如下:

tableDiv

设置a-table外层的div样式,默认样式为:'min-height: 560px'rowKey

前端表格的行主键,一般情况为"id",可以不设置,当查询出来的列表数据主键不为id时,需要设置,如:id_atableType

自定义扩展字段,多数情况不需要设置,如果是树列表,需要设置为“tree”columns

参见Table组件设置,定义表格列, 特殊处理(宽度width不设置,默认置为80;对齐align不设置,默认置为center,扩展linked属性,标识表格字段可以点击,点击事件可接入规则引擎;扩展option_is属性,标识字段列可自定义是否显示;扩展option_selected属性,配合option_is使用,标识字段列默认是否显示)columnsExpanded columnsExpandedColSpan

columnsExpanded表格展开更多内容字段列定义,columnsExpandedColSpan定义展开显示多少行,值为1-4,默认为4colOperateWidth

定义列表操作列的宽度,当列表操作控件或者列表更多控件定义了,列表中的操作列才会显示。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属性设置,“是否换行显示”功能也支持

超出内容自动横向滚动

表格控件设置了超出表格所有列长度时,自动出现横向滚动条

其他高级功能

更多高级功能,可增加列表自定义控件,格式化显示表格内容

个人业余时间开发进度确实快不起来,很多设计思想我认为还是很不错的,完全可以应用到实际项目中,后续会逐步分解,欢迎关注。

标签: #js中定义列表