1
lzhe
2024-10-10 d1b6cd8e5270b15546c94587fe2648453d525eee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<template>
    <el-main>
        <el-card shadow="never">
            <el-tabs tab-position="top">
                <el-tab-pane label="普通打印">
                    <el-alert title="打印当前页面已存在的元素,如包含.no-print样式就忽略,分页打印就需要{page-break-after: always}控制" type="success" style="margin-bottom:20px;"></el-alert>
                    <el-button type="primary" @click="print">普通打印</el-button>
                    <div style="height:20px"></div>
                    <div class="printMain" ref="printMain">
                        <div class="item">打印内容1 <el-icon><el-icon-eleme-filled /></el-icon> <p class="no-print">忽略打印</p></div>
                        <div style="page-break-after: always;"></div>
                        <div class="item">打印内容2</div>
                    </div>
                </el-tab-pane>
                <el-tab-pane label="动态打印">
                    <el-alert title="打印创建的DOM结构,适用于远程获取模板后打印" type="success" style="margin-bottom:20px;"></el-alert>
                    <el-button type="primary" @click="print2">动态打印</el-button>
                </el-tab-pane>
            </el-tabs>
        </el-card>
    </el-main>
</template>
 
<script>
    import print from '@/utils/print'
 
    export default {
        name: 'print',
        data() {
            return {}
        },
        methods: {
            print(){
                //直接传入REF或者querySelector
                print(this.$refs.printMain)
            },
            print2(){
                //创建虚拟DOM结构后再传入
                var dom = "<h2>TITLE</h2><p>后创建的DOM结构</p>"
                print(dom)
            }
        }
    }
</script>
 
<style scoped>
    .printMain .item{padding:20px;border: 1px solid #409eff;margin-bottom: 20px;background: #ecf5ff;border-radius: 4px;}
    .printMain p {margin-top: 20px;color: #999;}
</style>