# formo **Repository Path**: antfl/formo ## Basic Information - **Project Name**: formo - **Description**: 基于 Vue3 与 TypeScript 的声明式动态表单、表格组件,通过简洁的 JavaScript 对象配置,快速实现复杂业务场景的表单字段联动(显隐、禁用、类型切换)与数据表格渲染。无缝集成 Element Plus 设计规范,支持插槽深度自定义,助力开发者告别重复代码。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2025-01-02 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: 表单配置器, 动态表单, Vue, Element-UI ## README # formo🍀 # 演示地址 https://formo.byteout.cn # 使用 formo🍉 >介绍:formo 是基于 Vue3 与 TypeScript 的声明式动态表单、表格组件,通过简洁的 JavaScript 对象配置,快速实现复杂业务场景的表单字段联动(显隐、禁用、类型切换)与数据表格渲染。无缝集成 Element Plus 设计规范,支持插槽深度自定义,助力开发者告别重复代码。 ## SchemaForm 🍅 ```html ``` ## SchemaTable 🍔 ```html ``` # 配置 SchemaForm ⛄ ## FormConfig 🎋 | 属性名 | 类型 | 说明 | 默认值 | 必填 | ---- | ---- |----|----|----| | trigger | string | 表单触发时机 | change | 否 | | rules | FormRules[] | 表单校验规则 | - | 否 | | layout | Record | 表单布局配置(基于 ElRow & ElCol 组件实现) | - | 否 | | props | Record | 表单属性用于 ElForm 组件 | - | 否 | | emptyText | string | VIEW 模式下空值展示的文本(优先级小于字段属性定义)|-|否| ## FormItemConfig 🧸 | 属性名 | 类型 | 说明 | 默认值 | 必填 | ---- |-------------|----|-----|----| | name | string |字段名| - | 是 | | label | string |字段描述| - | 否 | | component | PropFunction |字段组件|-|否| | mode | PropFunction |组件展示模式|-|否| | visible | PropFunction |组件隐藏|-|否| | rules | PropFunction |字段校验(优先级最高)|-|否| | required | PropFunction |字段必填(简要必填配置方式)|-|否| | options | PropFunction[]> |所有选项类型组件的选项数据|-|否| | remoteOptions | PropFunction[]>> |所有选项类型组件的远程选项数据|-|否| | valueKey | string |选项值字段|-|否| | labelKey | string |选项描述字段|-|否| | slot | string |字段插槽(插槽在 el-form-item 组件里面)|-|否| | column | Record |字段布局(el-col)|-|否| | customSlot | string |字段自定义插槽(插槽脱离 el-form-item 组件)|-|否| | viewSlot | string |VIEW 模式的插槽|-|否| | labelSlot | string |字段描述插槽|-|否| | errorSlot | string |段错误提示插槽|-|否| | formItemProps | Record |字段组件父组件配置( el-form-item)|-|否| | props | Record |字段组件配置|-|否| | itemProps | ItemProps |字段组件配置子组件配置(比如下拉选择的 el-option、el-radio、el-checkbox 属性、插槽以及其他组件(el-input)的插槽)|-|否| | change | (data: FormItemChangeParams) => void |字段值改变时触发|-|否| | format | (data: any) => any |仅在 VIEW 模式下格式化展示的文本|-|否| | emptyText | string |VIEW 模式下为 undefined、null 时展示的默认文本|-|否| # 配置 SchemaTable 🎉 ## TableConfig 🐠 | 属性名 | 类型 | 说明 | 默认值 | 必填 | ---- | ---- |----|-|-| | emptyText |string|空值展示的文本(优先级小于列配置定义)|-|否| | formProps |Record||-|否| | tableProps|Record||-|否| | defaultSlot |string||-|否| | appendSlot |string||-|否| | emptySlot |string||-|否| ## ColumnItem 🐸 | 属性名 | 类型 | 说明 | 默认值 | 必填 | ---- |--------|----|----|------| | name | string |列字段名|-| 是 | | label | string |列字段描述|-| 否 | | width | string \| number|列宽|-| 否 | | rules | PropFunction |字段校验(优先级最高)|-| 否 | | customSlot | string |字段自定义插槽(插槽脱离 el-form-item 组件)|-| 否 | | slot | string |字段插槽(插槽在 el-form-item 组件里面)|-| 否 | | props | Record |el-table-column 配置|-| 否 | | formItemProps | Record |字段组件父组件配置( el-form-item)|-| 否 | | component | PropFunction |单元格表单组件(如果返回 false 则不使用表单组件)|-| 否 | | format | PropFunction |格式化单元格的值|-| 否 | | change | (data: CellChangeParams) => void |字段值改变时触发|-| 否 | | options | PropFunction[]> |所有选项类型组件的选项数据|-| 否 | | remoteOptions | PropFunction[]>> |所有选项类型组件的远程选项数据|-| 否 | | valueKey | string |选项值字段|-| 否 | | labelKey | string |选项描述字段|-| 否 | | required | PropFunction |字段必填(简要必填配置方式)|-| 否 | | emptyText | string |为 undefined、null 时展示的默认文本|-| 否 |