Unverified 提交 6fcf8fde authored 作者: 王嘉豪's avatar 王嘉豪 提交者: GitHub

Merge pull request #2155 from dataease/pr@dev@feat_panel-image-export

feat: 仪表板支持直接导出图片
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
class="dialog-css" class="dialog-css"
:destroy-on-close="true" :destroy-on-close="true"
> >
<span style="position: absolute;right: 70px;top:15px"> <span v-if="chartDetailsVisible" style="position: absolute;right: 70px;top:15px">
<el-dropdown> <el-dropdown>
<el-button size="mini"> <el-button size="mini">
{{ $t('chart.export') }}<i class="el-icon-download" /> {{ $t('chart.export') }}<i class="el-icon-download" />
......
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
:destroy-on-close="true" :destroy-on-close="true"
:show-close="true" :show-close="true"
> >
<span style="position: absolute;right: 70px;top:15px"> <span v-if="chartDetailsVisible" style="position: absolute;right: 70px;top:15px">
<el-dropdown> <el-dropdown>
<el-button size="mini"> <el-button size="mini">
{{ $t('chart.export') }}<i class="el-icon-download" /> {{ $t('chart.export') }}<i class="el-icon-download" />
......
...@@ -1514,6 +1514,7 @@ export default { ...@@ -1514,6 +1514,7 @@ export default {
save_to_panel: 'Save to template', save_to_panel: 'Save to template',
export_to_panel: 'Export to template', export_to_panel: 'Export to template',
export_to_pdf: 'Export to PDF', export_to_pdf: 'Export to PDF',
export_to_img: 'Export to Image',
preview: 'Preview', preview: 'Preview',
fullscreen_preview: 'Fullscreen Preview', fullscreen_preview: 'Fullscreen Preview',
new_tab_preview: 'New Tab Preview', new_tab_preview: 'New Tab Preview',
......
...@@ -1515,6 +1515,7 @@ export default { ...@@ -1515,6 +1515,7 @@ export default {
save_to_panel: '保存爲模闆', save_to_panel: '保存爲模闆',
export_to_panel: '導出爲模闆', export_to_panel: '導出爲模闆',
export_to_pdf: '導出爲PDF', export_to_pdf: '導出爲PDF',
export_to_img: '導出爲图片',
preview: '預覽', preview: '預覽',
fullscreen_preview: '全屏預覽', fullscreen_preview: '全屏預覽',
new_tab_preview: '新Tab頁預覽', new_tab_preview: '新Tab頁預覽',
......
...@@ -1522,6 +1522,7 @@ export default { ...@@ -1522,6 +1522,7 @@ export default {
save_to_panel: '保存为模板', save_to_panel: '保存为模板',
export_to_panel: '导出为模板', export_to_panel: '导出为模板',
export_to_pdf: '导出为PDF', export_to_pdf: '导出为PDF',
export_to_img: '导出为图片',
preview: '预览', preview: '预览',
fullscreen_preview: '全屏预览', fullscreen_preview: '全屏预览',
new_tab_preview: '新Tab页预览', new_tab_preview: '新Tab页预览',
......
...@@ -35,14 +35,14 @@ ...@@ -35,14 +35,14 @@
</el-tooltip> </el-tooltip>
</span> </span>
<span v-if="hasDataPermission('export',panelInfo.privileges)" style="float: right;margin-right: 10px"> <span v-if="hasDataPermission('export',panelInfo.privileges)" style="float: right;margin-right: 10px">
<el-tooltip :content="$t('panel.export_to_panel')"> <el-dropdown>
<el-button class="el-icon-download" size="mini" circle @click="downloadToTemplate" /> <el-button size="mini" class="el-icon-download" circle />
</el-tooltip> <el-dropdown-menu slot="dropdown">
</span> <el-dropdown-item icon="el-icon-copy-document" @click.native="downloadToTemplate">{{ $t('panel.export_to_panel') }}</el-dropdown-item>
<span v-if="hasDataPermission('export',panelInfo.privileges)" style="float: right;margin-right: 10px"> <el-dropdown-item icon="el-icon-notebook-2" @click.native="downloadAsPDF">{{ $t('panel.export_to_pdf') }}</el-dropdown-item>
<el-tooltip :content="$t('panel.export_to_pdf')"> <el-dropdown-item icon="el-icon-picture-outline" @click.native="downloadAsImage">{{ $t('panel.export_to_img') }}</el-dropdown-item>
<el-button class="el-icon-notebook-2" size="mini" circle @click="downloadAsPDF" /> </el-dropdown-menu>
</el-tooltip> </el-dropdown>
</span> </span>
<span style="float: right;margin-right: 10px"> <span style="float: right;margin-right: 10px">
<el-tooltip :content="$t('panel.fullscreen_preview')"> <el-tooltip :content="$t('panel.fullscreen_preview')">
...@@ -138,6 +138,7 @@ import { queryAll } from '@/api/panel/pdfTemplate' ...@@ -138,6 +138,7 @@ import { queryAll } from '@/api/panel/pdfTemplate'
import ShareHead from '@/views/panel/GrantAuth/ShareHead' import ShareHead from '@/views/panel/GrantAuth/ShareHead'
import { initPanelData } from '@/api/panel/panel' import { initPanelData } from '@/api/panel/panel'
import { proxyInitPanelData } from '@/api/panel/shareProxy' import { proxyInitPanelData } from '@/api/panel/shareProxy'
import { dataURLToBlob } from '@/components/canvas/utils/utils'
export default { export default {
name: 'PanelViewShow', name: 'PanelViewShow',
components: { Preview, SaveToTemplate, PDFPreExport, ShareHead }, components: { Preview, SaveToTemplate, PDFPreExport, ShareHead },
...@@ -282,6 +283,34 @@ export default { ...@@ -282,6 +283,34 @@ export default {
}, 50) }, 50)
}, },
downloadAsImage() {
this.dataLoading = true
setTimeout(() => {
this.exporting = true
setTimeout(() => {
const canvasID = document.getElementById('canvasInfoTemp')
const a = document.createElement('a')
html2canvas(canvasID).then(canvas => {
this.exporting = false
const dom = document.body.appendChild(canvas)
dom.style.display = 'none'
a.style.display = 'none'
document.body.removeChild(dom)
const blob = dataURLToBlob(dom.toDataURL('image/png', 1))
a.setAttribute('href', URL.createObjectURL(blob))
a.setAttribute('download', this.$store.state.panel.panelInfo.name + '.png')
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(blob)
document.body.removeChild(a)
setTimeout(() => {
this.dataLoading = false
}, 300)
})
}, 500)
}, 0)
},
downloadAsPDF() { downloadAsPDF() {
// this.pdfExportShow = true // this.pdfExportShow = true
// //
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论