"use client"; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Badge } from '@/components/ui/badge'; import { Account, StatsOverview } from '@/lib/types'; import { PlatformSelector, OwnerSelector, StatusSelector } from '@/components/shared'; interface AccountDetailsProps { account: Account | null; open: boolean; mode: 'view' | 'edit'; stats: StatsOverview | null; onOpenChange: (open: boolean) => void; onSave?: (account: Account) => Promise; onDelete?: (account: Account) => Promise; } export function AccountDetails({ account, open, mode, stats, onOpenChange, onSave, onDelete }: AccountDetailsProps) { const [editData, setEditData] = useState>({}); const [loading, setLoading] = useState(false); const isEditing = mode === 'edit'; const handleSave = async () => { if (!account || !onSave) return; setLoading(true); try { const updatedAccount = { ...account, ...editData }; await onSave(updatedAccount); onOpenChange(false); setEditData({}); } finally { setLoading(false); } }; const handleDelete = async () => { if (!account || !onDelete) return; if (!confirm('确认删除此账户?')) return; setLoading(true); try { await onDelete(account); onOpenChange(false); } finally { setLoading(false); } }; const getStatusBadge = (status: string) => { switch (status) { case 'available': return 可用; case 'locked': return 已锁定; case 'banned': return 已封禁; default: return {status}; } }; const formatData = (data: string) => { try { const parsed = JSON.parse(data); return JSON.stringify(parsed, null, 2); } catch { return data; } }; if (!account) return null; return ( {isEditing ? '编辑账户' : '账户详情'} 账户ID: {account.id}
{isEditing ? ( setEditData({...editData, platform: value})} stats={stats} placeholder="选择平台" inputPlaceholder="或直接输入平台名称" /> ) : (
{account.platform}
)}
{isEditing ? ( setEditData({...editData, customId: e.target.value})} /> ) : (
{account.customId}
)}
{isEditing ? ( setEditData({...editData, ownerId: value})} stats={stats} placeholder="选择所有者" inputPlaceholder="或直接输入所有者ID" /> ) : (
{account.ownerId}
)}
{isEditing ? ( setEditData({...editData, status: value})} stats={stats} placeholder="选择状态" inputPlaceholder="或直接输入状态" /> ) : (
{getStatusBadge(account.status)}
)}
{isEditing ? (