重复日程:新增结束条件(到某天/共几次);修复仅这一次失效与标题被清空
新增能力: - 新建重复日程时可设"结束条件":永不结束 / 重复到某天 / 共重复几次 (之前只能选重复频率,无法指定次数或截止日期) - 编辑既有重复日程会**回显**服务器上已有的 COUNT / UNTIL 并可修改 修复三个真 bug: 1. ⭐ "仅这一次"失效(实际改了全部):重复日程在列表里展开后,所有次共用 主事件的 id,编辑页只拿到 id、拿不到"用户点的是哪一次" → occStartMs 被当成 主事件的第一次发生 → EXDATE 排除的是第一次、覆盖行写在第一次上, 用户当次既没排掉、系列属性又被动过,看起来就是"全改了"。 修法:Index 打开编辑页时用 pendingOccurrenceTs 传入被点那次的 startTime; seriesBoundaries 再把该时刻"吸附"到真实发生(容差 12h),确保 EXDATE 能匹配。 2. ⭐ 已有标题被删空:original 快照漏拷贝 title/description/location/reminders, restoreRowById 于是把主事件行还原成空标题。 修法:快照补全全部字段。 3. ⭐ setExdate/setRrule 被 restoreRowById 覆盖(顺序错误): 先写 EXDATE 再还原 → 快照里的旧 exdate 又把排除覆盖掉。 修法:一律"先还原主事件行、再写 EXDATE/截断 RRULE"。 其它: - 编辑页现在显示"被点那一次"的实际时间(此前显示的是主事件第一次的时间) - 'all' 分支改为把改动写到主事件行,整系列一起改 - 复用唯一底部弹层(新增 sheetMode='repeatEnd' 选截止日期),仍保持只挂 1 个 bindSheet
This commit is contained in:
@@ -1030,9 +1030,13 @@ struct Index {
|
||||
.borderRadius(12)
|
||||
.onClick(() => {
|
||||
const id: number = this.detailEvent !== null ? this.detailEvent.id : 0;
|
||||
// ⭐ 把"用户点的是哪一次发生"一起带过去:重复日程展开后所有次共用主事件的 id,
|
||||
// 不带发生时刻的话,编辑页无法知道用户点的是哪一次 → "仅这一次"会算错。
|
||||
const occ: number = this.detailEvent !== null ? this.detailEvent.startTime : 0;
|
||||
this.detailShow = false;
|
||||
if (id > 0) {
|
||||
AppStorage.setOrCreate<number>('pendingEventId', id);
|
||||
AppStorage.setOrCreate<number>('pendingOccurrenceTs', occ);
|
||||
router.pushUrl({ url: 'pages/EventEditPage' });
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user