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

分享项目中使用 vxe-table 进行数据分组汇总斌支持排序

分享项目中使用 vxe-table 进行数据分组汇总斌支持排序,通过配置 aggregate-config.groupFields 指定分组字段

查看官网:https://vxetable.cn
gitbub:https://github.com/x-extends/vxe-table
gitee:https://gitee.com/x-extends/vxe-table

效果

Video_2025-11-14_143549-ezgif.com-video-to-gif-converter (2)

代码

通过 aggFunc 自动显示子项计数,如果需要自定义计算逻辑,比如合计数量,可以通过 aggregate-config.calcValuesMethod 自定义列的汇总计算值。

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({height: 500,aggregateConfig: {groupFields: ['role']},columns: [{ field: 'name', title: 'Name', minWidth: 300, rowGroupNode: true },{ field: 'role', title: 'Role' },{ field: 'sex', title: 'Sex' },{ field: 'age', title: 'Age', sortable: true, aggFunc: true },{ field: 'address', title: 'Address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Woman', age: 28, date: '2025-02-01', address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Man', age: 22, date: '2025-01-01', address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Woman', age: 32, date: '2025-05-01', address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Man', age: 32, date: '2025-01-01', address: 'test abc' },{ id: 10005, name: 'Test5', role: 'Develop', sex: 'Man', age: 30, date: '2025-01-01', address: 'Shanghai' },{ id: 10006, name: 'Test6', role: 'Designer', sex: 'Man', age: 30, date: '2025-03-01', address: 'test abc' },{ id: 10007, name: 'Test7', role: 'Test', sex: 'Woman', age: 29, date: '2025-05-01', address: 'test abc' },{ id: 10008, name: 'Test8', role: 'PM', sex: 'Woman', age: 35, date: '2025-11-01', address: 'test abc' },{ id: 10009, name: 'Test9', role: 'Test', sex: 'Man', age: 21, date: '2025-05-01', address: 'test abc' },{ id: 10010, name: 'Test10', role: 'PM', sex: 'Woman', age: 28, date: '2025-03-01', address: 'test abc' },{ id: 10011, name: 'Test11', role: 'Test', sex: 'Woman', age: 29, date: '2025-03-01', address: 'test abc' },{ id: 10012, name: 'Test12', role: 'Develop', sex: 'Man', age: 37, date: '2025-10-01', address: 'test abc' },{ id: 10013, name: 'Test13', role: 'Test', sex: 'Woman', age: 24, date: '2025-02-01', address: 'test abc' },{ id: 10014, name: 'Test14', role: 'Develop', sex: 'Man', age: 34, date: '2025-08-01', address: 'test abc' },{ id: 10015, name: 'Test15', role: 'Designer', sex: 'Man', age: 21, date: '2025-05-01', address: 'test abc' },{ id: 10016, name: 'Test16', role: 'Designer', sex: 'Woman', age: 21, date: '2025-10-01', address: 'test abc' },{ id: 10017, name: 'Test17', role: 'Test', sex: 'Man', age: 31, date: '2025-12-01', address: 'test abc' },{ id: 10018, name: 'Test18', role: 'Develop', sex: 'Woman', age: 32, date: '2025-10-01', address: 'test abc' },{ id: 10019, name: 'Test19', role: 'Test', sex: 'Man', age: 37, date: '2025-02-01', address: 'test abc' },{ id: 10020, name: 'Test20', role: 'Develop', sex: 'Man', age: 41, date: '2025-03-01', address: 'test abc' }]
})
</script>

自定义汇总方式

通自定义 aggregate-config.calcValuesMethod 对子项进行汇总合计,具体计算逻辑自己写非常灵活。

image

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({height: 500,showOverflow: true,aggregateConfig: {groupFields: ['role'],calcValuesMethod ({ column, children }) {if (column.field === 'num') {let numSum = 0children.forEach(item => {numSum += item.num})return numSum}if (column.field === 'age') {let ageCount = 0children.forEach(item => {ageCount += item.age})return Math.floor(ageCount / children.length)}return 0}},columns: [{ type: 'seq', width: 70 },{ field: 'name', title: 'Name', minWidth: 300, rowGroupNode: true },{ field: 'role', title: 'Role' },{ field: 'num', title: 'Num', aggFunc: true },{ field: 'age', title: 'Age', aggFunc: true },{ field: 'address', title: 'Address' }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Woman', age: 28, num: 63, date: '2025-02-01', address: 'test abc' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Man', age: 22, num: 63, date: '2025-01-01', address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Woman', age: 32, num: 10, date: '2025-05-01', address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Man', age: 32, num: 24, date: '2025-01-01', address: 'test abc' },{ id: 10005, name: 'Test5', role: 'Develop', sex: 'Man', age: 30, num: 98, date: '2025-01-01', address: 'Shanghai' },{ id: 10006, name: 'Test6', role: 'Designer', sex: 'Man', age: 30, num: 46, date: '2025-03-01', address: 'test abc' },{ id: 10007, name: 'Test7', role: 'Test', sex: 'Woman', age: 29, num: 35, date: '2025-05-01', address: 'test abc' },{ id: 10008, name: 'Test8', role: 'PM', sex: 'Woman', age: 35, num: 84, date: '2025-11-01', address: 'test abc' },{ id: 10009, name: 'Test9', role: 'Test', sex: 'Man', age: 21, num: 25, date: '2025-05-01', address: 'test abc' },{ id: 10010, name: 'Test10', role: 'PM', sex: 'Woman', age: 28, num: 32, date: '2025-03-01', address: 'test abc' },{ id: 10011, name: 'Test11', role: 'Test', sex: 'Woman', age: 29, num: 24, date: '2025-03-01', address: 'test abc' },{ id: 10012, name: 'Test12', role: 'Develop', sex: 'Man', age: 37, num: 28, date: '2025-10-01', address: 'test abc' },{ id: 10013, name: 'Test13', role: 'Test', sex: 'Woman', age: 24, num: 38, date: '2025-02-01', address: 'test abc' },{ id: 10014, name: 'Test14', role: 'Develop', sex: 'Man', age: 34, num: 46, date: '2025-08-01', address: 'test abc' },{ id: 10015, name: 'Test15', role: 'Designer', sex: 'Man', age: 21, num: 48, date: '2025-05-01', address: 'test abc' },{ id: 10016, name: 'Test16', role: 'Designer', sex: 'Woman', age: 21, num: 59, date: '2025-10-01', address: 'test abc' },{ id: 10017, name: 'Test17', role: 'Test', sex: 'Man', age: 31, num: 81, date: '2025-12-01', address: 'test abc' },{ id: 10018, name: 'Test18', role: 'Develop', sex: 'Woman', age: 32, num: 75, date: '2025-10-01', address: 'test abc' },{ id: 10019, name: 'Test19', role: 'Test', sex: 'Man', age: 37, num: 80, date: '2025-02-01', address: 'test abc' },{ id: 10020, name: 'Test20', role: 'Develop', sex: 'Man', age: 41, num: 60, date: '2025-03-01', address: 'test abc' }]
})
</script>

https://gitee.com/x-extends/vxe-table

http://www.zskr.cn/news/64867.html

相关文章:

  • 2025年口碑好的医药冷链国际空运专业技术口碑榜
  • 2025年知名的赣州装修公司别墅装修/赣州装修公司别墅设计方案
  • 2025年家电产品外观设计公司推荐排行榜前十强
  • 廊坊市农村自建房找谁好?河北廊坊市自建房公司/机构深度评测口碑推荐榜
  • 2025年LED户外灯具定做厂家权威推荐榜单:LED洗墙灯/LED地埋灯/LED霓虹灯带源头厂家精选
  • 2025年优质成都制氢设备厂家推荐及采购指南
  • 完整教程:【机器学习入门】55.[第5章 监督学习算法] 逻辑回归的真正实力:可解释与稳健的基线王者
  • 2025年家电产品外观设计公司排行 top 5:专业选择与经验分享
  • 2025年靠谱的四川种苗基地Top口碑厂家推荐
  • 用mmcv加载和保存数据,mmcv.load, mmcv.dump
  • 2025年质量好的写字楼绿植租赁厂家最新权威推荐排行榜
  • 换热器防腐领域十大龙头企业最新排名
  • 2025年热门的企业团餐配送/公司团餐配送最新推荐及选购参考公司
  • 2025年11月软膜灯箱最新推荐厂家,商业空间软膜灯箱、酒店软膜灯箱、别墅装饰软膜灯箱、户外广告软膜灯箱、室内照明软膜灯箱、定制化软膜灯箱
  • 2025年知名的设计师三段力缓冲铰链厂家最新TOP实力排行
  • 2025年比较好的澳洲海外仓中转综合物流方案推荐榜
  • 2025老年游企业团建出境定制旅行TOP5推荐:诚信渠道助
  • 2025云南有名的通信获客公司TOP5权威推荐:AI赋能获客
  • 2025年南通床上用品销售厂家排行榜TOP5:红九窗帘领跑行业
  • 错误集
  • 2025年11月副业平台推荐榜:基于多维度数据的中立分析与选择指南
  • 2025年11月上海装修公司推荐:高性价比解决方案全解析
  • Git可视化管理工具SourceTree管理代码仓库
  • 2025年知名的T型龙骨/龙骨热门厂家推荐榜单
  • AI元人文:探索内观照叙事模型的实现——从哲学构想到技术基石
  • vue for devexpress report 集成到项目内的总结
  • 2025年11月北京婚礼策划公司推荐:一份基于市场数据的客观选择列表
  • 2025年11月北京婚礼策划公司推荐:一份详尽的榜单与选择指南
  • 2025年知名的门座式起重机行业内口碑厂家排行榜
  • 2025年11月助听器验配机构推荐榜单与选择指南:一份权威机构评测分析