# element-form-design
**Repository Path**: shenxiaowei/element-form-design
## Basic Information
- **Project Name**: element-form-design
- **Description**: 基于Vue2.0+Element的可视化表单设计器,提供表单设计器和表单生成器两个组件,通过表单设计器快速设计出表单页面,使用表单生成器快速渲染出表单页面。
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2022-05-12
- **Last Updated**: 2022-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 第一部分 简介
`element-form-design`是基于`Vue2.0`+`Element`的可视化表单设计器,提供表单设计器(`FormDesign`)和表单生成器(`FormBuild`)两个组件,通过表单设计器快速设计出表单页面,使用表单生成器快速渲染出表单页面。


## 1.1 特性
- **可视化**:通过可视化操作,方便快捷的完成表单页面创建
- **Element**:基于 `Vue2.0` 的桌面端组件库`Element`,使用广泛,扩展方便
- **丰富的布局**:提供栅格、表格布局方式,满足各种布局需要
- **自定义**:提供了自定义的扩展,可以简单方便的将自己的组件放入表单中进行构建
- **易维护**:各表单组件渲染与配置独立,通过策略模式实现各组件松耦合
## 1.2 组件
- **`FormDesign` 表单设计器**:基于可视化操作快速设计出表单页面
- **`FormBuild` 表单构建器**:通过表单设计器生成配置快速构建出表单页面
# 第二部分 组件
## 2.1 `FormDesign`表单设计器
基于可视化操作快速设计出表单页面
```vue
```
### 2.1.1 属性
| 参数 | 说明 | 类型 | 默认值 |
| :---------------: | ---------------------- | :----: | :----: |
| component-width | 左侧组件面板宽度 | number | 260 |
| config-width | 右侧配置面板宽度 | number | 260 |
| min-design-width | 设计面板最小宽度 | number | 300 |
| header-height | 顶栏高度 | number | 40 |
| tool-bar-height | 中间设计面板工具栏高度 | number | 40 |
| footer-height | 底栏高度 | number | 30 |
| custom-components | 自定义组件 | object | — |
### 2.1.2 插槽
| name | 说明 |
| :-----: | ---------------------- |
| header | 顶栏区域 |
| toolBar | 中间设计面板工具栏区域 |
| footer | 底栏区域 |
### 2.1.3 方法
| 方法 | 说明 | 参数 |
| :-----------: | ------------------------------------------------- | :--------------------: |
| clear | 清空设计数据 | — |
| setData | 设置设计数据,如果不传递参数等价于调用`clear`方法 | Function(data: object) |
| getData | 获取设计数据 | — |
| extractModels | 提取表单默认数据 | — |
## 2.2 `FormBuild`表单构建器
通过表单设计器生成配置快速构建出表单页面
```vue
```
### 2.2.1 属性
| 参数 | 说明 | 类型 | 默认值 |
| :---------------: | ------------ | :----: | :----: |
| data | 表单设计数据 | object | — |
| models | 表单数据 | object | {} |
| custom-components | 自定义组件 | object | — |
### 2.2.2 方法
| 方法 | 说明 | 参数 |
| :-----------: | ------------------------------------------------------------ | :----------------------------------------------------------: |
| validate | 对整个表单进行校验的方法,参数为一个回调函数。
该回调函数会在校验结束后被调用,并传入两个参数:
是否校验成功和未通过校验的字段。
若不传入回调函数,则会返回一个 `promise` | Function(callback: Function(boolean, object)) |
| validateField | 对部分表单字段进行校验的方法 | Function(props: array \| string, callback: Function(errorMessage: string)) |
| resetFields | 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果 | — |
| clearValidate | 移除表单项的校验结果。
传入待移除的表单项的`prop`属性或者`prop`组成的数组,
如不传则移除整个表单的校验结果 | Function(props: array \| string) |
| getRawModel | 获得表单原始数据 | — |
# 第三部分 二次开发
`element-form-design`支持开发者扩展自己的组件或者替换现有组件,扩展有两种方式:组件扩展和源码扩展
## 3.1 组件扩展
组件扩展是指通过`custom-components`属性注入自定义组件信息。
### 3.2 源码扩展