From bc20d71ea898413f5b2aeddf0bc023f993d7c1d3 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期五, 17 五月 2024 11:10:07 +0800 Subject: [PATCH] feat:pdf查看 --- package-lock.json | 52 ++++++++++++++++++++++++++ src/views/onlineStudy/file.vue | 25 +++++++++++- package.json | 2 + 3 files changed, 76 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55debe8..33922a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "AGPL-3.0", "dependencies": { "@lyno/lib-jitsi-meet": "^2.6726.2", + "@vue-office/pdf": "^2.0.2", "axios": "^0.19.2", "clipboard": "^2.0.11", "codemirror": "^5.65.13", @@ -31,6 +32,7 @@ "script-loader": "^0.7.2", "vue": "^2.7.14", "vue-count-to": "^1.0.13", + "vue-demi": "^0.14.7", "vue-router": "^3.6.5", "vuex": "^3.6.2", "xlsx": "^0.18.5" @@ -2356,6 +2358,22 @@ "dev": true, "engines": { "node": ">= 8" + } + }, + "node_modules/@vue-office/pdf": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.2.tgz", + "integrity": "sha512-bQFqGxSOnKbvCS7OoJniYoTz1VIm1XOrRD27Msorxny9NFJ8RsQK1A4uhlnISJRFMaUwp1qlcVE9jMAhsiIyjg==", + "hasInstallScript": true, + "peerDependencies": { + "@vue/composition-api": "^1.7.1", + "vue": "^2.0.0 || >=3.0.0", + "vue-demi": "^0.14.6" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/@vue/babel-helper-vue-jsx-merge-props": { @@ -16971,6 +16989,28 @@ "resolved": "https://registry.npmmirror.com/vue-count-to/-/vue-count-to-1.0.13.tgz", "integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==" }, + "node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/vue-eslint-parser": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", @@ -20177,6 +20217,12 @@ "dev": true } } + }, + "@vue-office/pdf": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@vue-office/pdf/-/pdf-2.0.2.tgz", + "integrity": "sha512-bQFqGxSOnKbvCS7OoJniYoTz1VIm1XOrRD27Msorxny9NFJ8RsQK1A4uhlnISJRFMaUwp1qlcVE9jMAhsiIyjg==", + "requires": {} }, "@vue/babel-helper-vue-jsx-merge-props": { "version": "1.4.0", @@ -32341,6 +32387,12 @@ "resolved": "https://registry.npmmirror.com/vue-count-to/-/vue-count-to-1.0.13.tgz", "integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==" }, + "vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "requires": {} + }, "vue-eslint-parser": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", diff --git a/package.json b/package.json index 6f58441..8222793 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ }, "dependencies": { "@lyno/lib-jitsi-meet": "^2.6726.2", + "@vue-office/pdf": "^2.0.2", "axios": "^0.19.2", "clipboard": "^2.0.11", "codemirror": "^5.65.13", @@ -57,6 +58,7 @@ "script-loader": "^0.7.2", "vue": "^2.7.14", "vue-count-to": "^1.0.13", + "vue-demi": "^0.14.7", "vue-router": "^3.6.5", "vuex": "^3.6.2", "xlsx": "^0.18.5" diff --git a/src/views/onlineStudy/file.vue b/src/views/onlineStudy/file.vue index 668b580..3a4e60d 100644 --- a/src/views/onlineStudy/file.vue +++ b/src/views/onlineStudy/file.vue @@ -38,7 +38,7 @@ <img v-if="scope.row.contentType === 'img'" :src="'/api/files/' + scope.row.contentUrl.url" class="showContent" /> <el-link type="primary" v-if="scope.row.contentType === 'pdf'" :src="'/api/files/' + scope.row.contentUrl.url" - class="showContent">鐐瑰嚮鏌ョ湅</el-link> + class="showContent" @click="checkPdf">鐐瑰嚮鏌ョ湅</el-link> </template> </el-table-column> <el-table-column prop="attachment" label="闄勪欢"> @@ -94,6 +94,11 @@ <el-button type="primary" @click="handlerSubmit">淇� 瀛�</el-button> </span> </el-dialog> + + <el-dialog title="PDF鏌ョ湅" :visible.sync="pdfDialog" width="80%" :before-close="closePdfDialog"> + <vue-office-pdf :src="pdf" @rendered="rendered" /> + </el-dialog> + </div> </template> @@ -102,9 +107,11 @@ import OnlineStudyAPI from '@/api/online-study'; import StudyTypeAPI from '@/api/study-type'; import Upload from '@/components/UploadC'; + +import VueOfficePdf from '@vue-office/pdf'; export default { name: 'type', - components: { Upload, Pagination }, + components: { Upload, Pagination, VueOfficePdf }, computed: { fileContentUrl: () => { return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : []; @@ -112,6 +119,7 @@ }, data() { return { + pdf: '', dialogTitle: '娣诲姞瀛︿範鍐呭', ids: [], typeList: [], @@ -123,6 +131,7 @@ total: 0, tableData: [], open: false, + pdfDialog: false, form: { contentType: 'video', subject: '', @@ -148,6 +157,16 @@ }; }, methods: { + checkPdf() { + this.pdf = 'http://static.shanhuxueyuan.com/test.pdf'; + this.pdfDialog = true; + }, + closePdfDialog() { + this.pdfDialog = false; + }, + rendered() { + + }, fileChange() { this.form.contentUrl = []; }, @@ -236,7 +255,7 @@ contentUrl: [], attachment: [], temp: [] - } + }; }, handleClose() { this.open = false; -- Gitblit v1.8.0