element-ui中el-table数据合并行和列,应该怎么解决

最近接到一个任务,要实现一个数据报表,涉及到很多合并问题,一开始想着原生会简单点,实际上很麻烦,最后还是用elemen-ui中table自带的合并方法.

最终的效果是要做成这种:1.数据处理,后端返回来的数据是,一个大对象,包含三个数组,既然合并,肯定是要处理成一个数组,并且要把相同的追加一个属性,后面根据这个属性进行合并处理.

2.页面结构代码

 <div class="p-title-header"><span>日期:{{ currentDate }}</span><span>门诊业务信息日报表</span><span>单位: 元</span></div><el-table:data="tableData1"ref="recordTable":span-method="arraySpanMethod1"border:cell-style="{ textAlign: 'center' }":header-cell-style="{ textAlign: 'center' }":row-style="{ height: '0' }"><el-table-column prop="name" label="类型" width="100"> </el-table-column><el-table-column prop="docName" label="疫苗种类"> </el-table-column><el-table-column prop="serviceCount" label="日业务量"> </el-table-column><el-table-column prop="totalFee" label="单价"> </el-table-column><el-table-column label="当日确认收入"><el-table-column prop="vaccineIncome" label="疫苗收入"></el-table-column><el-table-column prop="vaccinateIncome" label="接种收入"></el-table-column></el-table-column></el-table>

2.请求回来的数据,进行数据处理

// 获取数据getDataList() {let params = {};this.filter.forEach((item) => {if (item.value && item.type != "daterange") {params[item.key] = item.value;}if (item.value && item.type == "daterange") {params.visitDateStart = item.value[0];params.visitDateEnd = item.value[1];}});// if (//   !this.filter.some((item) => item.type === "daterange" && item.value)// ) {//   this.$message.error('请选择要查询的日期范围')//   return;// }this.$http({method: "post",url: "/report/forms/reportQuery",mode: "main",data: params,}).then((res) => {console.log(res, "666-res");}).catch((err) => {console.log(err, "555-err");let arr = [];let arr1 = err.data.listCheck;let arr2 = err.data.listVaccine;let arr3 = err.data.listSpecial;arr1.map((val) => {return { ...(val.name = "疫苗接种") };});arr1.push({name: "疫苗接种",docName: "疫苗接种收入合计",vaccineIncome: err.data.listVaccine[0].vaccineIncomeAmount,});arr2.map((val) => {return { ...(val.name = "个人检测") };});arr2.push({name: "个人检测",docName: "个人检测收入合计",vaccineIncome: err.data.listCheck[0].vaccineIncomeAmount,});arr3.map((val) => {return { ...(val.name = "特色健康门诊") };});arr3.push({name: "特色健康门诊",docName: "特色健康门诊收入合计",vaccineIncome: err.data.listSpecial[0].vaccineIncomeAmount,});let arr4 = [{name: "当日确认收入合计",vaccinateIncome: err.data.listVaccine[0].vaccinateAllAmount,},];console.log(err.data.listCheck, 22222);// this.tableData1 = arr//   .concat(arr1)//   .concat(arr2)//   .concat(arr3)//   .concat(arr4);this.tableData1 = [...arr, ...arr1, ...arr2, ...arr3, ...arr4];console.log(this.tableData1, "099090909090");});},

4.合并公共方法

 // 合并公共方法flitterData(arr) {let spanOneArr = [],spanTwoArr = [],concatOne = 0;arr.forEach((item, index) => {if (index === 0) {spanOneArr.push(1);spanTwoArr.push(1);} else {// 只需要将 span_name 修改为自己需要合并的字段名即可if (item.name === arr[index - 1].name) {// 第一列需合并相同内容的判断条件spanOneArr[concatOne] += 1;spanOneArr.push(0);} else {spanOneArr.push(1);concatOne = index;}}});return {one: spanOneArr,};},

5.合并方法,这里是要根据自己的业务请求进行调整处理的

// 合并方法arraySpanMethod1({ row, column, rowIndex, columnIndex }) {// console.log(rowIndex, columnIndex)if (columnIndex == 0) {const _row = this.flitterData(this.tableData1).one[rowIndex];if (row.name == "当日确认收入合计") {return [1, 1];} else {return {rowspan: _row,colspan: 1,};}}if (row.docName == "个人检测收入合计" ||row.docName == "特色健康门诊收入合计" ||row.docName == "疫苗接种收入合计") {if (columnIndex == 1) return [1, 3];else if (columnIndex == 4) return [1, 2];else return [0, 0];}},

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

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

相关文章

户外台灯设计:照亮你的户外空间

在一个温暖的夏夜&#xff0c;能够在户外享受美味的晚餐是一种特殊的愉悦。这种露天用餐的体验不仅让你感受大自然的美丽&#xff0c;还提供了独特的放松感。为了让这个时刻更加难忘&#xff0c;户外台灯的用途与设计至关重要。 户外台灯能够创造出温馨的氛围&#xff0c;为用餐…

Excel中功能区的存放位置很灵活,可以根据需要隐藏或显示

在这个简短的教程中,你将找到5种快速简单的方法来恢复Excel功能区,以防丢失,并学习如何隐藏功能区,为工作表腾出更多空间。 功能区是Excel中所有操作的中心点,也是大多数可用功能和命令所在的区域。你觉得功能区占用了你太多的屏幕空间吗?没问题,只需单击鼠标,它就被隐…

使用python批量修改图片名称

一、使用场景 修改模式&#xff1a;原图片名称.png 》 目标图片名称.png条件&#xff1a;目标图片名称 包含 原图片名称准备工作&#xff1a;目标图片名称填写在excel当中&#xff0c;把excel放进图片文件夹内 二、代码示例 import os import pandas as pd import numpy as …

矢量图形编辑软件Boxy SVG mac中文版软件特点

Boxy SVG mac是一款基于Web的矢量图形编辑器&#xff0c;它提供了一系列强大的工具和功能&#xff0c;可帮助用户创建精美的矢量图形。Boxy SVG是一款好用的软件&#xff0c;并且可以在Windows、Mac和Linux系统上运行。 Boxy SVG mac软件特点 简单易用&#xff1a;Boxy SVG的用…

NVM安装node后提示没有对应npm包(即:无法将“npm”项识别为 cmdlet、函数、脚本文件)

背景 windows11 node版本降低到v12.22.12后&#xff0c;执行&#xff1a;nvm -v npm -v npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果 包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 …

opencv dnn模块 示例(22) 目标检测 object_detection 之 yolov7

在YOLOv6 初版出来不久&#xff0c;YOLOv7就立马横空出世了。与YOLOv5、YOLOv6不同&#xff0c;YOLOv7是由YOLOv4团队的原班人马提出的&#xff08;官方出品&#xff09;。从论文的表上来看&#xff0c;目前YOLOv7无论是在实时性还是准确率上都已经超过了当时已知的所有目标检测…

Java 之 IO/NIO/OKIO

BIO blocking io AIO Asynchronous IO 从内存读取到写入--输出 从外部到内存 -- 输入 OutputStream //文件不存在则自动创建 try {OutputStream outputStream new FileOutputStream("text.txt");outputStream.write(a);outputStream.write(b);} catch (IOExcep…

Python使用Numba装饰器进行加速

Python使用Numba装饰器进行加速 前言前提条件相关介绍实验环境Numba装饰器进行加速未加速的代码输出结果 numba.jit加速的代码输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小操作专栏、Ope…

已解决:Rust Error: the trait bound is not satisfied 问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

python的format函数的用法及实例

目录 1.format函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;{}.format() &#xff08;2&#xff09;用法&#xff1a;用于格式化字符串。可以接受无限个参数&#xff0c;可以指定顺序。返回结果为字符串。 2.实例 &#xff08;1&#xff09;不设置位置&…

