Skip to content

A2UI 表单 Form

通过 Schema 配置自动生成 XTO UI 表单,支持多种字段类型和校验规则。

基础用法

使用 FormSchema 配置表单字段,A2UI 会自动渲染对应的 XTO UI 组件。

vue
<script setup>
import { SchemaRenderer } from '@xto/lowcode-shared'

const schema = {
  id: 'user-form',
  name: '用户表单',
  version: '1.0.0',
  fields: [
    { name: 'username', label: '用户名', type: 'input' },
    { name: 'email', label: '邮箱', type: 'input' }
  ]
}
</script>

<template>
  <SchemaRenderer :schema="schema" />
</template>

字段配置

每个字段支持以下属性:

属性类型必填说明
namestring字段名,作为表单数据的 key
labelstring显示标签
typestring字段类型,映射到具体组件
propsobject组件属性配置
rulesarray校验规则

字段类型映射

type组件说明
inputXInput文本输入框
numberXInputNumber数字输入框
textareaXTextarea多行文本域
selectXSelect下拉选择器
dateXDatePicker日期选择器
timeXTimePicker时间选择器
switchXSwitch开关
checkboxXCheckbox复选框
radioXRadioGroup单选组
rateXRate评分
sliderXSlider滑块
uploadXUpload文件上传

校验规则

支持以下校验规则类型:

规则说明
required必填校验
min最小值/最小长度
max最大值/最大长度
pattern正则表达式校验
custom自定义校验函数

示例

json
{
  "name": "password",
  "label": "密码",
  "type": "input",
  "rules": [
    { "type": "required", "message": "请输入密码" },
    { "type": "min", "value": 6, "message": "密码至少6位" },
    { "type": "max", "value": 20, "message": "密码最多20位" }
  ]
}

组件属性配置

通过 props 字段配置组件属性:

json
{
  "name": "status",
  "label": "状态",
  "type": "select",
  "props": {
    "placeholder": "请选择状态",
    "clearable": true,
    "options": [
      { "label": "启用", "value": 1 },
      { "label": "禁用", "value": 0 }
    ]
  }
}

表单布局

FormSchema 支持布局配置:

typescript
interface FormLayout {
  labelWidth?: string | number  // 标签宽度
  labelPosition?: 'left' | 'right' | 'top'  // 标签位置
  inline?: boolean  // 行内表单
}

完整示例

json
{
  "id": "complete-form",
  "name": "完整表单",
  "version": "1.0.0",
  "fields": [
    { "name": "username", "label": "用户名", "type": "input", "rules": [{ "type": "required" }] },
    { "name": "age", "label": "年龄", "type": "number", "props": { "min": 0, "max": 150 } },
    { "name": "gender", "label": "性别", "type": "select", "props": { "options": [{ "label": "男", "value": "male" }, { "label": "女", "value": "female" }] } },
    { "name": "birthday", "label": "生日", "type": "date" },
    { "name": "bio", "label": "简介", "type": "textarea", "props": { "rows": 4 } },
    { "name": "active", "label": "是否激活", "type": "switch" },
    { "name": "score", "label": "评分", "type": "rate" }
  ],
  "layout": {
    "labelWidth": "100px",
    "labelPosition": "right"
  }
}

API

SchemaRenderer Props

属性类型说明
schemaFormSchema表单 Schema 配置
modelValueobject表单数据(可选)

SchemaRenderer Events

事件参数说明
update:modelValueobject表单数据变化
submitobject提交表单数据

相关链接

基于 MIT 许可发布