当前位置: 首页 > news >正文

asp网站建设代码网站模板平台资源

asp网站建设代码,网站模板平台资源,手机大全及价格,网站运营方式问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计,修改合计后文字的样式,合并单元格。 想实现的效果 合并表尾单元格前三列为1格;对某些指定的单元格进行表尾合计;合计后的文本样式加粗;涉及到金额需要千…

问题背景

最近在做后台管理项目el-table 时候需要进行表尾合计修改合计后文字的样式合并单元格

想实现的效果

在这里插入图片描述

  1. 合并表尾单元格前三列为1格;
  2. 对某些指定的单元格进行表尾合计;
  3. 合计后的文本样式加粗;
  4. 涉及到金额需要千分位分割并保留两位小数;

涉及到的属性方法

先看下element-plus 中关于 el-table 中能实现上面效果涉及到的属性和方法。

<el-table ref="tableRef":show-summary="true" :summary-method="getSummaries":span-method="spanMethod" 
></el-table>
  • show-summary: 是否在表尾显示合计行;
  • summary-method:自定义的合计计算方法;
  • span-method:合并行或列的计算方法;

el-table表尾合计行 官方文档

表尾合计

对某些指定的单元格进行表尾合计;涉及到金额需要千分位分割并保留两位小数;

<script setup lang="ts">
import { ref, unref, reactive, onMounted } from 'vue'
import type { TableColumnCtx } from 'element-plus'// 模拟接口返回的数据
const data = [{ blocCustNm: 'A', blocLmt: 600, totLnchAmt: 10, totBsnBal: 20, aprvAmt: 30, lnchAmt: 40, bsnBal: 50 },{ blocCustNm: 'B', blocLmt: 200, totLnchAmt: 20, totBsnBal: 30, aprvAmt: 40, lnchAmt: 50, bsnBal: 60 },{ blocCustNm: '', blocLmt: 300, totLnchAmt: 30, totBsnBal: 40, aprvAmt: 50, lnchAmt: 60, bsnBal: 70 }, // blocCustNm为空{ blocCustNm: '', blocLmt: 200, totLnchAmt: 30, totBsnBal: 40, aprvAmt: 50, lnchAmt: 60, bsnBal: 70 }, // blocCustNm为空{ blocCustNm: 'A', blocLmt: 400, totLnchAmt: 40, totBsnBal: 50, aprvAmt: 60, lnchAmt: 70, bsnBal: 80 }, // blocCustNm重复{ blocCustNm: 'C', blocLmt: 500, totLnchAmt: 50, totBsnBal: 60, aprvAmt: 70, lnchAmt: 80, bsnBal: 90 }
]
// 千分位分割,保留小数
function toFixedThousandFilter(num:undefined|number|string, fixed = 2) {if (num === undefined || num === 'undefined' || num === null || num === 'null') return ''return (null || 0).toFixed(fixed).replace(/^-?\d+/g, (m) => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}interface Product{blocLmt:string // 集团额度(万元)totLnchAmt:string // 总投放金额(万元)totBsnBal:string // 总业务余额(万元)aprvAmt:string // 审批金额(万元)lnchAmt:string // 投放金额(万元)bsnBal:string // 业务余额(万元)
}
interface SummaryMethodProps<T = Product> {columns: TableColumnCtx<T>[]data: T[]
}
const getSummaries = (param: SummaryMethodProps) => {const { columns, data } = paramconst sums:string[] = []const uniqueBlocCustNm = new Set<string>() // 存储已经处理过的blocCustNm,避免重复计算同个集团客户const sumArr = ['totLnchAmt', 'totBsnBal', 'aprvAmt', 'lnchAmt', 'bsnBal'] // 只对接口返回的这几个字段进行表尾合计columns.forEach((column, index) => {if (index === 0) {sums[index] = '合计'} else if (column.property === 'blocLmt') {let blocLmtSum = 0 // 集团额度总额data.filter((item: anyObj) => {if (!item.blocCustNm || !uniqueBlocCustNm.has(item.blocCustNm)) {blocLmtSum += Number(item[column.property])if (item.blocCustNm) {uniqueBlocCustNm.add(item.blocCustNm)}}})sums[index] = toFixedThousandFilter(blocLmtSum)} else if (sumArr.includes(column.property)) {const values = data.map((item: anyObj) => Number(item[column.property]))sums[index] = getTotalSum(values)}})return sums
}
//封装公共累加方法
const getTotalSum = (values:number[]):string => {if (values.every((value) => Number.isNaN(value))) {return '-'}const total = values.reduce((prev, curr) => {const value = Number(curr)if (!Number.isNaN(value)) {return prev + curr} else {return prev}}, 0)return toFixedThousandFilter(total)
}
</script>

合并表尾单元格前三列为1格

// 合并前三列单元格
const tableRef = ref()
const spanMethod = () => {const current = tableRef.value.$el.querySelector('.el-table__footer-wrapper').querySelector('.el-table__footer')const cell = current.rows[0].cellscell[0].style.textAlign = 'center' // 合计行第一列字段居中显示cell[1].style.display = 'none'cell[2].style.display = 'none' // 隐藏被合并的单元格,不隐藏的话会占位。cell[0].colSpan = '3' // 合并单元格return [1, 1] // 其它单元格按默认显示
}

参考:el-table合计行单元格合并、合并行金额四舍五入保留两位小数、合计行样式修改

http://www.zhongyajixie.com/news/13846.html

相关文章:

  • 手机网站源码asp宁德网站建设制作
  • 1000学习做网站贵吗淘宝指数转换
  • 竞猜网站开发常用seo站长工具
  • 上色的网站下载免费怎样开网站
  • 武汉外贸建站腾讯域名
  • 泉州外贸网站开发公司重庆网站排名推广
  • 做金融的喜欢逛哪些网站免费b站推广网站入口202
  • 南昌网站开发最新国际新闻50条简短
  • 知名做网站费用搜索引擎优化指的是什么
  • 济南网站设计价格百度游戏排行榜
  • 怎么开通自己的微信小程序标题优化怎样选关键词
  • 网站系统平台建设近期的新闻热点
  • framework7做网站零基础学seo要多久
  • sns社交网站 有哪些免费宣传平台
  • 做网站不难吧网络推广怎么收费
  • 服饰工厂网站建设百度搜索推广开户
  • 网站开发前端学习做神马seo快速排名软件
  • 电脑网页视频怎么下载广州seo优化排名公司
  • 织梦网站logo更改小说关键词生成器
  • 注册资本随便填了500万seo和sem推广
  • 中山建公司网站域名注册价格及续费
  • 重庆建设工程信息网官网安全监督信息seo深圳网络推广
  • 专门做汽车gps贷款网站全媒体广告代理
  • 那里可以免费建网站十大营销策略有哪些
  • wordpress音频播放搜索引擎优化包括
  • 廊坊建设质量监督局网站重庆关键词seo排名
  • 做搜狗pc网站软件seo机构
  • 关于加强网站建设与管理的通知网络推广策划方案怎么写
  • 济南怎样做网站推广seoer是什么意思
  • 建设银行网站邮箱磁力搜索引擎2023