一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

vxe-table数据分组与单元格图表实战:柱状图及饼图渲染详解

时间:2026-05-28 18:25:01 编辑:袖梨 来源:一聚教程网

数据可视化表格通过vxe-table的分组聚合与单元格渲染功能,能高效实现分组数据与图表的混合展示。这种技术让销售对比、完成率等数据趋势一目了然。

下面演示如何在分组表格中为每行数据渲染柱状图(计划vs实际)和饼图(占比)。

<template>
  <div>
    <vxe-grid ref="gridRef" v-bind="gridOptions">vxe-grid>
  div>
template><script setup>
import { reactive } from 'vue'const salesAmountsCellRender = reactive({
  name: 'bar',
  props: {
    bar: {
      max: 500 // 柱状图最大值(用于统一坐标尺度)
    },
    colors: ['#91C7AE', '#D48265'], // 系列颜色:[计划, 实际]
    labels: ['计划销售', '实际销售'],  // 图例标签
    tooltip: {
      formatter: '{label}:{value}元'
    },
    label: {
      formatter: '{value}元'
    }
  }
})const salesCompletenessCellRender = reactive({
  name: 'pie',
  props: {
    colors: ['#91C7AE', '#D48265'],
    labels: ['计划销售', '实际销售'],
    tooltip: {
      formatter: '{label}:{value}元'
    }
  }
})const gridOptions = reactive({
  height: 500,
  showOverflow: true,
  aggregateConfig: {
    groupFields: ['name']
  },
  columnConfig: {
    resizable: true
  },
  columns: [
    { type: 'seq', width: 70 },
    { field: 'group', title: 'Group', minWidth: 140, rowGroupNode: true },
    { field: 'date', title: '日期', width: 140 },
    { field: 'name', title: '产品名称' },
    { field: 'department', title: '部门' },
    { field: 'salesAmounts', title: '柱状图', minWidth: 160, cellRender: salesAmountsCellRender },
    { field: 'salesCompleteness', title: '饼图', width: 140, cellRender: salesCompletenessCellRender }
  ],
  data: [
    { id: 10001, name: '笔记本', department: '销售1部', actualAmount: 80, plannedAmount: 100, salesAmounts: [100, 80], salesCompleteness: [100, 80], date: '2025-02-01' },
    { id: 10002, name: '手机', department: '销售3部', actualAmount: 140, plannedAmount: 120, salesAmounts: [120, 140], salesCompleteness: [120, 140], date: '2025-01-01' },
    { id: 10003, name: '键盘', department: '销售2部', actualAmount: 220, plannedAmount: 200, salesAmounts: [200, 220], salesCompleteness: [200, 220], date: '2025-05-01' },
    { id: 10004, name