010:vue结合el-table实现表格小计总计需求(summary-method)

news/2024/6/18 21:37:48 标签: vue.js, elementui, summary-method, 小计, 总计

文章目录

  • 1. 实现效果
  • 2. 核心部分
  • 3. 完整组件代码
  • 4. 注意点

1. 实现效果

在这里插入图片描述

2. 核心部分

  1. el-table 添加如下配置,添加 show-summary 属性,配置 summary-method 函数
<el-table
  .......
  show-summary
  :summary-method="getSummaries"
>
	......
</el-table>
  1. getSummaries 计算小计/总计逻辑
getSummaries(param) {
  // 计算小计
  let result = this.tableData
  let sumTotalData = Object.assign({}, emptyTotalData)
  result.forEach((item) => {
    sumTotalData.age += Number(item.age)
    sumTotalData.height += Number(item.height)
  })
  // 计算总计
  let totalResult = this.statistics
  return [
    <span>
      <strong> 小计 </strong>
      <br />
      <strong> 总计 </strong>
    </span>,
    <span> </span>,
    <span> </span>,
    <span>
      <span> {sumTotalData.age} </span> <br />
      <span> {totalResult.age} </span>
    </span>,
    <span>
      <span> {sumTotalData.height} </span> <br />
      <span> {totalResult.height} </span>
    </span>,
  ]
},

3. 完整组件代码

<template>
  <div class="home">
    <div class="body">
      <el-table
        :data="tableData"
        border
        row-key="date"
        class="draggable-table"
        style="width: 100%"
        show-summary
        :summary-method="getSummaries"
      >
        <el-table-column type="index" label="序号" width="200" />
        <el-table-column prop="date" label="日期" />
        <el-table-column prop="name" label="姓名" />
        <el-table-column prop="age" label="年龄" />
        <el-table-column prop="height" label="身高" />
      </el-table>
    </div>
  </div>
</template>

<script>
  import Sortable from 'sortablejs'
  let emptyTotalData = {
    age: 0,
    height: 0,
  }
  export default {
    name: 'Demo',
    data() {
      return {
        tableData: [], //table数据
        statistics: 0, //总计数据
      }
    },
    mounted() {
      // 调用后端接口table数据
      this.tableData = [
        { date: '2024-01-02', name: '张三1', age: '10', height: '165' },
        { date: '2024-01-03', name: '李四2', age: '11', height: '174' },
        { date: '2024-01-04', name: '王五3', age: '12', height: '174' },
        { date: '2024-01-05', name: '麻六4', age: '14', height: '185' },
        { date: '2024-01-07', name: 'kk5', age: '44', height: '179' },
        { date: '2024-01-08', name: 'fantay6', age: '21', height: '171' },
      ]
      // 调用后端接口返回的总计数据
      this.statistics = {
        age: '112',
        height: '1048',
      }
    },
    methods: {
      getSummaries(param) {
        // 计算小计
        let result = this.tableData
        let sumTotalData = Object.assign({}, emptyTotalData)
        result.forEach((item) => {
          sumTotalData.age += Number(item.age)
          sumTotalData.height += Number(item.height)
        })
        // 计算总计
        let totalResult = this.statistics
        return [
          <span>
            <strong> 小计 </strong>
            <br />
            <strong> 总计 </strong>
          </span>,
          <span> </span>,
          <span> </span>,
          <span>
            <span> {sumTotalData.age} </span> <br />
            <span> {totalResult.age} </span>
          </span>,
          <span>
            <span> {sumTotalData.height} </span> <br />
            <span> {totalResult.height} </span>
          </span>,
        ]
      },
    },
  }
</script>

<style scoped lang="scss">
  .home {
    .body {
      width: 890px;
      height: 500px;
      border: #31aab2 solid 10px;
      box-sizing: border-box;
      padding: 20px;
      box-sizing: border-box;
    }
  }
</style>

4. 注意点

  1. 没什么注意的,比较简单,记录下,方便自己以后查看 😎

http://www.niftyadmin.cn/n/5331900.html

相关文章

Linux利用标准c库对文件操作

这里的思路和之前的‘Linux下文件的创建写入读取编程‘的思路是一样的&#xff0c;都是从介绍API的函数功能开始。都是在Linux下操作文件&#xff0c;但是前者是UNIX系统调用函数&#xff0c;后者是ANSIC标准中的C语言库函数。它们有着不同的适用范围&#xff0c;具体有不同&am…

云服务器CVM_弹性云主机_云计算服务器——腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

lua使用resty.http做nginx反向代理(https请求,docker容器化部署集群),一个域名多项目转发

下载使用 链接&#xff1a;https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg 提取码&#xff1a;htay –来自百度网盘超级会员V5的分享 在根目录下执行: # 从 github 上下载文件 git clone https://github.com/ledgetech/lua-resty-http.git # 将 lua-resty-http/lib/ 下的 r…

面经-redis

什么是Redis Redis(Remote Dictionary Server)键只能为字符串&#xff0c;值&#xff1a;字符串、列表、集合、散列表、有序集合。Redis 用来做分布式锁。支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 Redis为什么这么快 完全基于内存&#xff0c;数据结构简单…

Unreal Engine(UE5)中构建离线地图服务

1. 首先需要用到3个软件&#xff0c;Unreal Engine&#xff0c;gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发&#x…

el-dialog嵌套使用,只显示遮罩层的问题

直接上解决方法 <!-- 错误写法 --><el-dialog><el-dialog></el-dialog></el-dialog><!-- 正确写法 --><el-dialog></el-dialog><el-dialog></el-dialog>我是不建议嵌套使用的&#xff0c;平级也能调用&#xff0c…

TypeError the JSON object must be str, bytes or bytearray, not ‘list‘

在使用python的jason库时&#xff0c;偶然碰到以下问题 TypeError: the JSON object must be str, bytes or bytearray, not ‘list’ 通过如下代码可复现问题 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import json >>> ra json.loads(a) Trac…

ArcGIS Pro 如何新建布局

你是否已经习惯了在ArcGIS中数据视图和布局视图之间来回切换&#xff0c;到了ArcGIS Pro中却找不到二者之间切换的按钮&#xff0c;即使新建布局后却发现地图怎么却是一片空白。 这一切的一切都是因为ArcGIS Pro的功能框架完全不同&#xff0c;这里为大家介绍一下在ArcGIS Pro…