基于 vue2.x + element-ui 我的自定义表单,你不试试么(三)

530 阅读3分钟

公司这两年做了一款档案项目,其中需要使用到自定义表单的功能,希望可以拖拽字段,自定义布局。因为公司的前任领导已经做过了两版自定义表单,但不具备拖拽和自定义布局的功能,所以我在阅读过前两版的代码,重新编写这个第三版的自定义表单,可以拖拽和自定义布局,字段关联校验等功能。大家有需要的可以看看,试试。

先上传送门

下面我将从整个表单的设计来给大家介绍,我也将会把整个表单的设计介绍文档持续更新。本期主要介绍与字段相关的字段模板组件字段属性配置组件字段上报组件字段详情组件。实现了让开发可以自定义自己的字段组件。

导读目录

TemplateComponent 模版组件

字段的模版组件,用于表单创建时展示的模板使用

组件名称:[fieldType]-template

Props

名称说明类型默认值必传
fieldObj字段对象Object-true
templateStyle字段模版控件样式Object{}true
showLabel字段是否展示字段标签Boolean-true
labelWidth字段标签的展示宽度String100pxtrue
labelPosition字段标签的展示位置Stringrighttrue

Inject

名称说明类型
fieldsArr创建表单的字段集合Array
customAttrs自定义的组件属性Object
scopedSlotsMap自定义具名插槽的函数集合Function(slotName, data)
eventBus创建表单的事件中心,详细见下表Object

EventBus

EventBus Props

名称说明类型
nodesMap所有的布局节点集合Object
draggingNode被拖拽的节点Object
focusNodeKey当前聚焦的节点String

EventBus Methods

名称说明参数
setDraggingNode保存拖拽中节点node
setFocusNodeKey设置正在聚焦的节点nodeKey

EventBus Events

名称说明参数
add-field添加字段的回调事件{ field, excludeMobile }
delete-field删除字段的回调事件{ field, excludeMobile }

ConfigComponent 属性配置组件

字段的属性配置组件,用于表单创建时的属性配置使用

组件名称:[fieldType]-config

Inject

名称说明类型默认值必传
customAttrs自定义的组件参数对象Object--

Props

名称说明类型默认值必传
form字段配置表单对象Object-true
disabled字段是否可配置Booleanfalsefalse

ReportComponent 上报展示组件

字段的上报展示组件,用于表单上报使用

组件名称:[fieldType]-report

Inject

名称说明类型
customAttrs自定义的组件属性Object
scopedSlotsMap自定义具名插槽的函数集合Function(slotName, data)

Props

名称说明类型默认值必传
fieldObj字段对象Object-true
reportStyle字段上报控件样式Object{}true
showLabel字段是否展示字段标签Boolean-true
labelWidth字段标签的展示宽度String100pxtrue
labelPosition字段标签的展示位置Stringrighttrue

DetailComponent 详情展示组件

字段的详情展示组件,用于表单详情使用

组件名称:[fieldType]-detail

Inject

名称说明类型
customAttrs自定义的组件属性Object
scopedSlotsMap自定义具名插槽的函数集合Function(slotName, data)

Props

名称说明类型默认值必传
fieldObj字段对象Object-true
detailStyle字段详情控件样式Object{}true
showLabel字段是否展示字段标签Boolean-true
labelWidth字段标签的展示宽度String100pxtrue
labelPosition字段标签的展示位置Stringrighttrue

博主将持更新表单的介绍文档,欢迎大家来使用指导