156 lines
5.6 KiB
Vue
156 lines
5.6 KiB
Vue
<template>
|
||
<!-- 关于表格的操作 -->
|
||
<div v-if="tableData.length > 0">
|
||
<!-- 行的合并 列的合并 表头添加斜线 -->
|
||
<el-table :data="tableData" style="width: 100%" :header-cell-style="{ height: '22px !important' }" class="tableBox">
|
||
|
||
<el-table-column :label="this.$t(`journalArticleTable.time`)" align="right" width="130" fixed>
|
||
<el-table-column prop="name" :label="this.$t(`journalArticleTable.title`)" width="120">
|
||
<template slot-scope="scope">
|
||
<el-tooltip class="item" effect="dark" :content="scope.row.jabbr" placement="top-start">
|
||
<div>
|
||
{{ scope.row.abbr }}
|
||
</div>
|
||
</el-tooltip>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table-column>
|
||
<el-table-column prop="fenopda" v-for="(v, i) in timeData" :label="v" align="center" :prop="v" min-width="70"></el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
tableInfo: {},
|
||
timeData: [],
|
||
tableData: []
|
||
};
|
||
},
|
||
created() {
|
||
// 调用计算需要合并的行
|
||
this.getSpanArr(this.content);
|
||
},
|
||
methods: {
|
||
getTableInfo(type, data) {
|
||
this.tableData = data.tableData;
|
||
this.timeData = data.timeData;
|
||
},
|
||
getSpanArr(data) {
|
||
this.spanObj.oneArray = [];
|
||
let concatOne = 0;
|
||
data.forEach((item, index) => {
|
||
if (index === 0) {
|
||
this.spanObj.oneArray.push(1);
|
||
} else {
|
||
// 判断依据
|
||
// 前一个的code和后一个的code相同,则进行 行的合并
|
||
if (item.code === data[index - 1].code) {
|
||
this.spanObj.oneArray[concatOne] += 1;
|
||
this.spanObj.oneArray.push(0);
|
||
} else {
|
||
this.spanObj.oneArray.push(1);
|
||
concatOne = index;
|
||
}
|
||
}
|
||
});
|
||
},
|
||
// 注意:横向合并列 纵向合并行
|
||
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||
if (columnIndex === 0) {
|
||
if (row.code === 'wlgzcd' || row.code === 'nlgzcd') {
|
||
return {
|
||
rowspan: 1,
|
||
colspan: 6
|
||
};
|
||
} else {
|
||
const _row = this.spanObj.oneArray[rowIndex];
|
||
const _col = _row ? 1 : 0;
|
||
return {
|
||
rowspan: _row,
|
||
colspan: _col
|
||
};
|
||
}
|
||
}
|
||
// 要将其余的列给清除,否则其还会占用空间
|
||
if (
|
||
(row.code === 'wlgzcd' || row.code === 'nlgzcd') &&
|
||
(columnIndex === 1 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4 || columnIndex === 5)
|
||
) {
|
||
// 1和2列被合并,不清除的话,则后面的单元格都会错位
|
||
return {
|
||
rowspan: 0,
|
||
colspan: 0
|
||
};
|
||
}
|
||
},
|
||
// 第二行表头的隐藏
|
||
headMerge({ row, column, rowIndex, columnIndex }) {
|
||
if (rowIndex === 2) {
|
||
return {
|
||
display: 'none'
|
||
};
|
||
}
|
||
}
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
::v-deep .el-table thead.is-group th {
|
||
/* background: none !important; */
|
||
}
|
||
::v-deep .el-table thead.is-group tr:first-of-type th:first-of-type {
|
||
border-bottom: none !important;
|
||
}
|
||
::v-deep .el-table thead.is-group tr:first-of-type th:first-of-type:before {
|
||
content: '' !important;
|
||
position: absolute !important;
|
||
width: 1px !important;
|
||
height: 85px !important; /*这里需要自己调整,根据td的宽度和高度*/
|
||
top: 0 !important;
|
||
left: 0 !important;
|
||
background-color: #fff !important;
|
||
opacity: 0.8 !important;
|
||
display: block !important;
|
||
transform: rotate(-56deg) !important; /*这里需要自己调整,根据线的位置*/
|
||
transform-origin: top !important;
|
||
}
|
||
::v-deep .el-table thead.is-group tr:last-of-type th:first-of-type:before {
|
||
content: '' !important;
|
||
position: absolute !important;
|
||
width: 1px !important;
|
||
height: 105px !important; /*这里需要自己调整,根据td的宽度和高度*/
|
||
bottom: 0 !important;
|
||
right: 0 !important;
|
||
background-color: #fff !important;
|
||
opacity: 0.8 !important;
|
||
display: block !important;
|
||
transform: rotate(-57deg) !important; /*这里需要自己调整,根据线的位置*/
|
||
transform-origin: bottom !important;
|
||
}
|
||
::v-deep .el-table tr:nth-child(2n) {
|
||
background: #dcf3ff !important;
|
||
}
|
||
|
||
::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar {
|
||
width: 10px; /*滚动条宽度*/
|
||
height: 10px; /*滚动条高度*/
|
||
}
|
||
/*定义滚动条轨道 内阴影+圆角*/
|
||
::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar-track {
|
||
/* box-shadow: 0px 1px 3px #071e4a inset; */
|
||
border-radius: 10px; /*滚动条的背景区域的圆角*/
|
||
background-color: #f0f0f0; /*滚动条的背景颜色*/
|
||
}
|
||
/*定义滑块 内阴影+圆角*/
|
||
::v-deep .el-table .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
||
box-shadow: 0px 1px 3px #bababa inset; /*滚动条的内阴影*/
|
||
border-radius: 10px; /*滚动条的圆角*/
|
||
background-color: #bababa; /*滚动条的背景颜色*/
|
||
}
|
||
</style>
|
||
|
||
|