From 6be636f3c0de239c99d580a391ec92351db71ed3 Mon Sep 17 00:00:00 2001
From: dujie <2262240028@qq.com>
Date: Wed, 12 Apr 2023 11:41:01 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90fix=20bug=E3=80=9166408=20=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E7=BB=84=E4=BB=B6JUpload=E9=A2=84?=
=?UTF-8?q?=E8=A7=88=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jero-web/src/components/jero/JUpload.vue | 40 +++++++++++++++++-------
jero-web/src/utils/previewPdf.js | 14 +++++++++
2 files changed, 42 insertions(+), 12 deletions(-)
create mode 100644 jero-web/src/utils/previewPdf.js
diff --git a/jero-web/src/components/jero/JUpload.vue b/jero-web/src/components/jero/JUpload.vue
index 3693065c..7db17412 100644
--- a/jero-web/src/components/jero/JUpload.vue
+++ b/jero-web/src/components/jero/JUpload.vue
@@ -32,6 +32,12 @@
+
+
+
![]()
+
+
+
@@ -41,11 +47,14 @@
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
-import { getFileAccessHttpUrl } from '@/api/manage'
+import { getFileAccessHttpUrl, downloadFile } from '@/api/manage'
+import { previewPdf } from '@/utils/previewPdf'
import JImagePreviewModal from '@comp/jero/modal/JImagePreviewModal.vue'
const FILE_TYPE_ALL = 'all'
const FILE_TYPE_IMG = 'image'
+const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
+const FILE_TYPE_PDF = 'pdf'
// const uidGenerator = () => {
// return '-' + parseInt(Math.random() * 10000 + 1 + '', 10)
@@ -55,7 +64,7 @@ const Base64 = require('js-base64').Base64
// 支持预览的文件类型
const CAN_PREVIEW_FILE_TYPE = ['pdf', 'image']
-// 支持预览的文件后缀
+// 不支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'mp3', 'mp4', 'flv']
export default {
@@ -67,8 +76,10 @@ export default {
headers: {},
fileList: [],
newFileList: [],
+ image: false,
uploadGoOn: true,
- containerId: null
+ containerId: null,
+ imageUrl: null
}
},
props: {
@@ -287,6 +298,8 @@ export default {
}
return file
})
+ } else {
+ this.$message.error(info.file.response.message)
}
// this.$message.success(`${info.file.name} 上传成功!`);
} else if (info.file.status === 'error') {
@@ -333,7 +346,7 @@ export default {
const fileSuffix = file.name ? file.name.split('.')[file.name.split('.').length - 1] : ''
const canPreview = fileType ? CAN_PREVIEW_FILE_TYPE.some(tt => fileType.indexOf(tt) !== -1) : CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix === tt)
// 判断是否为可预览格式的文件
- if (!canPreview) {
+ if (canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
this.handleDownload(file)
})
@@ -341,13 +354,18 @@ export default {
}
const fileFullUrl = `${window._CONFIG.domianWebSocketURL}/sys/common/download/${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.name}`
// 图片预览,使用自己添加的组件
- if (fileType && fileType.indexOf(FILE_TYPE_IMG) !== -1) {
- this.$refs.imagePreviewModal.open(fileFullUrl)
+ if (!canPreview && FILE_TYPE_IMGS.includes(fileSuffix)) {
+ this.imageUrl = getFileAccessHttpUrl(file.response.result.id)
+ // 获取viewer实例
+ const viewer = this.$el.querySelector('.image').$viewer
+ // 调用show方法进行显示预览图
+ viewer.show()
+ // this.$refs.imagePreviewModal.open(file)
return
}
// pdf预览
- if (fileType && fileType.indexOf('pdf') !== -1) {
- const url = `/pdfjs/web/viewer.html?file=${encodeURIComponent(fileFullUrl)}`
+ if (!canPreview && FILE_TYPE_PDF.includes(fileSuffix)) {
+ const url = previewPdf(file.response.result.id)
window.open(url)
return
}
@@ -356,10 +374,8 @@ export default {
window.open(url)
},
handleDownload (file) {
- if (file && file.url) {
- const fileFullUrl = `${window._CONFIG.domianWebSocketURL}/sys/common/download/${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.name}`
- window.open(fileFullUrl)
- }
+ // 下载文件
+ downloadFile(`/sys/common/download/${file.response.result.id}`, file.name)
}
},
mounted () {
diff --git a/jero-web/src/utils/previewPdf.js b/jero-web/src/utils/previewPdf.js
new file mode 100644
index 00000000..a7a8ac09
--- /dev/null
+++ b/jero-web/src/utils/previewPdf.js
@@ -0,0 +1,14 @@
+import { ACCESS_TOKEN } from '@/store/mutation-types'
+import Vue from 'vue'
+
+const getToken = () => Vue.ls.get(ACCESS_TOKEN)
+
+// 预览pdf
+const previewPdf = (id) => {
+ const url = `${window._CONFIG.domianURL}/sys/common/download/${id}?type=view&token=${getToken()}`
+ return `${process.env.BASE_URL}pdfjs/web/viewer.html?file=` + encodeURIComponent(url) + '&.pdf'
+}
+
+export {
+ previewPdf
+}