Back to Nocobase

日历表

docs/docs/cn/data-sources/calendar/calendar-collection.md

2.1.325.8 KB
Original Source

日历表

介绍

日历表适合保存带时间范围的数据,比如会议室预约、项目排期、课程安排、值班计划、活动日程。它本质上仍然是一个数据表,不过会预置和日历事件相关的字段,方便后续配合日历区块使用。

日历表只能通过主数据库页面创建。外部数据库、REST API 数据源和外部 NocoBase 数据源不支持创建日历表。

适用场景

日历表适合这些业务场景:

  • 会议室预约、车辆预约、设备预约
  • 项目排期、任务计划、里程碑安排
  • 课程表、培训计划、活动日程
  • 值班计划、排班记录、巡检计划
  • 需要按日、周、月查看的事件记录

创建配置

在主数据库中点击「Create collection」,选择「Calendar collection」可以创建日历表。

日历表的创建配置与普通表基本一致。Preset fields 用来控制常用系统字段,日历表还会预置用于保存重复事件的字段。

配置说明
Collection display name数据表在界面中显示的名称,比如「会议室预约」「课程安排」「值班计划」。
Collection name数据表的标识名称,用于 API、关系字段、权限、工作流等内部引用。
Inherits选择要继承的父表。只有主数据库是 PostgreSQL 时可见。
Categories数据表分类。分类只影响数据表管理界面的组织方式,不改变数据表结构。
Description数据表说明。可以写这个日历表保存什么事件、由谁维护、和哪些业务流程有关。
Preset fields预设字段。创建日历表时建议保留系统字段和日历表内置字段。

内置字段

日历表创建后通常包含这些内置字段。cronexclude 用来保存重复事件规则和排除日期。

字段字段名说明
IDid默认主键字段,用于唯一标识一条事件记录。
创建时间createdAt自动记录事件记录的创建时间。
创建人createdBy自动记录创建事件记录的用户。
更新时间updatedAt自动记录事件记录最后一次更新的时间。
更新人updatedBy自动记录最后一次更新事件记录的用户。
排序sort保存事件记录的排序值,用于支持拖拽排序等排序能力。
Repeatscron保存重复事件规则,比如每天、每周、每月或每年重复。
Excludeexclude保存重复事件中被排除的日期,通常由日历交互自动维护。
空间space启用多空间插件后可用,用于按空间隔离数据。没有启用多空间时不会出现。

日历区块使用日历表时,还需要指定用于展示事件的业务字段:

配置说明
标题字段确定事件在日历中的标题,比如「会议主题」「课程名称」。
开始日期字段确定事件开始时间。通常使用日期时间字段。
结束日期字段确定事件结束时间。通常使用日期时间字段。

:::warning 注意

cronexclude 通常由日历能力维护,不建议当作普通业务字段直接编辑。标题、开始日期和结束日期字段需要根据业务自己创建和配置,否则日历区块无法正确展示事件。

:::

主键字段

日历表和普通表一样需要主键字段。创建表时建议保留 ID 预设字段,默认主键类型是 Snowflake ID (53-bit)

如果日历表没有主键,需要在编辑数据表时设置「Record unique key」,否则日历区块可能无法正确打开、编辑或定位事件记录。

编辑配置

在数据表列表中,点击日历表右侧的「Edit」,可以修改数据表显示名称、分类、说明、简单分页模式和「Record unique key」等配置。

日历表的 cronexclude 等内置字段通常用于日历能力,不建议改成其他业务含义。如果需要扩展事件信息,可以新增普通业务字段,比如地点、参与人、会议室、状态等。

删除数据表

在数据表列表中,点击日历表右侧的「Delete」,可以删除日历表。

删除日历表会删除事件记录、日历内置字段数据和相关 Collection 元数据。删除前先确认日历区块、表格区块、权限、工作流和 API 是否仍然依赖这张表。

:::danger 警告

日历表通常保存排期、预约和值班等时间数据。删除后,历史事件和重复规则都会丢失,操作前先确认数据已经备份或不再需要。

:::

页面配置使用

日历表可以使用普通表的多数数据区块做增删改查。另外,它通常会配合日历区块使用:

区块用途
日历区块按日、周、月等视图展示事件记录,并在日历中创建、查看和编辑事件。
表格区块按列表方式查看、筛选和批量维护事件记录。
表单区块新增或编辑单条事件记录。
详情区块查看单条事件的详细信息。

相关链接