From 9c901447af84f6c4b0d1b2c9f932d60551e88120 Mon Sep 17 00:00:00 2001 From: admin <1297598740@qq.com> Date: Thu, 29 Jan 2026 13:54:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=85=A8=E5=91=98?= =?UTF-8?q?=E5=85=AC=E5=91=8A=E5=8F=91=E5=B8=83=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=92=B0=E5=86=99=E5=92=8C=E5=B9=BF=E6=92=AD?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=80=9A=E7=9F=A5=E5=B9=B6=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Notifications/NotificationPublish.tsx | 109 +++++++++++++----- 1 file changed, 78 insertions(+), 31 deletions(-) diff --git a/src/pages/Notifications/NotificationPublish.tsx b/src/pages/Notifications/NotificationPublish.tsx index aa8852a..861d27e 100644 --- a/src/pages/Notifications/NotificationPublish.tsx +++ b/src/pages/Notifications/NotificationPublish.tsx @@ -1,15 +1,44 @@ -import React, { useState } from 'react'; -import { Form, Input, Select, Button, message, Card, Alert, Row, Col } from 'antd'; +import React, { useState, useEffect } from 'react'; +import { Form, Input, Select, Button, message, Card, Alert, Row, Col, Empty, Spin } from 'antd'; import { Icon } from '@iconify/react'; import request from '../../utils/request'; const { TextArea } = Input; const { Option } = Select; +interface Announcement { + id: number; + title: string; + content: string; + type: string; + sent_count: number; + created_at: string; +} + const NotificationPublish: React.FC = () => { const [loading, setLoading] = useState(false); + const [historyLoading, setHistoryLoading] = useState(false); + const [history, setHistory] = useState([]); const [form] = Form.useForm(); + const fetchHistory = async () => { + setHistoryLoading(true); + try { + const res: any = await request.get('/notifications/announcements?limit=5'); + if (res && res.announcements) { + setHistory(res.announcements); + } + } catch (error) { + console.error('获取历史记录失败:', error); + } finally { + setHistoryLoading(false); + } + }; + + useEffect(() => { + fetchHistory(); + }, []); + const onFinish = async (values: any) => { setLoading(true); try { @@ -19,6 +48,7 @@ const NotificationPublish: React.FC = () => { style: { marginTop: '10vh' } }); form.resetFields(); + fetchHistory(); // Refresh history after publish } catch (error) { console.error('发布失败:', error); } finally { @@ -26,6 +56,16 @@ const NotificationPublish: React.FC = () => { } }; + const formatTime = (timeStr: string) => { + const date = new Date(timeStr); + return date.toLocaleString('zh-CN', { + month: 'numeric', + day: 'numeric', + hour: '2-digit', + minute: '2-digit' + }); + }; + return (
@@ -113,7 +153,7 @@ const NotificationPublish: React.FC = () => { } @@ -127,36 +167,43 @@ const NotificationPublish: React.FC = () => { 最近发布历史
} + extra={} variant="borderless" > - {[ - { title: '系统性能优化完成', time: '1小时前', type: 'info' }, - { title: '夜间数据库升级', time: '昨天', type: 'alert' }, - { title: '欢迎新用户加入', time: '3天前', type: 'system' } - ].map((item, idx) => ( -
-
-
{item.title}
-
{item.time}
-
-
- {item.type.toUpperCase()} -
-
- ))} - + + {history.length === 0 ? ( + + ) : ( + history.map((item, idx) => ( +
+
+
+ {item.title} +
+
+ {formatTime(item.created_at)} · 推送 {item.sent_count} 人 +
+
+
+ {item.type.toUpperCase()} +
+
+ )) + )} +