blob: 0fa6722781484bc9de44307303913a38e932b1c1 [file] [log] [blame]
wu70fc8c52025-06-19 15:55:03 +08001// src/components/SuperAdmin.jsx
2import React, { useState, useEffect } from 'react'
3import { NavLink, Outlet, useParams } from 'react-router-dom'
4import { Spin } from 'antd'
5import { fetchUserList } from '../api/posts_trm'
6import '../style/SuperAdmin.css'
TRM-codingd1cbf672025-06-18 15:15:08 +08007
8export default function SuperAdmin() {
wu70fc8c52025-06-19 15:55:03 +08009 const { userId } = useParams() // ← 从路由拿到
10 const [loading, setLoading] = useState(true)
11 const [hasPermission, setHasPermission] = useState(true)
TRM-codingd1cbf672025-06-18 15:15:08 +080012
13 useEffect(() => {
14 async function check() {
15 try {
wu70fc8c52025-06-19 15:55:03 +080016 await fetchUserList(userId) // ← 传入 userId
TRM-codingd1cbf672025-06-18 15:15:08 +080017 } catch (e) {
18 if (e.message === 'Unauthorized') {
wu70fc8c52025-06-19 15:55:03 +080019 setHasPermission(false)
TRM-codingd1cbf672025-06-18 15:15:08 +080020 } else {
wu70fc8c52025-06-19 15:55:03 +080021 console.error(e)
TRM-codingd1cbf672025-06-18 15:15:08 +080022 }
23 } finally {
wu70fc8c52025-06-19 15:55:03 +080024 setLoading(false)
TRM-codingd1cbf672025-06-18 15:15:08 +080025 }
26 }
wu70fc8c52025-06-19 15:55:03 +080027 check()
28 }, [userId])
TRM-codingd1cbf672025-06-18 15:15:08 +080029
wu70fc8c52025-06-19 15:55:03 +080030 if (loading) {
31 return (
32 <Spin
33 spinning
34 tip="加载中…"
35 style={{ width: '100%', marginTop: 100 }}
36 />
37 )
38 }
39 if (!hasPermission) {
40 return (
41 <div style={{ textAlign: 'center', marginTop: 100 }}>
42 权限不足
43 </div>
44 )
45 }
TRM-codingd1cbf672025-06-18 15:15:08 +080046
47 return (
48 <div className="super-admin-container">
49 <aside className="super-admin-sidebar">
50 <h2>超级管理员</h2>
51 <nav>
52 <ul>
53 <li>
wu70fc8c52025-06-19 15:55:03 +080054 <NavLink
55 to="users"
56 end
57 className={({ isActive }) =>
58 isActive ? 'active' : ''
59 }
TRM-codingd1cbf672025-06-18 15:15:08 +080060 >
61 用户管理
62 </NavLink>
63 </li>
64 <li>
wu70fc8c52025-06-19 15:55:03 +080065 <NavLink
66 to="dashboard"
67 className={({ isActive }) =>
68 isActive ? 'active' : ''
69 }
TRM-codingd1cbf672025-06-18 15:15:08 +080070 >
71 平台运行监控
72 </NavLink>
73 </li>
74 </ul>
75 </nav>
76 </aside>
77
78 <main className="super-admin-content">
79 <Outlet />
80 </main>
81 </div>
wu70fc8c52025-06-19 15:55:03 +080082 )
83}