之前试了两种方法
都不符合需求想要的效果
方法1只是重新打开窗口,适用于pdf预览简单需求
方法2因为是单页展现,还需要上一页下一页的切换,也不合适
最后我试了一下iframe刚好满足我的需求
废话不多说,直接上代码:
最核心一句代码
只需要一句代码
<iframe :src="pdfSrc" frameborder="0" width="100%" height="100%" ></iframe>
预览效果还自带下载和打印功能
完整代码
<template>
<div>
<div style="text-align: left;">
<H2>行业资料</H2>
<el-divider>
</el-divider>
<el-container>
<el-aside width="300px" style="border: 1px solid #eee;height: 1000px; background-color: #D3DCE6;">
<div class="myTree">
<el-tree default-expand-all :props="defaultProps" :data="tableData" @node-click="handleNodeClick"></el-tree>
</div>
</el-aside>
<el-container style="border: 1px solid #eee;margin-left: 10px;">
<iframe :src="pdfSrc" frameborder="0" width="100%" height="100%" ></iframe>
</el-container>
</el-container>
</div>
</div>
</template>
<script>
export default {
name: "IndustryInformation",
data(){
return {
currentPage: 0, // pdf文件页码
pageCount: 0, // pdf文件总页数
fileType: 'pdf', // 文件类型
pdfSrc: '', // pdf文件地址
defaultProps: {
children: 'children',
label: 'name'
},
tableData: [{
id: 1,
name: '道路工程资料',
children:[
{
id: 2,
name: '公路工程资料编制概述',
children:[
{
id: 21,
name: '路面工程部分分项划分表',
src: '/1.pdf',
},
{
id: 13,
name: '一般建设项目单位工程划分表',
src: '/2.pdf',
},
{
id: 14,
name: '路基工程部分分项划分表',
src: '/3.pdf',
},
{
id: 33,
name: '桥梁工程部分分项划分表',
src: '/4.pdf',
},
{
id: 34,
name: '隧道工程部分分项划分表',
src: '/5.pdf',
}
]
},
{
id: 3,
name: '公路工程竣工资料',
children:[
{
id: 7,
name: '公路工程竣工文件编排层次',
src: '/5.pdf',
},
{
id: 8,
name: '工程洽商记录表',
src: '/4.pdf',
},
{
id: 9,
name: '工程设计表更、洽商一览表',
src: '/3.pdf',
}
]
}
]}]
}
},
methods:{
handleNodeClick(data) {
this.pdfSrc = data.src;
}
}
}
</script>
<style scoped>
.myTree /deep/ .el-tree {
position: relative;
cursor: default;
color: #606266;
background-color: #D3DCE6;
}
</style>
最终效果