Files
SBrainCO/client/src/components/Tabs.tsx
T
freedakgmail 3d89baf65d feat: 菜品成本分析模块 - 10个Tab + 31个分析API + 7个调整管理API
- 后端: 新增 cost-analysis.ts 路由,含31个分析端点和7个调整管理端点
- 前端: 新增 CostAnalysisPage 主页面 + 10个Tab组件
  - Tab1-9: 成本总览/菜品盈利/原料差异/BOM配方/供应链/包装耗材/数据质量/门店成本/可视化探索
  - Tab10: 调整管理(诊断快照+调整记录+效果验证)
- 修复: 毛利率和损耗率从简单平均改为加权计算
- 新增: Tabs组件、侧边栏菜单项、路由注册
- 新增: 3张数据库表(诊断快照/调整记录/验证结果)
2026-07-28 16:56:45 +08:00

29 lines
741 B
TypeScript

import { cn } from '@/lib/utils'
interface TabsProps {
tabs: { key: string; label: string }[]
active: string
onChange: (key: string) => void
}
export function Tabs({ tabs, active, onChange }: TabsProps) {
return (
<div className="flex flex-wrap gap-1 border-b">
{tabs.map((tab) => (
<button
key={tab.key}
onClick={() => onChange(tab.key)}
className={cn(
'px-4 py-2 text-sm font-medium transition-colors border-b-2 -mb-px',
active === tab.key
? 'border-primary text-primary'
: 'border-transparent text-muted-foreground hover:text-foreground'
)}
>
{tab.label}
</button>
))}
</div>
)
}