<el-table :span-method="objectSpanMethod" :cell-style="iCellStyle" :data="tableData" height="63vh" border style="width: 100%; margin-top: 6px">
<el-table-column type="index" label="序号" width="50" align="center">
</el-table-column>
<el-table-column prop="vocs" label="VOCs组分" align="center">
</el-table-column>
<el-table-column label="源成分谱" align="center">
<template slot-scope="{row}">
<span v-if="row.type==1">化工</span>
<span v-if="row.type==2">制造业</span>
<span v-if="row.type==3">交通运输</span>
</template>
</el-table-column>
<el-table-column prop="value" label="成分浓度(ug/m3)" align="center">
</el-table-column>
<el-table-column prop="rate" label="成分浓度贡献率" align="center">
</el-table-column>
</el-table>
this.tableData=[
{
"type": "1",
"value": 8.008,
"rate": 28.241932639746075,
"vocs": "乙烷"
},
{
"type": "2",
"value": 7.862,
"rate": 27.727032269441022,
"vocs": "乙烷"
},
{
"type": "3",
"value": 12.485,
"rate": 44.03103509081291,
"vocs": "乙烷"
},
{
"type": "1",
"value": 11.184,
"rate": 39.46226315232349,
"vocs": "乙烯"
},
{
"type": "2",
"value": 12.289,
"rate": 43.361208143678766,
"vocs": "乙烯"
},
{
"type": "3",
"value": 4.868,
"rate": 17.176528703997743,
"vocs": "乙烯"
},
{
"type": "1",
"value": 7.467,
"rate": 30.569884549250798,
"vocs": "丙烷"
},
{
"type": "2",
"value": 8.686,
"rate": 35.56046835339393,
"vocs": "丙烷"
},
{
"type": "3",
"value": 8.273,
"rate": 33.869647097355276,
"vocs": "丙烷"
},
{
"type": "1",
"value": 2.832,
"rate": 11.786739917592708,
"vocs": "丙烯"
},
{
"type": "2",
"value": 8.472,
"rate": 35.260332126357845,
"vocs": "丙烯"
},
{
"type": "3",
"value": 12.723,
"rate": 52.95292795604944,
"vocs": "丙烯"
},
{
"type": "1",
"value": 8.091,
"rate": 41.29957633607268,
"vocs": "异丁烷"
},
{
"type": "2",
"value": 6.747,
"rate": 34.43928334439283,
"vocs": "异丁烷"
},
{
"type": "3",
"value": 4.753,
"rate": 24.26114031953448,
"vocs": "异丁烷"
},
{
"type": "1",
"value": 1.93,
"rate": 11.623005118940078,
"vocs": "乙炔"
},
{
"type": "2",
"value": 5.598,
"rate": 33.71273712737127,
"vocs": "乙炔"
},
{
"type": "3",
"value": 9.077,
"rate": 54.66425775368865,
"vocs": "乙炔"
},
{
"type": "1",
"value": 2.265,
"rate": 13.758124278685537,
"vocs": "正丁烷"
},
{
"type": "2",
"value": 6.344,
"rate": 38.53489643442872,
"vocs": "正丁烷"
},
{
"type": "3",
"value": 7.854,
"rate": 47.70697928688574,
"vocs": "正丁烷"
},
{
"type": "1",
"value": 4.244,
"rate": 60.99453866053464,
"vocs": "反-2-丁烯"
},
{
"type": "2",
"value": 1.362,
"rate": 19.5745903995401,
"vocs": "反-2-丁烯"
},
{
"type": "3",
"value": 1.352,
"rate": 19.430870939925267,
"vocs": "反-2-丁烯"
},
{
"type": "1",
"value": 0.236,
"rate": 3.935957304869913,
"vocs": "1-丁烯"
},
{
"type": "2",
"value": 0.634,
"rate": 10.57371581054036,
"vocs": "1-丁烯"
},
{
"type": "3",
"value": 5.126,
"rate": 85.49032688458973,
"vocs": "1-丁烯"
},
{
"type": "1",
"value": 1.772,
"rate": 37.32097725358046,
"vocs": "顺-2-丁烯"
},
{
"type": "2",
"value": 2.192,
"rate": 46.16680707666386,
"vocs": "顺-2-丁烯"
},
{
"type": "3",
"value": 0.784,
"rate": 16.512215669755687,
"vocs": "顺-2-丁烯"
}
]
this.flagValue = "";
this.flagArr = [];
this.indexAllArr = [];
this.intervalArr = [];
let indexArr = [];
this.tableData.forEach((item, index) => {
if (this.flagValue != item.vocs) {
if (!this.flagArr.includes(item.vocs)) {
this.flagArr.push(item.vocs);
this.indexAllArr.push(index);
indexArr.push(index);
} else {
this.indexAllArr.push("-");
}
}
});
indexArr.forEach((ele, eleIndex) => {
var indexNum = "";
if (indexArr[eleIndex] != indexArr[indexArr.length - 1]) {
indexNum = indexArr[eleIndex + 1] - ele;
} else {
indexNum = this.tableData.length - indexArr[eleIndex];
}
this.intervalArr.push(indexNum);
});
this.indexAllArr.forEach((item, index) => {
if (!isNaN(Number(item)) && typeof Number(item) === "number") {
} else {
this.intervalArr.splice(index, 0, "-");
}
});
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 1) {
const _row = this.indexAllArr[rowIndex];
const rowspanVal = this.intervalArr[rowIndex];
if (rowIndex == _row) {
return {
rowspan: rowspanVal,
colspan: 1,
};
}else{
return {
rowspan: 0,
colspan: 0,
};
}
}
},
iCellStyle: function ({ row, column, rowIndex, columnIndex }) {
return "height:44px !import";
},