el-table表尾合计行,自定义计算方式

需求:末尾最后一行显示总计人数,其中最后一列是出勤率,需要自定义计算方式: 出勤人数/实到人数*100

在el-table加上show-summary,表示显示末尾计算
自定义合计逻辑在el-table加:summary-method=“getSummaries”
最后在methods;里面定义getSummaries方法

效果
在这里插入图片描述

<el-table
              ref="crud"
              class="check-all-hide"
              :data="statisticsList"
              border
              :max-height="mainHeight - 300"
              show-summary
              :summary-method="getSummaries"
            >
              <el-table-column prop="attenceName" label="班次名称" align="center"></el-table-column>
              <el-table-column prop="should" label="应到人数" align="center"></el-table-column>
              <el-table-column prop="beOut" label="外出人数" align="center"></el-table-column>
              <el-table-column prop="real" label="实到人数" align="center"></el-table-column>
              <el-table-column prop="beLeave" label="请假人数" align="center"></el-table-column>
              <el-table-column prop="dummyDeck" label="缺卡人数" align="center"></el-table-column>
              <el-table-column prop="Attendance" label="出勤人数" align="center"></el-table-column>
              <el-table-column prop="rate" label="出勤率" align="center"></el-table-column>
            </el-table>

param表示的就是从后端获取动态渲染出的所有数据,data表示得是行,columns是列
最后返回的是一个数组,这个数组中的各项就会显示在合计行的各列中,index表示每一列的索引,从0开始
不自定义情况下第一列不进行数据求合操作,而是显示「合计」二字,可通过sum-text配置,自定义index=0

// 表尾合计行
    getSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = "当日共计";
          return;
        }
        const values = data.map(item => Number(item[column.property]));     
        if (!values.every(value => isNaN(value))) {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr);
            if (!isNaN(value)) {
              return prev + curr;
            } else {
              return prev;
            }
          }, 0);
          sums[index];
        } else {
          sums[index] = "";
        }
        if (index === 7) {
          var num = (sums[6] / sums[3]) * 100;
          if (!num == 0) {
            num = num.toFixed(2);
            sums[index] = num + "%";
          } else {
            sums[index] = "0";
          }
        }
      });
      return sums;
    },
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要为el-table最后一行添加边框,可以使用以下解决方案。首先,可以通过添加以下CSS样式来去除el-table的每一条数据的下边框和表格的最下面一行的边框: ```css .el-table td { border-bottom: none; } .tableStyle::before { width: 0; } .el-table { border: 1px solid #ccc; } ``` 如果上述方法无效,可以尝试使用以下代码片段: ```html <style lang="less" scoped> /deep/ .el-table { .el-table__fixed, .el-table__fixed-right { height: 100% !important; } } </style> ``` 或者,可以直接复制以下代码段: ```css .el-table { /deep/ .el-table__body-wrapper { overflow-x: scroll !important; } } ``` 这些方法可以帮助你为el-table最后一行添加边框。 #### 引用[.reference_title] - *1* [el-table设置表格显示外边框和表头的下边框](https://blog.csdn.net/xiaolu1na/article/details/125580216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [el-table最后一行被覆盖遮挡](https://blog.csdn.net/FalconKkv/article/details/123105043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [el-table使用fixed后,最后一行显示不全;el-table设置fixed后,最后一行被遮挡。](https://blog.csdn.net/i_am_a_div/article/details/121926622)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值