From 6cbe02fbf637e8cd3004c7947be5706a8cb814d7 Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Fri, 16 Jan 2026 17:48:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/AdminDashboard.jsx | 54 ++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/src/pages/AdminDashboard.jsx b/src/pages/AdminDashboard.jsx index 6bf14e0..2b0ded5 100644 --- a/src/pages/AdminDashboard.jsx +++ b/src/pages/AdminDashboard.jsx @@ -4,6 +4,8 @@ import apiClient from '../utils/apiClient'; import { buildApiUrl, API_ENDPOINTS } from '../config/api'; import Dropdown from '../components/Dropdown'; import menuService from '../services/menuService'; +import ConfirmDialog from '../components/ConfirmDialog'; +import Toast from '../components/Toast'; import './AdminDashboard.css'; // 常量定义 @@ -60,6 +62,20 @@ const AdminDashboard = ({ user, onLogout }) => { const [autoRefresh, setAutoRefresh] = useState(true); const [countdown, setCountdown] = useState(AUTO_REFRESH_INTERVAL); + // Toast和确认对话框 + const [toasts, setToasts] = useState([]); + const [kickConfirmInfo, setKickConfirmInfo] = useState(null); + + // Toast辅助函数 + const showToast = (message, type = 'info') => { + const id = Date.now(); + setToasts(prev => [...prev, { id, message, type }]); + }; + + const removeToast = (id) => { + setToasts(prev => prev.filter(toast => toast.id !== id)); + }; + // 获取菜单配置 const getMenuItemConfig = (menu) => { const iconMap = { @@ -203,20 +219,20 @@ const AdminDashboard = ({ user, onLogout }) => { } }; - const handleKickUser = async (userId) => { - if (!confirm('确定要踢出该用户吗?')) return; - + const handleKickUser = async () => { try { - const response = await apiClient.post(buildApiUrl(API_ENDPOINTS.ADMIN.KICK_USER(userId))); + const response = await apiClient.post(buildApiUrl(API_ENDPOINTS.ADMIN.KICK_USER(kickConfirmInfo.user_id))); if (response.code === '200') { - alert('用户已被踢出'); + showToast('用户已被踢出', 'success'); fetchOnlineUsers(); } else { - alert('踢出失败: ' + response.message); + showToast(`踢出失败: ${response.message}`, 'error'); } } catch (err) { console.error('踢出用户失败:', err); - alert('踢出用户失败'); + showToast('踢出用户失败', 'error'); + } finally { + setKickConfirmInfo(null); } }; @@ -494,7 +510,7 @@ const AdminDashboard = ({ user, onLogout }) => {