Skip to content

AiForm 表单组件

通过 JSON Schema 配置动态渲染表单,支持多种字段类型和验证规则。

基础用法

vue
<template>
  <AiForm
    :schema="formSchema"
    v-model:value="formData"
    :grid-cols="2"
    @submit="handleSubmit"
  />
</template>

<script setup>
import { ref } from 'vue'

const formData = ref({})

const formSchema = [
  { field: 'name', label: '姓名', type: 'input', required: true },
  { field: 'age', label: '年龄', type: 'number' },
  { field: 'status', label: '状态', type: 'select', options: [
    { label: '启用', value: 1 },
    { label: '禁用', value: 0 }
  ]}
]
</script>

Props

属性类型默认值说明
schemaArray[]表单字段配置
valueObject{}表单数据 (v-model)
gridColsNumber1栅格列数
labelPlacementString'left'标签位置:left/top
labelWidthString/Number'auto'标签宽度
showActionsBooleantrue是否显示操作按钮
enableCollapseBooleanfalse是否启用折叠
maxVisibleFieldsNumber6折叠时最大显示字段数

Schema 字段配置

属性类型说明
fieldString字段名
labelString标签文本
typeString字段类型
requiredBoolean是否必填
rulesArray验证规则
optionsArray选项(select/radio/checkbox)
defaultValueAny默认值
spanNumber栅格占位
vIfFunction/Boolean条件显示
onChangeFunction值变化回调

支持的字段类型

类型说明
input输入框
textarea文本域
number数字输入
select下拉选择
radio单选
checkbox多选
date日期
datetime日期时间
switch开关
slot自定义插槽

方法

js
// 验证表单
await formRef.value.validate()

// 重置验证
formRef.value.restoreValidation()

// 重置表单
formRef.value.reset()

// 获取表单数据
const data = formRef.value.getFormData()

事件

事件参数说明
submitformData提交表单
reset-重置表单
cancel-取消