当前位置: 首页 > article >正文

el-table 纵向垂直表头处理

项目中表格展示会遇到需要纵向垂直表头情况,下面,我们基于el-table组件来实现这种表格。

以下是这次需要用到的数据表格,已知左侧违章名称是固定的,而月份是不固定的,在后端返回数据格式已确定的情况下,需要将左侧作为表头展示。

第一步


先将 el-table 进行编辑,el-table 中的 data 属性数据我们需要进行重新处理,将原来的数据进行纵横转换,这一步理解起来会比较复杂。放到 js 中去讲解
<el-table v-else ref="tableRef" :data="getIValues" :show-header="false" border>

    <el-table-column v-for="(item, index) in getIHeaders" :key="index" :prop="item" align="center"> </el-table-column>

</el-table>

第二步


数据配置 数据我们需要单独配一次 headers,将原来的表头改成数据动态生成的方式。这个表头的配置需要按照实际数据的 键 与 名称 进行对应。最终渲染时由 第三步 的 getHeaders 来提供数据。具体 getHeaders 要做什么,我们第三步来讲解
const iHeaders = ref([

  {

    prop: 'month',

    label: '违章名称'

  },

  {

    prop: 'tiredNumber',

    label: '疲劳驾驶'

  },

  {

    prop: 'overspeedNumberMax',

    label: '超速(>10%)'

  },

  {

    prop: 'overspeedNumberMin',

    label: '超速(≤10%)'

  },

  {

    prop: 'trafficViolationsNumber',

    label: '交通违章'

  },

  {

    prop: 'otherNumber',

    label: '其他'

  }

])

第三步


getHeaders 与 getValues

这两个函数我们做计算属性直接使用即可
const getIHeaders = computed(() => {

  return illegalData.value.reduce((pre, cur, index) => pre.concat(`value${index}`), ['title'])

})

const getIValues = computed(() => {

  return iHeaders.value.map(item => {

    return illegalData.value.reduce((pre, cur, index) => Object.assign(pre, { ['value' + index]: cur[item.prop] }), { title: item.label })

  })

})

getHeaders:

先看打印结果:[ "title", "value0", "value1", "value2" ]

可能你不明白为什么要这么做,想象一下,原来的纵表改为横表以后,我们的第一列就是 title 第二列开始往后都将是 value 但是我们并不知道有多少个 value,所以我们需要通过这种方式来动态的去生成表头,不能使用原来的表头了

既然表头通过[ "title", "value0", "value1", "value2" ]这个表头定死了,也就意味着我们的数据结果,也必须以这种名字来命名。同时也需要想到 数组中的每个属性就对应的是一列

getValues:

先看打印结果[{
    "title": "违章名称",
    "value0": "2024年08月",
    "value1": "2024年09月",
    "value2": "2024年10月"
}]

通过我们的纵横转换以后,我们的数据结果将会变为 数组中的每一个对象都将是一行,每一个属性都将是一列。


http://www.kler.cn/a/396721.html

相关文章:

  • java项目-jenkins任务的创建和执行
  • Azure pipeline 通过git命令修改文件
  • 哈佛商业评论 | 未来商业的技术趋势:百度李彦宏谈技术如何变革商业
  • sql在按照当前表查询返回
  • 【Linux】系统中负责回收内存的进程和机制有哪些?
  • 基于微信小程序的公务员考试学习平台的设计与实现,LW+源码+讲解
  • Rust编程与项目实战-特质(Trait)
  • 雷达信号处理的流程和恒虚警检测CFAR
  • Linux通过端口号找到程序启动路径(Ubuntu20)
  • 贝叶斯网络——基于概率的图模型(详解)
  • Molecular signatures database (MSigDB) 3.0
  • 使用YOLOv9进行图像与视频检测
  • 浪浪云轻量服务器搭建vulfocus网络安全靶场
  • kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署
  • ctfshow(328)--XSS漏洞--存储型XSS
  • 2024年11月第2个交易周收盘总结
  • VLC-QT----Linux编译并运行示例
  • 信息安全工程师(83)Windows操作系统安全分析与防护
  • aws中AcmClient.describeCertificate返回值中没有ResourceRecord
  • RedisTemplate序列化设置
  • 【阅读记录-章节2】Build a Large Language Model (From Scratch)
  • 程序代码设计模式之模板方法模式(1)
  • 3.dns域名解析服务
  • DHTMLX-gantt组件显示不同的颜色
  • 嵌入式linux中块设备驱动框架基本实现
  • 基于物联网的智能超市快速结算系统