当前位置: 首页 > news >正文

vxe-table 透视表分组汇总及排序基础配置

vxe-table 是基于 Vue 的高性能表格组件,其透视表(Pivot Table)功能支持灵活的分组、汇总与排序配置,以下是透视表分组汇总及排序的基础配置步骤,结合示例代码详细说明:

一、核心概念

  • 行维度(rows):作为透视表的行分组字段
  • 列维度(columns):作为透视表的列分组字段
  • 值维度(values):需要聚合计算的字段(如求和、计数)
  • 汇总配置:定义值维度的聚合方式(sum、count、avg 等)
  • 排序配置:对行 / 列分组结果或汇总值进行排序

二、基础配置步骤

1. 安装与引入

确保已安装 vxe-table 及依赖:
bash
 
运行
 
 
 
 
npm install vxe-table@next xe-utils@next
 
在 Vue 组件中引入:
vue
 
 
 
 
 
<template><vxe-pivot-table:data="tableData":fields="fields":pivot-config="pivotConfig"/>
</template><script setup>
import { VxePivotTable } from 'vxe-table'
import 'vxe-table/lib/style.css'
</script>
 

2. 定义数据源与字段配置

javascript
 
运行
 
 
 
 
// 示例数据源
const tableData = [{ region: '华东', product: '手机', quarter: 'Q1', sales: 100 },{ region: '华东', product: '手机', quarter: 'Q2', sales: 120 },{ region: '华北', product: '电脑', quarter: 'Q1', sales: 80 },{ region: '华北', product: '电脑', quarter: 'Q2', sales: 90 },
]// 字段配置(定义行、列、值维度)
const fields = {// 行分组字段rows: ['region', 'product'],// 列分组字段columns: ['quarter'],// 值字段(需汇总的字段)values: ['sales'],
}
 

3. 分组汇总配置

通过 pivotConfig.values 定义值字段的聚合方式,支持内置汇总方法或自定义:
javascript
 
运行
 
 
 
 
const pivotConfig = {// 汇总配置values: [{field: 'sales',// 聚合方式:sum(求和)、count(计数)、avg(平均值)、max/min 等aggregate: 'sum',// 自定义汇总列标题title: '销售额汇总',// 自定义汇总计算(可选,覆盖内置聚合)// aggregateMethod: (list) => list.reduce((acc, item) => acc + item.sales, 0)}],// 显示行/列总计showRowTotals: true,showColumnTotals: true,// 显示行/列子总计(多级分组时)showRowSubTotals: true,showColumnSubTotals: true,
}
 

4. 排序配置

支持对行分组结果列分组结果汇总值排序:
(1)行 / 列分组维度排序
通过 fields.rows/columns 的配置项排序:
javascript
 
