Salesforce 中的 FullCalendar 与 MultiDatePick:哪个 LWC 日历更可定制?
一个是供您在其上开发的 JavaScript 日历引擎,另一个是供您直接配置的 Salesforce 日历。下面把“可定制日历”常见清单上的每一项并排对比,也包括 FullCalendar 更胜一筹的地方。
搜索“高度可定制的 Salesforce LWC 日历”,总会反复看到两个名字:FullCalendar,一个开源 JavaScript 日历,现在提供官方的 Lightning Web Component 封装;以及 MultiDatePick,一套原生的日历与预订套件。两者都号称可定制,但所说的“可定制”含义截然不同。
FullCalendar 通过代码定制:您传入一个选项对象,编写回调函数,并自己构建 Salesforce 这一侧(加载记录的 Apex、保存逻辑、权限)。MultiDatePick 通过设置定制:三个组件共 130 多项设置,可在设置向导或 Lightning App Builder 中配置,适用于任意标准对象或自定义对象。无需 Apex。
功能清单并排对比
以下是大家在寻找可定制 Salesforce 日历时会列出的功能。“内置”表示管理员点几下即可开启,“自行开发”表示需要开发人员编写代码。
| 功能 | MultiDatePick | FullCalendar LWC |
|---|---|---|
| 视图 | 内置五种:月历、资源时间轴、按小时的周视图、使用率热力图和日程列表,可按放置位置选择 | 月、周、日和列表;时间轴和资源视图需要 Premium 许可证 |
| 拖放 | 在时间轴上拖动预订即可移动,拖动边缘即可调整时长;跨天拖动可选择日期范围 | 拖动、放置和调整大小,回调函数需自行编写 |
| 按 Salesforce 字段着色 | 为任意选项列表的每个值设置颜色,以填充、条形或两者同时显示,并提供筛选标签 | 在 JavaScript 中自行把字段值映射到颜色 |
| 以自定义对象为数据源 | 任何带有日期或日期/时间字段的对象,标准或自定义均可,包括任务和活动 | Apex 和数据层需自行编写 |
| 筛选 | 状态筛选标签、记录筛选条件(例如 OwnerId=ME; Status__c=Confirmed)、资源筛选和隐藏的状态 | 筛选功能需自行开发 |
| 事件详情与记录链接 | 悬停卡片可显示任意字段(包括查找字段),月视图日期上显示名称,日程视图可加列,一键打开记录 | 通过代码完全控制事件渲染 |
| 标签与按钮 | 按钮、标题、保存和记录标签,切换器中显示哪些视图,尺寸从最小到全宽 | 通过代码配置工具栏 |
| 保存记录 | 点击保存即写入您的记录,可按日期、范围、时间块或资源各存一条;也可以把日期交给屏幕 Flow(Screen Flow) | 保存逻辑需自行开发 |
| 预订规则 | 容量、冲突检查、最短提前通知、滚动预订时间窗、缓冲时间、营业时间,以及按资源设置的屏蔽日期 | 需自行开发 |
| 语言与时区 | 九种语言,日期和时间按每个用户的 Salesforce 区域设置和时区显示 | 通过代码提供丰富的区域设置和时区选项 |
| 安全 | 每次查询和保存都以查看页面的用户身份运行,共享规则和字段级安全性照常生效。已通过 Salesforce 安全审查 | 取决于您编写的 Apex |
| 维护 | 由供应商通过软件包发布更新 | 代码需由您自己持续更新 |
FullCalendar 术语在 MultiDatePick 中的对应设置
如果您熟悉 FullCalendar,它的大部分术语都有直接对应。区别在于,每一项都是一个设置,而不是需要您编写的函数:
| FullCalendar | MultiDatePick 设置 |
|---|---|
eventSources | 相关对象和日期字段,再加上 Rollup Field,还能加载最多相隔五层查找的记录 |
| 背景事件 | 屏蔽日期:来自任意对象的停业日、节假日和休假,可整天或部分时段,并显示原因 |
businessHours | 按资源设置营业时间,从资源记录上的两个字段读取 |
eventOverlap、selectOverlap | 冲突行为(阻止、跳过或允许),以及每个资源的容量 |
validRange、selectConstraint | 最早和最晚日期、可提前预订天数、最短提前通知,以及预订之间的缓冲时间 |
select、dateClick | 选择多个日期、拖动选择范围、添加循环模式、选择时间段 |
eventDrop、eventResize | 在时间轴上拖动以移动或调整时长,松开即保存,保存前先检查停业日和冲突 |
eventClick | 打开记录,或进入编辑模式,一次修改多条记录的状态、日期、时间或资源 |
eventContent、弹出框 | 悬停字段、月视图日期上的名称,以及日程视图的列 |
resources | 资源对象:会议室、设备、车辆或人员(任意对象,包括用户) |
slotDuration、slotMinTime | 时间间隔,以及最早和最晚时间 |
locale、timeZone | 自动:按每个用户的 Salesforce 语言、区域设置和时区 |
FullCalendar 更合适的场景
FullCalendar 名不虚传,对某些项目来说它正是合适的工具:
- 您需要一种没有任何产品提供的视图,例如季度规划看板或自定义调度布局。
- 您想逐像素绘制每个事件,在横条里放入自己的 HTML 和图标。
- 您的事件来自 Salesforce 之外,同时来自多个 API。
- 您有开发人员来构建 Apex、保存逻辑、测试和权限,并长期维护。
- 您只需要显示事件,并且想用免费的核心库。
如果您的项目正是这样,FullCalendar 是不错的基础。但如果您需要的是本周就能在 Salesforce 记录上用起来的日历,它离终点还有很长一段路。
MultiDatePick 为您省下的开发工作
FullCalendar 留给您做的工作,MultiDatePick 都已内置:
选择多个日期
零散的日期、日期范围和循环模式,可保存为子记录,也可传给屏幕 Flow。
按容量预订
实时容量徽章、保存时检查冲突,一次预订可包含多个资源。
让人人遵守的规则
提前通知、预订时间窗、缓冲时间、营业时间和停业日,在选择和拖动时都会强制执行。
设置向导
回答三个关于您记录的问题,然后调整每项设置,并实时预览真实的日历。
屏幕 Flow
所选日期、范围和时间会作为 Flow 变量输出,供后续步骤使用。
公开预订页面
支持 guest 用户的 Experience Cloud 站点,使用同一个日历和同一套规则。
不只是预订
MultiDatePick 以预订闻名,但它也是查看已有记录的日历。把它放在客户页面上,显示该客户的任务,包括其联系人和业务机会上的任务。在任意对象上显示业务机会的结束日期、市场活动的活动日或项目里程碑。开启 Show All Records 并设置记录筛选条件(例如 OwnerId=ME),就能得到个人日历;也可以用只读的日程和使用率视图查看排期,而不必编辑。
常见问题
哪个 Salesforce LWC 日历可定制程度最高?
这取决于由谁来定制。FullCalendar 的 LWC 封装给开发人员最大的自由,因为一切都靠代码实现。MultiDatePick 给管理员最多的内置选项:三个组件共 130 多项设置、五种视图和六种保存记录的方式,全部无需 Apex。
FullCalendar 在 Salesforce 中免费吗?
核心库是开源的。时间轴和资源视图属于 Premium 功能,需要商业许可证;而 Salesforce 这一侧(加载记录、保存、安全和测试)都是需要您自己编写和维护的代码。
MultiDatePick 需要 Apex 或开发人员吗?
不需要。您可以在设置向导或 Lightning App Builder 中完成设置,适用于任意标准对象或自定义对象。记录以查看页面的用户身份加载和保存,共享规则和字段级安全性照常生效。
MultiDatePick 能显示任务、活动和业务机会吗?
能。任何带有日期或日期/时间字段的对象都可以,无论标准对象还是自定义对象。Rollup Field 还能加入从更远处指向页面记录的记录,例如客户的联系人上的任务。
MultiDatePick 包含资源时间轴吗?
包含。时间轴、周视图、使用率热力图和日程视图都随日历提供,无需额外许可证。只有一个套餐,包含全部功能。
可定制的日历,无需自行开发。
在在线演示中随意体验,或从 Config Library 中的现成配置开始。
- $20/用户/月,全部功能
- 30 天免费试用,无需信用卡
- 100% Salesforce 原生
- 无需 Apex
- 即将登陆 Salesforce AppExchange