vue使用elementui表格和printjs实现分页打印
时间: 2024-05-06 13:19:31 浏览: 124
首先,需要安装element-ui和print-js库:
```
npm install element-ui print-js
```
然后在Vue组件中引入相关库:
```javascript
import { Table, TableColumn, Pagination, Button } from 'element-ui';
import printJS from 'print-js';
```
接着,在template中使用element-ui的Table、TableColumn、Pagination和Button组件来实现表格和分页功能:
```html
<template>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
</el-table>
<el-pagination
v-model="currentPage"
:total="tableData.length"
:page-size="pageSize"
layout="total, prev, pager, next"
></el-pagination>
<el-button type="primary" @click="printData">打印</el-button>
</div>
</template>
```
其中,tableData是表格数据,currentPage是当前页码,pageSize是每页显示的数据量。
在script中,需要定义tableData、currentPage和pageSize,并实现打印功能:
```javascript
export default {
name: 'MyTable',
components: { Table, TableColumn, Pagination, Button },
data() {
return {
tableData: [
{ name: '张三', age: 18, address: '北京市朝阳区' },
{ name: '李四', age: 20, address: '上海市浦东新区' },
{ name: '王五', age: 22, address: '广州市天河区' },
{ name: '赵六', age: 24, address: '深圳市南山区' },
{ name: '钱七', age: 26, address: '杭州市西湖区' },
{ name: '孙八', age: 28, address: '南京市鼓楼区' },
{ name: '周九', age: 30, address: '成都市武侯区' },
{ name: '吴十', age: 32, address: '长沙市岳麓区' },
],
currentPage: 1,
pageSize: 3,
};
},
methods: {
printData() {
const start = (this.currentPage - 1) * this.pageSize;
const end = start + this.pageSize;
const dataToPrint = this.tableData.slice(start, end);
printJS({
printable: dataToPrint,
properties: ['name', 'age', 'address'],
type: 'json',
});
},
},
};
```
在printData方法中,首先通过计算得到需要打印的数据,然后调用printJS库的printJS方法来实现打印。其中,printable表示需要打印的数据,properties表示需要打印的属性,type表示数据类型。
以上就是使用element-ui表格和print-js实现分页打印的步骤。
阅读全文