Unverified 提交 0b5f5b10 authored 作者: 王嘉豪's avatar 王嘉豪 提交者: GitHub

Merge pull request #944 from dataease/pr@dev@feat_panel-hyperlinks

refactor:PDF导出,模板导出等增加数据准备提示,PDF导出后自动关闭对话框
...@@ -1334,7 +1334,10 @@ export default { ...@@ -1334,7 +1334,10 @@ export default {
new_window: '新窗口', new_window: '新窗口',
now_window: '当前窗口', now_window: '当前窗口',
hyperLinks: '超链接', hyperLinks: '超链接',
link_open_tips: '仪表板非编辑状态可打开链接' link_open_tips: '仪表板非编辑状态可打开链接',
data_loading: '数据准备中...',
export_loading: '导出中...',
export_pdf: '导出PDF'
}, },
plugin: { plugin: {
local_install: '本地安装', local_install: '本地安装',
......
<template> <template>
<el-row> <el-row
v-loading="exportLoading"
style="height: 100%;width: 100%;"
:element-loading-text="$t('panel.export_loading')"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
>
<el-row class="export_body_class"> <el-row class="export_body_class">
<div id="exportPdf" ref="exportPdf"> <div id="exportPdf" ref="exportPdf">
<div class="export_body_inner_class" v-html="templateContentChange" /> <div class="export_body_inner_class" v-html="templateContentChange" />
...@@ -7,7 +13,7 @@ ...@@ -7,7 +13,7 @@
</el-row> </el-row>
<el-row class="root_class"> <el-row class="root_class">
<el-button size="mini" @click="cancel()">{{ $t('commons.cancel') }}</el-button> <el-button size="mini" @click="cancel()">{{ $t('commons.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="save()">导出PDF</el-button> <el-button type="primary" size="mini" @click="save()">{{ $t('panel.export_pdf') }}</el-button>
</el-row> </el-row>
</el-row> </el-row>
</template> </template>
...@@ -36,6 +42,7 @@ export default { ...@@ -36,6 +42,7 @@ export default {
}, },
data() { data() {
return { return {
exportLoading: false,
activeName: '', activeName: '',
templateContentChange: '', templateContentChange: '',
time: '', time: '',
...@@ -82,15 +89,20 @@ export default { ...@@ -82,15 +89,20 @@ export default {
}, },
save() { save() {
const _this = this const _this = this
_this.exportLoading = true
setTimeout(() => {
html2canvas(document.getElementById('exportPdf')).then(function(canvas) { html2canvas(document.getElementById('exportPdf')).then(function(canvas) {
_this.exportLoading = false
const contentWidth = canvas.width const contentWidth = canvas.width
const contentHeight = canvas.height const contentHeight = canvas.height
const pageData = canvas.toDataURL('image/jpeg', 1.0) const pageData = canvas.toDataURL('image/jpeg', 1.0)
const PDF = new JsPDF('l', 'px', [contentWidth, contentHeight]) const PDF = new JsPDF('l', 'px', [contentWidth, contentHeight])
PDF.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight) PDF.addImage(pageData, 'JPEG', 0, 0, contentWidth, contentHeight)
PDF.save(_this.panelName + '.pdf') PDF.save(_this.panelName + '.pdf')
_this.$emit('closePreExport')
} }
) )
}, 50)
} }
} }
......
<template> <template>
<el-row style="height: 100%;width: 100%;"> <el-row
v-loading="dataLoading"
style="height: 100%;width: 100%;"
:element-loading-text="$t('panel.data_loading')"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)"
>
<el-col v-if="panelInfo.name.length>0" class="panel-design"> <el-col v-if="panelInfo.name.length>0" class="panel-design">
<el-row class="panel-design-head"> <el-row class="panel-design-head">
<!--仪表板头部区域--> <!--仪表板头部区域-->
...@@ -132,7 +138,8 @@ export default { ...@@ -132,7 +138,8 @@ export default {
fullscreen: false, fullscreen: false,
pdfExportShow: false, pdfExportShow: false,
snapshotInfo: '', snapshotInfo: '',
isShare: false isShare: false,
dataLoading: false
} }
}, },
computed: { computed: {
...@@ -183,8 +190,11 @@ export default { ...@@ -183,8 +190,11 @@ export default {
window.open(url, '_blank') window.open(url, '_blank')
}, },
saveToTemplate() { saveToTemplate() {
this.templateSaveShow = true this.dataLoading = true
setTimeout(() => {
html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => { html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => {
this.templateSaveShow = true
this.dataLoading = false
const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.2是图片质量 const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.2是图片质量
if (snapshot !== '') { if (snapshot !== '') {
this.templateInfo = { this.templateInfo = {
...@@ -200,9 +210,13 @@ export default { ...@@ -200,9 +210,13 @@ export default {
} }
} }
}) })
}, 50)
}, },
downloadToTemplate() { downloadToTemplate() {
this.dataLoading = true
setTimeout(() => {
html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => { html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => {
this.dataLoading = false
const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.2是图片质量 const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.2是图片质量
if (snapshot !== '') { if (snapshot !== '') {
this.templateInfo = { this.templateInfo = {
...@@ -217,16 +231,21 @@ export default { ...@@ -217,16 +231,21 @@ export default {
FileSaver.saveAs(blob, this.$store.state.panel.panelInfo.name + '-TEMPLATE.DE') FileSaver.saveAs(blob, this.$store.state.panel.panelInfo.name + '-TEMPLATE.DE')
} }
}) })
}, 50)
}, },
downloadAsPDF() { downloadAsPDF() {
this.dataLoading = true
setTimeout(() => {
html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => { html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => {
const snapshot = canvas.toDataURL('image/jpeg', 1) // 0.2是图片质量 const snapshot = canvas.toDataURL('image/jpeg', 1) // 是图片质量
this.dataLoading = false
if (snapshot !== '') { if (snapshot !== '') {
this.snapshotInfo = snapshot this.snapshotInfo = snapshot
this.pdfExportShow = true this.pdfExportShow = true
} }
}) })
}, 50)
}, },
refreshTemplateInfo() { refreshTemplateInfo() {
this.templateInfo = {} this.templateInfo = {}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论