feat: 重新设计公告系统为Header铃铛通知
- 新增 AnnouncementBell 组件,支持 Modal 弹窗和 Markdown 渲染 - 移除 Dashboard 横幅和独立公告页面 - 铃铛位置在 Header 文档按钮左侧,显示未读红点 - 支持点击查看详情、标记已读、全部已读等操作 - 完善国际化,移除所有硬编码中文 - 修复 AnnouncementTargetingEditor watch 循环问题
This commit is contained in:
@@ -261,3 +261,22 @@ export function formatCountdownWithSuffix(targetDate: string | Date | null | und
|
||||
if (!countdown) return null
|
||||
return i18n.global.t('common.time.countdown.withSuffix', { time: countdown })
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化为相对时间 + 具体时间组合
|
||||
* @param date 日期字符串或 Date 对象
|
||||
* @returns 组合时间字符串,如 "5 天前 · 2026-01-27 15:25"
|
||||
*/
|
||||
export function formatRelativeWithDateTime(date: string | Date | null | undefined): string {
|
||||
if (!date) return ''
|
||||
|
||||
const relativeTime = formatRelativeTime(date)
|
||||
const dateTime = formatDateTime(date)
|
||||
|
||||
// 如果是 "从未" 或空字符串,只返回相对时间
|
||||
if (!dateTime || relativeTime === i18n.global.t('common.time.never')) {
|
||||
return relativeTime
|
||||
}
|
||||
|
||||
return `${relativeTime} · ${dateTime}`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user