parent
1db6084af8
commit
24e44b22ca
18 changed files with 383 additions and 132 deletions
@ -0,0 +1,120 @@ |
||||
<template> |
||||
<div> |
||||
<el-dialog custom-class="pdf-dia" :close-on-click-modal="false" :visible.sync="visible" @close="closePdf" |
||||
:fullscreen="true" :modal="false" :append-to-body="true"> |
||||
<div> |
||||
<button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="closePdf"><i |
||||
class="el-dialog__close el-icon el-icon-close"></i></button> |
||||
<div class="pdf"> |
||||
<p class="arrow"> |
||||
<span @click="changePdfPage(0)" class="turn el-icon-arrow-left" :class="{ grey: currentPage == 1 }"></span> |
||||
{{ currentPage }} / {{ pageCount }} |
||||
<span @click="changePdfPage(1)" class="turn el-icon-arrow-right" |
||||
:class="{ grey: currentPage == pageCount }"></span> |
||||
</p> |
||||
<pdf class="pdf-wrap" :src="src" :page="currentPage" @num-pages="pageCount = $event" |
||||
@page-loaded="currentPage = $event" @loaded="loadPdfHandler"> |
||||
</pdf> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
</div> |
||||
</template> |
||||
<script> |
||||
import pdf from "vue-pdf"; |
||||
|
||||
export default { |
||||
props: ["visible", "src"], |
||||
data () { |
||||
return { |
||||
pdfVisible: false, |
||||
pdfSrc: "", |
||||
currentPage: 0, |
||||
pageCount: 0, |
||||
fileType: "pdf" |
||||
}; |
||||
}, |
||||
components: { pdf }, |
||||
mounted () { |
||||
this.addEvent(); |
||||
}, |
||||
methods: { |
||||
closePdf () { |
||||
this.$emit("update:visible", false); |
||||
// this.$emit("update:src", ""); |
||||
this.currentPage = 1; |
||||
}, |
||||
changePdfPage (val) { |
||||
if (val === 0 && this.currentPage > 1) { |
||||
this.currentPage--; |
||||
} |
||||
if (val === 1 && this.currentPage < this.pageCount) { |
||||
this.currentPage++; |
||||
} |
||||
}, |
||||
loadPdfHandler (e) { |
||||
this.currentPage = 1; |
||||
}, |
||||
addEvent () { |
||||
document.onkeydown = e => { |
||||
let key = window.event.keyCode; |
||||
if (key == 37) { |
||||
this.changePdfPage(0); |
||||
} else if (key == 39) { |
||||
this.changePdfPage(1); |
||||
} |
||||
}; |
||||
this.$once("hook:beforeDestroy", () => { |
||||
document.onkeydown = null; |
||||
}); |
||||
} |
||||
} |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
/deep/ .pdf-dia { |
||||
border-radius: 0 !important; |
||||
|
||||
.el-dialog__header { |
||||
display: none; |
||||
} |
||||
|
||||
.el-dialog__body { |
||||
padding: 0; |
||||
} |
||||
|
||||
.el-dialog__headerbtn { |
||||
top: 10px; |
||||
|
||||
.el-dialog__close { |
||||
color: #fff; |
||||
font-size: 16px; |
||||
} |
||||
} |
||||
|
||||
.pdf { |
||||
.arrow { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
width: 100%; |
||||
padding: 10px 0; |
||||
font-size: 16px; |
||||
color: #fff; |
||||
background-color: #333; |
||||
|
||||
.turn { |
||||
margin: 0 10px; |
||||
font-size: 18px; |
||||
cursor: pointer; |
||||
} |
||||
} |
||||
|
||||
.pdf-wrap { |
||||
height: calc(100vh - 45px); |
||||
margin: 0 auto; |
||||
overflow: auto; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -1,17 +0,0 @@ |
||||
/** |
||||
* 试卷 |
||||
* */ |
||||
export default { |
||||
namespaced: true, |
||||
state: { |
||||
form: {}, |
||||
}, |
||||
mutations: { |
||||
setForm: (state, val) => { |
||||
state.form = val |
||||
}, |
||||
}, |
||||
actions: { |
||||
|
||||
} |
||||
}; |
Loading…
Reference in new issue