el-table的横向表头转为纵向表头

业务:普通的el-table的表头是横向的,现在需要将表头置换成纵向,并且横向为序号排布,方便比对。也适用于比对某个产品/数目的场景

vue3 + js + element-plus

tempelate:

      <el-table
       :data="verticalHeader"
        border
        :row-style="tableRowStyle"
        :cell-style="tabelCellStyle"
        :header-cell-style="tabelHeaderStyle"
        >
      <el-table-column
      v-for="(item,index) in horizontalHeader"
      :key="index"
      :prop="item"
      :label="item"
       />
    </el-table>

js

const horizontalHeader = ref([])
const verticalTable = reactive([
  {prop: 'canTxFrameNum', label:t('busStatistics.total-tx')},
  {prop: 'canRxFrameNum', label:t('busStatistics.total-rx')},
  {prop: 'canErrFrameNum', label:t('busStatistics.total-err')},
  {prop: 'canTxFps', label:t('busStatistics.tx-fr/s')},
  {prop: 'canRxFps', label:t('busStatistics.rx-fr/s')},
  {prop: 'canErrFps', label:t('busStatistics.err-fr/s')},
  {prop: 'occupyRate', label:t('busStatistics.bus-load')}
])//label:就是你的表头标签,这里由于我的是多语言设置,所以我用‘t’来表示
let verticalHeader = ref([])
let statisticsData = ref([])

const getHeaders = () => {
  horizontalHeader.value = statisticsData.value.reduce(
    (pre, cur, index) => pre.concat(`${index + 1}`), [t('busStatistics.ability')])
  return horizontalHeader.value
}

const getValues = computed(() => {
  const value = verticalTable.map(item => {
    const itemValues = {}
    statisticsData.value.forEach(cur => {
      itemValues[cur.index] = cur.channelStatistics[item.prop]
    })
    return Object.assign(itemValues, { [t('busStatistics.ability')]: item.label })
  })//这里的“t('busStatistics.ability')”就是你的横向表头,也就是你需要比对的序号名称
  return value
})

el-table组件可以通过设置表头的slot来实现横向表头,也可以通过设置column的属性来实现纵向表头横向表头的实现方式: ```html <el-table> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="年龄" prop="age"></el-table-column> <el-table-column label="地址" prop="address"></el-table-column> <template slot="header"> <thead> <tr> <th rowspan="2">姓名</th> <th colspan="2">基本信息</th> </tr> <tr> <th>年龄</th> <th>地址</th> </tr> </thead> </template> </el-table> ``` 纵向表头的实现方式: ```html <el-table :data="tableData" style="width: 100%"> <el-table-column label="日期" width="180"> <el-table-column label="上午" align="center"> <el-table-column label="9:00-10:00" prop="am9"></el-table-column> <el-table-column label="10:00-11:00" prop="am10"></el-table-column> <el-table-column label="11:00-12:00" prop="am11"></el-table-column> </el-table-column> <el-table-column label="下午" align="center"> <el-table-column label="1:00-2:00" prop="pm1"></el-table-column> <el-table-column label="2:00-3:00" prop="pm2"></el-table-column> <el-table-column label="3:00-4:00" prop="pm3"></el-table-column> </el-table-column> </el-table-column> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="地址" prop="address"></el-table-column> </el-table> ``` 注意:纵向表头需要在第一列设置el-table-column组件的label属性,并将子列作为其子元素,子列也需要设置label属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值