首页 > 其他分享 >Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑

Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑

时间:2023-04-03 12:05:17浏览次数:31  
标签:el return 自定义 hitNum -- 求和 column sumDic property


需求描述

Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑_vue.js

末尾合计行的需求如下:

  • 第1列显示“合计”
  • 无法求和的列,显示“——”
  • 可以求和的列,显示求和结果,并添加对应的单位
  • 命中率列的合计逻辑为 : 总命中数/总射击次数

代码实现

要点详见代码中的备注

<template>
  <div class="tableBox">
    <el-table
      :data="tableData"
      border
      :summary-method="getSummaries"
      show-summary
    >
      <el-table-column prop="id" label="序号" width="180" align="center">
      </el-table-column>
      <el-table-column prop="name" label="姓名" align="center">
      </el-table-column>
      <el-table-column prop="total" label="射击次数" align="center">
      </el-table-column>
      <el-table-column prop="hitNum" label="命中次数" align="center">
      </el-table-column>
      <el-table-column prop="hitRate" label="命中率" align="center">
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        {
          id: "1",
          name: "张三",
          total: 100,
          hitNum: 10,
          hitRate: "10%",
        },
        {
          id: "2",
          name: "王五",
          total: 100,
          hitNum: 20,
          hitRate: "20%",
        },
      ],
    };
  },
  methods: {
    getSummaries(param) {
      const { columns, data } = param;
      const sumDic = {};
      columns.forEach((column, index) => {
        // 第 1 列
        if (index === 0) {
          sumDic[column.property] = "合计";
          return;
        }

        // 需特殊计算的列
        if (column.property === "hitRate") {
          sumDic[column.property] =
            ((sumDic["hitNum"] / sumDic["total"]) * 100).toFixed(2) + "%";
          return;
        }

        // 其他列默认求和
        const values = data.map((item) => Number(item[column.property]));
        if (!values.every((value) => isNaN(value))) {
          // 可以求和的列
          sumDic[column.property] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0);
        } else {
          // 无法求和的列
          sumDic[column.property] = "——";
        }
      });

      // 指定列添加单位
      sumDic["total"] += " 次";
      sumDic["hitNum"] += " 次";

      return Object.values(sumDic);
    },
  },
};
</script>

<style scoped>
.tableBox {
  padding: 30px;
}
</style>


标签:el,return,自定义,hitNum,--,求和,column,sumDic,property
From: https://blog.51cto.com/u_15715491/6165947

相关文章

  • 江苏互联网医院牌照申请流程
     江苏互联网医院牌照申请流程|南京市|无锡市|徐州市|常州市|苏州市|南通市|连云港市|淮安市|盐城市|扬州市|镇江市|泰州市|宿迁市 很多的人对互联网医院牌照的申请都不是很了解,以至于申请的时候总是不通过,虽然互联网医院牌照的申请很严格,但也不是很难通过申请的,接下来我们俩......
  • 私有化部署的企业级业务编排引擎,jvs-逻辑引擎
    在当下的智能化时代,企业级的IT系统如果继续按照传统的开发,那么不仅耗时耗力,最后还往往无法获得良好的结果。那么我先确定企业级的业务系统配置化的目标是什么:降低人工操作成本:通过配置来自动化业务处理流程,减少手工操作,提高系统上线的效率,降低人工成本。降低项目交付对技术人才的依......
  • element树形复选框实现一级菜单单选
      <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=d......
  • python Django中的cookies和session会话保持技术
    cookies和session都是为了保持会话状态而诞生的两个存储技术会话定义:从打开浏览器访问一个网站,到关闭浏览器结束此次访问,称之为一次会话HTTP协议是无状态的,导致会话状态难以保持Cookies-定义cookies是保存在客户端浏览器上的存储空间Cookies特点......
  • python Django的admin后台建设
    什么是admin管理后台django提供了完善的后台管理数据库的接口,可供开发过程中调用和测试使用django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发者使用admin配置步骤1、创建后台管理账号-该账号为管理后台最高权限账号—注意:可以创建多个超级用户pytho......
  • 论文阅读_近端策略优化_PPO
    论文信息name_en:ProximalPolicyOptimizationAlgorithmsname_ch:近端策略优化算法paper_addr:http://arxiv.org/abs/1707.06347date_publish:2017-08-28if:IF8.665Q1B1TopEIauthor:JohnSchulmancitation:9685读后感PPO近端策略优化是一种强化学习算法,具体是......
  • NETDMIS5.0角度计算2023
    按有效的元素组合形式计算两矢量元素(或其法线)之间的夹角。路径:【公差】→【角度】元素1与元素2:选择两元素计算角度。可用拖拽或鼠标中键添加元素。投影面:选择计算角度是平面角度还是空间角度。选择SPACE,角度计算与两元素先后顺序无关,矢量角结果都是正的;选择三个坐标......
  • Java 缺失的特性:扩展方法
    作者:周密(之叶)什么是扩展方法扩展方法,就是能够向现有类型直接“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改现有类型。调用扩展方法的时候,与调用在类型中实际定义的方法相比没有明显的差异。为什么需要扩展方法考虑要实现这样的功能:从Redis取出包含多个商......
  • Java 缺失的特性:扩展方法
    作者:周密(之叶)什么是扩展方法扩展方法,就是能够向现有类型直接“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改现有类型。调用扩展方法的时候,与调用在类型中实际定义的方法相比没有明显的差异。为什么需要扩展方法考虑要实现这样的功能:从Redis取出包含多个商品ID......
  • 自动驾驶规划控制软硬一体化控制器解决方案(一)
    随着社会的进步,汽车工业和电子科技发展迅速,车载电子器件的数量越来越多,汽车电子的平台集成度越来越高,两者的融合正在革新着人们的驾乘体验。本文基于x86SoC进行系统设计,实现高效的汽车智能驾驶舱技术和高级驾驶辅助系统,降低用户总体成本。本文主要工作如下:一、调查......