import { useEffect, useState } from 'react'; import { BadgeCheck, CarFront, FileText, ReceiptText, WalletCards } from 'lucide-react'; import { fetchEtcOverview, type EtcOverviewResponse } from './api'; import RotatingFooterHint from '../../components/RotatingFooterHint'; import { EmptyState, ErrorState, LoadingState, MetricTile, SurfaceCard } from '../../components/ui/surface'; function formatYuan(value: number) { return `¥${value.toLocaleString('zh-CN', { maximumFractionDigits: 0 })}`; } export default function ETCView() { const [data, setData] = useState(null); const [error, setError] = useState(null); useEffect(() => { let cancelled = false; fetchEtcOverview() .then(result => { if (!cancelled) setData(result); }) .catch(reason => { if (!cancelled) setError(reason instanceof Error ? reason.message : String(reason)); }); return () => { cancelled = true; }; }, []); if (error) return ; if (!data) return ; if (!data.hasData) { return (
); } return (
当前统计直接读取 ETC 通行明细与账单台账;金额、应收和已收均不做推算。
); }