import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import type { Order } from '../data/orders'; import type { Theme } from '../context/ThemeContext'; import { darkTokens, lightTokens } from '../context/ThemeContext'; import DataSourceToggle from './DataSourceToggle'; interface CostHeaderProps { theme?: Theme; onToggleTheme?: () => void; orders: Order[]; } export default function CostHeader({ theme = 'dark', onToggleTheme, orders }: CostHeaderProps) { const navigate = useNavigate(); const tokens = theme === 'dark' ? darkTokens : lightTokens; const isLight = theme === 'light'; const [time, setTime] = useState(new Date()); useEffect(() => { const t = setInterval(() => setTime(new Date()), 1000); return () => clearInterval(t); }, []); const pad = (n: number) => String(n).padStart(2, '0'); const timeStr = `${pad(time.getHours())}:${pad(time.getMinutes())}:${pad(time.getSeconds())}`; const dateStr = `${time.getFullYear()}-${pad(time.getMonth() + 1)}-${pad(time.getDate())}`; const totalOrders = orders.length; const closedOrders = orders.filter(o => o.status === 'closed').length; const dangerOrders = orders.filter(o => o.riskLevel === 'danger').length; const warningOrders = orders.filter(o => o.riskLevel === 'warning').length; // 计算所有已结单订单的平均净利率(管理成本口径) const closedList = orders.filter(o => o.status === 'closed'); const avgNetMargin = closedList.length > 0 ? closedList.reduce((sum, o) => sum + (o.rows.find(r => r.type === '管理成本')?.netMargin ?? 0), 0) / closedList.length : 0; const stats = [ { label: '在管订单', value: String(totalOrders), color: tokens.accent }, { label: '已结单', value: String(closedOrders), color: tokens.success }, { label: '成本预警', value: String(warningOrders), color: tokens.warning }, { label: '亏损风险', value: String(dangerOrders), color: tokens.danger }, { label: '平均净利率', value: `${(avgNetMargin * 100).toFixed(1)}%`, color: avgNetMargin >= 0.05 ? tokens.success : avgNetMargin >= 0 ? tokens.warning : tokens.danger }, ]; return (
{/* 顶部扫光线 */}
{/* 底部弧形 */} {/* Logo + 标题 */}
Regal Rexnord

订单成本枢纽平台

LIVE
{/* 分隔线 */}
{/* 统计指标 */}
{stats.map((item, idx) => (
{item.value}
{item.label}
{idx < stats.length - 1 &&
}
))}
{/* 右分隔线 */}
{/* 时间 + 切换按钮 */}
{timeStr}
{dateStr}
Powered by EIOS
{/* 切换风格按钮 */} {onToggleTheme && ( )} {/* 数据源切换 */}
); }