公告用户前端以及管理员
Change-Id: I3ea4a7f62ae91ef97734d6d673cce28855d10eeb
diff --git a/src/pages/AdminPage.jsx b/src/pages/AdminPage.jsx
new file mode 100644
index 0000000..f9af360
--- /dev/null
+++ b/src/pages/AdminPage.jsx
@@ -0,0 +1,135 @@
+import React, { useState } from 'react';
+import { Layout, Menu, Button } from 'antd';
+import {
+ FileTextOutlined,
+ FlagOutlined,
+ TagsOutlined,
+ DeploymentUnitOutlined,
+ HomeOutlined,
+ FileSearchOutlined
+} from '@ant-design/icons';
+import { useNavigate } from 'react-router-dom';
+import PostAdminPanel from '../components/PostAdminPanel';
+import AdminActivityManager from '../components/AdminActivityManager';
+import ActivityAdminPanel from '../components/ActivityAdminPanel';
+import RequestAdminPanel from '../components/RequestAdminPanel';
+import ComplainAdminPanel from '../components/ComplainAdminPanel';
+import TorrentManagement from '../components/torrentmanage';
+import UserManagement from '../components/UserManagement';
+
+const { Header, Sider, Content, Footer } = Layout;
+
+const AdminPage = () => {
+ const navigate = useNavigate();
+ const [selectedKey, setSelectedKey] = useState('posts');
+
+ const renderContent = () => {
+ switch (selectedKey) {
+ case 'posts':
+ return <PostAdminPanel />;
+ case 'activities':
+ return <ActivityAdminPanel />;
+ case 'requests':
+ return <RequestAdminPanel />;
+ case 'complain':
+ return <ComplainAdminPanel />;
+ case 'torrent':
+ return <TorrentManagement/>;
+ case 'user':
+ return <UserManagement/>;
+ default:
+ return null;
+ }
+ };
+
+ return (
+ <Layout style={{ minHeight: '100vh' }}>
+ {/* 侧边栏 */}
+ <Sider breakpoint="lg" collapsedWidth="0" theme="dark">
+ <div className="logo" style={{
+ height: 64,
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ fontSize: 22,
+ color: 'white',
+ fontWeight: 'bold',
+ }}>
+ 后台管理
+ </div>
+ <Menu
+ theme="dark"
+ mode="inline"
+ selectedKeys={[selectedKey]}
+ onClick={({ key }) => setSelectedKey(key)}
+ items={[
+ {
+ key: 'posts',
+ icon: <FileTextOutlined />,
+ label: '帖子管理',
+ },
+ {
+ key: 'activities',
+ icon: <DeploymentUnitOutlined />,
+ label: '公告管理',
+ },
+ {
+ key: 'requests',
+ icon: <FileSearchOutlined />,
+ label: '求助帖管理',
+ },
+ {
+ key: 'complain',
+ icon: <FlagOutlined />,
+ label: '举报管理',
+ },
+ {
+ key: 'torrent',
+ icon: <TagsOutlined />,
+ label: '种子管理',
+ },
+ {
+ key: 'user',
+ icon: <TagsOutlined />,
+ label: '用户管理',
+ },
+ ]}
+ />
+ <div style={{ padding: 16 }}>
+ <Button
+ type="primary"
+ block
+ icon={<HomeOutlined />}
+ onClick={() => navigate('/')}
+ >
+ 返回首页
+ </Button>
+ </div>
+ </Sider>
+
+ {/* 内容区 */}
+ <Layout>
+ <Header style={{ background: '#fff', padding: '0 24px', fontSize: 20 }}>
+ {(() => {
+ switch (selectedKey) {
+ case 'posts': return '📄 帖子管理';
+ case 'activities': return '🎯 公告管理';
+ case 'requests': return '🆘 求助帖管理';
+ case 'complain': return '🚨 举报管理';
+ case 'torrent': return '🧲 种子管理';
+ default: return '';
+ }
+ })()}
+ </Header>
+ <Content style={{ margin: '24px 16px 0', padding: 24, background: '#fff', minHeight: '85vh' }}>
+ {renderContent()}
+ </Content>
+ <Footer style={{ textAlign: 'center' }}>
+ PT管理系统 ©{new Date().getFullYear()} Created by Jiaxin Liu, Man Yang, Shuo Wang
+ </Footer>
+ </Layout>
+ </Layout>
+ );
+};
+
+export default AdminPage;