基类
基类
表单(Form)
FormComplexFieldWidget 类
FormComplexFieldWidget
,继承自FormFieldWidget
,是表单中处理复杂关系字段的基础抽象类。
响应式属性
- isDataSourceProvider:标识组件是否为数据源提供者。
- submitCache:与组件字段相关联的提交缓存管理器。
- referencesModel:组件字段引用的运行时模型。
- parentMountedCallChaining:父组件的挂载调用链。
- currentMountedCallChaining:当前组件的挂载调用链。
- mountedCallChaining:获取当前有效的挂载调用链。
- parentRefreshCallChaining:父组件的刷新调用链。
- currentRefreshCallChaining:当前组件的刷新调用链。
- refreshCallChaining:获取当前有效的刷新调用链。
- filter:与组件字段相关的过滤条件。
- domain:与组件字段相关的域。
方法
- initialize(props: Props):初始化组件,设置初始属性和状态。
- initSubmitCache(referencesModel: RuntimeModel):初始化提交缓存管理器。
- resolveDynamicDomain(domain: string):解析动态域字符串。
抽象方法
- mountedProcess():组件挂载时的处理逻辑,需在子类中实现。
- refreshParentProcess():父视图刷新时的处理逻辑。
- refreshValueProcess():值刷新时的处理逻辑。
示例
class CustomFieldWidget extends FormComplexFieldWidget {
protected mountedProcess(): ReturnPromise<void> {
// 实现挂载时的具体逻辑
}
}
多对多
FormM2MFieldWidget 类
FormM2MFieldWidget
继承自 FormComplexFieldWidget
,专门用于处理多对多关系字段的表单组件。
响应式属性
- 继承自
FormComplexFieldWidget
的所有响应式属性。
方法
- 继承自
FormComplexFieldWidget
的所有方法。
submit 方法
- submit(submitValue: SubmitValue):多对多数据提交逻辑。
- 当值为
undefined
时,不进行提交。 - 当值为空或为空数组时,提交
null
值进行置空处理。 - 当字段无法获取、字段为存储且关联关系不存储、关联/关系字段未正确配置时,使用默认提交策略。
- 其他情况均使用仅提交关联关系字段的方式。
- 当值为
使用 SubmitRelationHandler.M2M
方法处理多对多关系字段的提交,包括字段值、视图模式、提交缓存、提交类型和关系更新类型等参数。
多对一
FormM2OFieldWidget 类
FormM2OFieldWidget
继承自 FormComplexObjectFieldWidget
,专门用于处理多对一关系字段的表单组件。
响应式属性
- 继承自
FormComplexObjectFieldWidget
的所有响应式属性。
方法
- 继承自
FormComplexObjectFieldWidget
的所有方法。
submit 方法
- submit(submitValue: SubmitValue):多对一数据提交逻辑。
- 当值为
undefined
时,不进行提交。 - 当值为空或为空对象时,提交
null
值进行置空处理。 - 当字段无法获取、字段为存储且关联关系不存储、关联/关系字段未正确配置时,使用默认提交策略。
- 其他情况均使用仅提交关联关系字段的方式。
- 当值为
使用 SubmitRelationHandler.M2O
方法处理多对一关系字段的提交,包括字段值、视图模式、提交缓存、提交类型和关系更新类型等参数。
一对多
FormO2MFieldWidget 类
FormO2MFieldWidget
继承自 FormComplexListFieldWidget
,专门用于处理一对多关系字段的表单组件。
响应式属性
- 继承自
FormComplexListFieldWidget
的所有响应式属性。
方法
- 继承自
FormComplexListFieldWidget
的所有方法。
submit 方法
- submit(submitValue: SubmitValue):一对多数据提交逻辑。
- 当值为
undefined
时,不进行提交。 - 当值为空或为空数组时,提交
null
值进行置空处理。 - 当字段无法获取、字段为存储且关联关系不存储、关联/关系字段未正确配置时,使用默认提交策略。
- 其他情况均使用仅提交关联关系字段的方式。
- 当值为
使用 SubmitRelationHandler.O2M
方法处理一对多关系字段的提交,涵盖字段值、视图模式、提交缓存、提交类型和关系更新类型等参数。
一对一
FormO2OFieldWidget
FormO2OFieldWidget
继承自 FormComplexObjectFieldWidget
,专门用于处理表单中的一对一关系字段。
主要功能
- 提供一对一关系字段的数据提交逻辑。
- 通过
SubmitRelationHandler.O2O
方法处理一对一关系字段的提交。
方法
- submit(submitValue: SubmitValue): 异步方法,用于提交一对一关系字段的数据。该方法接收
submitValue
作为提交的数据,并使用SubmitRelationHandler.O2O
方法进行处理,涉及的参数包括字段定义field
、字段名称itemName
、字段值value
、视图模式viewMode
、提交缓存submitCache
、提交类型submitType
和关系更新类型relationUpdateType
。
该类为一对一关系字段提供了标准的数据处理和提交逻辑,使得在表单中处理一对一关系变得简洁明了。
表格(Table)
TableComplexFieldWidget 类
TableComplexFieldWidget
继承自 BaseTableFieldWidget
,专门用于处理表格中的复杂字段,适合展示和管理关系字段,如一对多、多对一等。
响应式属性
- referencesModel:引用当前字段所关联的
RuntimeModel
,用于获取关联模型的详细信息。 - labelFields:定义用于显示在表格列中的标签字段数组,通常从关联模型的标签字段中获取。
- searchFields:定义用于表格搜索功能的字段数组。如果未特别指定,将默认使用
labelFields
。 - separator:用于表格单元格中展示多个值时的分隔符,默认为
,
。 - relationFieldKey:用于唯一标识关系字段的键名,通常为关联模型的主键字段。如果未指定,将默认使用
id
。 - optionLabel:自定义选项标签,用于覆盖默认显示的文本。
- optionLabelContextArgs:自定义选项标签的上下文参数,用于生成标签文本。
方法
- handleTableLabel(dataEntity):根据给定的数据实体和配置生成表格单元格内的显示标签文本。
submit 方法
- submit(submitValue: SubmitValue):处理数据提交逻辑。根据字段的配置和提供的
submitValue
,适当地使用SubmitRelationHandler
处理数据提交,方法内部会根据实际关系类型(如O2M
,M2O
等)选择合适的处理策略。
选择(Select)
FormSelectComplexFieldWidget
FormSelectComplexFieldWidget
是用于构建带有关系字段下拉选择功能的表单字段组件的基类。它扩展了 BaseSelectFieldWidget
,为多对多、多对一等复杂关系字段提供支持。
主要特性
- 支持单选和多选模式。
- 动态加载选项和搜索功能。
- 自定义选项的显示内容。
响应式属性
- loadMoreLoading:表示是否正在加载更多选项。
- showMoreButton:控制“加载更多”按钮的显示。
- isInitOptions:指示选项列表是否已初始化。
- options:下拉选项列表。
方法
- fillOptions(dataList, insetDefaultValue):根据提供的数据列表填充下拉选项。
- loadMetadata():加载与下拉选相关的元数据。
- generatorSelectOption(optionDataList):生成下拉选项。
- handleSelectOption(optionDataList, referencesModel):处理下拉选项的显示逻辑。
- loadMore():加载更多选项。
- onSelect(e):处理选项选中事件。
- search(searchValue):根据搜索值过滤选项。
BaseSelectFieldWidget
BaseSelectFieldWidget
提供了基础的选择字段功能,是所有选择字段组件的基类。
主要特性
- 基础的单选和多选功能。
- 自定义选项显示内容。
响应式属性
- labelFields:用于显示的标签字段。
- searchFields:用于搜索的字段。
- separator:多个值之间的分隔符。
- maxTagCount:最多显示的标签数量。
- optionLabel:选项自定义标签。
- optionLabelContextArgs:选项标签的上下文参数。
生命周期方法
- mountedProcess():组件挂载时的初始化处理,设置数据源等。
子视图(Subview)
FormSubviewFieldWidget
FormSubviewFieldWidget
继承自 FormComplexFieldWidget
,是用于在表单中嵌入子视图(如其他表单或表格)的基类。这个基类为子视图提供了一系列标准的属性和方法,以支持复杂的嵌套数据结构和交互。
主要属性
- metadataSubviewWidget:
MetadataViewWidget
类型,用于管理和渲染子视图的元数据。 - runtimeSubviewContext:
RuntimeContext
类型,表示子视图的运行时上下文,用于处理子视图中的数据和状态。 - defaultSubviewType: 默认的子视图类型,可以是表单 (
ViewType.Form
) 或表格 (ViewType.Table
)。 - currentViewDsl: 当前子视图的 DSL 定义,用于描述子视图的布局和行为。
响应式属性
- subviewType: 子视图的类型,根据
currentViewDsl
中的定义或者defaultSubviewType
来确定。 - subviewModel: 子视图关联的模型编码,通常是引用的模型或者字段指定的模型。
- subviewModelName: 子视图关联的模型名称。
- subviewModule: 子视图所属的模块。
- subviewModuleName: 子视图所属模块的名称。
- formData: 表示父表单的数据,通常用于子视图中数据的初始化和关联。
方法
- initialize(props: Props): 初始化组件,创建子视图的元数据小部件,并初始化子视图。
- createMetadataSubviewWidget(props: Props): 根据提供的属性创建子视图的元数据小部件。
- initSubview(props: Props): 初始化子视图的相关属性和上下文。
- generatorRuntimeSubview(props: Props): 生成子视图的运行时视图定义。
- getViewLayout(props: Props): 获取子视图的布局定义。
- getViewDsl(props: Props): 获取子视图的 DSL 定义。
- getViewTemplate(props: Props): 获取子视图的模板定义。
- initSubviewAfterProperties(props: Props): 在子视图的属性初始化之后执行的逻辑。
- findViewDslNode(dsl: DslDefinition): 在给定的 DSL 定义中查找视图节点。
- initRuntimeContext(metadataSubviewWidget: MetadataViewWidget, view: RuntimeView): 使用给定的元数据小部件和视图定义初始化运行时上下文。
FormSubviewListFieldWidget
FormSubviewListFieldWidget
专门用于表单中一对多或多对多关系字段的子视图列表显示,继承自 FormSubviewFieldWidget
。
特定属性
- defaultSubviewType: 默认设置为
ViewType.Table
,表示子视图以表格形式展示。 - subviewSubmitCache:
SubmitCacheManager
类型,用于管理子视图中数据的提交缓存。
方法
- initialize(props: Props): 初始化组件,设置组件类型为内联表格,并进行必要的配置。
- initSubviewAfterProperties(props: Props): 在子视图属性初始化之后,配置提交缓存并扩展运行时上下文数据。
- refreshProcess(condition?: Condition): 子视图的刷新逻辑,通常在数据变更时调用。
- reloadDataSource(records: ActiveRecords | undefined): 重新加载子视图的数据源。
- deleteDataSource(recordIndexes: number[]): 根据记录索引删除数据源中的记录。
- deleteDataSourceByEntity(records: ActiveRecords, predict?: DeleteActiveRecordsByEntityPredict): 根据给定的实体记录删除数据源中的记录。
- flushDataSource(): 提交数据源中的变更,并刷新显示的数据。
FormSubviewObjectFieldWidget
FormSubviewObjectFieldWidget
用于表单中一对一或多对一关系字段的子视图对象显示,继承自 FormSubviewFieldWidget
。
特定属性
- defaultSubviewType: 默认设置为
ViewType.Form
,表示子视图以表单形式展示。
方法
- initialize(props: Props): 初始化组件,设置组件类型为内联表单,并进行必要的配置。
- refreshProcess(condition?: Condition): 子视图的刷新逻辑,通常在数据变更时调用。
- reloadDataSource(records: ActiveRecords | undefined): 重新加载子视图的数据源,通常在数据变更时调用。
- onValueChange(): 监听
value
属性的变化,并在变化时通知父视图。