1、列表页面:
| this.$router.push({ name: 'userTemplate', params: { reportUrl: reportUrl, reportType: reportType }}) | 
点击查看后触发事件,带入参数跳转到 userTemplate 页面;reportType 有两种类型,0 表示 reportUrl 是绝对网址,1 表示 reportUrl 是本地 html 文件。
2、userTemplate 页面:
| <template> | |
|  <div>  | |
|    <iframe v-if="reportType==0" name = "child" id = "child" v-bind:src="reportUrl" | |
| width="auto" height="300" | |
| frameborder="0" scrolling="no" style="position:absolute;top:80px;left: 30px;" | |
| ></iframe> | |
|  <div v-if="reportType==1" v-html="htmlContent" | |
| width="auto" height="300" scrolling="no" style="position:absolute;top:80px;left: 30px;"></div> | |
|  </div> | |
| </template> | |
| <script> | |
| import { | |
| getFile | |
| } from '@/api/report' | |
| export default { | |
| mounted() { | |
|     /** | |
| * iframe - 宽高自适应显示 | |
| */ | |
| function changeMobsfIframe() { | |
| const mobsf = document.getElementById('child') | |
| const deviceWidth = document.body.clientWidth | |
| const deviceHeight = document.body.clientHeight | |
| mobsf.style.width = (Number(deviceWidth) - 30) + 'px' // 数字是页面布局宽度差值 | |
| mobsf.style.height = (Number(deviceHeight) - 80) + 'px' // 数字是页面布局高度差 | |
|     } | |
| changeMobsfIframe() | |
| window.onresize = function() { | |
| changeMobsfIframe() | |
|     } | |
| }, | |
| data() { | |
| return { | |
| htmlContent: '', | |
| reportUrl: '', | |
| reportType: '' | |
|     } | |
| }, | |
| created() { | |
|     // this.fileName = '../static/file/' + this.$route.params.report_url | |
| this.reportUrl = this.$route.params.reportUrl | |
| this.reportType = this.$route.params.reportType | |
| if (this.reportType == 1) { | |
| getFile(this.reportUrl).then(res => { | |
| if (res.code === 200) { | |
| this.htmlContent = res.data | |
|         } | |
| }) | |
|     } | |
|   } | |
| } | |
| </script> | |
| <style rel="stylesheet/scss" lang="scss" scoped> | |
| </style> | 
后端 getFile:
| // 读取文件 | |
| @RequestMapping("/getFile") | |
| @ResponseBody | |
| public HttpResult getFile(String reportUrl){ | |
| StringBuilder result = new StringBuilder(); | |
| try{ | |
| FileSystemResource resource = new FileSystemResource("D:"+File.separator+"test"+File.separator+reportUrl); | |
| File file = resource.getFile(); | |
| BufferedReader br = new BufferedReader(new FileReader(file)); | |
| String s = null; | |
| while((s = br.readLine())!=null){ | |
| result.append(System.lineSeparator()+s); | |
| 	            } | |
| br.close(); | |
| return HttpResult.getSuccessInstance(result); | |
| }catch(Exception e){ | |
| e.printStackTrace(); | |
| return HttpResult.getFailedInstance("读取异常"); | |
| 	        } | |
| 	} | 
