From 8bb01924cd07df84e3b0da2a7aacedff6cf80f27 Mon Sep 17 00:00:00 2001 From: Ap_Tx <3045929398@qq.com> Date: Fri, 23 Oct 2026 21:42:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=AC=E5=91=8A=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E7=9A=AE=E8=82=A4=E7=AB=99=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E9=85=8D=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 公告数据保留 imageName,登录后按公告附件接口拉取图片并以 blob URL 展示,列表显示缩略图、详情显示大图,组件卸载时回收。 --- .../src/components/ui/RemoteAnnouncements.vue | 14 ++++++++++++++ .../src/helpers/remote-announcements.ts | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/apps/app-frontend/src/components/ui/RemoteAnnouncements.vue b/apps/app-frontend/src/components/ui/RemoteAnnouncements.vue index af06d37..a743cc7 100644 --- a/apps/app-frontend/src/components/ui/RemoteAnnouncements.vue +++ b/apps/app-frontend/src/components/ui/RemoteAnnouncements.vue @@ -236,6 +236,7 @@ async function refresh() { if (parsed && !disposed) { sync(parsed, true) saveCache(parsed) + for (const item of parsed) void loadImage(item, token) } } catch { // Remote fetch failed; previously cached items remain displayed @@ -316,6 +317,7 @@ onUnmounted(() => { if (interval) clearInterval(interval) if (advanceTimer) clearTimeout(advanceTimer) window.removeEventListener(OPEN_REMOTE_ANNOUNCEMENT_CENTER_EVENT, handleOpenCenter) + revokeImages() }) @@ -378,6 +380,12 @@ onUnmounted(() => { class="mt-1.5 size-2 shrink-0 rounded-full" :class="read.has(announcementKey(item)) ? 'opacity-0' : 'bg-red'" /> + {{ item.title @@ -393,6 +401,12 @@ onUnmounted(() => {

{{ selected.title }}

+