zoukankan      html  css  js  c++  java
  • vue 表格复杂表头的动态生成

    实验室报告有表格预览,会把不确定个数的检测项目和检测指标结果展示出来,

    动态实现多个二级表头, 一行不够 多个表格换行。

    1.效果如图:

    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)
                    }
            },
    
    
  • 相关阅读:
    问题 Duplicate entry '0' for key 'PRIMARY'
    java中转译符用"\"的几种特殊字符
    mysql在查询中常见问题汇总
    linux msql
    shell 简单的比大小脚本
    wordpress的备份与还原
    wordpress的创建
    6、httpd服务的安装、配置
    5、Linux下面桌面的安装
    4、时间同步ntp服务的安装于配置(作为客户端的配置)
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12156133.html
Copyright © 2011-2022 走看看