element table组件表格里面套表格

在我的项目里面有这样一个需求,表格里面展开项是一个表格,且嵌套的表格头部是动态列。以下是html代码,tableData是外层表格的数据(下面我就将外层表格称为大表格,里面嵌套的表格称为小表格)

<el-table
    :data="tableData"
    align="center"
    stripe>
  <!-- 展开项表格开始位置 type="expand"必须写-->
    <el-table-colum type="expand">
      <template slot-scope="props">
        <!-- 通过props得到大表格的每一列数据,dataList是小表格的数据,通过props.row.dataList获取 -->
        <el-table
          :data="props.row.dataList"
          align="center"
          stripe>
          <el-table-column
            align="center"
            :prop="'goodsDatas.' + item.propName"
            :label="item.propComments"
            v-for="item in header[props.$index]"
            :key="item.id"> 
          </el-table-column>
          <!-- 如果小表格里面有固定列写法如下 -->
          <el-table-column
            align="center"
            :prop="itemCode"
            :label="物资编码"> 
          </el-table-column>
          <!-- 固定列结束位置 -->
        </el-table>
      </template>
    </el-table-colum>
  <!-- 展开项里表格结束位置 -->
    <el-table-column
      align="center"
      prop="itemDescription"
      label="物资描述">
    </el-table-column>
    <!-- 这里可以继续写大表格中的列 -->
  </el-table>

header是小表格动态列的数据,是一个数组,小表格的表头和表内容都是通过v-for循环header得到的。在data中定义header

data() {
	return {
		header: []
	}
}

下面是js代码,获取请求返回的数据data.tableData,展现表格数据

data.tableData.forEach((v) => {
      v.dataList.forEach((_v) => {
        this.header.push(_v.DataListItems);
        // 这里的DataListItems就是小表格中生成动态列需要的数据
      })
    })

因为大表格可能有很多行,而每一行下面都可能有展开项表格,所以如果直接赋值 this.header = _v.DataListItems 就只能获取最后一次循环的值。

注意:因为大表格的数据是一个数组,小表格的数据也是一个数组,小表格的动态列数据也是一个数组,所以v-for="item in header[props. i n d e x ] &quot; 在 这 里 用 index]&quot;在这里用 index]"index进行了区分。

最后实现如下效果
在这里插入图片描述
也不知道我描述清楚了没有,如果有不清楚或者错误的地方欢迎小伙伴们来信。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值