Appearance
配置项
js
import { defineFRConfig } from '@hamlet/render'
const config = defineFRConfig({
// 具体配置项
})import { defineFRConfig } from '@hamlet/render'
const config = defineFRConfig({
// 具体配置项
})目前 form-render 支持以下配置项。
| 参数 | 描述 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| type | 表单类型,可选值- 弹窗 dialog,抽屉 drawer,表单 form | string | dialog | 是 |
| title | 标题 | string | 是 | |
| rowKey | 数据键值,内部用来区分是新增还是编辑 | string | id | |
| maxHeight | 内容最大高度,type 值为 dialog或 drawer时生效 | number | ||
| size | 用于控制该表单内组件的尺寸, 可选值 small,default,large | string | default | |
| popupSize | 弹窗大小,可选值 small,middle,large | string | small | |
| width | 弹窗宽度 优先级大于 popupSize | number | ||
| column | 每行几列,可选值 1,2,3,4 | number | 1 | |
| rowGutter | 栅格间隔 | number | ||
| labelPosition | 标签对齐方式,可选值 right,top,left | string | ||
| labelWidth | 标签长度 | string | number | ||
| readonly | 是否只读 | boolean | ||
| api | 请求地址 | API | {add : API, edit: API} | ||
| body | 内容 | FRItem[] | 是 | |
| okText | 确认按钮文字 | string | ||
| cancelText | 取消按钮文字 | string | ||
| extraButtons | 弹窗底部按钮扩展 | IFRButton[] | ||
| onErrorResponse | 请求响应错误回调 | (error: any) => void | ||
| onBeforeSubmit | 提交前回调函数,可处理表单数据,type=form 时无效 | (formData: AnyObject) => AnyObject | ||
| onAfterSubmit | 提交后回调函数,type=form 时无效 | (res: AnyObject) => void | ||
| watch | 表单监听 | FRWatch | ||
| dynamic | 是否可动态添加 | boolean |
IFRButton
ts
interface IFRButton {
/**
* 标签名
*/
label: string
/**
* 按钮类型
*/
type?: 'primary' | 'warning' | 'danger' | 'success' | 'info'
onClick?: () => void
}interface IFRButton {
/**
* 标签名
*/
label: string
/**
* 按钮类型
*/
type?: 'primary' | 'warning' | 'danger' | 'success' | 'info'
onClick?: () => void
}FRItem
TIP
此处只列出通用的一些属性,更多参数请参考 type 对应表单控件,这里不做详细描述。
| 参数 | 描述 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| type | 控件类型 | keyof typeof ComponentTypeEnum | input | |
| component | 自定义组件渲染 | () => Component | Component | ||
| prop | 键名 | string | 是 | |
| label | 标签名称 | string | 是 | |
| tooltip | 提示 | string | ||
| colSpan | 布局占位,可选值 1,2,3,4 | number | ||
| slot | 是否开启自定义插槽 | boolean | ||
| placeholder | 占位文本 | string | ||
| required | 是否必填 | boolean | () => boolean | ||
| rules | 校验规则,参考 element-plus rules | FormItemRule | ||
| disabled | 是否禁用 | boolean | (formData: AnyObject) => boolean | ||
| clearable | 是否可清空 | boolean | ||
| visible | 是否显隐 | (formData: AnyObject) => boolean | ||
| body | 子级 | FRItem[] |
FRWatch
key - 表单内的值,当值变更时触发。
ts
export interface FRWatch {
[key: string]: (val: any) => void | {
immediate?: boolean
handler: (val: any) => void
}
}export interface FRWatch {
[key: string]: (val: any) => void | {
immediate?: boolean
handler: (val: any) => void
}
}ComponentTypeEnum
| 类型 | 描述 |
|---|---|
| pane | 面板 |
| input | 文本 |
| textarea | 文本域 |
| inputNumber | 数字输入框 |
| select | 选择器 |
| dictSelect | 字典选择器 |
| datePicker | 日期选择器 |
| switch | 开关 |
| comboGrid | 组合表格 |
| radio | 单选框 |
| timePicker | 时间选择器 |
| dynamicTable | 动态表格 |
| dynamicForm | 动态表单 |
FormRender Exposes
| 方法名 | 说明 | 类型 |
|---|---|---|
| show | 用于表单类型为弹窗 dialog,抽屉 drawer 弹出,可传入表单初始值 | (formData?: AnyObject) => void |
| close | 表单类型为弹窗 dialog或抽屉 drawer 时, 可主动触发关闭操作来关闭表单。 | () => void |
| validate | 对整个表单的内容进行验证。 接收一个回调函数,或返回 Promise。 | (formData: AnyObject): Promise<void> |
| setFieldValue | 设置表单的值(该值将直接传入 form store 中。) | (name: string, value: any) => void |
| setFieldsValue | 设置表单的值(该值将直接传入 form store 中。)。如果你只想修改 Form 中单项值,请通过 setFieldValue 进行指定 | (values) => void |
| getFieldsValue | 用于获取表单中所有已填写项的值。如果传入参数,则获取指定项的值;如果为空,则获取所有已填写项的数据。 | (name: string) => void |
| resetFields | 重置一组字段到 initialValues | (fields?: AnyObject) => void |
| clearValidate | 清理某个字段的表单验证信息 | (props?:any[] | undefined) => void |
vue
<template>
<h-form-render :config="formConfig" ref="formRef"></h-form-render>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { defineFRConfig } from '@hamlet/render'
const formRef = ref()
onMounted(() => {
formRef.value.setFieldValue('orderId', 'xxx')
})
const formConfig = defineFRConfig({
type: 'modal',
body: [
{
prop: 'orderId',
label: '订单号',
required: true,
type: 'input',
maxlength: 24,
},
],
})
</script><template>
<h-form-render :config="formConfig" ref="formRef"></h-form-render>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { defineFRConfig } from '@hamlet/render'
const formRef = ref()
onMounted(() => {
formRef.value.setFieldValue('orderId', 'xxx')
})
const formConfig = defineFRConfig({
type: 'modal',
body: [
{
prop: 'orderId',
label: '订单号',
required: true,
type: 'input',
maxlength: 24,
},
],
})
</script>