字段配置详解
本文档详细介绍字段的通用配置属性和高级功能,包括基本属性、验证规则、各类型字段的专属配置以及高级功能。各字段类型的完整配置请参考对应的类型文档。
概述
字段配置(详见 字段配置总览)分为三个层次:
- 基本属性:名称、编码、类型、描述、默认值;
- 验证属性:必填、长度限制、范围限制、正则校验、查重;
- 展示属性:列表显示、表单显示、只读、隐藏、占位符与各类渲染方式。
其中「名称 / 编码 / 类型 / 描述」等基本属性在字段配置菜单中设置;「必填 / 只读 / 隐藏 / 占位符 / 默认值」等展示与交互属性在表单配置与视图列表配置中按场景设置。
基本属性配置
通用基本属性
| 配置项 | 说明 | 配置建议 |
|---|---|---|
| 名称 | 字段显示名称 | 使用业务术语,简洁明了 |
| 编码 | 字段唯一标识 | 使用英文小写字母和下划线命名 |
| 类型 | 字段数据类型 | 根据业务需求选择合适类型 |
| 描述 | 字段说明 | 详细描述字段用途 |
| 默认值 | 新建记录时的默认值 | 可设置动态默认值 |
验证属性配置
通用验证规则
| 属性 | 说明 | 适用类型 |
|---|---|---|
| 是否必填 | 数据验证规则 | 所有类型 |
| 最小长度 | 文本最小长度限制 | 文本类型 |
| 最大长度 | 文本最大长度限制 | 文本类型 |
| 最小值 | 数字最小值 | 数字、货币类型 |
| 最大值 | 数字最大值 | 数字、货币类型 |
| 精度 | 小数位数(0-6位) | 数字、货币类型 |
| 正则验证 | 自定义验证规则 | 文本类型 |
展示属性配置
通用展示属性
| 属性 | 说明 |
|---|---|
| 列表显示 | 是否在列表视图列表中展示该字段 |
| 表单显示 | 是否在表单中展示该字段 |
| 只读模式 | 字段值不可编辑 |
| 隐藏字段 | 完全隐藏,通常用于存储计算值 |
| 占位符 | 输入提示,引导用户正确输入 |
各类型字段专属配置
每种字段类型都有独立的属性与配置方法,详见以下类型文档:
- 文本字段(
Text) - 日期时间字段(
DateTime) - 数字字段(
Number) - 货币字段(
Decimal) - 是否字段(
Boolean) - 文件上传字段(
FileUpload) - 人员选择字段(
UserSelect) - 组织选择字段(
OrganizationSelect) - 数据源字段(
DataSource)
下面汇总各类字段最常用的专属配置。
文本类型 (Text)
文本类型支持多种渲染形式:
渲染类型选项
| 渲染类型 | 说明 | 适用场景 |
|---|---|---|
| 单行文本 | 标准文本输入框 | 短文本输入 |
| 密码输入框 | 内容隐藏显示 | 密码等敏感信息 |
| 文本区 | 多行文本输入 | 长文本内容 |
| Markdown | Markdown 格式编辑器 | 富格式文档 |
| 富文本 | 富文本编辑器 | 复杂排版需求 |
文本专属配置
| 配置项 | 说明 | 范围 |
|---|---|---|
| 最小长度 | 文本最小字符数 | 0-100000 |
| 最大长度 | 文本最大字符数 | 0-100000 |
日期时间类型 (DateTime)
支持三种渲染模式,并可自定义日期和时间的显示格式:
渲染模式
| 渲染模式 | 说明 | 存储方式 | 格式配置 |
|---|---|---|---|
| 日期时间 | 包含日期和时间选择 | 完整的日期时间值 | 日期格式 + 时间格式 |
| 日期 | 仅日期选择 | 日期部分,时间归零 | 仅日期格式 |
| 时间 | 仅时间选择 | 基于 2000-01-01 的日期时间值 | 仅时间格式(日期格式不可见) |
为什么使用 2000-01-01 作为基准日期?
时间类型字段(如"上班时间"、"会议时长")本质上不需要日期部分。为了保证:
- 搜索一致性:equal/ne 和 range 搜索都能正确工作
- 数据准确性:避免因随机日期导致的时间比较错误
- 跨时区兼容:统一基准日期确保时区转换的一致性
系统采用以下策略:
- 前端:用户选择时间(如 09:30),前端自动拼接基准日期
2000-01-01 09:30:00 - 后端:存储和查询时使用 UTC 格式的 ISO 字符串
- 搜索:所有时间比较都在同一基准日期上进行,确保结果准确
示例:
- 用户输入:
09:30 - 前端处理:
2000-01-01 09:30:00 - 后端存储:
2000-01-01T01:30:00.000Z(UTC) - 搜索比较:所有时间值都转换为
2000-01-01基准,然后进行比较
🆕 日期/时间格式自定义配置
当字段类型为日期时间时,可在字段编辑页面配置以下两项格式:
- 日期格式(DateTimeFormat):控制日期部分的显示方式
- 时间格式(TimeFormat):控制时间部分的显示方式
可见性规则:
| 渲染模式 | 日期格式配置 | 时间格式配置 |
|---|---|---|
| 日期时间 | ✓ 可见 | ✓ 可见 |
| 日期 | ✓ 可见 | ✗ 不可见 |
| 时间 | ✗ 不可见 | ✓ 可见 |
配置项说明
| 配置项 | 默认值 | 说明 | 可见条件 |
|---|---|---|---|
| 日期格式 | YYYY-MM-DD | 日期显示格式 | 渲染模式为"日期时间"或"日期" |
| 时间格式 | HH:mm | 时间显示格式 | 渲染模式为"日期时间"或"时间" |
常用格式示例
| 配置项 | 格式值 | 显示效果示例 | 适用场景 |
|---|---|---|---|
| 日期格式 | YYYY-MM-DD | 2026-06-14 | 标准日期(默认) |
YYYY/MM/DD | 2026/06/14 | 斜杠分隔 | |
DD-MM-YYYY | 14-06-2026 | 日-月-年顺序 | |
YYYY年MM月DD日 | 2026年06月14日 | 中文风格 | |
MM/DD/YYYY | 06/14/2026 | 美式日期 | |
MMM D, YYYY | Jun 14, 2026 | 英文缩写月份 | |
MMMM D, YYYY | June 14, 2026 | 英文完整月份 | |
| 时间格式 | HH:mm | 12:56 | 时:分(默认) |
HH:mm:ss | 12:56:31 | 时:分:秒 | |
H:mm | 12:56 | 非零填充小时 | |
h:mm A | 12:56 PM | 12小时制+AM/PM | |
hh:mm:ss A | 12:56:31 PM | 12小时制完整+AM/PM |
精度自动归零
系统会根据时间格式的精度自动处理用户输入的时间值:
| 时间格式精度 | 点击"此刻"/选择后效果 | 示例结果 |
|---|---|---|
仅小时 (H / HH) | 分、秒、毫秒自动归零 | 2026-06-14T12:00:00 |
到分钟 (HH:mm) | 秒、毫秒自动归零 | 2026-06-14T12:56:00 |
到秒 (HH:mm:ss) | 毫秒自动归零 | 2026-06-14T12:56:31 |
这确保了提交到服务端的时间值与用户配置的格式精度一致,避免因浏览器返回高精度时间导致的服务端处理问题。
完整组合示例
| 场景 | 渲染模式 | 日期格式 | 时间格式 | 最终显示效果 |
|---|---|---|---|---|
| 标准日期时间 | 日期时间 | YYYY-MM-DD | HH:mm | 2026-06-14 12:56 |
| 含秒的日期时间 | 日期时间 | YYYY-MM-DD | HH:mm:ss | 2026-06-14 12:56:31 |
| 中文日期+12小时制 | 日期时间 | YYYY年MM月DD日 | h:mm A | 2026年06月14日 12:56 PM |
| 英文风格 | 日期时间 | MMMM D, YYYY | h:mm:ss A | June 14, 2026 12:56:31 PM |
| 仅日期(Date 模式) | 日期 | YYYY-MM-DD | 不适用 | 2026-06-14 |
| 上班时间(Time 模式) | 时间 | 不适用 | HH:mm | 09:00 |
| 会议时长(含秒) | 时间 | 不适用 | HH:mm:ss | 01:30:00 |
Time 类型使用场景
适用场景:
- 固定时间点:上班打卡时间、会议开始时间、营业时间等
- 时间段记录:工作时长、会议时长、运动时长等
- 时间表管理:课程表、班次表、时刻表等
不适用场景:
- ❌ 需要记录具体日期的场景(如合同到期日)→ 使用 Date 模式
- ❌ 需要完整时间戳的场景(如创建时间、修改时间)→ 使用 DateTime 模式
典型应用示例:
| 业务场景 | 字段名称 | 渲染模式 | 时间格式 | 示例值 |
|---|---|---|---|---|
| 考勤打卡 | 上班时间 | 时间 | HH:mm | 09:00 |
| 会议安排 | 开始时间 | 时间 | HH:mm | 14:30 |
| 课程表 | 第一节课 | 时间 | HH:mm | 08:00 |
| 运动记录 | 运动时长 | 时间 | HH:mm:ss | 01:30:00 |
支持的格式化占位符
系统底层使用 day.js 进行日期格式化,以下占位符均可在配置中使用:
📖 完整文档参考:day.js 格式化占位符列表
日期占位符
| 占位符 | 输出示例 | 说明 |
|---|---|---|
| YY | 18 | 两位数的年份 |
| YYYY | 2018 | 四位数的年份 |
| M | 1-12 | 月份,从1开始 |
| MM | 01-12 | 月份,两位数 |
| MMM | Jan-Dec | 缩写的月份名称 |
| MMMM | January-December | 完整的月份名称 |
| D | 1-31 | 月份里的一天 |
| DD | 01-31 | 月份里的一天,两位数 |
| d | 0-6 | 一周中的一天,星期天是0 |
| dd | Su-Sa | 最简写的星期几 |
| ddd | Sun-Sat | 简写的星期几 |
| dddd | Sunday-Saturday | 星期几 |
时间占位符
| 占位符 | 输出示例 | 说明 |
|---|---|---|
| H | 0-23 | 小时(24小时制) |
| HH | 00-23 | 小时,两位数(24小时制) |
| h | 1-12 | 小时(12小时制) |
| hh | 01-12 | 小时,两位数(12小时制) |
| m | 0-59 | 分钟 |
| mm | 00-59 | 分钟,两位数 |
| s | 0-59 | 秒 |
| ss | 00-59 | 秒,两位数 |
| SSS | 000-999 | 毫秒,三位数 |
| Z | +05:00 | UTC偏移量,±HH:mm |
| ZZ | +0500 | UTC偏移量,±HHmm |
| A | AM PM | 上午/下午标识(大写) |
| a | am pm | 上午/下午标识(小写) |
本地化格式
需要启用 LocalizedFormat 插件后可用的本地化格式:
| 占位符 | 示例输出 | 说明 |
|---|---|---|
| LT | 8:02 PM | 时:分 AM/PM |
| LTS | 8:02:18 PM | 时:分:秒 AM/PM |
| L | 08/16/2018 | 月/日/年 |
| LL | August 16, 2018 | 月 日, 年 |
| LLL | August 16, 2018 8:02 PM | 月 日, 年 时:分 AM/PM |
| LLLL | Thursday, August 16, 2018 8:02 PM | 星期几, 月 日, 年 时:分 AM/PM |
| l | 8/16/2018 | 月/日/年(简化) |
| ll | Aug 16, 2018 | 月 日, 年(简化) |
| lll | Aug 16, 2018 8:02 PM | 月 日, 年 时:分 AM/PM(简化) |
| llll | Thu, Aug 16, 2018 8:02 PM | 星期几, 月 日, 年 时:分 AM/PM(简化) |
是否类型 (Boolean)
Boolean 类型字段支持自定义显示文案:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 是值显示文案 | true 时显示的文本 | "是" |
| 否值显示文案 | false 时显示的文本 | "否" |
| null值显示文案 | null 时显示的文本 | - |
适用场景:
- 状态标记
- 开关控制
- 二元选择
数字类型 (Number)
数字类型支持多种渲染形式:
渲染类型选项
| 渲染类型 | 说明 | 适用场景 |
|---|---|---|
| 数字输入 | 标准数字输入框 | 常规数值输入 |
| 评分 | 星级评分组件 | 评分、满意度等 |
| 滑动条 | 通过滑动条选择数值 | 范围选择、音量调节等 |
| 进度条 | 以进度条展示数值(只读) | 进度展示、完成率等 |
数字专属配置
| 配置项 | 说明 | 适用渲染类型 |
|---|---|---|
| 精度 | 小数位数(0-6) | 数字输入 |
| 最小值 | 允许的最小数值 | 数字输入、滑动条 |
| 最大值 | 允许的最大数值 | 数字输入、滑动条 |
| 滑动步长 | 滑动条每次移动的步长 | 滑动条模式 |
货币类型 (Currency)
货币类型是高精度数字类型,适用于金额等需要精确计算的场景。
特点:
- 更高的精度保证
- 避免浮点数误差
- 支持最小值/最大值/精度配置
适用场景:金额、价格、汇率等。
文件上传类型 (FileUpload)
用于文件附件或图片上传,支持以下配置:
| 配置项 | 说明 | 选项范围 |
|---|---|---|
| 文件数量限制 | 单次可上传的文件数 | 1-10 个 |
| 单文件大小限制 | 每个文件的大小上限 | 1-50 MB |
| 文件格式限制 | 允许的文件格式 | 采用 HTML input accept 标准 |
文件格式限制示例:
.pdf,.doc,.docx,.xls,.xlsx
image/*,video/*
.mp3,.mp4,.avi
人员选择类型 (UserSelect)
员工选择控件,支持以下特性:
基础配置
| 配置项 | 说明 |
|---|---|
| 选择模式 | 单选或多选 |
| 数据源 | 选择数据来源(系统内置或自定义数据源) |
| Lookup 关联 | 关联其他对象的数据 |
高级功能
| 功能 | 说明 |
|---|---|
| 标签展示 | 在列表页以标签形式展示选中的人员 |
| 多种渲染模式 | 下拉选择器、树形选择器、单选按钮、复选框 |
| Lookup 功能 | 自动关联并展示其他对象字段 |
组织选择类型 (OrganizationSelect)
组织架构选择控件,支持以下特性:
基础配置
| 配置项 | 说明 |
|---|---|
| 选择模式 | 单选或多选 |
| 数据源 | 选择数据来源 |
| 渲染模式 | 控制控件的具体展现形式 ⭐ |
渲染模式选项
| 渲染模式 | 说明 | 适用场景 |
|---|---|---|
| 下拉选择器 | 标准下拉选择 | 选项较多时使用 |
| 树形选择器 | 树形结构展示 | 有层级关系的数据 |
| 单选按钮/复选框 | 以单选按钮或复选框展示 | 选项较少且需要直观对比时 ⭐ |
| 级联选择器 | 级联联动选择 | 多级关联数据 |
表单项布局方式配置(Layout)
当渲染模式设置为单选按钮/复选框时,可以进一步配置表单项的布局方式:
此配置项仅在以下条件同时满足时才会显示:
- 字段类型为:人员选择、组织选择 或 数据源
- 渲染模式为:单选按钮/复选框(RadioCheckbox)
- 场景:编辑表单配置页面
Layout 配置说明
| 布局方式 | 值 | 效果示意 | 适用场景 |
|---|---|---|---|
| 水平布局 | horizontal | ○ 选项A ○ 选项B ○ 选项C | 选项较少(2-4个),希望横向排列节省垂直空间 |
| 垂直布局 | vertical | ○ 选项A○ 选项B○ 选项C | 选项较多(5个以上),或选项文本较长 |
默认值: vertical(垂直布局)
配置位置: 字段管理 → 编辑字段 → Properties.Layout
代码中的枚举定义:
// MetaFieldTypes.ts
export const SelectRenderMode = {
Select: 0, // 下拉选择器
TreeSelect: 1, // 树形选择器
RadioCheckbox: 2, // 单选按钮/复选框 ⭐
Cascader: 3, // 级联选择器
} as const;
前端组件应用:
// DataSourceSelectFormItemCmp.tsx
<ProFormRadio.Group
layout={metaFormItem.Layout || 'vertical'} // 动态读取布局配置
// ... 其他属性
/>
选择建议
| 场景 | 推荐布局 | 原因 |
|---|---|---|
| 性别选择(男/女) | 水平布局 | 只有2个选项,横向排列更紧凑 |
| 优先级(高/中/低) | 水平布局 | 3个选项,文本短,适合一行展示 |
| 星期选择(周一到周日) | 垂直布局 | 7个选项,垂直排列更清晰 |
| 自定义状态(多个长文本选项) | 垂直布局 | 文本较长,垂直排列避免换行 |
其他高级功能
- 标签展示:在列表页以标签形式展示选中的组织
- Lookup 功能:自动关联并展示其他对象字段
- 字段监听:监听其他字段变化,动态刷新数据源
数据源类型 (DataSource)
用于从候选数据列表中选择数据,是最常用的关联类型。除了具备组织选择的全部特性外,还额外支持:
额外特性
| 特性 | 说明 |
|---|---|
| 级联选择器 | 支持多级级联选择(第4种渲染模式) |
| 连接符配置 | 多选时选项间的连接符(仅下拉模式+普通展示生效) |
| 显示模式配置 | 列表页以标签或普通文本展示 |
| 标签颜色规则 | 标签展示时的颜色方案(默认色/随机色) |
渲染模式与 Layout 配置
数据源类型的渲染模式和 Layout 配置与组织选择类型完全相同,请参考上方组织选择类型的相关章节。
高级功能配置
开启 Lookup
适用范围: 数据源类型字段
作用:
- 建立字段与其他实体的关联关系
- 在列表和详情页自动展示关联对象的字段
- 减少额外的数据查询操作
配置方法: 在字段编辑页面开启 "LookupByDataId",然后选择要关联的 MetaObject。
效果:
- 列表页可直接显示关联对象的名称、状态等字段
- 详情页可完整展示关联对象的详细信息
开启索引
作用: 提升条件搜索性能
注意事项:
- 并不是所有字段都需要开启索引
- 开启索引会大大增加数据存储空间
- 建议仅对常用作查询条件的字段开启索引
推荐开启索引的字段:
- 经常作为筛选条件的字段
- 用于排序的字段
- 用于关联查询的外键字段
开启字段监听
适用范围: 仅数据源类型字段
功能说明: 当表单中监听的字段值发生变更时,触发当前字段数据源刷新。
典型应用场景:
- 选择省份后,自动刷新城市列表
- 选择分类后,自动刷新子分类列表
- 选择客户后,自动刷新联系人列表
配置方法:
- 开启 "OpenFieldMonitor"
- 选择要监听的字段(支持多选)
- 配置数据源查询参数的映射关系
校验规则
采用正则表达式对字段输入值进行校验。
特点:
- 内置多种常用的正则表达式
- 支持自定义正则表达式匹配
- 数据级别校验:任何来源的数据(导入、API写入)都将遵循字段校验规则约束
常用内置规则:
| 规则 | 说明 |
|---|---|
| 手机号 | 验证手机号格式 |
| 邮箱 | 验证邮箱格式 |
| 身份证 | 验证身份证号格式 |
| URL | 验证网址格式 |
查重规则
作用: 配置对象数据存储时的查重规则,防止重复数据录入。
查重模式:
| 模式 | 说明 |
|---|---|
| 任意字段重复 | 任一字段重复即判定为重复 |
| 全部字段重复 | 所有字段都重复才判定为重复 |
适用场景:
- 新增数据时查重
- 编辑数据时查重
- 导入数据时查重
字段默认值配置
系统内置了部分特殊功能的默认值,会在执行时动态解析为相应的值:
| 默认值类型 | 说明 | 示例 |
|---|---|---|
| 当前时间 | 自动填充当前时间 | 2026-05-23 14:30:00 |
| 当前用户 | 自动填充当前登录用户 | 张三 |
| 当前组织 | 自动填充当前用户所属组织 | 技术部 |
| 固定值 | 手动输入固定值 | 待处理、草稿等 |
| 自定义脚本 | 通过脚本动态计算 | 根据其他字段计算 |
最佳实践
字段设计原则
- 命名规范
- 名称:使用业务术语,如"客户名称"、"订单金额"
- 编码:使用英文驼峰命名,如
customerName、orderAmount
- 类型选择
- 金额相关 → 货币类型(精度高)
- 数量统计 → 数字类型(范围广)
- 关联实体 → 数据源类型(自动维护关系)
- 状态标记 → 是否类型(简单直观)
- 性能考虑
- 避免在列表视图列表中展示过多字段
- 仅对常用查询字段开启索引
- 复杂计算使用后端处理
- 用户体验
- 设置合理的占位符提示
- 必填字段要有明确标识
- 使用默认值减少用户输入
常见问题
Q: 什么时候应该使用 Lookup? A: 当需要在列表或详情页展示关联对象的字段信息时,应该开启 Lookup。例如:订单列表中需要显示客户姓名。
Q: 如何选择合适的渲染模式? A:
- 选项少于5个 → 单选按钮/复选框 + 水平布局
- 选项有层级关系 → 树形选择器或级联选择器
- 选项很多(>10个)→ 下拉选择器(带搜索)
- 需要多级关联 → 级联选择器
Q: 字段监听和 Lookup 可以同时使用吗? A: 可以。字段监听用于表单内的级联联动,Lookup 用于跨对象的关联展示,两者互不冲突。