Skip to content

表单组件 - SForm

通过 Groups 配置渲染表单内容,当然也支持卡槽自定义组件。 (目前 Groups 已支持的表单组件如下)

ARate、
ASlider、
ASwitch、
ASelect、ATreeSelect、
ACascader、AAutoComplete、
ARadioGroup、ACheckboxGroup、
ADatePicker、AYearPicker、AMonthPicker、
AQuarterPicker、AWeekPicker、ATimePicker、ARangePicker、
AInput、AInputSearch、AInputNumber、AInputPassword、AInputTextarea

演示

基本用法

基本用法

支持通过 Props.groups 配置,渲染相应的表单组件
通过使用 formGroupsDefiner 提供 Typescript 提示和校验

Jack
复制代码
显示代码

表单分组

表单分组

Props.groups 配置渲染表单组件时,我们可以通过 AGroup 以及 ARow 来定制适配不同的表单布局

输入选择框
ZheJiang / NingBo
请选择
日期选择框
其他组件
表单实时数据
复制代码
显示代码

表单校验

表单校验

我们通过 Props.rules 统一配置表单各组件的校验规则,也可以在表单各组件的 rule 选项中进行配置

输入选择框
ZheJiang / NingBo
请选择
日期选择框
复制代码
显示代码

自定义分组

自定义分组

我们可以通过 AGroup.slot 自定义表单分组 Header, 也可以配置各分组下组件可用状态 (禁用/只读)

输入选择框 (已禁用)
ZheJiang / NingBo
请选择
日期选择框 (只读)
复制代码
显示代码

自定义组件

自定义组件

除了自定义表单分组,我们也可以通过 [Component].slot 自定义表单各组件。例:

  • AInput 输入框
  • ASelect 下拉框
  • ADatePicker 年月日

输入选择框
ZheJiang / NingBo
日期选择框
复制代码
显示代码

API

Props

SForm Props

参数说明类型默认值
rules表单各组件验证规则,可以被组件的 rlues 覆盖其定义object-
grid表单各组件的布局,可以在 props.groups 里重新定义SFormGrid-
border是否设置 SFormGroupHeader 的 bottom 边框string | boolean-
groups表单各组件配置选项, 有 [Component]AGroupARowArray<object>[]
model (v-model)表单表单数据对象object-
disabled是否将表单设置禁用booleanfalse
readonly是否将表单设置只读 (本质还是禁用,只是消除了禁用样式影响)booleanfalse
spinning是否显示表单 loadingbooleanfalse

SForm [Component]

参数说明类型默认值
type表单组件 类型,例:AInputAPasswordSFormType-
slot表单组件 自定义,例如 slot='input', 在 SForm<template #s-component-input> 自定义string-
label表单组件 labelstring-
field表单组件 绑定的字段string | string[]-
grid表单组件 布局大小 (24 栅格)SFormGrid-
layer表单组件 所应用的 FormItempropsobject{}
rules表单组件 验证规则, 可覆盖 props.rulesobject-
props表单组件 props 定义object{}
slots表单组件 slots 定义,例. 在 AInputSearch 中定义 enterButton 卡槽object{}
default表单组件 数据为空时的默认值 (input -> 传输给表单, output -> 从表单获取)object-
transfer表单组件 数据预处理 (input -> 传输给表单, output -> 从表单获取)object-
readonly表单组件 是否只读booleanfalse
disabled表单组件 是否禁用booleanfalse
render表单组件 是否渲染booleantrue
show表单组件 是否显示booleantrue

SForm AGroup

参数说明类型默认值
type类型'AGroup''AGroup'
slot表单分组 自定义,例如 slot='title', 在 SForm<template #s-header-title> 自定义string-
label表单分组 标题string-
border设置表单分组 GroupHeader 的 bottom 边框string | boolean{}
grid表单分组下 所属组件 布局大小 (24 栅格)SFormGrid-
readonly表单分组下 所属组件 是否只读booleanfalse
disabled表单分组下 所属组件 是否禁用booleanfalse
render表单分组下 所属组件 是否渲染booleantrue
show表单分组下 所属组件 是否显示booleantrue

SForm ARow

参数说明类型默认值
type类型'ARow''ARow'
gridARow 所属各组件 布局大小 (24 栅格)SFormGrid-
readonlyARow 所属各组件 是否只读booleanfalse
disabledARow 所属下各组件 是否禁用booleanfalse
renderARow 所属下各组件 是否渲染booleantrue
showARow 所属下各组件 是否显示booleantrue

Slots

插槽名插槽说明插槽参数
before定义 SForm 表单之前内容
after定义 SForm 表单之后内容
s-header-*定义 SForm 分组内容className, group, disabled, readonly
s-component-*定义 SForm 某组件内容col, row, group, attrs, slots, disabled, readonly, source, field

Expose

属性/方法名说明描述类型
resetFields对整个表单进行重置,将所有字段值重置为初始值并移除校验结果(name?: NamePath) => any
clearValidate移除表单项的校验结果。传入待移除的表单项的 name 属性或者 name 组成的数组(name?: NamePath) => any
getFieldsValue获取表单数据,不建议使用。更推荐 v-model,直接通过 model.value 获取(nameList?: InternalNamePath[] | true) => any
scrollToField滚动到对应字段位置(name: NamePath, options?: any) => any
validateFields触发表单验证(nameList?: NamePath[] | string, options?: ValidateOptions) => any
validate触发表单验证(nameList?: NamePath[] | string, options?: ValidateOptions) => any

Definer

定义说明
formValidator预设了表单某组件校验规则,例 password 规则。 详见 Validator
formGridDefiner定义 Props.grid 时的 TypeScript 提示和校验
formRulesDefiner定义 Props.rules 时的 TypeScript 提示和校验
formGroupsDefiner定义 Props.groups 时的 TypeScript 提示和校验

Validator

目前只预设了 密码(password) 和 数字(number) 校验规则。 当然你也可以自定义校验规则 => 详情

typescript
const rules = formRulesDefiner({
  password: formValidator.password({
    message: "请输入用户密码",
    validator: "用户密码过短",
    pattern: /.{8,}/,
    required: true,
  }),
});
typescript
const rules = formRulesDefiner({
  number: formValidator.number({
    message: "请输入数字",
    validator: "请输入正确的数字",
    required: true,
  }),
});

基于 MIT 许可发布