vxe-table 透視表分組彙總及排序基礎配置,對數據進行彙總後,支持對彙總及子項進行排序。
通過拖拽列到聚合列表,自動對數據進行合計彙總。設置 custom-config.allowGroup 和 custom-config.allowValues 啓用拖拽功能

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

效果

extend_pivot_table_table_custom_sort

代碼

通過 agg-func 設置聚合函數,會自動根據分組數據進行數據彙總,排序時會自動根據彙總結果進行排序

<template>
  <div>
    <vxe-grid v-bind="gridOptions"></vxe-grid>
  </div>
</template>

<script setup>
import { reactive } from 'vue'

const gridOptions = reactive({
  height: 600,
  showOverflow: true,
  aggregateConfig: {
    groupFields: ['department'],
    mode: 'default' // 通過 rowGroupNode 指定字段來展示層級關係
  },
  columnConfig: {
    resizable: true
  },
  customConfig: {
    allowGroup: true, // 允許自定義聚合分組配置
    allowValues: true // 允許自定義聚合函數配置
  },
  toolbarConfig: {
    custom: true
  },
  columns: [
    { type: 'seq', width: 70 },
    { field: 'department', title: '部門', minWidth: 200, rowGroupNode: true },
    { field: 'name', title: '產品名稱', width: 140 },
    { field: 'date', title: '日期', width: 140 },
    { field: 'actualAmount', title: '實際銷售', width: 140, aggFunc: 'sum', sortable: true },
    { field: 'plannedAmount', title: '計劃銷售', width: 140, aggFunc: 'sum', sortable: true }
  ],
  data: [
    { id: 10001, name: '筆記本', department: '銷售1部', actualAmount: 80, plannedAmount: 100, date: '2025-02-01' },
    { id: 10002, name: '手機', department: '銷售3部', actualAmount: 140, plannedAmount: 120, date: '2025-01-01' },
    { id: 10003, name: '鍵盤', department: '銷售2部', actualAmount: 220, plannedAmount: 200, date: '2025-05-01' },
    { id: 10004, name: '鼠標', department: '銷售1部', actualAmount: 110, plannedAmount: 140, date: '2025-01-01' },
    { id: 10005, name: '筆記本', department: '銷售2部', actualAmount: 40, plannedAmount: 90, date: '2025-01-01' },
    { id: 10006, name: '鼠標', department: '銷售4部', actualAmount: 40, plannedAmount: 120, date: '2025-03-01' },
    { id: 10007, name: '鍵盤', department: '銷售1部', actualAmount: 234, plannedAmount: 300, date: '2025-05-01' },
    { id: 10008, name: '手機', department: '銷售4部', actualAmount: 146, plannedAmount: 240, date: '2025-11-01' },
    { id: 10009, name: '筆記本', department: '銷售3部', actualAmount: 78, plannedAmount: 120, date: '2025-05-01' },
    { id: 10010, name: '筆記本', department: '銷售4部', actualAmount: 100, plannedAmount: 130, date: '2025-03-01' },
    { id: 10011, name: '手機', department: '銷售2部', actualAmount: 146, plannedAmount: 150, date: '2025-03-01' },
    { id: 10012, name: '鍵盤', department: '銷售4部', actualAmount: 130, plannedAmount: 130, date: '2025-10-01' },
    { id: 10013, name: '手機', department: '銷售2部', actualAmount: 140, plannedAmount: 80, date: '2025-02-01' },
    { id: 10014, name: '筆記本', department: '銷售1部', actualAmount: 200, plannedAmount: 100, date: '2025-08-01' },
    { id: 10015, name: '鍵盤', department: '銷售3部', actualAmount: 320, plannedAmount: 300, date: '2025-05-01' },
    { id: 10016, name: '筆記本', department: '銷售4部', actualAmount: 380, plannedAmount: 400, date: '2025-10-01' },
    { id: 10017, name: '鼠標', department: '銷售1部', actualAmount: 34, plannedAmount: 200, date: '2025-12-01' },
    { id: 10018, name: '鍵盤', department: '銷售4部', actualAmount: 100, plannedAmount: 150, date: '2025-10-01' },
    { id: 10019, name: '鼠標', department: '銷售3部', actualAmount: 90, plannedAmount: 120, date: '2025-02-01' },
    { id: 10020, name: '手機', department: '銷售2部', actualAmount: 40, plannedAmount: 50, date: '2025-03-01' }
  ]
})
</script>

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