代码演示
基础用法
设计器默认高度是根据父元素高度 100% 渲染的,如果父级元素没有指定高度,可以为设计器指定具体高度
<template><fm-making-formstyle="height: 700px;"previewgenerate-codegenerate-json></fm-making-form></template>
自定义操作按钮

<template><fm-making-formstyle="height: 700px;"v-bind="actionButton"><template #action><!-- 自定义操作区域插槽 --><el-button type="primary"><el-icon><Upload /></el-icon> 保存</el-button></template></fm-making-form></template><script setup>import { Upload } from '@element-plus/icons-vue'import { reactive } from 'vue'const actionButton = reactive({clearable: true,preview: true})</script>
设计器左侧字段配置

左侧中基础字段、高级字段、布局字段可以根据自己的需要分别进行配置。 可以在 字段说明 中查看字段的配置参数
<template><fm-making-formstyle="height: 500px;":basic-fields="['input', 'textarea']":advance-fields="['blank', 'fileupload']":layout-fields="['grid']"></fm-making-form></template>
获取设计器配置

<template><fm-making-formstyle="height: 700px;"ref="makingFormRef"><template #action><el-button type="text" @click="handleJson">获取配置</el-button></template></fm-making-form></template><script setup>import { ref } from 'vue'import { ElMessageBox } from 'element-plus'const makingFormRef = ref()const handleJson = () => {const json = makingFormRef.value.getJSON()ElMessageBox.alert(json)}</script>
导入表单配置
将设计好的表单配置(json)导入到新的设计器中。
需要在设计器初始化完成后导入json,在
ready事件中进行操作
<template><fm-making-formref="makingform"style="height: 700px;"previewgenerate-codegenerate-json@ready="handleFormReady"></fm-making-form></template><script setup>import { ref } from 'vue'const makingform = ref()const handleFormReady = () => {const newJson = { "list": [ { "type": "input", "icon": "icon-input", "options": { "width": "", "defaultValue": "", "required": false, "requiredMessage": "", "dataType": "", "dataTypeCheck": false, "dataTypeMessage": "", "pattern": "", "patternCheck": false, "patternMessage": "", "validatorCheck": false, "validator": "", "placeholder": "", "customClass": "", "disabled": false, "labelWidth": 100, "isLabelWidth": false, "hidden": false, "dataBind": true, "showPassword": false, "remoteFunc": "func_f7vuj1ic", "remoteOption": "option_f7vuj1ic" }, "events": { "onChange": "", "onFocus": "", "onBlur": "" }, "name": "Input", "key": "f7vuj1ic", "model": "input_f7vuj1ic", "rules": [] } ], "config": { "labelWidth": 100, "labelPosition": "right", "size": "default", "customClass": "", "ui": "element", "layout": "horizontal", "labelCol": 3, "width": "100%", "hideLabel": false, "hideErrorMessage": false, "eventScript": [ { "key": "mounted", "name": "mounted", "func": "" } ] } }makingform.value.setJSON(newJson)}</script>
初始化表单配置
<template><fm-making-form:global-config="globalConfig"></fm-making-form></template><script setup>const globalConfig = {// 为设计器配置默认样式表styleSheets: '.a .el-form-item__label{color: red;}',// 数据源配置dataSource: [{key: 'getoptions', // 指定的唯一值name: 'Get Options', // 数据源名称,唯一值url: 'https://tools-server.making.link/api/new/options', // 请求接口地址method: 'GET',auto: true, // 是否表单初始化时发送请求responseFunc: 'return res.data', // 数据处理函数内容headers: {}, // 数据请求头部,可选params: {}, // 数据请求参数,可选,(查询参数)}]}</script>
设计器初始化时会自动解析配置的样式表,取出一级类名,在 自定义Class 中进行配置。
表单字段默认配置
可以通过 field-config 对设计器中字段的默认属性进行配置。
<template><fm-making-form:field-config="fieldConfig"></fm-making-form></template><script setup>const fieldConfig = [{type: 'fileupload',options: {// 对上传组件地址进行配置domain: 'https://tcdn.form.making.link/',action: 'https://tools-server.making.link/api/transfer',}},{type: 'select',options: {// 对下拉框组件配置静态选项数据options: [{value: '1111'},{value: '2222'},{value: '3333'}]}}]</script>
更多字段可配置属性可以参考 字段可配置项。
字段标识下拉选择绑定
有时候我们在设计表单时,数据字段标识已经指定好,这时候可以通过field-models传入到设计器中,在设计的时候即可通过选择进行字段绑定。
<template><fm-making-form:field-models="fieldModels"></fm-making-form></template><script setup>const fieldModels = [{fieldId: 'userId'},{fieldId: 'userName',fieldLabel: '用户名'}]</script>
API
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| preview | 预览按钮展示 | boolean | false |
| generate-json | 生成json操作按钮展示 | boolean | false |
| generate-code | 生成代码操作按钮展示 | boolean | false |
| clearable | 清空操作按钮展示 | boolean | false |
| upload | 导入json操作按钮展示 | boolean | false |
| basic-fields | 左侧基础字段配置 | array | - |
| advance-fields | 左侧高级字段配置 | array | - |
| layout-fields | 左侧布局字段配置 | array | - |
| cutom-fields | 自定义字段配置 | array | - |
| global-config | 表单初始化全局配置,配置项参考 Global Config Options | object | - |
| field-config | 表单字段默认配置项,配置项参考 字段可配置项 | ||
| name | 设计器名称 | ||
| cache | 是否将json缓存到浏览器,可通过配置name属性进行差异化存储 |
boolean | false |
| json-templates | 模板库配置; { title: ‘中文模板名称’,enTitle: ‘英文模板名称’,json: ‘模板json’,url: ‘模板预览缩略图’} |
array | |
| init-from-template | 初始化时是否开启从模板库选择 | boolean | false |
| field-models | 字段标识配置,为设计器字段标识提供下拉绑定。 { fieldId: 绑定字段标识,fieldLabel: 显示名称} |
array | [] |
插槽
| 名称 | 说明 |
|---|---|
| action | 设计器头部操作按钮自定义区域 |
方法
| 方法名 | 说明 | 参数 |
|---|---|---|
| getJSON | 获取设计器配置的 json 数据 | () => json object |
| getHtml | 获取设计器生成的代码 | (type: html | vue , ui: element | antd ) => string |
| setJSON | 设置设计器配置的json数据 | (value: string | object) |
| clear | 清空设计器操作 | () => void |
| handleUndo | 撤销 | () => void |
| handleRedo | 重做 | () => void |
| setSelect | 设置设计器目前选中的组件 | (field: 字段标识) |
事件
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| ready | 设计器初始化完成 | - |
Global Config Options
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| ui | 表单设计器使用ui库 | element | antd | element |
| width | 表单宽度 | string | 100% |
| customClass | 自定义样式表类名 | string | |
| styleSheets | 查看 初始化表单配置 | string | |
| dataSource | 查看 初始化表单配置 | array | |
| platform | 设备 | pc | pad | mobile |
字段说明
基础字段
| input | 单行文本 |
|---|---|
| textarea | 多行文本 |
| number | 计数器 |
| radio | 单选框组 |
| checkbox | 多选框组 |
| time | 时间选择器 |
| date | 日期选择器 |
| rate | 评分 |
| color | 颜色选择器 |
| select | 下拉选择框 |
| switch | 开关 |
| slider | 滑块 |
| text | 文字 |
| html | HTML |
| button | 按钮 |
| link | 文字链接 |
| cascader | 级联选择器 |
| steps | 步骤条 |
| treeselect | 树选择 |
| transfer | 穿梭框 |
高级字段
| blank | 自定义区域/插槽 |
|---|---|
| component | 自定义组件 |
| fileupload | 文件 |
| imgupload | 图片 |
| editor | 编辑器 |
| table | 子表单 |
布局字段
| grid | 栅格布局 |
|---|---|
| report | 表格布局 |
| tabs | 标签页 |
| divider | 分割线 |
| inline | 行内布局 |
