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

相关文章

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils