element-plus table部分列根据接口返回key展示

news/2024/11/19 17:31:58/文章来源:https://www.cnblogs.com/xhrr/p/18197702

实现效果根据刷选年份返回对应年份作为部分列

1. 处理接口数据

  接口返回数据格式

  需要处理成

   处理过程

data.message && data.message.forEach((item:any)=>{let obj = {}for(var key in item){if(Number(key)){Object.assign(obj, {[key]: item[key]})}item.data = Object.assign(obj)}})state.yearcolumns = Array.from(new Set(data.message.flatMap((item:any) => Object.keys(item.data))))  //state.yearcolumns 输出[2023,2024]作为对应列标题
state.tableData = data.message

 表格渲染

<el-table :data="state.tableData" :border="true"  minHeight="1000" class='table-main'  @selection-change="handleSelectionChange" v-loading="state.tabLoading" element-loading-text="Loading..." :header-cell-style="state.headStyle" ><el-table-column type="selection" label="全选" align="center" width="50" /><el-table-column type="index" label="序号" align="center" width="80" /><el-table-column prop="total_num" label="合同总个数" align="center" width="100" /><el-table-column prop="total_contract_money" label="合同总金额" align="center" min-width="100" /><el-table-column v-for="(item,index) in state.yearcolumns" :key="item" :label="item+ '年'"  align="center" show-overflow-tooltip><el-table-column prop="num" label="合同个数" align="center" width="80"><template #default="{ row }">{{ getYearData(row, item, 'num', '') }}</template></el-table-column><el-table-column prop="contract_money" label="合同金额" align="center" min-width="100"><template #default="{ row }">{{ getYearData(row, item, 'contract_money', '') }}</template></el-table-column><el-table-column prop="" label="已签订" align="center"><el-table-column prop="" label="个数" align="center" width="70"><template #default="{ row }">{{ getYearData(row, item, '已签', 'num') }}</template></el-table-column><el-table-column prop="" label="金额" align="center" min-width="100"><template #default="{ row }">{{ getYearData(row, item, '已签', 'total_contract_money') }}</template></el-table-column></el-table-column><el-table-column prop="" label="未签订" align="center"><el-table-column prop="" label="个数" align="center" width="80"><template #default="{ row }">{{ getYearData(row, item, '未签', 'num') }}</template></el-table-column><el-table-column prop="" label="金额" align="center" min-width="100"><template #default="{ row }">{{ getYearData(row, item, '未签', 'total_contract_money') }}</template></el-table-column></el-table-column><el-table-column prop="" label="不签订" align="center"><el-table-column prop="" label="个数" align="center" width="80"><template #default="{ row }">{{ getYearData(row, item, '不签', 'num') }}</template></el-table-column><el-table-column prop="" label="金额" align="center" min-width="100"><template #default="{ row }">{{ getYearData(row, item, '不签', 'total_contract_money') }}</template></el-table-column></el-table-column></el-table-column><el-table-column label="操作" align="center"><template #default="{row}"><el-button style="padding:0" text size='small' @click="openViewTasks(row)">可视化展示</el-button></template></el-table-column></el-table>

 

const getYearData = (row:any, year:any, name:String, subName:any) =>{if(name == 'num'){return row.data[year].num || '--';}if(name == 'contract_money'){return row.data[year].contract_money || '0';}if(name == '已签' || '未签' || '不签'){let val = row.data[year].status.filter((item:any)=>item.iscontract==name)if(subName== 'num'){if(val.length != 0){return val[0].total_num}}if(subName== 'total_contract_money'){if(val.length != 0){return val[0].total_contract_money}}}// return
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式05----适配器模式

适配器模式: 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口协同工作。这种模式涉及到一个单独的类,该类负责将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以一起工作。 例如: USB转接口就是适配器,它能够将各种不同类…

基于时间的断路器

1 新建一个微服务模块 我们在cloud-payment-service模块中新增一个controller以提供给其它微服务模块调用。 @RestController public class PayCircuitController {@GetMapping("/pay/circuit/{id}")public String myCircuit(@PathVariable("id") Integer …

计算机体系结构-Booth乘法

本专栏用于记录计算机体系结构学习笔记原理解释 电路实现 以Radix-4 Booth编码为例,Booth乘法的核心是部分积的生成,需要生成\(N/2\)个部分积,每个部分积与\([X]_补\)有关,存在\(-X,-2X,+X,+2X,0\) 这五种可能,其中减去\(X_{补}\)的操作可以认为是按位取反的\(X_{补}\)在末…

使用 JS 实现在浏览器控制台打印图片 console.image()

在前端开发过程中,调试的时候,我门会使用 console.log 等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。虽然我们可以把图片数据通过 img 标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个…

渗透测试快速启动指南-全-

渗透测试快速启动指南(全)原文:Quick Start Guide to Penetration Testing 协议:CC BY-NC-SA 4.0一、NMAP 简介 漏洞评估和渗透测试变得越来越重要,尤其是在最近几年。组织通常拥有存储敏感数据的复杂资产网络。这些资产暴露在来自组织内部和外部的潜在威胁之下。为了全面…

『手撕Vue-CLI』编码规范检查

前言 这篇为什么是编码规范检查呢?因为这是一个很重要的环节,一个好的编码规范可以让代码更加清晰易读,在官方的 VUE-CLI 也是有着很好的编码规范的,所以我也要加入这个环节。 其实不管在哪个项目中,编码规范都是很重要的,像我们平日里的项目开发当中,我们也会使用 ESLi…

字节面试:MySQL什么时候 锁表?如何防止锁表?

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

CF1884D Counting Rhyme 题解

题目链接:CF 或者 洛谷 给个莫反题解,讲讲常规套路 题目要求满足没有 \(a_k \mid a_i 与 a_k \mid a_j\) 的 \((i,j)\) 的对数,显然即不存在 \(a_k \mid \gcd(a_i,a_j)\)。稍微拓展下,如果不存在整除多个数,那么显然不整除它们的 \(\gcd\) 即可,因为它们的公因数即为满足…

ITSM工作台:工程师效率与协同的新天地

在当今快节奏的IT运维领域,ITILDESK工作台脱颖而出,成为专为技术工程师量身打造的全能助手。这款平台不仅仅是一个工具集合体,它是一个精心设计的生态系统,旨在促进工程师的工作效率、团队协作与个人成长,为日常运维工作带来前所未有的便捷与智能。 一站式工作环境:从工…

HTML5中 drag 和 drop api

被拖放元素 -- A,目标元素 -- B。dragstart 事件主体是A,在开始拖放A时触发。 dragend 事件主体是A,在整个拖放操作结束时触发。 drag 事件主体是A,正在拖放A时触发(整个拖拽,drag事件会在被拖拉的节点上持续触发,相隔几百毫秒)。 dragenter 事件主体是B,在A进入某元素…

一些不错的地理题

2022年福建高考与土壤联系最密切的应该是植被 所以AB选项直接排除 然后的话30度的时候为什么大幅上升呢,主要是因为青藏高原 所以通过尺度也可以做这个题 10度的纬度,算是一个中等的尺度,而不应该是土壤植被这种小尺度大题意义类要去找主体、找问题 对你的意义 对我的意义 对…

项目管理之八大绩效域-------笔记(二)

八大绩效域详细解析 18.1 干系人绩效域跟干系人所有相关的活动.一、预期目标①与干系人建立高效的工作关系②干系人认同项目目标③支持项目的干系人提高了满意度,并从中收益④反对项目的干系人没有对项目产生负面影响三四是一个意思,就是支持你的人更支持你,反对你的人没有负面…