煤矿企业如何选择合适的设备健康管理系统

在煤矿开采的过程中&#xff0c;机电设备发挥着重要的作用。但大量的机电设备的使用也给煤矿企业设备管理提出了一定的要求。随着工业领域数字化的深入应用&#xff0c;煤矿机电设备的自动化、智能化管理已经成为煤矿企业发展的重要手段。保障机电设备的正常运行&#xff0c;减…

Spring Boot框架配置WebSocket【一遍过,不过你评论骂我】

【找了无数的文档资料总结】 【不停的找文档试】 【每一次都显示连接不上】 【终于成了……】 当使用Spring Boot框架配置WebSocket时, 通常会使用@ServerEndpoint注解来标识WebSocket端点, 并通过ServerEndpointExporter来注册这些端点。以下是配置WebSocket的步骤: 步骤…

2023.11.10联测总结

T 1 T1 T1求的是有多少个区间的异或和是 k k k的因子&#xff0c; n , k ≤ 1 0 5 n,k \leq 10^5 n,k≤105。 这道题用前缀和维护一下&#xff0c;暴力枚举所有区间就有 80 80 80分。 有一瞬间想过枚举因数&#xff0c;但是脑抽以为要 O ( n ) \mathcal O(n) O(n)枚举&#x…

传输层中的TCP和UPD协议

一)应用层协议简介:根据需求明确要传输的信息&#xff0c;明确要传输的数据格式&#xff1b; 应用层协议:这个协议&#xff0c;实际上是和程序员打交道最多的协议了 1)其它四层都是操作系统&#xff0c;驱动&#xff0c;硬件实现好了的&#xff0c;咱们是不需要管 2)应用层:当我…

红海云签约和兆服饰,科技引领服饰行业人力资源数字化转型

和兆服饰从事多品牌多品类经营管理&#xff0c;旗下拥有POLOSPORT、POLOKIDS、CARTELO等国际品牌。作为一个主打POLO文化的服饰品牌&#xff0c;诞生于美国的POLOSPORT拥有现代感的产品设计、系列化的产品搭配、全方位的服务&#xff0c;是最具美国马球精神的休闲时尚服饰品牌之…

基于JavaWeb+SSM+Vue微信小程序校园兼职任务平台系统的设计和实现

基于JavaWebSSMVue微信小程序校园兼职任务平台系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 随着社会的发展和全球疫情的冲击&#xff0c;大学生的就业形势越来越严峻。越…

WordPress Modown 6.2付费下载资源/付费查看内容 wp主题模板+erphpdown11.7

模板简介&#xff1a; 自适应响应式设计&#xff0c;兼容主流浏览器 网格样式与瀑布流样式任意切换 内置SEO优化 自带与主题UI完美兼容搭配的erphpdown前端用户中心页面&#xff08;此功能若单独找我们定制也需要几百&#xff09; 收费付费下载资源、付费查看内容、付费观看…

LeetCode(1)合并两个有序数组【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 88. 合并两个有序数组 1.题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合…

探索经典算法:贪心、分治、动态规划等

1.贪心算法 贪心算法是一种常见的算法范式&#xff0c;通常在解决最优化问题中使用。 贪心算法是一种在每一步选择中都采取当前状态下最优决策的算法范式。其核心思想是选择每一步的最佳解决方案&#xff0c;以期望达到最终的全局最优解。这种算法特点在于只考虑局部最优解&am…

【学术综述】-如何写出一篇好综述-写好综述要注意的问题

文章目录 1.前置1.1 SSD 的结构1.2 FTL的架构和作用 2 动机-why&#xff1f;3 做了什么【做了哪些方面的survey】&#xff1f;4 背景知识【上下文】5 研究的问题6 每个问题对应的解决方案 从昨天晚上【2023.11.09 22:00】到今天22:29的&#xff0c;花了一天的时间在读这篇surve…