diff --git a/src/features/admin/pages/AdminPanel.jsx b/src/features/admin/pages/AdminPanel.jsx
index 3717b52..bffa5bf 100644
--- a/src/features/admin/pages/AdminPanel.jsx
+++ b/src/features/admin/pages/AdminPanel.jsx
@@ -2,15 +2,17 @@
 import { Card, Table, Button, Space, Typography, message, Popconfirm, Spin } from 'antd';
 import { UserOutlined, UploadOutlined, SettingOutlined } from '@ant-design/icons';
 import { getUserList, deleteUser } from '@/api/auth';
+import { useAuth } from '@/features/auth/contexts/AuthContext';
 
 const { Title } = Typography;
 
 const AdminPanel = () => {
   const [users, setUsers] = useState([]);
   const [loading, setLoading] = useState(true);
+  const { user } = useAuth();
   
   // 获取管理员信息
-  const adminUser = JSON.parse(localStorage.getItem('user') || '{}');
+  const adminUser = user;
   
   // 加载用户数据
   useEffect(() => {
@@ -21,20 +23,24 @@
   const fetchUsers = async () => {
     try {
       setLoading(true);
-      const response = await getUserList(adminUser.username);
-      if (response.success) {
+      const params = {
+        username: adminUser.username,
+      };
+      const response = await getUserList(params);
+      if (response && response.data) {
         const userList = response.data.users || [];
+        const totalNumber = response.data.amount || 0;
         // 添加key属性
         const formattedUsers = userList.map(user => ({
           ...user,
-          key: user.id,
-          role: user.userType === 1 ? '管理员' : '普通用户',
+          key: user.uid,
+          role: user.level,
           status: '正常'
         }));
         setUsers(formattedUsers);
       }
     } catch (error) {
-      message.error(error.message || '获取用户列表失败');
+      message.error('获取用户列表失败');
     } finally {
       setLoading(false);
     }
@@ -43,9 +49,13 @@
   // 删除用户
   const handleDelete = async (username) => {
     try {
-      const response = await deleteUser(adminUser.username, username);
-      if (response.success) {
-        message.success('用户删除成功');
+      const params = {
+        username: adminUser.username,
+        targetUsername: username,
+      };
+      const response = await deleteUser(params);
+      if (response.message) {
+        message.success(response.message || '用户删除成功');
         fetchUsers(); // 重新加载用户列表
       }
     } catch (error) {
