import { useState, useEffect } from 'react' import { Users as UsersIcon, RefreshCw, Plus, Trash2 } from 'lucide-react' import { getUsers, deleteUser } from '@/api/admin' import { useUIStore } from '@/store/uiStore' import { useAuthStore } from '@/store/authStore' import { PageLoading } from '@/components/common/Loading' import type { User } from '@/types' export function Users() { const { addToast } = useUIStore() const { isAuthenticated, token, _hasHydrated } = useAuthStore() const [loading, setLoading] = useState(true) const [users, setUsers] = useState([]) const loadUsers = async () => { if (!_hasHydrated || !isAuthenticated || !token) return try { setLoading(true) const result = await getUsers() if (result.success) { setUsers(result.data || []) } } catch { addToast({ type: 'error', message: '加载用户列表失败' }) } finally { setLoading(false) } } useEffect(() => { if (!_hasHydrated || !isAuthenticated || !token) return loadUsers() }, [_hasHydrated, isAuthenticated, token]) // TODO: 后端暂未实现 PUT /admin/users/{user_id} 接口 const handleNotImplemented = (action: string) => { addToast({ type: 'warning', message: `${action}功能后端暂未实现` }) } const handleDelete = async (userId: number) => { if (!confirm('确定要删除这个用户吗?此操作不可恢复!')) return try { await deleteUser(userId) addToast({ type: 'success', message: '删除成功' }) loadUsers() } catch { addToast({ type: 'error', message: '删除失败' }) } } if (loading) { return } return (
{/* Header */}

用户管理

管理系统用户账号

{/* TODO: 后端暂未实现 POST /admin/users 接口 */}
{/* Users List */}

用户列表

{users.length} 个用户
{users.length === 0 ? ( ) : ( users.map((user) => ( )) )}
ID 用户名 邮箱 角色 操作

暂无用户数据

{user.user_id} {user.username} {user.email || '-'} {user.is_admin ? ( 管理员 ) : ( 普通用户 )}
{/* 提示信息 */}

提示:用户可通过注册页面自行注册账号。管理员可在此页面删除用户。

) }