feat: 总部驾驶舱增加利润与成本指标区 - 食材成本/经营费用/贡献利润/费用率

This commit is contained in:
freedakgmail
2026-07-30 09:59:30 +08:00
parent f46d858f5e
commit aecd06818d
+24
View File
@@ -58,9 +58,15 @@ export function DashboardPage() {
queryFn: () => api.get('/situational-awareness/alerts'),
})
const { data: expenseData } = useQuery({
queryKey: ['store-expense/overview'],
queryFn: () => api.get('/store-expense/overview'),
})
const pageLoading = odLoading || dailyLoading || riskLoading || priorityLoading || loopLoading
const od = (overview as any)?.data
const ex = (expenseData as any)?.data
const riskRows = (riskData as any)?.data || []
const priorityRows = (priorityData as any)?.data || []
const dailyRows = (daily as any)?.data || []
@@ -182,6 +188,24 @@ export function DashboardPage() {
</div>
</CollapsibleSection>
{/* 利润与成本 */}
{ex && (
<CollapsibleSection title="利润与成本" subtitle="食材成本、人工房租、门店贡献利润等财务指标">
<div className="grid grid-cols-2 gap-3 md:grid-cols-4">
<MetricCard title="食材成本" value={ex.total_food_cost} format="currency" description="全部门店实际食材成本合计" />
<MetricCard title="经营费用" value={ex.total_expense} format="currency" description={`人工 ${formatCurrency(ex.total_wage)} · 房租 ${formatCurrency(ex.total_rent)} · 水电 ${formatCurrency(ex.total_utility)}`} />
<MetricCard title="门店贡献利润" value={ex.total_contribution} format="currency" description={`贡献率 ${formatPercent(ex.overall_contribution_rate_pct)} · 盈利 ${ex.profitable_stores}家 / 亏损 ${ex.loss_stores}`} />
<MetricCard title="费用率" value={ex.overall_expense_rate_pct} format="percent" description={`人工 ${formatPercent(ex.overall_wage_rate_pct)} · 房租 ${formatPercent(ex.overall_rent_rate_pct)} · 水电 ${formatPercent(ex.overall_utility_rate_pct)}`} />
</div>
<div className="mt-3 grid grid-cols-2 gap-3 md:grid-cols-4">
<MetricCard title="人工费用" value={ex.total_wage} format="currency" description={`占实收 ${formatPercent(ex.overall_wage_rate_pct)}`} />
<MetricCard title="房租费用" value={ex.total_rent} format="currency" description={`占实收 ${formatPercent(ex.overall_rent_rate_pct)}`} />
<MetricCard title="水电费用" value={ex.total_utility} format="currency" description={`占实收 ${formatPercent(ex.overall_utility_rate_pct)}`} />
<MetricCard title="外卖佣金" value={ex.total_commission} format="currency" description="外卖平台佣金合计" />
</div>
</CollapsibleSection>
)}
{/* 闭环健康度 */}
{lh && (
<CollapsibleSection