import { ShallowRef, Ref } from 'vue'; import { FormInstance, FormRules } from 'element-plus'; import { _UseFormHooksExample } from '../form/type'; export type UseFormDialogHooksOptions< M = Record, S extends any[], SP extends any[], CP extends any[] > = { // 表单ref名称 ref?: string | ShallowRef // 表单对象 form?: M | Ref // 表单验证规则 rules?: FormRules // 提交实现方法 如果`submit`返回的是`Promise`,`submitAutoClose`缺省值为`true` submit?(...args: S): Promise | void // 对话框打开之前钩子 beforeShow?(...args: SP): boolean | Promise | undefined | void // 对话框打开之后钩子 show?(...args: SP): void // 对话框关闭之前钩子 beforeClose?(...args: CP): boolean | Promise | undefined | void // 对话框关闭之后钩子 close?(...args: CP): void // 对话框标题,根据form自动补充为添加XX或编辑XX,如"添加用户" title?: string // 关闭自动清空表单 closeResetFields?: boolean // 提交后自动关闭,如果`submit`返回的是`Promise`,`submitAutoClose`缺省值为`true` submitAutoClose?: boolean // 提交后自动上传文件 仅配合使用ElFormDialog组件时生效 submitAutoUploadFile?: boolean } export type UseFormDialogHooksExample< M = Record, S extends any[], SP extends any[], CP extends any[] > = { // 表单实例 ref: ShallowRef // 响应式表单对象 form: Ref // 表单验证规则 rules: FormRules // 提交 submit(...args: S): void | Promise // 重置表单 resetFields(): void // 清除表单验证 clearValidate(props?: Parameters[0]): void // 展示对话框,返回是否打开成功 show(...args: SP): Promise // 关闭对话框,返回是否关闭成功 close(...args: CP): Promise // 当前展示状态,提供双向绑定 model: Ref // 对话框标题 title: Ref } export type _UseFormDialogHooksExample< M = Record, S extends any[], SP extends any[], CP extends any[] > = UseFormDialogHooksExample & { _formHook: _UseFormHooksExample, _options: UseFormDialogHooksOptions }