import { useEffect, useState } from 'react' import { api } from '../services/api' import { useNavigate } from 'react-router-dom' export default function Dashboard() { const [stats, setStats] = useState(null) const [recentUsers, setRecentUsers] = useState([]) const [recentPosts, setRecentPosts] = useState([]) const [loading, setLoading] = useState(true) const navigate = useNavigate() useEffect(() => { Promise.all([ api.get('/api/admin/dashboard'), api.get('/api/admin/users?page=1&pageSize=5'), api.get('/api/admin/posts?page=1&pageSize=5'), ]).then(([dashData, usersData, postsData]) => { setStats({ totalUsers: dashData.totalUsers || 0, totalPosts: dashData.totalPosts || 0, totalCheckins: dashData.totalRecords || 0, totalItems: dashData.totalItems || 0, newUsersToday: dashData.newUsersToday || 0, }) setRecentUsers(usersData.list || []) setRecentPosts(postsData.list || []) }).catch(() => { setStats({ totalUsers: 0, totalPosts: 0, totalCheckins: 0, totalItems: 0, newUsersToday: 0 }) }).finally(() => setLoading(false)) }, []) if (loading) return
加载中...
if (!stats) return
暂无数据
return (

数据概览

{/* 统计卡片 */}
navigate('/users')} style={{ cursor: 'pointer' }}>
{stats.totalUsers}
总用户数
navigate('/users')} style={{ cursor: 'pointer' }}>
{stats.newUsersToday}
今日新增
{stats.totalCheckins}
总打卡次数
{stats.totalItems}
总打卡项
navigate('/posts')} style={{ cursor: 'pointer' }}>
{stats.totalPosts}
动态总数
{/* 最近用户 */}

最近注册 查看全部 →

{recentUsers.map((u: any) => ( ))} {recentUsers.length === 0 && }
昵称手机号积分时间
{u.nickname || '--'} {u.phone || '--'} {u.points} {u.createdAt?.slice(0, 10) || '--'}
暂无用户
{/* 最近动态 */}

最新动态 查看全部 →

{recentPosts.map((p: any) => ( ))} {recentPosts.length === 0 && }
内容用户时间
{p.content || '--'} {p.user?.nickname || '--'} {p.createdAt?.slice(0, 10) || '--'}
暂无动态
) }