- 照护提醒页:status 过滤(服务端白名单视图)、due_at ASC、逾期红标 双通道标识,四态齐备;创建表单(四类)+ 完成(completedAt 必带、 支持补记)/ 忽略(禁带 completedAt)流转,42202/40902 兜底重拉 - 档案页:「健康提醒」卡改真实待办数据驱动(取代 demo 硬编码文案, 最近到期一条 + 逾期警示形态),照护提醒导航入口带待办数副行 - 疫苗列表(25 号报告遗留①②):scheduled 行「标记完成/取消登记」 PATCH 流转;完成对话框补录厂商/批号(契约可选字段); 42201/40902/40402 兜底 - 埋点:create 三事件 + viewed(recordType=reminder)挂通; edit_succeeded/failed 挂 vaccine 流转(failureReason 含 conflict); 提醒完成/忽略按 06 §7 缺口 3 既定取舍不埋 - 测试 250 → 272 全绿(+22,较基线 +48);analyze 0 问题;format 无 diff Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -134,3 +134,57 @@ String tzOffsetQueryValue(Duration offset) {
|
||||
final m = (abs.inMinutes % 60).toString().padLeft(2, '0');
|
||||
return '$sign$h:$m';
|
||||
}
|
||||
|
||||
// ---- 照护提醒(T2-14)----
|
||||
|
||||
/// 四类提醒中文文案。
|
||||
String careReminderTypeLabel(CareReminderType type) => switch (type) {
|
||||
CareReminderType.deworming => '驱虫',
|
||||
CareReminderType.checkup => '体检',
|
||||
CareReminderType.medication => '用药',
|
||||
CareReminderType.other => '其他',
|
||||
};
|
||||
|
||||
/// 提醒类型 → 视觉记录类型(RecordTypeDot 复用):驱虫沿用驱虫族,
|
||||
/// 体检/用药归就医族,其他归兜底族;类型文字由标签承载(双通道)。
|
||||
RecordType recordTypeForReminder(CareReminderType type) => switch (type) {
|
||||
CareReminderType.deworming => RecordType.deworming,
|
||||
CareReminderType.checkup => RecordType.medical,
|
||||
CareReminderType.medication => RecordType.medical,
|
||||
CareReminderType.other => RecordType.other,
|
||||
};
|
||||
|
||||
String careReminderStatusLabel(CareReminderStatus status) => switch (status) {
|
||||
CareReminderStatus.pending => '待办',
|
||||
CareReminderStatus.completed => '已完成',
|
||||
CareReminderStatus.dismissed => '已忽略',
|
||||
};
|
||||
|
||||
/// 逾期判定:待办且 dueAt 已过(工单硬项:逾期视觉标识)。
|
||||
bool isReminderOverdue(CareReminder reminder, DateTime now) =>
|
||||
reminder.status == CareReminderStatus.pending &&
|
||||
reminder.dueAt.isBefore(now);
|
||||
|
||||
/// 提醒状态标签文案(逾期的待办以「已逾期」显性标识)。
|
||||
String reminderStatusTag(CareReminder reminder, DateTime now) =>
|
||||
isReminderOverdue(reminder, now)
|
||||
? '已逾期'
|
||||
: careReminderStatusLabel(reminder.status);
|
||||
|
||||
/// 提醒状态标签基色(TagPill 淡染底;文字深变体由 TagPill 内置映射)。
|
||||
Color reminderStatusColor(CareReminder reminder, DateTime now) =>
|
||||
switch (reminder.status) {
|
||||
CareReminderStatus.pending =>
|
||||
isReminderOverdue(reminder, now) ? AppColors.error : AppColors.accent,
|
||||
CareReminderStatus.completed => AppColors.success,
|
||||
CareReminderStatus.dismissed => AppColors.muted,
|
||||
};
|
||||
|
||||
/// 提醒条目副行:按状态给时间语义(到期 / 完成于 / 已忽略)。
|
||||
String reminderDateLine(CareReminder reminder) => switch (reminder.status) {
|
||||
CareReminderStatus.pending => '到期 ${formatOccurredAt(reminder.dueAt)}',
|
||||
CareReminderStatus.completed =>
|
||||
'完成于 ${reminder.completedAt == null ? '—' : formatOccurredAt(reminder.completedAt!)}',
|
||||
CareReminderStatus.dismissed =>
|
||||
'已忽略 · 原到期 ${formatOccurredAt(reminder.dueAt)}',
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user