feat: 设备管理页面优化

dev_na
puz 2026-07-02 17:49:27 +08:00
parent 31d7a8a59f
commit 0d6acd1056
2 changed files with 38 additions and 20 deletions

View File

@ -1,4 +1,8 @@
.summary-stat-cards { .summary-stat-cards {
--summary-stat-columns: 4;
display: grid;
grid-template-columns: 1fr;
gap: 16px;
flex-shrink: 0; flex-shrink: 0;
min-width: 0; min-width: 0;
} }
@ -36,3 +40,15 @@
align-items: center; align-items: center;
line-height: 1; line-height: 1;
} }
@media (min-width: 576px) {
.summary-stat-cards {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 1200px) {
.summary-stat-cards {
grid-template-columns: repeat(var(--summary-stat-columns), minmax(0, 1fr));
}
}

View File

@ -1,5 +1,5 @@
import type { CSSProperties, ReactNode } from "react"; import type { CSSProperties, ReactNode } from "react";
import { Card, Col, Row, Statistic } from "antd"; import { Card, Statistic } from "antd";
import "./SummaryStatCards.css"; import "./SummaryStatCards.css";
export interface SummaryStatCardItem { export interface SummaryStatCardItem {
@ -16,26 +16,28 @@ interface SummaryStatCardsProps {
} }
export default function SummaryStatCards({ items, ariaLabel }: SummaryStatCardsProps) { export default function SummaryStatCards({ items, ariaLabel }: SummaryStatCardsProps) {
const columns = Math.max(items.length, 1);
return ( return (
<div className="summary-stat-cards" aria-label={ariaLabel}> <div
<Row gutter={[16, 16]}> className="summary-stat-cards"
{items.map((item) => ( style={{ "--summary-stat-columns": columns } as CSSProperties}
<Col xs={24} sm={12} xl={6} key={item.key}> aria-label={ariaLabel}
<Card className="summary-stat-cards__card" variant="borderless"> >
<Statistic {items.map((item) => (
title={<span className="summary-stat-cards__label">{item.label}</span>} <Card className="summary-stat-cards__card" variant="borderless" key={item.key}>
value={item.value} <Statistic
valueStyle={{ color: item.color, fontWeight: 700 } as CSSProperties} title={<span className="summary-stat-cards__label">{item.label}</span>}
prefix={ value={item.value}
<span className="summary-stat-cards__icon" style={{ color: item.color }}> valueStyle={{ color: item.color, fontWeight: 700 } as CSSProperties}
{item.icon} prefix={
</span> <span className="summary-stat-cards__icon" style={{ color: item.color }}>
} {item.icon}
/> </span>
</Card> }
</Col> />
))} </Card>
</Row> ))}
</div> </div>
); );
} }