diff --git a/nezha-fronted/src/components/common/bottomBox/tabs/panelTabNew.vue b/nezha-fronted/src/components/common/bottomBox/tabs/panelTabNew.vue
index f68914d65..d2a8e4836 100644
--- a/nezha-fronted/src/components/common/bottomBox/tabs/panelTabNew.vue
+++ b/nezha-fronted/src/components/common/bottomBox/tabs/panelTabNew.vue
@@ -41,6 +41,9 @@
{{ $t('overall.syncChart') }}
+
+ {{ $t('overall.downloadToPdf') }}
+
@@ -72,6 +75,9 @@
{{ $t('overall.syncChart') }}
+
+ {{ $t('overall.downloadToPdf') }}
+
@@ -146,9 +152,10 @@ import chartTempBox from '@/components/common/rightBox/chartTempBox'
import topToolMoreOptions from '@/components/common/popBox/topToolMoreOptions'
import detailViewRightMixin from '@/components/common/mixin/detailViewRightMixin'
import { randomcolor } from '@/components/common/js/radomcolor/randomcolor'
+import htmlToPdfMixin from '@/components/common/mixin/htmlToPdfMixin'
export default {
name: 'panelTabNew',
- mixins: [subDataListMixin, detailViewRightMixin],
+ mixins: [subDataListMixin, detailViewRightMixin, htmlToPdfMixin],
props: {
from: String,
obj: Object,
@@ -172,6 +179,7 @@ export default {
data () {
return {
fromRoute,
+ pdfId: 'pdfDom',
panelTabLoading: false,
showTopBtn: false, // top按钮
visible: false,
@@ -724,6 +732,42 @@ export default {
if (type === 'duplicate') {
this.editChart(chartInfo, true)
}
+ },
+ htmlToPdf () {
+ const dom = document.getElementsByClassName(this.pdfId)[0]
+ if (dom) {
+ // dom = dom.getElementsByClassName('vue-grid-layout')[0]
+ this.scrollbarWrap.scrollTop = this.scrollbarWrap.scrollHeight
+ this.$refs.chartList.onScroll(this.scrollbarWrap.scrollTop)
+ let flag = true
+ this.showScreenLoading(true)
+ let timer = setInterval(() => {
+ flag = true
+ this.$refs.chartList.copyDataList.forEach(chart => {
+ if (chart.type !== 'group') {
+ flag = flag && chart.loaded
+ } else if (chart.collapse) {
+ chart.children.forEach(groupChart => {
+ flag = flag && groupChart.loaded
+ })
+ }
+ })
+ if (flag) {
+ clearInterval(timer)
+ timer = null
+ setTimeout(() => {
+ document.body.style.height = 'auto'
+ // document.getElementsByTagName('html')[0].style.overflow = 'visible'
+ const position = dom.getBoundingClientRect()
+ console.log(position)
+ this.getPdf(dom, -1 * position.left, -1 * position.top)
+ // this.getPdf(dom, 0, 0)
+ }, 2000)
+ }
+ }, 200)
+ } else {
+ this.showScreenLoading(false)
+ }
}
},
mounted () {