"use client"; import { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { RefreshCw } from 'lucide-react'; import { Account } from '@/lib/types'; import { useAccounts } from '@/lib/hooks/use-accounts'; import { useConfirmDialog } from '@/components/ui/confirm-dialog'; // 组件导入 import { StatsCards } from './accounts/stats-cards'; import { AccountFilters } from './accounts/account-filters'; import { BatchOperations } from './accounts/batch-operations'; import { AccountUpload } from './accounts/account-upload'; import { AccountTable } from './accounts/account-table'; import { AccountDetails } from './accounts/account-details'; export function AccountsManager() { const { showConfirm, ConfirmDialogComponent } = useConfirmDialog(); const { accounts, stats, loading, selectedIds, pagination, filters, fetchAccounts, fetchStats, handleFilterChange, handlePageChange, handlePageSizeChange, handleSelectAll, handleSelectOne, handleBatchDelete, handleBatchUpdate, handleUploadAccounts, setSelectedIds } = useAccounts(); // 全局刷新函数 const handleGlobalRefresh = async () => { await Promise.all([fetchAccounts(), fetchStats()]); }; // 账户详情状态 const [detailsDialog, setDetailsDialog] = useState(false); const [detailsMode, setDetailsMode] = useState<'view' | 'edit'>('view'); const [selectedAccount, setSelectedAccount] = useState(null); // 处理查看详情 const handleViewAccount = (account: Account) => { setSelectedAccount(account); setDetailsMode('view'); setDetailsDialog(true); }; // 处理编辑账户 const handleEditAccount = (account: Account) => { setSelectedAccount(account); setDetailsMode('edit'); setDetailsDialog(true); }; // 处理删除单个账户 const handleDeleteAccount = async (account: Account) => { showConfirm({ title: '确认删除', description: `确认删除账户 "${account.customId}"?此操作不可撤销。`, confirmText: '确认删除', cancelText: '取消', variant: 'destructive', onConfirm: async () => { try { // 设置选中的账户ID setSelectedIds([account.id]); // 执行删除 await handleBatchDelete(); } catch (error) { console.error('Failed to delete account:', error); } } }); }; // 处理保存编辑 const handleSaveAccount = async (account: Account) => { try { console.log('开始保存账户:', account); // 构建payload,将null/undefined转换为空字符串 const payload: Partial> = {}; if (account.status !== null && account.status !== undefined) { payload.status = account.status; } if (account.ownerId !== null && account.ownerId !== undefined) { payload.ownerId = account.ownerId; } if (account.notes !== null && account.notes !== undefined) { payload.notes = account.notes || ''; // 将null转换为空字符串 } if (account.platform !== null && account.platform !== undefined) { payload.platform = account.platform; } console.log('更新payload:', payload); console.log('账户ID:', account.id); if (Object.keys(payload).length === 0) { console.log('没有有效的字段需要更新'); return; } // 直接传递账户ID数组,避免状态竞态条件 await handleBatchUpdate(payload, [account.id]); console.log('账户保存完成'); } catch (error) { console.error('Failed to save account:', error); } }; return (
{/* 页面标题 */}

账户管理系统

轻量化账户管理平台

{/* 统计卡片 */}
{/* 账户管理区域 */} 账户列表 管理和查看所有账户信息 {/* 筛选条件 */} {/* 批量操作 */} selectedIds.includes(account.id))} stats={stats} onBatchUpdate={handleBatchUpdate} onBatchDelete={() => handleBatchDelete(showConfirm)} onRefresh={handleGlobalRefresh} /> {/* 账户表格 - 移除高度限制 */}
{/* 账户详情对话框 */} {/* 确认删除对话框 */}
); }