1、需要

Table表格的表头,以及列表数据依据接口返回的数据动静生成列表。

2、剖析

1)动静生成表头

  • 两头的表头应用子组件的模式,依据返回来的数据,动静拼接生成列表的表头。
  • 将左右两边的表头拼接生成一个大的表头对象。

2)动静生成表头以及对应的列表内容数据

须要将第几个表头的列表项增加上。

3、局部代码

1)页面组件

<vTable v-if="categorySum.length > 0" :tableColumn="columns" :tableData="categorySum"    :pagination="pagination" @changePage="handleTableChange"></vTable>

2) 导入子组件

import vTable from '../common/Table'

3)拼接列表头及内容

this.linkHeaders.push({    title: value.stageName + '/张(框)',    children: [      {        title: '未支付',        dataIndex: 'stageList[' + index + '].pendingImageCount'      },      {        title: '进行中',        dataIndex: 'stageList[' + index + '].doingImageCount'      },      {        title: '已实现',        dataIndex: 'stageList[' + index + '].doneImageObjectCount'      }    ]  })this.columns = this.categoryHeaders.concat(this.linkHeaders).concat(this.pmHeaders)

4) 子组件代码

这里会波及到子组件调用父组件的内容。

<template><div>   <a-table    :columns="tableColumn"    :row-key="record => record.id"    :data-source="tableData"    :pagination="curPagination"    :bordered="true"    size="small"    @change="handleTableChange"  >  </a-table></div></template><script lang="ts">export default {  props: { tableColumn: Array, tableData: Array, pagination: Object },  data () {    return {      curPagination: { ...this.pagination }    }  },  methods: {    handleTableChange (pagination, filters, sorter) {      const pager = { ...this.curPagination }      pager.current = pagination.current      this.curPagination = pager      this.$emit('changePage', pagination)    }  }}</script>

以上