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 }}
+