更新路由守卫

Change-Id: Iddd1d006202a03e8a97e3a90d64d9a43c5d2cb78
diff --git a/Merge/front/src/components/UserManagement.js b/Merge/front/src/components/UserManagement.js
index a48f8cf..bed6b8f 100644
--- a/Merge/front/src/components/UserManagement.js
+++ b/Merge/front/src/components/UserManagement.js
@@ -1,51 +1,77 @@
-import React, { useState, useEffect } from 'react';
-import '../style/Admin.css';
-import { Select, message, Table } from 'antd';
-import { fetchUserList, giveUser, giveAdmin, giveSuperAdmin } from '../api/posts_trm';
+// src/components/UserManagement.jsx
 
-const { Option } = Select;
-const ROLE_LIST = ['用户', '管理员', '超级管理员'];
+import React, { useState, useEffect } from 'react'
+import { useParams } from 'react-router-dom'
+import { Table, Select, message } from 'antd'
+import {
+  fetchUserList,
+  giveUser,
+  giveAdmin,
+  giveSuperAdmin
+} from '../api/posts_trm'
+import '../style/Admin.css'
 
-function UserManagement({ superAdminId }) {
-  const [users, setUsers] = useState([]);
+const { Option } = Select
+const ROLE_LIST = ['用户', '管理员', '超级管理员']
+
+export default function UserManagement() {
+  // 直接从 URL 参数里拿到 superAdminId
+  const { userId: superAdminId } = useParams()
+
+  const [users, setUsers] = useState([])
 
   useEffect(() => {
     async function load() {
       try {
-        const data = superAdminId
-          ? await fetchUserList(superAdminId)
-          : await fetch('/api/users').then(res => res.json());
-        setUsers(data);
+        // 调用接口获取用户列表
+        const data = await fetchUserList(superAdminId)
+        setUsers(data)
       } catch (e) {
-        console.error(e);
+        console.error(e)
+        message.error('获取用户列表失败:' + e.message)
       }
     }
-    load();
-  }, [superAdminId]);
 
-  // handle role changes
+    // 只有当 superAdminId 有值时才发请求
+    if (superAdminId) {
+      load()
+    }
+  }, [superAdminId])
+
+  // 处理角色变更
   const handleRoleChange = async (userId, newRole) => {
     try {
-      if (newRole === '用户') await giveUser(superAdminId, userId);
-      else if (newRole === '管理员') await giveAdmin(superAdminId, userId);
-      else if (newRole === '超级管理员') await giveSuperAdmin(superAdminId, userId);
-      setUsers(us => us.map(u => u.id === userId ? { ...u, role: newRole } : u));
-      message.success('修改成功');
+      if (newRole === '用户') {
+        await giveUser(superAdminId, userId)
+      } else if (newRole === '管理员') {
+        await giveAdmin(superAdminId, userId)
+      } else if (newRole === '超级管理员') {
+        await giveSuperAdmin(superAdminId, userId)
+      }
+      // 本地更新状态
+      setUsers(us =>
+        us.map(u => (u.id === userId ? { ...u, role: newRole } : u))
+      )
+      message.success('修改成功')
     } catch (e) {
-      console.error(e);
-      message.error('修改失败');
+      console.error(e)
+      message.error('修改失败:' + e.message)
     }
-  };
+  }
 
-  // define table columns
+  // 表格列定义
   const columns = [
     { title: '用户名', dataIndex: 'username', key: 'username' },
-    { title: '角色', dataIndex: 'role', key: 'role' },
+    { title: '角色',   dataIndex: 'role',     key: 'role' },
     {
       title: '操作',
       key: 'action',
       render: (_, record) => {
-        const orderedRoles = [record.role, ...ROLE_LIST.filter(r => r !== record.role)];
+        // 当前角色排第一
+        const orderedRoles = [
+          record.role,
+          ...ROLE_LIST.filter(r => r !== record.role)
+        ]
         return (
           <Select
             value={record.role}
@@ -53,13 +79,15 @@
             onChange={value => handleRoleChange(record.id, value)}
           >
             {orderedRoles.map(r => (
-              <Option key={r} value={r}>{r}</Option>
+              <Option key={r} value={r}>
+                {r}
+              </Option>
             ))}
           </Select>
-        );
-      },
-    },
-  ];
+        )
+      }
+    }
+  ]
 
   return (
     <div className="admin-container">
@@ -70,7 +98,5 @@
         pagination={false}
       />
     </div>
-  );
+  )
 }
-
-export default UserManagement;