"use client"; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { ChevronLeft, ChevronRight, Eye, Edit, Trash2, RefreshCw } from 'lucide-react'; import { Account } from '@/lib/types'; interface AccountTableProps { accounts: Account[]; loading: boolean; selectedIds: number[]; pagination: { page: number; pageSize: number; total: number; totalPages: number; }; onSelectAll: (checked: boolean) => void; onSelectOne: (id: number, checked: boolean) => void; onPageChange: (page: number) => void; onPageSizeChange: (pageSize: number) => void; onRefresh: () => void; onView?: (account: Account) => void; onEdit?: (account: Account) => void; onDelete?: (account: Account) => void; } export function AccountTable({ accounts, loading, selectedIds, pagination, onSelectAll, onSelectOne, onPageChange, onPageSizeChange, onRefresh, onView, onEdit, onDelete }: AccountTableProps) { const getStatusBadge = (status: string) => { switch (status) { case 'available': return 可用; case 'locked': return 已锁定; case 'banned': return 已封禁; default: return {status}; } }; const renderPagination = () => { return (
显示 {(pagination.page - 1) * pagination.pageSize + 1} - {Math.min(pagination.page * pagination.pageSize, pagination.total)} 共 {pagination.total} 条
每页显示
{pagination.totalPages > 1 && (
{Array.from({ length: Math.min(5, pagination.totalPages) }, (_, i) => { let pageNum; if (pagination.totalPages <= 5) { pageNum = i + 1; } else if (pagination.page <= 3) { pageNum = i + 1; } else if (pagination.page >= pagination.totalPages - 2) { pageNum = pagination.totalPages - 4 + i; } else { pageNum = pagination.page - 2 + i; } return ( ); })}
)}
); }; return (
{/* 分页器 - 移到顶部 */} {renderPagination()} {/* 表格区域 - 直接使用原生table确保sticky正常工作 */}
{loading ? ( ) : accounts.length === 0 ? ( ) : ( accounts.map((account) => ( )) )}
0} onCheckedChange={onSelectAll} /> ID 平台 自定义ID 所有者 状态 备注 创建时间
操作
加载中...
暂无数据
onSelectOne(account.id, checked as boolean)} /> {account.id} {account.platform} {account.customId} {account.ownerId} {getStatusBadge(account.status)} {account.notes || '-'} {new Date(account.createdAt).toLocaleDateString('zh-CN')}
{onView && ( )} {onEdit && ( )} {onDelete && ( )}
); }