element-ui中的el-table的summary-method(合计)的使用

场景图片:

图片1:

图片2:


一:使用element中的方法

优点:

直接使用summary-method方法,直接,方便

缺点:

只是在表格下面添加了一行,如果想有多行就不行了

1:html部分

html 复制代码
<el-table
      v-loading="loading"
      :data="tableData"
      :border="true"
      style="width: 100%;"
      :header-cell-style="{textAlign:'center'}"
      :cell-style="{textAlign:'center'}"
      show-summary
      :summary-method="tableHeJi"
      :default-sort = "{prop: 'date', order: 'descending'}">
      <el-table-column
        prop="expenseCategory"
        label="费用类别"
        min-width="100"
        sortable
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="orgName"
        label="运营公司"
        min-width="100"
        sortable
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="contractNumber"
        label="合同编号"
        min-width="100"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="contractName"
        min-width="80"
        label="合同名称"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="payee"
        min-width="150"
        label="收款单位或个人"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="summaryPaymentContent"
        label="申请事由"
        min-width="120"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="appMoney"
        label="付款金额"
        min-width="130"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="fundingPlan"
        label="计划月份"
        min-width="100"
        sortable
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="payStatus"
        label="审批状态"
        min-width="80"
        :show-overflow-tooltip="true">
      </el-table-column>
    </el-table>

2:js方法

javascript 复制代码
tableHeJi(val){
      const { columns, row } = val;
      const sums = [];
      columns.forEach((item, index) => {
        if (index === 0) {
          sums[index] = '总计';
          return;
        }
        else if(index===4){
          sums[index] = "合同数量:"
          return;
        }
        else if(index===5){
          sums[index] = this.heJiObj.contractSum==null
            ||this.heJiObj.contractSum==""?""
            :this.heJiObj.contractSum
          return;
        }
        
        else if(index===8){
          sums[index] = "付款金额合计(元):"
          return;
        }
        else if(index===9){
          sums[index] = 
            this.heJiObj.sum==null||this.heJiObj.sum==""?""
            :this.heJiObj.sum
          return;
        }
      });
      return sums
    },

二:自己定义

优点:

可以想表格下面添加多少行都行,

缺点:

列表的序号会一直往下走

1:html部分

html 复制代码
<el-table
      v-loading="loading"
      :data="tableData"
      :span-method="objectSpanMethod"
      :border="true"
      style="width: 100%;"
      :header-cell-style="{textAlign:'center'}"
      :cell-style="{textAlign:'center'}"
      :default-sort = "{prop: 'date', order: 'descending'}">
      <el-table-column fixed type="index" label="序号" width="50">
        <template slot-scope="scope">
          <div>{{scope.$index+(formData.page-1)*formData.rows+1}}</div>
        </template>
      </el-table-column>
      <el-table-column
        prop="lineName"
        label="线路"
        min-width="120"
        sortable
        :show-overflow-tooltip="true">
        <template slot-scope="scope">
          <div class="absoluteDot" v-if="scope.row.addRow=='1'">
            <div class="relative">
              <div class="absolute flex-center H50">
                <div class="">施工单位签名:</div> 
                <div class="">
                  <img src="" style="width:120px;height: 30px;
                    background:rgba(118, 222, 107, 0.577); ">
                </div>
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='2'">
            <div class="relative">
              <div class="absolute">
                意见:{{ msg1 }}
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='5'">
            <div class="relative">
              <div class="absolute flex-center H50">
                <div class="">单位领导签名:</div> 
                <div class="">
                  <img src="" style="width:120px;height: 30px;
                        background:rgba(118, 222, 107, 0.577); ">
                </div>
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='6'">
            <div class="relative">
              <div class="absolute">
                意见:{{ msg2 }}
              </div>
            </div>
          </div>
          <div v-else>
            {{scope.row.lineName}}
          </div>
        </template>
      </el-table-column>
      <el-table-column
        prop="contractNumber"
        label="合同编号"
        min-width="90"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="contractName"
        label="合同名称"
        min-width="120"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="procingCode"
        label="验工计价编号"
        min-width="120"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="pricingDate"
        min-width="80"
        label="验工年月"
        :show-overflow-tooltip="true">
        <template slot-scope="scope">
          <div class="absoluteDot" v-if="scope.row.addRow=='1'">
            <div class="relative">
              <div class="absolute flex-center H50">
                <div class="">经理签名:</div> 
                <div class="">
                  <img src="" style="width:120px;height: 30px;
                              background:rgba(118, 222, 107, 0.577); ">
                </div>
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='2'">
            <div class="relative">
              <div class="absolute">
                意见:{{ msg3 }}
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='5'">
            <div class="relative">
              <div class="absolute flex-center H50">
                <div class="">董事长签名:</div> 
                <div class="">
                  <img src="" 
                    style="width:120px;height: 30px;
                     background:rgba(118, 222, 107, 0.577); ">
                </div>
              </div>
            </div>
          </div>
          <div class="absoluteDot" v-if="scope.row.addRow=='6'">
            <div class="relative">
              <div class="absolute">
                意见:{{ msg4 }}
              </div>
            </div>
          </div>
          <div v-else>
            {{scope.row.pricingDate}}
          </div>
        </template>
      </el-table-column>
      <el-table-column
        prop="approvalAmount"
        min-width="150"
        label="核准完成金额(万元)"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="nowPayPricing"
        label="本次支付(万元)"
        min-width="120"
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="persistentDay"
        label="持续时间(天)"
        min-width="130"
        sortable
        :show-overflow-tooltip="true">
      </el-table-column>
      <el-table-column
        prop="nowNode"
        label="当前处理节点"
        min-width="100"
        :show-overflow-tooltip="true">
      </el-table-column>
    </el-table>

