feat(透视表): 表格底部增加每列数量合计行
- 每块透视表底部 summary 行,统计各工序列的设备数合计 + 行总计 - 固定底部,方便查看每列总量
This commit is contained in:
@ -49,7 +49,7 @@ export default function MatrixBoard() {
|
||||
const matrixChunks = useMemo(() => {
|
||||
const keys = Array.from(new Set(data.map((d) => d.dimension_key)));
|
||||
if (keys.length === 0) return [];
|
||||
const chunks: { columns: any[]; dataSource: any[] }[] = [];
|
||||
const chunks: { columns: any[]; dataSource: any[]; keys: string[] }[] = [];
|
||||
|
||||
for (let i = 0; i < keys.length; i += CHUNK_MATRIX) {
|
||||
const chunkKeys = keys.slice(i, i + CHUNK_MATRIX);
|
||||
@ -99,7 +99,7 @@ export default function MatrixBoard() {
|
||||
{ title: "合计", dataIndex: "row_total", fixed: "right" as const, align: "center" as const, width: 90, render: (v: number) => <span className="font-bold text-blue-600">{v}</span> },
|
||||
];
|
||||
|
||||
chunks.push({ columns, dataSource: Array.from(rowsMap.values()) });
|
||||
chunks.push({ columns, dataSource: Array.from(rowsMap.values()), keys: chunkKeys });
|
||||
}
|
||||
return chunks;
|
||||
}, [data]);
|
||||
@ -159,6 +159,29 @@ export default function MatrixBoard() {
|
||||
size="small"
|
||||
pagination={false}
|
||||
scroll={{ x: "max-content" }}
|
||||
summary={(pageData: readonly any[]) => {
|
||||
const totals: Record<string, number> = {};
|
||||
let rowTotal = 0;
|
||||
for (const row of pageData) {
|
||||
rowTotal += row.row_total || 0;
|
||||
for (const k of chunk.keys) totals[k] = (totals[k] || 0) + (row[k] || 0);
|
||||
}
|
||||
return (
|
||||
<Table.Summary fixed>
|
||||
<Table.Summary.Row>
|
||||
<Table.Summary.Cell index={0}><span className="font-bold text-gray-800">合计</span></Table.Summary.Cell>
|
||||
{chunk.keys.map(k => (
|
||||
<Table.Summary.Cell key={k} index={0} align="center">
|
||||
<span className="font-semibold text-gray-700">{totals[k] || 0}</span>
|
||||
</Table.Summary.Cell>
|
||||
))}
|
||||
<Table.Summary.Cell index={0} align="center">
|
||||
<span className="font-bold text-blue-600">{rowTotal}</span>
|
||||
</Table.Summary.Cell>
|
||||
</Table.Summary.Row>
|
||||
</Table.Summary>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user