Element的table表格开启合计之后,合计单独使用计算公式

  • Post author:
  • Post category:其他


方法一、使用Element的summary-method,这边不讲

方法二、

用官网自带的例子为例,下面是官网的代码:

<template>
  <el-table
    :data="tableData"
    border
    show-summary
    style="width: 100%">
    <el-table-column
      prop="id"
      label="ID"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名">
    </el-table-column>
    <el-table-column
      prop="amount1"
      sortable
      label="数值 1">
    </el-table-column>
    <el-table-column
      prop="amount2"
      sortable
      label="数值 2">
    </el-table-column>
    <el-table-column
      prop="amount3"
      sortable
      label="数值 3">
    </el-table-column>
  </el-table>

  <el-table
    :data="tableData"
    border
    height="200"
    :summary-method="getSummaries"
    show-summary
    style="width: 100%; margin-top: 20px">
    <el-table-column
      prop="id"
      label="ID"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名">
    </el-table-column>
    <el-table-column
      prop="amount1"
      label="数值 1(元)">
    </el-table-column>
    <el-table-column
      prop="amount2"
      label="数值 2(元)">
    </el-table-column>
    <el-table-column
      prop="amount3"
      label="数值 3(元)">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
          id: '12987122',
          name: '王小虎',
          amount1: '234',
          amount2: '3.2',
          amount3: 10
        }, {
          id: '12987123',
          name: '王小虎',
          amount1: '165',
          amount2: '4.43',
          amount3: 12
        }, {
          id: '12987124',
          name: '王小虎',
          amount1: '324',
          amount2: '1.9',
          amount3: 9
        }, {
          id: '12987125',
          name: '王小虎',
          amount1: '621',
          amount2: '2.2',
          amount3: 17
        }, {
          id: '12987126',
          name: '王小虎',
          amount1: '539',
          amount2: '4.1',
          amount3: 15
        }]
      };
    },
    methods: {
      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] = 'N/A';
          }
        });

        return sums;
      }
    }
  };
</script>


更改后:

(动态行表格可以用这个方法,动态列不行)

在这里插入图片描述

  getSummaries2(){
        this.$nextTick(() => {
          //tableList是ref中定义的,footerWrapper是F12看出来的
          // const faterNode = this.$refs.tableList.$refs.footerWrapper
          //获取合计数值1node
          let amountNode = this.$refs.tableList.$refs.footerWrapper.querySelector('.el-table_1_column_3');
          //获取数值1合计值
          let amountSum = parseFloat(amountNode.innerText);
          setTimeout(() => {
            //值除以10,保留三位小数
          let newSum = (amountSum/10).toFixed(3)
          //把新的值回显到数值1合计中
          amountNode.innerHTML = "<div class=\"cell\">" + newSum + "</div>";
          },100);         
        })
      },
this.$refs.tableList.$refs.footerWrapper 中footerWrapper是取下图el-table__footer-wrapper是属于哪个的,属于哪个这边选哪个,tableList是ref中自己定义的,图一

在这里插入图片描述

querySelector方法里面的值就是F12点出来的,想要改变哪个合计就点哪个

在这里插入图片描述



版权声明:本文为weixin_43085797原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。