使用 command(win : control) + p 打印时,如果页面的 table 分页后,想要将第二页之后的每个页面都加上表头,可以封装一个可复用的组件。

一、编写可复用的组件

代码如下:

ElTableHeader.vue

1
2
3
4
5
6
7
8
9
10
11
12
13
import { Table } from "element-ui";
export default {
extends: Table,
mounted() {
this.$nextTick(function () {
let thead = this.$el.querySelector(".el-table__header-wrapper thead");
let theadNew = thead.cloneNode(true);
this.$el
.querySelector(".el-table__body-wrapper table")
.appendChild(theadNew);
});
},
};
1
2
3
4
5
6
7
8
9
10
11
.el-table >>> .el-table__body-wrapper thead {
display: none;
}
@media print {
.el-table >>> .el-table__header-wrapper {
display: none;
}
.el-table >>> .el-table__body-wrapper thead {
display: table-header-group;
}
}

二、全局注册及使用

1、main.js引入

1
2
import ElTableHeader from "./components/ElTableHeader.vue"
Vue.component("el-table-header",ElTableHeader)

2、使用

1
2
3
4
5
<template>
<el-table-header :data="tableData">

</el-table-header>
</template>