diff --git a/web/src/components/layout/NoticeModal.js b/web/src/components/layout/NoticeModal.js
index 456c012f..55126ad8 100644
--- a/web/src/components/layout/NoticeModal.js
+++ b/web/src/components/layout/NoticeModal.js
@@ -113,25 +113,31 @@ const NoticeModal = ({ visible, onClose, isMobile, defaultTab = 'inApp', unreadK
return (
- {processedAnnouncements.map((item, idx) => (
-
-
- {item.isUnread ? (
-
- {item.content}
-
- ) : (
- item.content
- )}
- {item.extra &&
{item.extra}
}
-
-
- ))}
+ {processedAnnouncements.map((item, idx) => {
+ const htmlContent = marked.parse(item.content || '');
+ const htmlExtra = item.extra ? marked.parse(item.extra) : '';
+ return (
+
+
+
+ {item.extra && (
+
+ )}
+
+
+ );
+ })}
);
diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json
index 4b5dfc65..6b982b51 100644
--- a/web/src/i18n/locales/en.json
+++ b/web/src/i18n/locales/en.json
@@ -1615,6 +1615,7 @@
"编辑公告": "Edit Notice",
"公告内容": "Notice Content",
"请输入公告内容": "Please enter the notice content",
+ "请输入公告内容(支持 Markdown/HTML)": "Please enter the notice content (supports Markdown/HTML)",
"发布日期": "Publish Date",
"请选择发布日期": "Please select the publish date",
"发布时间": "Publish Time",
@@ -1630,6 +1631,7 @@
"请输入问题标题": "Please enter the question title",
"回答内容": "Answer Content",
"请输入回答内容": "Please enter the answer content",
+ "请输入回答内容(支持 Markdown/HTML)": "Please enter the answer content (supports Markdown/HTML)",
"确定要删除此问答吗?": "Are you sure you want to delete this FAQ?",
"系统公告管理,可以发布系统通知和重要消息(最多100个,前端显示最新20条)": "System notice management, you can publish system notices and important messages (maximum 100, display latest 20 on the front end)",
"常见问答管理,为用户提供常见问题的答案(最多50个,前端显示最新20条)": "FAQ management, providing answers to common questions for users (maximum 50, display latest 20 on the front end)",
diff --git a/web/src/pages/Detail/index.js b/web/src/pages/Detail/index.js
index 0fd18d16..e78f0dc7 100644
--- a/web/src/pages/Detail/index.js
+++ b/web/src/pages/Detail/index.js
@@ -2,6 +2,7 @@ import React, { useContext, useEffect, useRef, useState, useMemo, useCallback }
import { initVChartSemiTheme } from '@visactor/vchart-semi-theme';
import { useNavigate } from 'react-router-dom';
import { Wallet, Activity, Zap, Gauge, PieChart, Server, Bell, HelpCircle } from 'lucide-react';
+import { marked } from 'marked';
import {
Card,
@@ -1267,10 +1268,27 @@ const Detail = (props) => {
onScroll={() => handleCardScroll(announcementScrollRef, setShowAnnouncementScrollHint)}
>
{announcementData.length > 0 ? (
-
+
+ {announcementData.map((item, idx) => (
+
+
+
+ {item.extra && (
+
+ )}
+
+
+ ))}
+
) : (
{
header={item.question}
itemKey={index.toString()}
>
- {item.answer}
+
))}
diff --git a/web/src/pages/Setting/Dashboard/SettingsAnnouncements.js b/web/src/pages/Setting/Dashboard/SettingsAnnouncements.js
index 4bcc4e95..427edcc9 100644
--- a/web/src/pages/Setting/Dashboard/SettingsAnnouncements.js
+++ b/web/src/pages/Setting/Dashboard/SettingsAnnouncements.js
@@ -494,7 +494,7 @@ const SettingsAnnouncements = ({ options, refresh }) => {
{
>