跳至主要內容

基类

Mr.Hope大约 9 分钟

基类

表单(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 属性的变化,并在变化时通知父视图。