✏️ 记录表单(RecordForm)

基于画面布局动态渲染字段输入,支持多种输入组件类型、表单验证和双模式(新建/编辑)操作。

概述

RecordForm 是前台新建和编辑记录的表单组件。它基于画面布局(Page Layout)动态渲染输入字段,支持多种字段输入组件类型,包括文本输入、下拉选择、查找关联等。

🖼️
RecordForm 页面截图 — 待插入
../../images/product/one_platform/record-form-overview.png

核心功能

1. 基于布局的表单渲染

RecordForm 根据 LayoutBuilder 中配置的画面布局生成表单,LayoutItem 映射到 FieldInput 组件。

2. 输入组件类型映射

组件类型说明适用场景
input标准文本输入Text、Number、Email 等
lookupcombobox查找关联 ComboBox外键关联字段
picklist下拉选择Picklist 字段
datepicker日期选择器Date、DateTime 字段
textarea多行文本LongText 字段
checkbox复选框Boolean 字段

3. 字段验证

  • 必填验证:检查 behavior === 'Required' 的字段
  • 错误显示:字段级别的错误信息
  • 表单级通知:通过 Toast 显示成功/失败信息

4. 双模式支持

模式recordId行为
新建空白表单,提交调用 createRecord
编辑加载记录数据,提交调用 updateRecordById

5. 布局切换

如果对象配置了多个布局,RecordForm 支持切换不同的布局。默认选择 is_default 布局或第一个布局。

6. Ref 暴露

RecordForm 通过 forwardRef + useImperativeHandle 暴露 ref.current.submit()ref.current.saving

表单渲染流程

1. 加载对象字段 (fetchObjectFields) ↓ 2. 加载所有布局 (getLayoutsByObject) ↓ 3. 选择默认布局 (is_default || first) ↓ 4. 编辑模式: 加载记录数据 (getRecord) ↓ 5. 加载 Lookup 选项 (getRecordsWithName) ↓ 6. 渲染表单: currentLayout.layoutSections → Section (多个) → Column (多列 Grid) → FieldInput (每个字段)

技术要点

  • 组件模式:forwardRef + useImperativeHandle
  • 状态管理:Redux (objectFieldsSlice)
  • API 接口:getRecord, createRecord, updateRecordById, getLayoutsByObject
  • Lookup 选项加载:自动识别 lookupcombobox 类型字段,加载关联对象记录
  • 组件库:@salesforce/design-system-reactSpinner, Toast, Combobox

截图

🖼️
新建记录表单完整布局 — 待插入
../../images/product/one_platform/record-form-create.png
🖼️
编辑记录表单加载已有数据 — 待插入
../../images/product/one_platform/record-form-edit.png
🖼️
LookupComboBox 输入效果 — 待插入
../../images/product/one_platform/record-form-lookup.png
🖼️
表单验证失败错误提示 — 待插入
../../images/product/one_platform/record-form-validation.png
🖼️
保存成功 Toast 通知 — 待插入
../../images/product/one_platform/record-form-success.png

需要定制化解决方案?

我们的团队可基于现有产品为您量身打造专属 Salesforce 工具链。

联系我们