import type { IServiceStore, RendererEvent, RendererProps } from 'jamis-core'; import type { ActionSchema, BaseSchemaScoped, FormSchema, SchemaApi, SchemaClassName, SchemaExpression, SchemaReload } from '../types'; /** * 表单向导 * */ export interface WizardSchema extends BaseSchemaScoped { /** * 指定为表单向导 */ type: 'wizard'; /** * 元素`.cxd-Wizard-header`的样式类 * @deprecated 请使用`slots.className` */ headerClassName?: SchemaClassName; /** * 向导体`.cxd-Wizard-body`部分的样式类 * @deprecated 请使用`slots.className` */ bodyClassName?: SchemaClassName; /** * 内容区`.cxd-Wizard-content`元素的样式类 * @deprecated 请使用`slots.className` */ contentClassName?: SchemaClassName; /** * 引导页底元素`.cxd-Wizard-footer`的样式类 * @deprecated 请使用`slots.className` */ footerClassName?: SchemaClassName; /** * 操作按钮`.cxd-Wizard-btn`元素的样式类 * @deprecated 请使用`slots.className` */ actionClassName?: SchemaClassName; /** * 上一步按钮`.cxd-Wizard-prevBtn`的样式类 * @deprecated 请使用`slots.className` */ actionPrevClassName?: SchemaClassName; /** * 下一步按钮`.cxd-Wizard-nextBtn`的样式类 * @deprecated 请使用`slots.className` */ actionNextClassName?: SchemaClassName; /** * 完成按钮的文字描述 */ actionFinishLabel?: string; /** * 下一步按钮的文字描述 */ actionNextLabel?: string; /** * 下一步并且保存按钮的文字描述 */ actionNextSaveLabel?: string; /** * 上一步按钮的文字描述 */ actionPrevLabel?: string; /** * Wizard 用来保存数据的 api。 * [详情](https://baidu.github.io/amis/docs/api#wizard) */ api?: SchemaApi; /** * 是否合并后再提交 */ bulkSubmit?: boolean; /** * Wizard 用来获取初始数据的 api。 */ initApi?: SchemaApi; initFetch?: boolean; initFetchOn?: SchemaExpression; /** * 展示模式 * * @default vertical */ mode?: 'vertical' | 'horizontal'; /** * 是否为只读模式。 */ readOnly?: boolean; /** * 保存完后,可以指定跳转地址,支持相对路径和组内绝对路径,同时可以通过 $xxx 使用变量 */ redirect?: string; reload?: SchemaReload; /** * 默认表单提交自己会通过发送 api 保存数据,但是也可以设定另外一个 form 的 name 值,或者另外一个 `CRUD` 模型的 name 值。 如果 target 目标是一个 `Form` ,则目标 `Form` 会重新触发 `initApi` 和 `schemaApi`,api 可以拿到当前 form 数据。如果目标是一个 `CRUD` 模型,则目标模型会重新触发搜索,参数为当前 Form 数据。 */ target?: string; /** * 是否将底部按钮固定在底部。 */ affixFooter?: boolean | 'always'; steps: Array; startStep?: string; } export interface WizardStepSchema extends Partial { /** * 当前步骤用来保存数据的 api。 */ api?: SchemaApi; asyncApi?: SchemaApi; /** * 当前步骤用来获取初始数据的 api */ initApi?: SchemaApi; /** * 是否可直接跳转到该步骤,一般编辑模式需要可直接跳转查看。 */ jumpable?: boolean; /** * 通过 JS 表达式来配置当前步骤可否被直接跳转到。 */ jumpableOn?: SchemaExpression; /** * Step 标题 */ title?: string; label?: string; /** * 每一步可以单独配置按钮。如果不配置wizard会自动生成。 */ actions?: Array; /** * 保存完后,可以指定跳转地址,支持相对路径和组内绝对路径,同时可以通过 $xxx 使用变量 */ redirect?: string; reload?: SchemaReload; /** * 默认表单提交自己会通过发送 api 保存数据,但是也可以设定另外一个 form 的 name 值,或者另外一个 `CRUD` 模型的 name 值。 如果 target 目标是一个 `Form` ,则目标 `Form` 会重新触发 `initApi` 和 `schemaApi`,api 可以拿到当前 form 数据。如果目标是一个 `CRUD` 模型,则目标模型会重新触发搜索,参数为当前 Form 数据。 */ target?: string; } export interface WizardProps extends RendererProps, Omit { store: IServiceStore; onFinished: (values: object, action: any) => any; dispatchEvent: (event: IWizardEvent, data?: any) => Promise; } export type IWizardEvent = 'inited' | 'change' | 'stepChange' | 'stepSubmitSucc' | 'stepSubmitFail' | 'finished' | 'submitSucc' | 'submitFail';