首页 > 其他分享 >vue3 + Ant Design 实现双表头表格(横向表头+纵向表头)

vue3 + Ant Design 实现双表头表格(横向表头+纵向表头)

时间:2023-12-25 10:11:07浏览次数:29  
标签:const 表头 element Ant item Design value columns

 一、要实现的效果(纵向固定表头的表格,横向表头数量动态化)

二、这是后台返回的数据格式(以企业为数组,每个企业里有个站点数组pointFactors)

 

三、代码实现步骤

 (1)定义纵向固定表头

 1 // 纵向表头数组 tableColumns
 2 const tableColumns = ref([
 3   {
 4     label: "日(24小时)数据浓度均值",
 5     value: "monthMaxDayValue",
 6   },
 7   {
 8     label: "小时数据平均浓度均值",
 9     value: "monthHourValue",
10   },
11 ]);

 (2)动态生成横向表头(从接口获取数据

 1 //定义横向表头列 columns
 2  const columns = ref([]);
 3 //定义表格数据
 4  const list = ref([]); 
 5 
 6  // 先添加第一列
 7  columns.value = [
 8       {
 9         title: "",
10         dataIndex: "timeType",
11         width: 190,
12        fixed: "left",
13      },
14   ];
15 
16 //处理接口返回的数据data,动态拼接表头数组 columns
17 data.forEach(item => {
18      const obj = {
19         id: item.enterpriseId,
20         parentId: null,
21         title: item.enterpriseName,
22         align: "center",
23         children: [],
24       };
25       if (item.pointFactors.length) {
26           item.pointFactors.forEach(element => {
27               list.push({
28                 name: element.pointName,
29                 id: element.pointId,
30                 monthMaxDayValue: element.monthMaxDayValue,
31                 monthHourValue: element.monthHourValue,
32               });
33               const childObj = {
34                 id: element.pointId,
35                 parentId: item.enterpriseId,
36                 title: element.pointName,
37                 width: 130,
38                 align: "center",
39                 dataIndex: element.pointId,
40                 customRender: ({ record }) => {
41                   return record[element.pointId]
42                     ? record[element.pointId]
43                     : "-";
44                 },
45               };
46               obj.children.push(childObj);
47           });
48      }
49      columns.value.push(obj);
50 });

 (3)循环原始数据,生成组件需要的横向数据

 1 // tableColums  已定义的纵向表头
 2 // tableData   已定义的表格数组
 3 
 4  for (const tab of tableColumns.value) {
 5      const col: any = Object.create(null);
 6 
 7      list.forEach((item, index) => {
 8          col.timeType = tab.label;
 9          col[list[index + 0].id] = item[tab.value];
10      });
11      tableData.value.push(col);
12 }

(4)数据带入表格组件中

 <a-table
     :columns="columns"
     :data-source="tableData"
     :pagination="false"
     row-key="id"
     bordered
 />

 

标签:const,表头,element,Ant,item,Design,value,columns
From: https://www.cnblogs.com/fifteen-home/p/17888385.html

相关文章

  • 在Python中实现ESG(环境、社会、治理)因子的交易策略,我们可以使用pandas库来读取数据,并
    在Python中实现ESG(环境、社会、治理)因子的交易策略,我们可以使用pandas库来读取数据,并使用AlphaVantage提供的API来获取股票价格数据²。以下是一个简单的代码示例:importpandasaspdimportrequests#获取股票价格数据response=requests.get(alpha_vantage_url)data=res......
  • Python 爬虫,gk-design 网站作品信息采集爬虫源码!
    一个比较简单的爬虫源码,爬取gk-design网站作品信息,包括图片及文字内容信息,几乎没有限制,适合新人学习练手使用,文末附上源码供参考学习。小日子的网站随便爬,加大力度,使劲搞,适合Python爬虫新人练手使用和学习,如果你正在找练手网站,不妨尝试爬取下载数据。这里分享几个简单的数据整......
  • Spring工具类--路径匹配(AntPathMatcher)--使用/实例
    原文网址:Spring工具类--路径匹配(AntPathMatcher)--使用/实例_IT利刃出鞘的博客-CSDN博客简介整个Spring(SpringBoot)框架的路径解析都是按照Ant的风格来的,比如:Controller的请求路径、文件路径、包的路径。所以,掌握Ant的路径匹配很重要。Spring中的具体实现:org.springframewor......
  • POLIR-Int-Generative AI in 2024: The 6 most important consumer tech trends for n
    GenerativeAIin2024:The6mostimportantconsumertechtrendsfornextyearQualcommexecutivesrevealkeytrendsinAI,consumertechnologyandmoreforthefutureDEC15,2023SnapdragonandQualcommbrandedproductsareproductsofQualcommTechnol......
  • Semantic Kernel 正式发布 v1.0.1 版本
    微软在2023年12月19日在博客上(SayhellotoSemanticKernelV1.0.1)发布了Semantickernel的.NET正式1.0.1版本。新版本提供了新的文档,以解释SDK创建AI代理的能力,这些代理可以与用户交互、回答问题、调用现有代码、自动化流程和执行各种其他任务。SemanticKernel是一个开源......
  • AntDesignBlazor示例——Modal表单
    本示例是AntDesignBlazor的入门示例,在学习的同时分享出来,以供新手参考。示例代码仓库:https://gitee.com/known/BlazorDemo1.学习目标创建Modal表单编辑数据创建Table操作列2.创建Modal表单1)新增按钮和Modal组件打开天气页面Weather.razor文件,按照如下步骤添加新增按钮......
  • FLAC: Federated Learning with Autoencoder Compression and Convergence Guarantee-
    目的:减少通信量(成本),例如VGGNet架构具有大约1.38亿个参数(4264Mb)方法:具有自动编码器压缩(AutoencoderCompression)且具有收敛保证(ConvergenceGuarantee);利用冗余信息(theredundantinformation)和FL的迭代纠错能力(iterativeerror-correctingcapabilityofFL)来压缩client的模型,......
  • 设置element组件表格:表头样式、单元格样式、表尾合计、边框、行高
    设置表格头样式methods:{headerCellClassName({row,column,rowIndex,columnIndex}){if(rowIndex===0){return{textAlign:'center',background:'#FFD966',fontWeight:'bold',color:'#000000'......
  • wpf + MaterialDesign + Prism8 实现导航功能
    十年河东,十年河西,莫欺少年穷学无止境,精益求精实现的效果: 1、初始化Prism 1.1、项目引入如下包 1.2、按照Prism规则,项目中创建如下文件夹 Prism规则:必须将窗体放入Views文件夹中,窗体名称必须以View结尾,必须将数据上下文放入ViewModels文件夹中,上下文类必须以Model结......
  • DevExpress中使用BandGridView实现复合(多行)表头、设置多行表头背景颜色、表格边框颜色
    一、实现效果二、实现方法2.1、创建复合表头①将创建的GridControl下的GirdView1转化为BandGridView类型;②创建需要展示的列(指定列的名称【Name】、描述【caption】、数据字段名称【FieldName】)③绑定列实现复合表头。注意:如果复合表头有多行,则需要设置新增Band的RowCoun......