Skip to content

FormDesigner 表单设计器 ​

可视化拖拽表单构建器,支持通过拖拽组件到画布来快速生成表单。

使用方式 ​

vue
<template>
  <FormDesigner v-model="formSchema" @save="onSave" />
</template>

<script setup>
import { ref } from 'vue'
import FormDesigner from '@/components/form-designer/FormDesigner.vue'

const formSchema = ref([])

function onSave(schema) {
  console.log('表单 Schema:', schema)
}
</script>

Props ​

属性类型说明
modelValueArray表单字段 Schema 数组(v-model)
initialSchemaArray初始 Schema(用于加载已有表单)

Events ​

事件参数说明
update:modelValue(schema: Array)Schema 变更
save(schema: Array)保存表单
cancel-取消编辑

暴露方法 ​

方法返回值说明
getFormSchema()Array获取当前表单 Schema
setFormSchema(schema)-设置表单 Schema

支持的组件类型 ​

基础组件(10 个) ​

组件类型值说明
输入框input文本输入
多行文本textarea多行文本输入
数字number数字输入
下拉选择select下拉选项
单选框radio单选按钮组
复选框checkbox多选按钮组
日期选择date日期选择器
时间选择time时间选择器
开关switch开关组件
滑块slider滑块组件

高级组件(6 个) ​

组件类型值说明
上传upload文件上传
富文本richText富文本编辑器
级联选择cascader级联选择器
树选择treeSelect树形选择器
颜色选择colorPicker颜色选择器
评分rate评分组件

布局组件(3 个) ​

组件类型值说明
分割线divider分割线
标题title标题
描述description描述文本

布局结构 ​

三面板布局:

  1. 左侧 — 组件面板(基础/高级/布局组件分类)
  2. 中间 — 设计画布(支持拖拽排序,使用 vuedraggable)
  3. 右侧 — 属性编辑器(编辑选中组件的属性)

FormItemRender — 字段渲染器 ​

负责根据 Schema 渲染单个表单字段。

vue
<FormItemRender
  :item="fieldSchema"
  v-model="formData[fieldSchema.key]"
  :disabled="false"
/>

Props ​

属性类型说明
itemObject字段 Schema(必填)
modelValueany字段值
disabledBoolean是否禁用
previewBoolean预览模式

Events ​

事件参数说明
update:modelValue(value)值变更
change(value)值变更

FormPreview — 表单预览 ​

从 Schema 渲染完整表单,支持验证和提交。

vue
<template>
  <FormPreview
    :form-items="formSchema"
    @submit="onSubmit"
  />
</template>

Props ​

属性类型说明
formItemsArray表单 Schema
schemaArray备用 Schema

Events ​

事件参数说明
submit(formData)表单提交
change(formData)表单数据变更

暴露方法 ​

方法说明
getFormData()获取表单数据
setFormData(data)设置表单数据
validate()表单验证
reset()重置表单

依赖 ​

  • vuedraggable
  • naive-ui
  • FormItemRender.vue
  • FormPreview.vue