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);
    },
相关推荐
悦涵仙子1 小时前
CSS中的变量应用——:root,Sass变量,JavaScript中使用Sass变量
javascript·css·sass
兔老大的胡萝卜1 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
cs_dn_Jie4 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic5 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿5 小时前
webWorker基本用法
前端·javascript·vue.js
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
清灵xmf6 小时前
TypeScript 类型进阶指南
javascript·typescript·泛型·t·infer
小白学大数据6 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
qq_390161776 小时前
防抖函数--应用场景及示例
前端·javascript
334554327 小时前
element动态表头合并表格
开发语言·javascript·ecmascript