关于elementui的table主子表展示数据

  1. 主子表形式,主表显示汇总信息,子表显示明细,我当时做的第一个版本是主子表展示不同的表格信息,此需求最大的问题是怎么保证主表行点击后展示的是对应的主表行的明细,当然,这个后台做是最方便的,但是当时后台给我返回的是明细接口,怎么保证主表行点击后在子表展示明细,是在前台做的。
  2. 当时我去请教了带我的同事,以下是解决方法:主表格数据是数组里面包含多个对象的,循环每个数组,给每个数组对象中添加数组,作为一个标志,等会放入返回的明细数据,这样就可以保证每行的明细数据独立出来。
  3. 以下是部分代码,仅作参考,参考element-ui官网的以下demo
<template>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column type="expand">
      <template slot-scope="props">
        <el-form label-position="left" inline class="demo-table-expand">
          <el-form-item label="商品名称">
            <span>{{ props.row.name }}</span>
          </el-form-item>
          <el-form-item label="所属店铺">
            <span>{{ props.row.shop }}</span>
          </el-form-item>
          <el-form-item label="商品 ID">
            <span>{{ props.row.id }}</span>
          </el-form-item>
          <el-form-item label="店铺 ID">
            <span>{{ props.row.shopId }}</span>
          </el-form-item>
          <el-form-item label="商品分类">
            <span>{{ props.row.category }}</span>
          </el-form-item>
          <el-form-item label="店铺地址">
            <span>{{ props.row.address }}</span>
          </el-form-item>
          <el-form-item label="商品描述">
            <span>{{ props.row.desc }}</span>
          </el-form-item>
        </el-form>
      </template>
    </el-table-column>
    <el-table-column
      label="商品 ID"
      prop="id">
    </el-table-column>
    <el-table-column
      label="商品名称"
      prop="name">
    </el-table-column>
    <el-table-column
      label="描述"
      prop="desc">
    </el-table-column>
  </el-table>
</template>

因为我们要做的是表格,所以将 <template slot-scope=“props”>中的内容替换为表格,即以下代码:

<el-table
                      :data="props.row.detail"
                      border
                      style="width: 100%">
                      <el-table-column
                        align="center"
                        prop="actualWeight"
                        label="数量"
                      >
                      </el-table-column>
                      <el-table-column
                        align="center"
                        prop="batchId"
                        label="批次号">
                      </el-table-column>
                      <el-table-column
                        align="center"
                        prop="makerName"
                        label="生产厂家名称">
                      </el-table-column>
                      <el-table-column
                        align="center"
                        prop="productDate"
                        label="生产厂家日期">
                      </el-table-column>
</el-table>

js部分代码:

//主表请求数据,添加detail数组
 getCollect(){
       reportCount(this.queryParams)
       .then(response => {
          for(var i in response.list){
           let val = response.list[i];
           this.$set(val, 'detail',[])
         }
//将请求来的详情数据放入detail数组中
// 点击主表格行,获取子表格明细
    expandChange(val){
      reportDetails(this.detailsQuery)
      .then(response => {
        console.log('response', response)
        that.$set(val, 'detail', response );
      })
    },

getCollect()方法是请求主表数据,reportCount是请求接口,
这样即可实现下拉展示子表的内容,这里的detail即就是子表的详情信息数组,这里要注意的是,element-ui官方给出的例子是表单,这里是表格,只需要给表格绑定详情数据对象,下面表格的行绑定字段就可以了。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值