运行
 
 
 
 
const fields = {rows: [{ field: 'region', sort: 'asc' }, // 行维度:region 升序{ field: 'product', sort: 'desc' } // product 降序],columns: [{ field: 'quarter', sort: (a, b) => a === 'Q1' ? -1 : 1 } // 自定义列排序(Q1 在前)],values: ['sales'],
}
 
(2)汇总值排序
通过 pivotConfig.sortBy 按汇总值排序:
javascript
 
运行
 
 
 
 
const pivotConfig = {values: [{ field: 'sales', aggregate: 'sum', title: '销售额汇总' }],// 按销售额汇总值降序排序(支持指定行/列维度)sortBy: [{field: 'sales', // 对应值字段order: 'desc', // 排序方向:asc/desc// 可选:指定排序维度(row/column)dimension: 'row'}],
}
 
(3)自定义排序函数
对分组结果或汇总值进行复杂排序:
javascript
 
运行
 
 
 
 
const pivotConfig = {// 自定义行排序:先按 region 分组,再按销售额汇总值降序sortMethod: (a, b) => {if (a.region !== b.region) {return a.region.localeCompare(b.region)}return b.salesSum - a.salesSum // salesSum 为汇总后的字段名},
}
 

三、完整示例代码

vue
 
 
 
 
 
<template><vxe-pivot-table:data="tableData":fields="fields":pivot-config="pivotConfig"borderheight="500px"/>
</template><script setup>
import { VxePivotTable } from 'vxe-table'
import 'vxe-table/lib/style.css'// 数据源
const tableData = [{ region: '华东', product: '手机', quarter: 'Q1', sales: 100 },{ region: '华东', product: '手机', quarter: 'Q2', sales: 120 },{ region: '华东', product: '平板', quarter: 'Q1', sales: 50 },{ region: '华北', product: '电脑', quarter: 'Q1', sales: 80 },{ region: '华北', product: '电脑', quarter: 'Q2', sales: 90 },{ region: '华北', product: '手机', quarter: 'Q2', sales: 70 },
]// 字段配置(行、列、值维度)
const fields = {rows: [{ field: 'region', title: '地区', sort: 'asc' },{ field: 'product', title: '产品', sort: 'desc' }],columns: [{ field: 'quarter', title: '季度', sort: (a, b) => a === 'Q1' ? -1 : 1 }],values: ['sales']
}// 透视表配置(汇总、排序)
const pivotConfig = {values: [{field: 'sales',aggregate: 'sum',title: '销售额(元)',formatter: (value) => value.toFixed(0) // 格式化显示}],// 显示总计/子总计showRowTotals: true,showColumnTotals: true,showRowSubTotals: true,// 按销售额汇总值降序排序sortBy: [{ field: 'sales', order: 'desc', dimension: 'row' }]
}
</script>
 

四、关键配置说明

  1. 汇总类型:内置支持 sum(求和)、count(计数)、avg(平均值)、max(最大值)、min(最小值)、distinctCount(去重计数)等。
  2. 排序优先级sortBy 优先级高于行 / 列维度的 sort,自定义 sortMethod 优先级最高。
  3. 多级分组:当行 / 列维度为多级(如 ['region', 'product']),可通过 showRowSubTotals 显示子分组汇总。
  4. 格式化:通过 formatter 自定义汇总值的显示格式(如金额、百分比)。

五、拓展功能

  • 动态调整维度:结合 vxe-pivot-field 组件实现行 / 列 / 值维度的动态切换。
  • 自定义汇总逻辑:通过 aggregateMethod 实现复杂聚合(如加权平均)。
  • 排序重置:调用表格实例的 reloadSort 方法重置排序。
http://www.zskr.cn/news/65208.html

相关文章:

  • 2025年哈尔滨一站式家居设备服务公司TOP5推荐,平价靠谱
  • 11.29新开始
  • 擦擦视频去字幕水印」深度介绍:数字媒体领域的高效去水印解决方案
  • 2025年pvdf车棚定做厂家排行榜单
  • 2025比较好的美团点评代运营专业公司:助力汽服门店线上精准
  • 2025年哈尔滨舒适家居设备服务商TOP5推荐:盛通舒适+基
  • 2025年锌钢阳台护栏订做厂家权威推荐榜单:不锈钢锌钢护栏/锌钢防护栏‌/组装锌钢护栏‌源头厂家精选
  • 合并两个排序的链表
  • 链表中倒数第k个结点
  • PbRL | 近两年论文阅读的不完全总结
  • 2025年衡水高性价比婚恋介绍服务优选排行榜,婚恋介绍哪家性
  • 【设计模式笔记10】:简单工厂模式示例 - 详解
  • 5-11 关键活动 (30分)
  • 5-8 File Transfer (25分)
  • 2025年复合肽饮正品公司权威推荐榜单:瘦身复合肽饮品/沙棘肽复合饮品‌/复合肽饮品测评‌源头公司精选
  • nginx限流
  • 5-3 树的同构 (25分)
  • 2025西安网站建设公司推荐3家口碑好的网站制作公司
  • NOIP2025 游记——希望不要是尾声
  • 武汉汽车后市场线上代运营公司排名推荐,武汉车视界信息服务有限
  • 2025网红景区空中飞艇制造厂商TOP5权威推荐:甄选专业供
  • Google生成式UI下一代人机交互技术
  • 2025年广东机器人服务商研发生产厂家推荐:广东知名机器人研
  • 完整教程:座舱出行Agent实战(三):专能化架构如何实现效率与稳定性的双重飞跃
  • 【AI翻译】什么是第三方API?优势、应用场景与最佳实践
  • 2025年度太原成人电气自动化培训班口碑推荐,专业介绍与初级
  • 在AI技术唾手可得的时代,挖掘新需求成为制胜关键——某知名AI开发工具需求洞察
  • 2025年波纹伸缩软管厂家权威推荐榜单:暖通管道软管/高压法兰软管‌/沉降软管‌源头厂家精选
  • 2025年玻璃钢厂家权威推荐榜单:玻璃钢夹砂管道/一体化泵站/模压化粪池源头厂家精选
  • 2025年新疆电线电缆厂家权威推荐榜单:电力电缆/高温电缆/矿用电缆源头厂家精选