import type { ReactNode } from 'react'; import { CalendarDays, Fuel, Sparkles, TrendingUp, Wallet } from 'lucide-react'; import type { HydrogenKpi } from '../../types'; import { formatKg as fmtKg, formatYuan as fmtYuan } from '../model'; interface KpiCardProps { icon: ReactNode; label: string; hero: { value: string; unit: string }; rows: { label: string; value: string; valueClass?: string }[]; accentClass: string; iconBg: string; } function KpiCard({ icon, label, hero, rows, accentClass, iconBg }: KpiCardProps) { return (
{icon}
{label}
{hero.value} {hero.unit}
{rows.map((r, i) => (
{r.label} {r.value}
))}
); } export function KpiSection({ kpi: k }: { kpi: HydrogenKpi }) { const yearKgFmt = fmtKg(k.yearKg); const yearFeeFmt = fmtYuan(k.yearFee); const yearProfitFmt = fmtYuan(k.yearProfit); const ourYearKgFmt = fmtKg(k.ourYearKg); const customerYearKgFmt = fmtKg(k.customerYearKg); const monthKgFmt = fmtKg(k.monthKg); const monthFeeFmt = fmtYuan(k.monthFee); const todayKgFmt = fmtKg(k.todayKg); const todayFeeFmt = fmtYuan(k.todayFee); const customerYearFee = Math.max(0, k.yearFee - k.ourYearFee); const customerYearFeeFmt = fmtYuan(customerYearFee); const yearRevenueFmt = fmtYuan(k.yearRevenue); const profitColor = k.yearProfit >= 0 ? 'text-emerald-600' : 'text-red-600'; return (
} iconBg="bg-cyan-50" accentClass="text-slate-800" label="累计加氢量" hero={yearKgFmt} rows={[ { label: '我司', value: `${ourYearKgFmt.value} ${ourYearKgFmt.unit}` }, { label: '客户', value: `${customerYearKgFmt.value} ${customerYearKgFmt.unit}` }, ]} /> } iconBg="bg-blue-50" accentClass="text-slate-800" label="累计加氢费" hero={{ value: `¥${yearFeeFmt.value}`, unit: yearFeeFmt.unit }} rows={[ { label: '我司承担', value: `¥${fmtYuan(k.ourYearFee).value} ${fmtYuan(k.ourYearFee).unit}` }, { label: '客户承担', value: `¥${customerYearFeeFmt.value} ${customerYearFeeFmt.unit}` }, ]} /> } iconBg="bg-emerald-50" accentClass={profitColor} label="时享加氢获利" hero={{ value: `¥${yearProfitFmt.value}`, unit: yearProfitFmt.unit }} rows={[ { label: '收入', value: `¥${yearRevenueFmt.value} ${yearRevenueFmt.unit}` }, { label: '成本', value: `¥${yearFeeFmt.value} ${yearFeeFmt.unit}` }, ]} /> } iconBg="bg-amber-50" accentClass="text-amber-600" label="本月加氢" hero={monthKgFmt} rows={[ { label: '加氢费', value: `¥${monthFeeFmt.value} ${monthFeeFmt.unit}` }, { label: '占年比', value: `${k.yearKg > 0 ? (k.monthKg / k.yearKg * 100).toFixed(1) : '0.0'}%` }, ]} /> } iconBg="bg-violet-50" accentClass="text-violet-600" label="本日加氢" hero={todayKgFmt} rows={[ { label: '加氢费', value: `¥${todayFeeFmt.value} ${todayFeeFmt.unit}` }, { label: '占月比', value: `${k.monthKg > 0 ? (k.todayKg / k.monthKg * 100).toFixed(1) : '0.0'}%` }, ]} />
); }