AvueAvue
首页
  • 开发指南
  • Skill开发
  • 在线测试工具
  • Form组件
  • Crud组件
  • Default组件
  • Data组件
  • Component组件
产品
工作台
授权
联系
2.x文档
个人支付接口
首页
  • 开发指南
  • Skill开发
  • 在线测试工具
  • Form组件
  • Crud组件
  • Default组件
  • Data组件
  • Component组件
产品
工作台
授权
联系
2.x文档
个人支付接口
  • CRUD API
  • Object对象用法
  • 表格虚拟化
  • 分页
  • 搜索
  • 表头配置
  • 表格行配置项
  • 表格列配置项
  • 数据字典
  • 操作栏配置
  • 增删改查方法
  • 按钮文案和图标
  • 按钮自定义
  • 弹窗表单配置
  • 深层结构数据
  • 卡片模式
  • 统计合计
  • 导入导出
  • 表格树
  • 父子表
  • 行编辑
  • 权限控制
  • 动态行列合并
  • 空状态
  • 等待加载
  • 拖拽排序
  • 其它类型
  • 表格高级用法
  • 大表哥(宇宙最强表格)
  • CRUD模块封装
  • CRUD极简增删改查封装

统计合计

配置相应的属性后,在表格末尾即可达到统计合计功能

普通用法

效果预览可直接操作下方示例

showSummary设置为true即可开启统计合计功能,sumColumnList属性配置需要计算的表格列配置,其中name为列的prop值,type为需要计算的类型,目前支持(合计 / 平均 / 统计)三个大功能,后期将会加强表格的计算能力

正在加载示例…
<template>
  <avue-crud :option="option"
             :data="data"></avue-crud>
</template>

<script setup>
import { ref } from 'vue';

const data = ref([
  { sum: 5, avg: 10, count: 2 },
  { sum: 15, avg: 20, count: 1 }
]);

const option = ref({
  index: true,
  showSummary: true,
  sumColumnList: [
    { label: '自定义前缀:', name: 'sum', type: 'sum', decimals: 1 },
    { name: 'avg', type: 'avg' },
    { name: 'count', type: 'count' }
  ],
  column: [
    { label: '相加', prop: 'sum' },
    { label: '平均值', prop: 'avg' },
    { label: '统计', prop: 'count' }
  ]
});
</script>

自定义计算

效果预览可直接操作下方示例
正在加载示例…
<template>
  <avue-crud :option="option"
             :data="data"
             :summary-method="summaryMethod"
             @selection-change="selectionChange"></avue-crud>
</template>

<script setup>
import { ref } from 'vue';

const selectList = ref([]);
const data = ref([
  { sum: 5, avg: 10, count: 2 },
  { sum: 15, avg: 20, count: 1 }
]);

const option = ref({
  selection: true,
  index: true,
  showSummary: true,
  column: [
    { label: '相加', prop: 'sum' },
    { label: '平均值', prop: 'avg' },
    { label: '统计', prop: 'count' }
  ]
});

const selectionChange = (list) => {
  selectList.value = list;
};

const summaryMethod = ({ columns }) => {
  const sums = [];
  if (columns.length > 0) {
    columns.forEach((column, index) => {
      let prop = column.property;
      if (['sum', 'avg', 'count'].includes(prop)) {
        let values = selectList.value.map(item => Number(item[prop] || 0));
        let all = values.length !== 0 ? values.reduce((a, b) => a + b) : 0;
        if (prop === 'sum') {
          sums[index] = all;
        } else if (prop === 'avg') {
          sums[index] = values.length ? all / values.length : 0;
        } else if (prop === 'count') {
          sums[index] = values.length;
        }
      } else {
        sums[index] = '-';
      }
    });
  }
  return sums;
};
</script>
最后更新:
贡献者: smallwei
Prev
卡片模式
Next
导入导出