"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" 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 fetchData = async () => { setIsLoading(true) try { // 获取统计信息 const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/dashboard/base`) const data = await response.json() if (data.code === 200) { setStats(data.data) } else { toast.error(data.msg || "获取统计信息失败") } // 获取用户信息 const adminInfo = getAdminInfo() if (adminInfo) { setUserName(adminInfo.name || "管理员") } else { setUserName("管理员") } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsLoading(false) } } fetchData() }, []) // 单独处理问候语,避免依赖问题 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}
) }