Ant Design Vue组件实现纵向/竖向表格 纵向表头表格的实现
纵向固定表头的表格,横向表头数量动态化
后台返回格式为以年份为区分的数组列表
reportDetails:[
{commercialYear: "2021",…},
{commercialYear: "2022",…},
{commercialYear: "2023",…},
{commercialYear: "2024",…},
...
]
1. 最终效果
2. 具体实现
1)定义固定表头及单位
//t() 是i18n多语言的使用
lable: 纵向表头的名称(中英文)
value: 后台返回的数据字段定义
unit: 表头后的单位(中英文)
export const tableColums = [
{
lable: t('view.ProjectAnalysis.launchYear'),
value:'commercialLaunch',
unit:''
},{
lable: t('view.ProjectAnalysis.treatedAreas'),
value:'treatedAreas',
unit:t('common.unit.klmt')
},{
lable:t('view.ProjectAnalysis.salesVolumes'),
value:'salesVolumes',
unit:t('common.unit.klmt')
}
.....]
2)生成横向表头数据列
columns:横向表头数据列
reportDetails:表格数据
let year ={
title:t('view.financialData.baseYear'),
dataIndex:'Year',
width: 290,
fixed: 'left',
slots: { customRender:'Year'},
}
columns.value.push(year)
reportDetails.forEach(element => {
let obj={
title:element.commercialYear,
align:'right',
dataIndex:element.commercialYear,
customRender:({text, record})=>{
let noRmb =
['产品上市年度','项目年度'....] //不需要添加金额符号的纵向表头数据
if(noRmb.indexOf(record.Year)!=-1){
if(text<0){ //数据为负数标红
if(record.Year == "利率" ){ //特殊数据特殊处理
return <div style="color:#ED263D">{text}%</div>
}
return <div style="color:#ED263D">{text}</div>
}else{
if(record.Year == "利率" ){
return text = text "%";
}
return text
}
}
}
columns.value.push(obj);
});
3)循环原始数据生成组件需要的横向数据
tableColums:已定义的纵向表头
for(let tab of tableColums){
let col: any = Object.create(null);
reportDetails.forEach((item,index)=>{
col.Year=tab.lable
col[columns.value[index 1].title] = item[tab.value]
col.unit=tab.unit
if(tab.value=='otherCost'){ //有特殊要求的数据特殊处理
col.unit = otherAllocation.value '%'
}
})
detaildata.value.push(col)
}
4)数据带入组件
表格样式根据ui自定义
<a-table :columns="columns" :dataSource="detaildata" :pagination='false' :scroll="{x: 'max-content'}">
<template #Year="{ record }">
<div v-if="record.Year=='部门开发'||......'">
<span class="cols">{{record.Year}} <span class="col-r">{{t('view.ProjectAnalysis.ffff')}}</span></span><span class="unit">{{record.unit}}</span>
</div>
<div v-else-if="record.Year=='时间投入'||...">
<span class="cols" style="text-align:right">{{record.Year}}</span>
<span class="unit">{{record.unit}}</span></div>
<div v-else>
<span class="cols">{{record.Year}}</span>
<span class="unit">{{record.unit}}</span>
</div>
</template>
</a-table>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggbkka
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13