el-table动态表头数据渲染

news2024/11/16 21:57:58

@desc:el-table的数据是后端动态返回的,包括表头的情况下如何进行渲染

// 第一页的数据
{
    "code": 1,
    "message": "查询成功",
    "data": {
        "current": 1,
        "size": 10,
        "total": 41,
        "rows": [
            {
                "typeList": [
                    "线路类型名称",
                    "病害类型1",
                    "病害类型2",
                    "病害类型3",
                    "病害类型11"
                ]
            },
            {
                "typeNumList": [
                    "111",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国上海市徐汇区虹桥路203号华润大厦28室",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国上海市徐汇区虹桥路976号华润大厦12室",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国上海市浦东新区健祥路195号42栋",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国上海市浦东新区橄榄路555号39号楼",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国上海市闵行区宾川路553号44楼",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国东莞坑美十五巷347号华润大厦44室",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国东莞环区南街二巷979号华润大厦31室",
                    "0",
                    "0",
                    "1",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国东莞珊瑚路30号14室",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国中山乐丰六路888号35号楼",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            }
        ]
    }
}
// 第二页的数据

{
    "code": 1,
    "message": "查询成功",
    "data": {
        "current": 2,
        "size": 10,
        "total": 41,
        "rows": [
            {
                "typeList": [
                    "线路类型名称",
                    "病害类型1",
                    "病害类型2",
                    "病害类型3",
                    "病害类型11"
                ]
            },
            {
                "typeNumList": [
                    "中国中山天河区大信商圈大信南路91号36栋",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市东城区东单王府井东街277号17号楼",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市东城区东单王府井东街707号9室",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市東城区東直門內大街635号17栋",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市西城区复兴门内大街214号30栋",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市西城区西長安街606号11栋",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国北京市西城区西長安街922号46栋",
                    "1",
                    "0",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国广州市天河区天河路525号29室",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国广州市海珠区江南西路624号44栋",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            },
            {
                "typeNumList": [
                    "中国广州市海珠区江南西路764号42室",
                    "0",
                    "1",
                    "0",
                    "0"
                ]
            }
        ]
    }
}

页面效果

准备以下数据

    typeTable: [], // 类型表格数据 二维数组 [["王五", "男", "25", "工人"],["赵六", "女", "40", "医生"]],
      typeTableHeader: [], // 类型表头  ["姓名", "性别", "年龄", "职业"],
      type_column_count: 0,
      resTypeTable: [], // 最终的类型表格数据

效果实现

<el-table
          height="450"
          :data="resTypeTable"
          :loading="typeLoading"
          style="width: 100%"
        >
          <el-table-column label="序号" type="index" width="50">
          </el-table-column>
          <el-table-column
            v-for="column in typeTableHeader"
            :key="column"
            :prop="column"
            :label="column"
          >
          </el-table-column>
        </el-table>

        <div class="pagination-padding">
          <pagination-component
            :hidden="total <= 0"
            :total="total"
            :page="paginationConfig.pageNum"
            :limit="paginationConfig.pageSize"
            :page-sizes="[5, 10, 15, 20]"
            style="margin-right: 10px"
            @pagination="handleChangePagination"
          />
        </div>



 /* 类型表格 */
      typeTable: [], // 类型表格数据 二维数组 [["王五", "男", "25", "工人"],["赵六", "女", "40", "医生"]],
      typeTableHeader: [], // 类型表头  ["姓名", "性别", "年龄", "职业"],
      type_column_count: 0,
      resTypeTable: [], // 最终的类型表格数据
      /* 类型表格 */



  getTypeTable() {
      this.typeLoading = true;
      lineType({
        pageNum: this.paginationConfig.pageNum,
        pageSize: this.paginationConfig.pageSize,
        startTime: this.paginationConfig.dateTime[0] || null,
        endTime: this.paginationConfig.dateTime[1] || null,
        lineName: this.paginationConfig.lineName || null,
      }).then((res) => {
        /* 获取 typeTable typeTableHeader type_column_count 处理前所需的数据 */
        this.typeTableHeader = [];
        this.typeTable = [];
        this.resTypeTable = [];
        this.typeTableHeader = res.data.rows[0]?.typeList;
        if (res.data.rows.length > 1) {
          res.data.rows.forEach((item, index) => {
            if (index !== 0) {
              this.typeTable.push(item.typeNumList);
            }
          });
        }
        /* 获取 typeTable typeTableHeader type_column_count 处理前所需的数据 */
        /* 处理数据 获取 resTypeTable */
        this.column_count = this.typeTableHeader.length;
        for (let i = 0; i < this.typeTable.length; i++) {
          let row_data = this.typeTable[i];
          let row_dict = {};
          for (let j = 0; j < this.column_count; j++) {
            row_dict[this.typeTableHeader[j]] = row_data[j];
          }
          this.resTypeTable.push(row_dict);
        }
        /* 处理数据 获取 resTypeTable */
        this.total = res.data.total;
        this.typeLoading = false;
      });
    },


分页组件

<template>
  <div :class="{ hidden: hidden }" class="pagination-container">
    <el-pagination
      :background="background"
      :current-page.sync="currentPage"
      :page-size.sync="pageSize"
      :layout="layout"
      :page-sizes="pageSizes"
      :pager-count="pagerCount"
      :total="total"
      v-bind="$attrs"
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
    />
  </div>
</template>

<script>
import { scrollTo } from "@/utils/scroll-to";

export default {
  name: "Pagination",
  props: {
    total: {
      required: true,
      type: Number,
    },
    page: {
      type: Number,
      default: 1,
    },
    limit: {
      type: Number,
      default: 20,
    },
    pageSizes: {
      type: Array,
      default() {
        return [10, 20, 30, 50];
      },
    },
    // 移动端页码按钮的数量端默认值5
    pagerCount: {
      type: Number,
      default: document.body.clientWidth < 992 ? 5 : 7,
    },
    layout: {
      type: String,
      default: "total, sizes, prev, pager, next, jumper",
    },
    background: {
      type: Boolean,
      default: true,
    },
    autoScroll: {
      type: Boolean,
      default: true,
    },
    hidden: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {};
  },
  computed: {
    currentPage: {
      get() {
        return this.page;
      },
      set(val) {
        this.$emit("update:page", val);
      },
    },
    pageSize: {
      get() {
        return this.limit;
      },
      set(val) {
        this.$emit("update:limit", val);
      },
    },
  },
  methods: {
    handleSizeChange(val) {
      if (this.currentPage * val > this.total) {
        this.currentPage = 1;
      }
      this.$emit("pagination", { page: this.currentPage, limit: val });
      if (this.autoScroll) {
        scrollTo(0, 800);
      }
    },
    handleCurrentChange(val) {
      this.$emit("pagination", { page: val, limit: this.pageSize });
      if (this.autoScroll) {
        scrollTo(0, 800);
      }
    },
  },
};
</script>

<style scoped>
.pagination-container {
  background: var(--themeTable);
  padding: 32px 16px;
}
.pagination-container.hidden {
  display: none;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业如何通过CRM系统做好客户管理?

企业如何通过CRM系统做好客户管理&#xff1f; CRM客户管理作为一种综合性的管理思想&#xff0c;可以帮助我们更好地了解客户需求和行为&#xff0c;制定更加精准的销售和服务策略&#xff0c;提高客户满意度和忠诚度&#xff0c;从而实现可持续发展。 接下来将给大家详细介…

SQL——事务

&#x1f388; 什么是事务 &#x1f4a7; 概念 事务是用于保证数据的一致性,它由一组相关的DML&#xff08;增、删、改&#xff09;语句&#xff0c;该组的DML语句要么全部成功&#xff0c;要么全部失败。使用事务可以确保数据库的一致性和完整性&#xff0c;避免数据出现异常…

“微商城”项目(5登录和注册)

1.我的信息 在pages\User.vue文件中编写HTML结构代码&#xff0c;示例代码如下。 <template><div class"member"><div class"header-con"><router-link :to"{ name: login }" class"mui-navigate-right">&l…

段 寄 存 器-汇编复习(5)

图解演示8086CPU CS执行过程和逻辑 段 寄 存 器 8086CPU 在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。这里,需要看一下,是什么部件提供段地址。段地址在 8086CPU 的段寄存器中存放。8086CPU 有 4 个段存器: CS、DS、SS、ES。当80…

力扣刷题笔记——动态规划

动态规划基础 简称DP&#xff0c;如果某⼀问题有很多重叠⼦问题&#xff0c;使⽤动态规划是最有效的。 动态规划中每⼀个状态⼀定是由上⼀个状态推导出来的 1. 确定dp 数组&#xff08; dp table &#xff09;以及下标的含义 2. 确定递推公式 3. dp 数组如何初始化 4. 确定遍…

深度学习的分割方法

FCN&#xff1a;基于深度学习的语义分割模型 语义分割的定义&#xff1a;对像素进行精细化的分类。 用深度学习来解决语义分割&#xff0c;所面临的主要问题是&#xff1a; 早期的深度模型用于分类&#xff0c;输出一维向量&#xff0c;无法分割 深度模型不够精细 动机 如…

谈谈互联网广告拍卖机制的发展:从GSP到DeepAuction

广告作为各互联网公司收入的大头&#xff0c;其拍卖机制设计因此也是关乎营收最为核心的方面。所谓的广告拍卖机制设计是指如何将有限的广告位分配给合适的广告&#xff0c;从而达到客户、平台以及用户三方的价值最优。 当前的广告拍卖被建模为暗拍的形式&#xff0c;即N个广告…

ROS:launch启动文件的使用方法

目录 一、launch文件结构二、launch文件语法2.1根元素2.2参数设置2.3重映射、嵌套 三、示例3.1示例一3.2示例二3.3示例三3.4示例四 一、launch文件结构 由XML语言写的&#xff0c;可实现多个节点的配置和启动。 不再需要打开多个终端用多个rosrun命令来启动不同的节点了 可自动…

Swift 周报 第三十期

文章目录 前言新闻和社区App、App 内购买项目和订阅即将实行税率调整码出新宇宙Apple 公证服务更新Apple 设计大奖入围名单公布 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十一期&#xff0c;每个模块已初步成型。各位读者…

C++进阶 —— C++11新增容器

目录 一&#xff0c;array 二&#xff0c;forward_list 三&#xff0c;unordered unordered_set unordered_multiset unordered_map unordered_multimap 静态数组array、forward_list、unordered系列&#xff1b; 一&#xff0c;array array是固定大小尺寸的序列容器&am…

2023年6月东莞/惠州/深圳CPDA数据分析师认证招生

CPDA数据分析师认证是大数据方面的认证&#xff0c;助力数据分析人员打下扎实的数据分析基础知识功底&#xff0c;为入门数据分析保驾护航。 帮助数据分析人员掌握系统化的数据分析思维和方法论&#xff0c;提升工作效率和决策能力&#xff0c;遇到问题能够举一反三&#xff0c…

100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念

&#x1f337; 博主 libin9iOak带您 Go to Golang Language.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《I…

实战:Spring Cloud Stream消息驱动框架整合rabbitMq

文章目录 前言Spring Cloud Stream简析Spring Cloud Stream与rabbitmq整合1、添加pom依赖2、application.yml增加mq配置3、定义输入输出信道4、使用输入输出信道收发消息5、模拟正常消息消费6、模拟异常消息 前言 相信很多同学都开发过WEB服务&#xff0c;在WEB服务的开发中一…

Web端3D模型轻量化工具如何实现建筑行业“数字化”建设?

随着数字化技术的飞速发展&#xff0c;建筑行业也在不断寻找新的技术手段来提供高产能和建筑质量。其中&#xff0c;Web端3D模型轻量化工具HOOPS Communicator SDK在建筑行业中的应用不断地得到了市场的广泛注意和应用。本文将深入探讨HOOPS Communicator在建筑行业中的应用及其…

转动的车轮-第14届蓝桥杯国赛Scratch真题初中级组第2题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第144讲。 转动的车轮&#xff0c;本题是2023年5月28日上午举行的第14届蓝桥杯国赛Scratch图形化编程初中级组真题第2题…

Python数据攻略-DataFrame的数据操作

大家好&#xff0c;我是Mr数据杨&#xff0c;今天我们就来谈谈Python中的数据访问和修改。 首先&#xff0c;你们一定都听过《三国演义》吧&#xff0c;里面的人物和事情其实就像我们Python中的数据。比如曹操就像我们的数据元素&#xff0c;他的性格特点、军事才能等就像我们…

5年开发经验,看完这份37W字Java高性能架构,终于拿到架构师薪资

其实现在很多的开发人员并不能解决从架构的角度全方位地了解在Java编程过程中各阶段会出现的典型问题&#xff0c;更没办法深入到底层原理了解问题出现的原因&#xff01; 且随着当下面试越来越深入到底层&#xff0c;如果大家对于底层的原理不了解的话&#xff0c;是很难做出…

JDK11+mybatis-plus+shardingsphere分库分表

1、引入jar dynamic-datasource-spring-boot-starter&#xff1a;2.5.6 sharding-jdbc-spring-boot-starter&#xff1a;4.1.1 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId>&…

微调样本质量胜于数量 LIMA: Less Is More for Alignment

1、总体介绍 大型语言模型的训练分为两个阶段&#xff1a;&#xff08;1&#xff09;从原始文本中进行无监督的预训练&#xff0c;以学习通用的表征&#xff1b;&#xff08;2&#xff09;大规模的指令学习和强化学习&#xff0c;以更好地适应最终任务和用户的偏好。 作者通过…

作为网络安全工程师,都有哪些公司可以选?

招聘平台 首选内推 其次是公司自有招聘平台 再是第三方平台&#xff1a;boos直聘、前程无忧、拉钩、猎聘、牛客、牛聘 乙方 启明星辰 商标&#xff1a;云众可信&#xff0c;云子可信 投资&#xff1a;网御星云&#xff0c;恒安嘉新 拳头产品&#xff1a;Secin 社区、天清…