2:css部分

css 复制代码
.absoluteDot{
    position: absolute;
    left: 10px;
    top: 0px;
    width: 0px;
    height: 0px;
  }
  .relative{
    position: relative;
    left: 0px;
    top: 0px;
    z-index: 100;
  }
  .absolute{
    /* border: 1px solid #fc7f7f; */
    position: absolute;
    left: 0px;
    top: 0px;
    width: 230px;
    white-space:break-spaces;
    text-align: left;
  }

  .H50{
    height: 50px;
  }

3:js部分

javascript 复制代码
// 获取列表的初始化数据
    getTableData(){
      this.loading=true;
        tableList(this.formData)
        .then(res=>{
          this.loading=false;
          if(res.code==0){
            this.tableData=res.data.list;
            this.tableAdd();//想表格中添加行的方法
          }
        })
      
    },
    tableAdd(){
      let totalTable1={};
      totalTable1.addRow="1"
      this.tableData.push(totalTable1);
      let totalTable2={};
      totalTable2.addRow="2"
      this.tableData.push(totalTable2);
      let totalTable3={};
      totalTable3.addRow="3"
      this.tableData.push(totalTable3);
      let totalTable4={};
      totalTable4.addRow="4"
      this.tableData.push(totalTable4);
      let totalTable5={};
      totalTable5.addRow="5"
      this.tableData.push(totalTable5);
      let totalTable6={};
      totalTable6.addRow="6"
      this.tableData.push(totalTable6);
      let totalTable7={};
      totalTable7.addRow="7"
      this.tableData.push(totalTable7);
      let totalTable8={};
      totalTable8.addRow="8"
      this.tableData.push(totalTable8);
    },
相关推荐
paopaokaka_luck21 分钟前
基于SpringBoot+Vue的非遗文化传承管理系统(websocket即时通讯、协同过滤算法、支付宝沙盒支付、可分享链接、功能量非常大)
java·数据库·vue.js·spring boot·后端·spring·小程序
用户38022585982440 分钟前
vue3源码解析:依赖收集
前端·vue.js
用户75794199497040 分钟前
基于JavaScript的简易Git
javascript
gzzeason43 分钟前
使用Vite创建React初始化项目
前端·javascript·react.js
又双叒叕77844 分钟前
React19 新增Hooks:useOptimistic
前端·javascript·react.js
归于尽1 小时前
V8 引擎是如何给 JS"打扫房间"的 ?
前端·javascript
自由逐风1 小时前
JS 处理长整型数字的坑:从雪花 ID 精度丢失说起
javascript
爱学习的茄子1 小时前
从0到1:揭秘前端网络请求的进化之路
前端·javascript·面试
云动雨颤1 小时前
流量分发代码实战|学会用JS控制用户访问路径
javascript
wzyoung1 小时前
element-ui让el-form绑定的深层对象也能通过内置的resetFields方法重置
前端·javascript·vue.js