3d89baf65d
- 后端: 新增 cost-analysis.ts 路由,含31个分析端点和7个调整管理端点 - 前端: 新增 CostAnalysisPage 主页面 + 10个Tab组件 - Tab1-9: 成本总览/菜品盈利/原料差异/BOM配方/供应链/包装耗材/数据质量/门店成本/可视化探索 - Tab10: 调整管理(诊断快照+调整记录+效果验证) - 修复: 毛利率和损耗率从简单平均改为加权计算 - 新增: Tabs组件、侧边栏菜单项、路由注册 - 新增: 3张数据库表(诊断快照/调整记录/验证结果)
29 lines
741 B
TypeScript
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>
|
|
)
|
|
}
|