Vue表格自定义合计、小计功能

2023-12-13 22:20

本文主要是介绍Vue表格自定义合计、小计功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、合计

<template> 
<avue-crud:option="optiondata":table-loading="loading":data="testdata":page.sync="page":span-method="spanMethod"ref="cruddata"@current-change="currentChangedata"@size-change="sizeChangedata"@on-load="echaerinfo"></avue-crud></template><script>
export default {data() {return {// 表格的属性optiondata: {height: 'auto',calcHeight: 30,tip: false,searchShow: false,searchMenuSpan: 6,menu: false,border: true,// index: true,// indexLabel: '序号',viewBtn: false,addBtn: false,delBtn: false,editBtn: false,selection: false,header: false,column: [{label: '分区级别',prop: 'areaLevel',dicUrl: '/api/blade-system/dict-biz/dictionary?code=area_level',props: {label: 'dictValue',value: 'dictKey',},// formatter: (row) => {//   return row.areaLevel == 'first_level'//     ? '一级'//     : row.areaLevel == 'second_level'//     ? '二级'//     : '三级'// },},{label: '分区名称',prop: 'areaName',},{label: '供水量(m³)',prop: 'totalWaterSupply',value: 'all',},{label: '用水量(m³)',prop: 'totalWaterUse',},// {//   label: '售水量(m³)',//   prop: 'meteredWaterConsum',//   value: 'all',// },{label: '漏损水量(m³)',prop: 'leakWaterConsum',type: 'number',},{label: '漏损率(%)',prop: 'leakRatio',type: 'number',},{label: '漏损率同比',prop: 'yearOnYearDiff',type: 'number',},{label: '漏损率环比',prop: 'linkRelativeDiff',type: 'number',},],},testdata: [{areaLevel: 1,areaName: 'aaa11',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 1,areaName: 'aaa22',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 2,areaName: 'aaa33',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 2,areaName: 'aaa44',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 2,areaName: 'aaa55',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 2,areaName: 'aaa66',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 3,areaName: 'aaa77',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 3,areaName: 'aaa88',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 3,areaName: 'aaa99',leakRatio: 10,leakWaterConsum: 1,},{areaLevel: 3,areaName: 'aaa10',leakRatio: 10,leakWaterConsum: 1,},],}// 合计getSummary() {let sums = {} // 合计行// 遍历属性this.optiondata.column.forEach((item) => {let prop = item.propif (['areaLevel', 'areaName'].includes(prop)) {sums[prop] = ''} else {let values = this.testdata.map((ele) => Number(ele[prop] || 0)) // 将数组中同一 属性的值构成一个新的数组// 计算各个属性的值的总和sums[prop] =values.length > 0? values.reduce((a, b) => {return a + b}): 0}})this.testdata.push(sums) // 将总计行插入数组最后一行},}
</script>

效果图:

二、各分类小计

// 小计getSum() {let newArr = [] // 新数组let currentArr = [] // 临时数组(同一个分类的)let currentLevel = this.testdata[0].areaLevel // 根据属性为 'areaLevel' 进行分组this.testdata.forEach((item, i) => {if (item.areaLevel == currentLevel) {currentArr.push(item)} else {newArr = newArr.concat(currentArr)newArr.push(this.getPropSums(currentArr, i)) // 新增一行这个分类的小计currentArr = [] // 清空临时数组currentLevel = item.areaLevel // 更新当前的分类(areaLevel)currentArr.push(item)}})newArr = newArr.concat(currentArr) // 将最后一组分类 push 进来newArr.push(this.getPropSums(currentArr, this.testdata.length)) // 将最后一组分类的小计插入最后一行this.testdata = newArr},// 计算各个属性的小计getPropSums(currentArr, i) {let sums = {}this.optiondata.column.forEach((item) => {let prop = item.propif (!['areaLevel', 'areaName'].includes(prop)) {let values = currentArr.map((ele) => Number(ele[prop] || 0))sums[prop] =values.length > 0? values.reduce((a, b) => {return a + b}): 0}sums['areaLevel'] = this.testdata[i - 1].areaLevelsums['areaName'] = '小计'})return sums},

效果图:

这篇关于Vue表格自定义合计、小计功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490158

相关文章

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分