CodeSpirit 提供了统计卡片自动生成功能,允许开发者在控制器上通过强类型配置自动在页面顶部生成统计指标卡片。统计卡片以卡片形式展示关键指标数据,支持自动刷新、响应式布局和自定义样式。


统计卡片适用于需要在页面顶部展示关键指标的场景,例如:
在 Configuration/Statistics 目录下创建配置类:
using CodeSpirit.Amis.StatisticsCards;
namespaceYourApi.Configuration.Statistics;
/// <summary>
/// 定时任务统计卡片配置
/// </summary>
publicclassScheduledTaskStatisticsConfig : StatisticsCardsConfigBase
{
public override void Configure(StatisticsCardsBuilder builder)
{
builder
.SetApi("statistics/cards")
.SetRefreshInterval(60)
.SetColumnsCount(4)
.SetGap(15)
.AddCard("todayExecutions", "今日执行")
.WithIcon("fa-play-circle")
.WithColor(CardColor.Info)
.AddCard("todaySuccessExecutions", "今日成功")
.WithIcon("fa-check-circle")
.WithColor(CardColor.Success)
.AddCard("todayFailedExecutions", "今日失败")
.WithIcon("fa-times-circle")
.WithColor(CardColor.Danger)
.AddCard("successRate", "成功率")
.WithIcon("fa-chart-line")
.WithColor(CardColor.Warning);
}
}在控制器类上添加 StatisticsCards 特性:
using CodeSpirit.Amis.Attributes;
using YourApi.Configuration.Statistics;
[DisplayName("定时任务")]
[StatisticsCards<ScheduledTaskStatisticsConfig>]
public class ScheduledTasksController : ApiControllerBase
{
// 控制器代码...
}在控制器中添加返回统计卡片数据的 API 方法:
/// <summary>
/// 获取统计卡片数据
/// </summary>
[HttpGet("statistics/cards")]
[DisplayName("获取统计卡片")]
publicasync Task<ActionResult<ApiResponse>> GetStatisticsCards()
{
var stats = await _queryService.GetTaskStatisticsAsync();
var data = new
{
todayExecutions = stats.TodayExecutions,
todaySuccessExecutions = stats.TodaySuccessExecutions,
todayFailedExecutions = stats.TodayFailedExecutions,
successRate = $"{stats.SuccessRate:F1}%"
};
return Ok(ApiResponse<object>.Success(data));
}方法 | 参数 | 说明 | 默认值 |
|---|---|---|---|
SetApi | string api | 统计数据 API 相对路径 | "statistics/cards" |
SetRefreshInterval | int seconds | 自动刷新间隔(秒),0 表示不自动刷新 | 0 |
SetColumnsCount | int count | 每行卡片列数 | 4 |
SetGap | int gap | 卡片间距(像素) | 15 |
AddCard | string field, string title | 添加卡片,返回构建器以继续配置 | - |
WithIcon | string icon | 设置当前卡片的 FontAwesome 图标 | - |
WithColor | CardColor color | 设置当前卡片的颜色主题 | - |
枚举值 | 说明 | 适用场景 |
|---|---|---|
Info | 信息色(蓝色) | 一般信息展示 |
Success | 成功色(绿色) | 成功指标 |
Warning | 警告色(黄色) | 需要关注的指标 |
Danger | 危险色(红色) | 错误或异常指标 |
Primary | 主色 | 主要指标 |
Secondary | 次色 | 次要指标 |
public class BasicStatisticsConfig : StatisticsCardsConfigBase
{
public override void Configure(StatisticsCardsBuilder builder)
{
builder
.SetApi("statistics/cards")
.AddCard("totalCount", "总数")
.WithIcon("fa-database")
.WithColor(CardColor.Primary)
.AddCard("activeCount", "活跃数")
.WithIcon("fa-check-circle")
.WithColor(CardColor.Success);
}
}public classFullStatisticsConfig : StatisticsCardsConfigBase
{
public override void Configure(StatisticsCardsBuilder builder)
{
builder
.SetApi("statistics/cards")
.SetRefreshInterval(60) // 每 60 秒自动刷新
.SetColumnsCount(4) // 每行 4 个卡片
.SetGap(20) // 卡片间距 20px
.AddCard("todayOrders", "今日订单")
.WithIcon("fa-shopping-cart")
.WithColor(CardColor.Info)
.AddCard("pendingOrders", "待处理")
.WithIcon("fa-clock")
.WithColor(CardColor.Warning)
.AddCard("completedOrders", "已完成")
.WithIcon("fa-check-circle")
.WithColor(CardColor.Success)
.AddCard("cancelledOrders", "已取消")
.WithIcon("fa-times-circle")
.WithColor(CardColor.Danger);
}
}统计卡片 API 应返回扁平化的 JSON 对象,字段名与配置中的 field 参数对应:
{
"code":200,
"message":"success",
"data":{
"todayExecutions":125,
"todaySuccessExecutions":118,
"todayFailedExecutions":7,
"successRate":"94.4%"
}
}统计卡片会自动显示在页面顶部,位于 CRUD 列表或 Tabs 之前:
┌─────────────────────────────────────────────────┐
│ [📊 今日执行] [✅ 今日成功] [❌ 今日失败] [📈 成功率] │
│ 125 118 7 94.4% │
└─────────────────────────────────────────────────┘
│ [筛选] [刷新] [新增] [批量操作] ... │
│ │
│ 任务列表表格 ... │统计卡片支持响应式布局,会根据屏幕尺寸自动调整:
使用驼峰命名法,与 API 返回的字段名保持一致:
.AddCard("todayExecutions", "今日执行") // ✅ 推荐
.AddCard("TodayExecutions", "今日执行") // ❌ 不推荐使用 FontAwesome 图标,选择语义明确的图标:
.WithIcon("fa-play-circle") // ✅ 执行相关
.WithIcon("fa-check-circle") // ✅ 成功相关
.WithIcon("fa-times-circle") // ✅ 失败相关
.WithIcon("fa-chart-line") // ✅ 统计相关根据指标含义选择合适的颜色:
CardColor.Success(绿色)CardColor.Danger(红色)CardColor.Warning(黄色)CardColor.Info(蓝色)根据数据更新频率合理设置刷新间隔:
SetRefreshInterval(0))建议每行显示 2-4 个卡片,过多会影响可读性:
.SetColumnsCount(4) // ✅ 推荐:2-4 个
.SetColumnsCount(6) // ⚠️ 不推荐:过多卡片A: 检查以下几点:
StatisticsCards<TConfig> 特性StatisticsCardsConfigBaseA: 统计卡片使用 Amis Card 组件,可以通过 CSS 类名自定义样式。卡片会自动应用 statistics-card 类名。
A: 目前每个控制器只支持一组统计卡片。如需多个统计区域,可以在配置类中添加更多卡片。
A: 有两种方式:
SetRefreshInterval 设置刷新间隔统计卡片功能基于以下组件实现:
统计卡片会自动嵌入到 Page 组件的 body 数组中,作为第一个元素显示。
测试账号的链接及密码获取方式如下: 请在 “CodeSpirit - 码灵” 公众号对话框中发送关键词 “体验账号” ,系统将自动为您推送相关信息。
本文分享自 CodeSpirit-码灵 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!