实现 MetricsCardComponent(指标卡片组件),用于在工作台页面显示业务指标数据。
文件位置: src/app/shared/components/metrics-card/
metrics-card.component.ts - 组件逻辑metrics-card.component.html - 组件模板metrics-card.component.scss - 组件样式metrics-card.component.spec.ts - 单元测试@Input() title: string = ''; // 卡片标题
@Input() value: number = 0; // 显示的数值
@Input() trend: number = 0; // 趋势百分比(正数上升,负数下降)
@Input() icon: string = ''; // Material Icon 图标名称
@Input() iconColor: string = '#1890FF'; // 图标颜色
@Input() clickable: boolean = false; // 是否可点击
@Output() cardClick = new EventEmitter<void>(); // 卡片点击事件
onCardClick() - 处理卡片点击事件getTrendIcon() - 获取趋势图标(trending_up/trending_down/trending_flat)getTrendClass() - 获取趋势CSS类(trend-up/trend-down/trend-flat)getTrendText() - 格式化趋势百分比显示在 DashboardComponent 中的使用:
<!-- 今日订单 -->
<app-metrics-card
title="今日订单"
[value]="metrics.todayOrders"
[trend]="metrics.todayOrdersTrend"
icon="shopping_cart"
iconColor="#1890FF"
[clickable]="false">
</app-metrics-card>
<!-- 待发货(可点击) -->
<app-metrics-card
title="待发货"
[value]="metrics.pendingShipment"
[trend]="metrics.pendingShipmentTrend"
icon="local_shipping"
iconColor="#faad14"
[clickable]="true"
(cardClick)="navigateToOrders('PendingShipment')">
</app-metrics-card>
所有 MetricsCardComponent 相关的单元测试均通过。
组件已完全实现并集成到 DashboardComponent 中。可以继续实现后续任务:
src/app/shared/components/metrics-card/src/app/pages/dashboard/dashboard.component.htmlsrc/app/core/models/dashboard.model.tssrc/app/shared/components/metrics-card/metrics-card.component.spec.ts