# 组件 ## 表单设计器(MakingForm) ### API #### Props |
参数
|
说明
|
类型
|
默认值
| | --- | ----------------------------------------- | ---------- | ---------------------------- | | preview | 设计器预览操作按钮显示 | Boolean | fasle | | | generate-json | 设计器生成JSON按钮显示 | Boolean | false | | | generate-code | 设计器生成代码按钮显示 | Boolean | false | | | clearable | 设计器清空按钮显示 | Boolean | false | | | upload | 设计器导入JSON按钮显示 | Boolean | false | | | basic-fields | 设计器左侧基础字段配置| Array | ['input', 'textarea', 'number', 'radio', 'checkbox', 'time', 'date', 'rate', 'color', 'select', 'switch', 'slider', 'text'] | | | advance-fields | 设计器左侧高级字段配置 | Array | ['blank', 'imgupload', 'editor', 'cascader'] | | | layout-fields | 设计器左侧布局字段配置 | Array | ['grid'] | | #### Slots | name | 说明 | | --- | --- | | action | 设计器头部操作按钮自定义区域 | #### 方法 通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 MakingForm 实例并调用实例方法 | 方法名 | 说明 | 参数 | | --- | --- | --- | | getJSON | 获取设计器配置的JSON数据 | - | | getHtml | 获取设计器生成的可以直接使用的HTML代码 | - | | setJSON | 设置设计器的配置信息 | (value) 通过getJSON方法获取的JSON数据 | | clear | 清空设计器 | - | ### 代码演示 #### 自定义操作按钮 ``` html ``` #### 字段配置 ``` html ``` #### 获取 `json` 数据 ```html ``` ```js const json = this.$refs.makingform.getJSON() ``` ## 表单生成器(GenerateForm) ### API #### Props |
参数
|
说明
|
类型
|
默认值
| | --- | ----------------------------------------- | ---------- | ---------------------------- | | data | 表单json配置数据 | Object | - | | value | 表单数据 | Object | - | | remote | 表单获取数据远端方法 | Object | {} | #### Events |
事件名
|
说明
|
回调参数
| | --- | --- | --- | | on-change | 表单数据变化时触发 | field: 数据改变的字段标识
value: 数据改变后的值
data: 表单数据 | #### 方法 通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 GenerateForm 实例并调用实例方法 | 方法名 | 说明 | 参数 | | --- | --- | --- | | getData | 获取表单数据 | - | | reset | 重置表单数据 | - | ### 代码演示 #### 表单生成 直接根据设计器中生成的 `json` 即可渲染出表单,获取表单数据。 ``` html ``` ```js export default { data () { return { jsonData: {"list":[{"type":"input","icon":"icon-input","options":{"width":"100%","defaultValue":"","required":false,"dataType":"string","pattern":"","placeholder":"","customClass":"","disabled":false,"labelWidth":100,"isLabelWidth":false,"hidden":false,"dataBind":true,"showPassword":false,"remoteFunc":"func_1575897887618","remoteOption":"option_1575897887618"},"name":"单行文本","key":"1575897887618","model":"input_1575897887618","rules":[{"type":"string","message":"单行文本格式不正确"}]}],"config":{"labelWidth":100,"labelPosition":"right","size":"small","customClass":""}}, } }, methods: { handleSubmit () { this.$refs.generateForm.getData().then(data => { alert(JSON.stringify(data)) }).catch(e => { }) } } } ``` #### 加载表单数据 ```html ``` ```js export default { data () { return { jsonData: {"list":[{"type":"input","icon":"icon-input","options":{"width":"100%","defaultValue":"","required":false,"dataType":"string","pattern":"","placeholder":"","customClass":"","disabled":false,"labelWidth":100,"isLabelWidth":false,"hidden":false,"dataBind":true,"showPassword":false,"remoteFunc":"func_1575897887618","remoteOption":"option_1575897887618"},"name":"名称","key":"1575897887618","model":"name","rules":[{"type":"string","message":"名称格式不正确"}]}],"config":{"labelWidth":100,"labelPosition":"right","size":"small","customClass":""}}, editData: { /* 需要加载的表单数据可以在这里进行设置 */ name: 'Gavin' }, } } } ``` #### 表单字段值改变事件 表单字段值改变后会触发 `on-change` 事件。 ```html ``` ```js export default { data () { return { jsonData: {"list":[{"type":"input","icon":"icon-input","options":{"width":"100%","defaultValue":"","required":false,"dataType":"string","pattern":"","placeholder":"","customClass":"","disabled":false,"labelWidth":100,"isLabelWidth":false,"hidden":false,"dataBind":true,"showPassword":false,"remoteFunc":"func_1575897887618","remoteOption":"option_1575897887618"},"name":"名称","key":"1575897887618","model":"name","rules":[{"type":"string","message":"名称格式不正确"}]},{"type":"text","icon":"icon-wenzishezhi-","options":{"defaultValue":"","customClass":"","labelWidth":100,"isLabelWidth":false,"hidden":false,"dataBind":true,"remoteFunc":"func_1575906202073","remoteOption":"option_1575906202073"},"name":"","key":"1575906202073","model":"show","rules":[]}],"config":{"labelWidth":100,"labelPosition":"right","size":"small","customClass":""}}, formData: { show: '' } } }, methods: { onChange (field, value) { if (field == 'name') { this.formData.show = value } } } } ```