'use client'; import { useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { PageHeader } from '@/components/layout/page-header'; import { useUsers } from '@/features/users/hooks/use-users'; import { formatDecimal, formatNumber } from '@/lib/utils/format'; import { formatDateTime } from '@/lib/utils/date'; import { Card, CardContent } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Search, ChevronLeft, ChevronRight, Eye, Users, TreePine } from 'lucide-react'; import { Skeleton } from '@/components/ui/skeleton'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Badge } from '@/components/ui/badge'; export default function UsersPage() { const [keyword, setKeyword] = useState(''); const [searchKeyword, setSearchKeyword] = useState(''); const [page, setPage] = useState(1); const pageSize = 20; const { data, isLoading, error } = useUsers({ page, pageSize, keyword: searchKeyword }); const handleSearch = () => { setSearchKeyword(keyword); setPage(1); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { handleSearch(); } }; // 获取状态徽章样式 const getStatusBadge = (status?: string, isOnline?: boolean) => { if (status === 'frozen') { return 冻结; } if (status === 'deactivated') { return 停用; } if (isOnline) { return 在线; } return null; }; return (
setKeyword(e.target.value)} onKeyDown={handleKeyDown} className="pl-10" />
头像 账户序列 昵称 手机号 认种状态 个人认种 团队认种 有效算力 挖矿余额 推荐人 注册时间 操作 {isLoading ? ( [...Array(10)].map((_, i) => ( {[...Array(12)].map((_, j) => ( ))} )) ) : error ? ( 加载失败: {(error as Error)?.message || '请稍后重试'} ) : !data?.items || data.items.length === 0 ? ( 暂无数据 ) : ( data.items.map((user) => ( {/* 头像 */}
{user.nickname?.charAt(0) || 'U'} {user.isOnline && ( )}
{/* 账户序列 */} {user.accountSequence} {/* 昵称 */}
{user.nickname || '-'} {getStatusBadge(user.status, user.isOnline)}
{/* 手机号 */} {user.phoneNumberMasked || user.phone} {/* 认种状态 */} {user.hasAdopted ? '已认种' : '未认种'} {/* 个人认种 */}
{formatNumber(user.personalAdoptions ?? 0)} {(user.personalAdoptionOrders ?? 0) > 0 && ( ({user.personalAdoptionOrders}单) )}
{/* 团队认种 */}
{formatNumber(user.teamAdoptions ?? 0)} {(user.teamAdoptionOrders ?? 0) > 0 && ( ({user.teamAdoptionOrders}单) )}
{/* 有效算力 */} {formatDecimal(user.effectiveContribution, 4)} {/* 挖矿余额 */} {formatDecimal(user.miningBalance, 4)} {/* 推荐人 */} {user.referrerId || '-'} {/* 注册时间 */} {formatDateTime(user.createdAt)} {/* 操作 */}
)) )}
{data?.items && data.totalPages > 1 && (

共 {formatNumber(data.total)} 条,第 {page} / {data.totalPages} 页

)}
); }