0


Element UI动态生成多级表头

1 基础常用的原型样例

我们常常遇到的情况就是表头固定的,我们需要从后端获取对应表头的信息,如果信息比较多的时候为了方便我们展示,可以固定表头和列,下面是一个我们常见的例子:

固定列和表头可以同时使用,只需要将上述两个属性分别设置好即可。

  • 前端显示:

  • 代码实现
<template>
  <el-table
    :data="tableData3"
    style="width: 100%"
    height="250">
    <el-table-column
      fixed
      prop="date"
      label="日期"
      width="150">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="120">
    </el-table-column>
    <el-table-column
      prop="province"
      label="省份"
      width="120">
    </el-table-column>
    <el-table-column
      prop="city"
      label="市区"
      width="120">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址"
      width="300">
    </el-table-column>
    <el-table-column
      prop="zip"
      label="邮编"
      width="120">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData3: [{
          date: '2016-05-03',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-02',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-04',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-01',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-08',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-06',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }, {
          date: '2016-05-07',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333
        }]
      }
    }
  }
</script>

2 应用场景分析

    由于项目的需求,需要根据用户自定义的方式来初始化表格的表头包含哪些信息,有很多信息是有规律的,所以我们需要Element UI动态生成多级表头。场景:

 ![](https://img-blog.csdnimg.cn/ddda7f9cd4054ea28a248ec4a70b7977.png)

层数是可变化的,所以需要专门设置一个表格的数据来保存表头,然后通过v-for="item in tableColData"的方式来循环展示表头,由于层数是循环展示表头的,所以如果层数里面如果有第二级别的表头,就需要在表头数据多设置一级children,加上第二层v-for="item1 in item.children"来遍历二级表头。

  • 前端展示

  • 代码实现
<template>
       <el-table
          :data="tableData9"
          :header-cell-style="{ 'text-align': 'center' }"
          :cell-style="{ 'text-align': 'center' }"
          style="width: 100%"
          max-height="500"
          @cell-mouse-enter="handleCellEnter"
          @cell-mouse-leave="handleCellLeave"
        >
        <el-table-column v-for="item in tableColData"
          :prop="item.id"
          :label="item.name"
          :key="item.id">
          <el-table-column v-for="item1 in item.children"
            :prop="item1.id"
            :label="item1.name"
            :key="item1.id">
          </el-table-column>
        </el-table-column>
          
         
        </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableColData: [{
          id: 'num',
          name: '序号'
        }, {
          id: 'class',
          name: '课程'
        }, {
          id: 'floor',
          name: '地下一层',
          children: [{
            id: 'numRoom',
            name: '间',
          },
          {
            id: 'areaOfUse',
            name: '使用面积',
          },
          {
            id: 'areaOfStru1',
            name: '建筑面积1',
          },
          {
            id: 'areaOfStru2',
            name: '建筑面积2',
          }]
        }, {
          id: 'floor',
          name: '地下一层',
          children: [{
            id: 'numRoom',
            name: '间',
          },
          {
            id: 'areaOfUse',
            name: '使用面积',
          },
          {
            id: 'areaOfStru1',
            name: '建筑面积1',
          },
          {
            id: 'areaOfStru2',
            name: '建筑面积2',
          }]
        }, {
          id: 'floor',
          name: '地下一层',
          children: [{
            id: 'numRoom',
            name: '间',
          },
          {
            id: 'areaOfUse',
            name: '使用面积',
          },
          {
            id: 'areaOfStru1',
            name: '建筑面积1',
          },
          {
            id: 'areaOfStru2',
            name: '建筑面积2',
          }]
        }, {
          id: 'floor',
          name: '地下一层',
          children: [{
            id: 'numRoom',
            name: '间',
          },
          {
            id: 'areaOfUse',
            name: '使用面积',
          },
          {
            id: 'areaOfStru1',
            name: '建筑面积1',
          },
          {
            id: 'areaOfStru2',
            name: '建筑面积2',
          }]
        }
      ],
      // 表内容
      tableData9: [{
        num: '1-1-1',
        class: '小学教室',
        AperRoom: '84',
        numRoom: '13',
        areaOfUse: '1092',
        areaOfStru1: "1985",
        areaOfStru2: "1985"
      }],
      
      }
    }
  }
</script>
标签: ui vue.js elementui

本文转载自: https://blog.csdn.net/qq_42794545/article/details/127889047
版权归原作者 海伦• 所有, 如有侵权,请联系我们删除。

“Element UI动态生成多级表头”的评论:

还没有评论