'use client'; import { useState } from 'react'; import { usePlantingLedger } from '../hooks/use-users'; import { formatDecimal, formatNumber } from '@/lib/utils/format'; import { formatDateTime } from '@/lib/utils/date'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Skeleton } from '@/components/ui/skeleton'; import { Badge } from '@/components/ui/badge'; import { ChevronLeft, ChevronRight, TreePine, Calendar, DollarSign } from 'lucide-react'; interface PlantingLedgerProps { accountSequence: string; } // 认种状态标签 const plantingStatusLabels: Record = { CREATED: '已创建', PAID: '已支付', FUND_ALLOCATED: '资金已分配', MINING_ENABLED: '已开始挖矿', CANCELLED: '已取消', EXPIRED: '已过期', }; // 状态对应的样式 const getStatusVariant = (status: string): 'default' | 'secondary' | 'destructive' | 'outline' => { switch (status) { case 'MINING_ENABLED': case 'PAID': case 'FUND_ALLOCATED': return 'default'; case 'CREATED': return 'secondary'; case 'CANCELLED': case 'EXPIRED': return 'destructive'; default: return 'outline'; } }; export function PlantingLedger({ accountSequence }: PlantingLedgerProps) { const [page, setPage] = useState(1); const pageSize = 10; const { data, isLoading } = usePlantingLedger(accountSequence, { page, pageSize }); if (isLoading) { return (
认种汇总
{[...Array(6)].map((_, i) => ( ))}
); } if (!data) { return ( 认种信息

暂无认种数据

); } return (
{/* 认种汇总 */} 认种汇总

总订单数

{formatNumber(data.summary.totalOrders)}

总认种量

{formatNumber(data.summary.totalTreeCount)}

总金额

{formatDecimal(data.summary.totalAmount, 2)}

有效认种量

{formatNumber(data.summary.effectiveTreeCount)}

首次认种

{data.summary.firstPlantingAt ? formatDateTime(data.summary.firstPlantingAt) : '-'}

最近认种

{data.summary.lastPlantingAt ? formatDateTime(data.summary.lastPlantingAt) : '-'}

{/* 认种分类账明细 */} 认种分类账明细 订单号 认种数量 金额 省市 状态 创建时间 支付时间 {data.items.length === 0 ? ( 暂无认种记录 ) : ( data.items.map((item) => ( {item.orderNo} {formatNumber(item.treeCount)} {formatDecimal(item.totalAmount, 2)} {item.selectedProvince || '-'} / {item.selectedCity || '-'} {plantingStatusLabels[item.status] || item.status} {formatDateTime(item.createdAt)} {item.paidAt ? formatDateTime(item.paidAt) : '-'} )) )}
{data.totalPages > 1 && (

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

)}
); }