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