vue 表格复杂表头的动态生成
实验室报告有表格预览,会把不确定个数的检测项目和检测指标结果展示出来,
动态实现多个二级表头, 一行不够 多个表格换行。
1.效果如图:
- 代码如下:
<el-table v-for="(tdata,index) in tableData" :key="index" :data="tdata.result">
<el-table-column
:prop="item.prop"
:label="item.label"
:key="k" v-for="(item,k) in tdata.tableHeader">
<span v-if="item.child">
<el-table-column
:prop="son.prop"
:label="son.label"
:key="'s'+k" v-for="(son,k) in item.child" >
</el-table-column>
</span>
</el-table-column>
</el-table>
drawTable(res){
const { resSamplesList , positiveList, negativeList, blankList , itemList } = res;
let column = 4 //一行四个一级表头
let tableNum = Math.ceil( itemList.length / column )
for(let i = 0; i < tableNum; i++){
let tableJson = {}
var tableHeader = [] //表头
var tableRes = [] // table结果 集合
tableHeader.push({
label:'序号',
prop:'num'
},
{
label:'原始编号',
prop:'sampleCustomNo'
})
for( let j = 0 ; j < column; j++){
if(itemList[i * column + j]){
let headerJson = {}
headerJson.label = itemList[i * column + j].itemName || ''
if ( itemList[i * column + j].columnCount == 1 ) {
headerJson.child = [{
label: '判定', //itemList[i * column + j].columnRes,
prop:`res${j}`
}]
}else{
headerJson.child =[
{
label: '判定', //itemList[i * column + j].columnRes,
prop:`res${j}`
},
{
label: '循环数', //itemList[i * column + j].columnCycles,
prop:`cycles${j}`
},
{
label: '拷贝数', //itemList[i * column + j].columnParam,
prop:`copy${j}`
}
]
}
tableHeader.push(headerJson)
}
}
for( let k = 0; k < resSamplesList.length; k++){
let resJson = {} // 结果信息
resJson.num = k + 1
resJson.sampleCustomNo = resSamplesList[k].sampleCustomNo;
let sItemLen = resSamplesList[k].sampleResultKys;
for( let m = 0 ; m < column; m++){
if(sItemLen[column * i + m]){
resJson[`copy${m}`] = sItemLen[column * i + m].copyNumber || ''
resJson[`res${m}`] = sItemLen[column * i + m].res || ''
resJson[`cycles${m}`] = sItemLen[column * i + m].cycleNumber || ''
}
}
tableRes.push(resJson)
}
let yangxdzJson = {}
let yinxdzJson = {}
let nulldzJson = {}
let len = tableRes.length;
for( let n = 0; n < column; n++){
yangxdzJson.num = len + 2;
yangxdzJson.sampleCustomNo = '阳性对照'
yinxdzJson.num = len + 1;
yinxdzJson.sampleCustomNo = '阴性对照'
nulldzJson.num = len + 3;
nulldzJson.sampleCustomNo = '空白对照'
if(positiveList[column * i + n]){
yangxdzJson[`copy${n}`] = positiveList[column * i + n].copyNumber || ''
yangxdzJson[`res${n}`] = positiveList[column * i + n].res || ''
yangxdzJson[`cycles${n}`] = positiveList[column * i + n].cycleNumber || ''
}
if(negativeList[column * i + n]){
yinxdzJson[`copy${n}`] = negativeList[column * i + n].copyNumber || ''
yinxdzJson[`res${n}`] = negativeList[column * i + n].res || ''
yinxdzJson[`cycles${n}`] = negativeList[column * i + n].cycleNumber || ''
}
if(blankList[column * i + n]){
nulldzJson[`copy${n}`] = blankList[column * i + n].copyNumber || ''
nulldzJson[`res${n}`] = blankList[column * i + n].res || ''
nulldzJson[`cycles${n}`] = blankList[column * i + n].cycleNumber || ''
}
}
tableRes.push(yinxdzJson)
tableRes.push(yangxdzJson)
tableRes.push(nulldzJson)
tableJson.tableHeader = tableHeader
tableJson.result = tableRes;
this.tableData.push(tableJson)
}
},
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构