基本使用
# 基本使用
# 基本使用
步骤表单组件(sc-step-form)是一个多步骤表单组件,支持分步填写、验证和提交表单数据。
# 基础配置
# 扁平模式
通过设置 flattenMode 属性开启扁平模式,在扁平模式下:
- 所有步骤的数据将合并到同一个对象中
- 可以通过
fields属性指定当前步骤关联的字段
# 自定义功能
- 自定义底部按钮
- 步骤表单支持自定义底部按钮
- 可以通过插槽完全覆盖或在原有基础上增加内容
- 自定义内容
- 支持自定义标题和表单内容
- 可以通过插槽完全覆盖或在原有基础上增加内容
- 自定义表单字段
- 通过
form-{stepIndex}-{slotName}插槽来自定义表单字段
- 通过
# 动态步骤
可以根据条件动态显示或隐藏步骤,通过设置步骤的 condition 属性实现
# 自定义校验函数
可以通过 customValidator 属性设置自定义校验函数,对步骤数据进行更复杂的校验。
自定义校验函数接收两个参数:
resolve: 校验成功时调用的函数stepIndex: 当前步骤的索引
# 事件处理
步骤表单提供了丰富的事件,用于处理表单的各种状态变化。
# API 文档
# StepForm 属性
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| value / v-model | 表单数据对象 | object | {} |
| steps | 步骤配置数组 | array | [] |
| showStep | 是否显示步骤指示器 | boolean | true |
| showFooter | 是否显示底部按钮 | boolean | true |
| showSubmit | 是否在最后一步显示提交按钮 | boolean | true |
| flattenMode | 是否将所有步骤数据合并到同一对象 | boolean | false |
| allowDirect | 是否允许直接点击步骤指示器跳转 | boolean | true |
| customValidator | 自定义校验函数 | function | null |
# Step 配置项
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| title | 步骤标题 | string | - |
| description | 步骤描述 | string | - |
| prop | 步骤数据对象的key | string | - |
| columns | 表单列配置 | array | [] |
| formOptions | 表单组件配置 | object | {} |
| prevText | 上一步按钮文本 | string | 上一步 |
| nextText | 下一步按钮文本 | string | 下一步 |
| submitText | 提交按钮文本 | string | 提交 |
| condition | 步骤条件函数 | function | - |
| fields | 扁平模式下关联的字段 | array | [] |
# Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| step-change | 步骤变化时触发 | { from: number, to: number, step: object } |
| submit | 表单提交时触发 | formData: object |
# Slots
| 插槽名 | 说明 | 作用域参数 |
|---|---|---|
| step-title-[index] | 自定义步骤标题 | { currentStep, stepConfig, formData, updateFormData, validate } |
| step-title-[index]-[position] | 在步骤标题周围添加内容 | { currentStep, stepConfig, formData, updateFormData, validate } |
| step-content-[index] | 自定义步骤表单内容 | { currentStep, stepConfig, formData, updateFormData, validate } |
| step-content-[index]-[position] | 在步骤表单周围添加内容 | { currentStep, stepConfig, formData, updateFormData, validate } |
| form-[index]-[prop] | 自定义表单字段插槽 | { row, $index, ... } + { currentStep, stepConfig, formData, updateFormData, validate } |
| step-footer-[index] | 自定义步骤导航按钮 | { currentStep, totalSteps, prev, next, submit, loading } |
| step-footer-[index]-[position] | 在步骤导航按钮周围添加内容 | { currentStep, totalSteps, prev, next, submit, loading } |
注:
[position]可以是top、bottom、left、right
# Methods
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
| goToStep | 跳转到指定步骤 | stepIndex: number | boolean |
| validate | 校验表单,可以校验指定步骤或所有步骤 | [stepIndex]: number | Promise<boolean> |
| prev | 跳转到上一步 | - | - |
| next | 验证并跳转到下一步 | - | - |
| submit | 验证并提交表单 | - | - |