{"remainingRequest":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\reform-fvue\\src\\components\\FilePreview\\filePreview.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\reform-fvue\\src\\components\\FilePreview\\filePreview.vue","mtime":1718335080025},{"path":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\reform-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport req from '@/request.js'\r\nimport pdf from 'vue-pdf'\r\nconst portal = window.context.portal\r\nexport default {\r\n name: 'FilePreview',\r\n components: {\r\n pdf,\r\n },\r\n props: {\r\n appendToBody: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data() {\r\n return {\r\n dialogVisible: false,\r\n fileType: '', //1、图片,2、word,3、excel, 4、pdf,\r\n previewUrl: '',\r\n loading: false,\r\n pageTotalNum: 1,\r\n pdfSrc: '',\r\n fileId: ''\r\n }\r\n },\r\n methods: {\r\n open(id) {\r\n this.loading = true\r\n if (this.fileId !== id) {\r\n this.fileId = id\r\n this.pdfSrc = ''\r\n req.get(this.previewUrl).then(res => {\r\n if (res.data) {\r\n let resurl = res.data.currentUrl || res.data.pdfUrl || res.data.TxtUrl\r\n this.fileType = res.data.result\r\n req.get(`${portal}${resurl}`, 'arraybuffer').then(\r\n (response) => {\r\n let type = response.headers['content-type'].split(';')\r\n this.pdfSrc = window.URL.createObjectURL(\r\n new Blob([response.data], {\r\n type: res.data.result === 'pdf' ? 'application/pdf' : type[0],\r\n })\r\n )\r\n if (res.data.result !== 'pdf') {\r\n this.getIframe()\r\n } else {\r\n this.loading = false\r\n }\r\n })\r\n } else {\r\n this.$message.error('附件预览失败')\r\n }\r\n })\r\n } else {\r\n if (this.fileType !== 'pdf') {\r\n setTimeout(() => {\r\n this.getIframe()\r\n })\r\n } else {\r\n setTimeout(() => {\r\n this.loading = false\r\n }, 1000)\r\n }\r\n }\r\n this.dialogVisible = true\r\n },\r\n getIframe() {\r\n let iframe = document.querySelector('.pdf__iframe')\r\n let iwindow = iframe.contentWindow;\r\n iframe.addEventListener('load', function () {\r\n let idoc = iwindow.document;\r\n let img = idoc.getElementsByTagName('img')[0];\r\n if (img) {\r\n img.style.width = '100%';\r\n }\r\n })\r\n setTimeout(() => {\r\n this.loading = false\r\n }, 800)\r\n },\r\n // 页面加载完成回调函数,其中e为当前页数\r\n pageLoaded(e) {\r\n this.getNumPages()\r\n this.loading = false\r\n },\r\n // 获取pdf总页数\r\n getNumPages() {\r\n let loadingTask = pdf.createLoadingTask(this.pdfSrc)\r\n loadingTask.promise\r\n .then((pdf) => {\r\n this.pageTotalNum = pdf.numPages\r\n })\r\n .catch((err) => {\r\n console.error('pdf 加载失败', err)\r\n })\r\n },\r\n //\r\n pdfError(error) {\r\n this.loading = false\r\n this.$message.error(error)\r\n },\r\n close() {\r\n this.dialogVisible = false\r\n },\r\n },\r\n}\r\n",null]}