"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Building2, Users, UserCog } from "lucide-react" import { toast } from "sonner" import useAuthCheck from "@/hooks/useAuthCheck" import { getAdminInfo, getGreeting } from "@/lib/utils" import ClientOnly from "@/components/ClientOnly" import { apiRequest } from '@/lib/api-utils' interface DashboardStats { companyCount: number adminCount: number customerCount: number } export default function DashboardPage() { const [stats, setStats] = useState({ companyCount: 0, adminCount: 0, customerCount: 0 }) const [isLoading, setIsLoading] = useState(true) const [greeting, setGreeting] = useState("") const [userName, setUserName] = useState("") // 验证用户是否已登录 useAuthCheck() useEffect(() => { const fetchDashboardData = async () => { try { setIsLoading(true) const result = await apiRequest('/dashboard/base') if (result.code === 200 && result.data) { setStats(result.data) } else { toast.error(result.msg || "获取仪表盘数据失败") } // 获取用户信息 const adminInfo = getAdminInfo() if (adminInfo) { setUserName(adminInfo.name || "管理员") } else { setUserName("管理员") } } catch (error) { console.error("获取仪表盘数据失败:", error) toast.error("网络错误,请稍后再试") } finally { setIsLoading(false) } } fetchDashboardData() }, []) // 单独处理问候语,避免依赖问题 useEffect(() => { const updateGreeting = () => { if (userName) { setGreeting(getGreeting(userName)) } } updateGreeting() // 每分钟更新一次问候语,以防用户长时间停留在页面 const interval = setInterval(updateGreeting, 60000) return () => clearInterval(interval) }, [userName]) return (

欢迎使用超级管理员后台

{greeting || getGreeting(userName)} !通过此平台,您可以管理项目、客户和管理员权限。

项目总数
{isLoading ? "..." : stats.companyCount}
设备总数
{isLoading ? "..." : stats.customerCount}
管理员数量
{isLoading ? "..." : stats.adminCount}
) }