From 9ced3334e76645c0a867481a839527fc95679f61 Mon Sep 17 00:00:00 2001 From: jianneng-fit2cloud Date: Thu, 15 Jan 2026 17:46:23 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E8=A1=A8):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8tab=E7=BB=84=E4=BB=B6=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E5=9C=B0=E5=9B=BE=E6=97=B6,=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E4=BB=AA=E8=A1=A8=E6=9D=BF=E4=B8=BApng=E6=97=B6,?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20#17700?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/utils/canvasUtils.ts | 26 +++++++++++++++++++ .../views/dashboard/DashboardPreviewShow.vue | 20 +++++++------- .../views/data-visualization/PreviewShow.vue | 19 ++++++-------- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/core/core-frontend/src/utils/canvasUtils.ts b/core/core-frontend/src/utils/canvasUtils.ts index 13a6073c79..2fda5b031b 100644 --- a/core/core-frontend/src/utils/canvasUtils.ts +++ b/core/core-frontend/src/utils/canvasUtils.ts @@ -1112,3 +1112,29 @@ export function syncViewTitle(element) { } } } + +// 地图类图表,需要预先准备图片 +const mapChartTypes = ['bubble-map', 'flow-map', 'heat-map', 'map', 'symbolic-map'] + +/** + * 获取画布中所有地图类图表的元素ID + * @param canvasDataPreview + */ +export function getMapElementIds(canvasDataPreview) { + const mapElementIds = [] + canvasDataPreview.forEach(item => { + if (mapChartTypes.includes(item.innerType)) { + mapElementIds.push(item.id) + } + if (item.component === 'DeTabs') { + item.propValue?.forEach(tabItem => { + tabItem.componentData?.forEach(tabComponent => { + if (mapChartTypes.includes(tabComponent.innerType)) { + mapElementIds.push(tabComponent.id) + } + }) + }) + } + }) + return mapElementIds +} diff --git a/core/core-frontend/src/views/dashboard/DashboardPreviewShow.vue b/core/core-frontend/src/views/dashboard/DashboardPreviewShow.vue index 1236da67c5..98fb8923c0 100644 --- a/core/core-frontend/src/views/dashboard/DashboardPreviewShow.vue +++ b/core/core-frontend/src/views/dashboard/DashboardPreviewShow.vue @@ -7,7 +7,12 @@ import DePreview from '@/components/data-visualization/canvas/DePreview.vue' import PreviewHead from '@/views/data-visualization/PreviewHead.vue' import EmptyBackground from '@/components/empty-background/src/EmptyBackground.vue' import ArrowSide from '@/views/common/DeResourceArrow.vue' -import { initCanvasData, initCanvasDataPrepare, onInitReady } from '@/utils/canvasUtils' +import { + getMapElementIds, + initCanvasData, + initCanvasDataPrepare, + onInitReady +} from '@/utils/canvasUtils' import { useAppStoreWithOut } from '@/store/modules/app' import { useMoveLine } from '@/hooks/web/useMoveLine' import { Icon } from '@/components/icon-custom' @@ -129,14 +134,10 @@ const loadCanvasData = (dvId, weight?) => { } ) } -// 地图类图表,需要预先准备图片 -const mapChartTypes = ['bubble-map', 'flow-map', 'heat-map', 'map', 'symbolic-map'] + const downloadH2 = type => { downloadStatus.value = true - const mapElementIds = - state.canvasDataPreview - ?.filter(ele => mapChartTypes.includes(ele.innerType)) - .map(ele => ele.id) || [] + const mapElementIds = getMapElementIds(state.canvasDataPreview) mapElementIds.forEach(id => useEmitt().emitter.emit('l7-prepare-picture', id)) nextTick(() => { const vueDom = previewCanvasContainer.value.querySelector('.canvas-container') @@ -189,10 +190,7 @@ const checkTemplate = () => { const fileDownload = (downloadType, attachParams) => { downloadStatus.value = true - const mapElementIds = - state.canvasDataPreview - ?.filter(ele => mapChartTypes.includes(ele.innerType)) - .map(ele => ele.id) || [] + const mapElementIds = getMapElementIds(state.canvasDataPreview) mapElementIds.forEach(id => useEmitt().emitter.emit('l7-prepare-picture', id)) nextTick(() => { const vueDom = previewCanvasContainer.value.querySelector('.canvas-container') diff --git a/core/core-frontend/src/views/data-visualization/PreviewShow.vue b/core/core-frontend/src/views/data-visualization/PreviewShow.vue index 9ef30dbf76..15c1306a3d 100644 --- a/core/core-frontend/src/views/data-visualization/PreviewShow.vue +++ b/core/core-frontend/src/views/data-visualization/PreviewShow.vue @@ -8,7 +8,12 @@ import PreviewHead from '@/views/data-visualization/PreviewHead.vue' import EmptyBackground from '@/components/empty-background/src/EmptyBackground.vue' import { storeToRefs } from 'pinia' import { useAppStoreWithOut } from '@/store/modules/app' -import { initCanvasData, initCanvasDataPrepare, onInitReady } from '@/utils/canvasUtils' +import { + getMapElementIds, + initCanvasData, + initCanvasDataPrepare, + onInitReady +} from '@/utils/canvasUtils' import { useMoveLine } from '@/hooks/web/useMoveLine' import { Icon } from '@/components/icon-custom' import { download2AppTemplate, downloadCanvas2 } from '@/utils/imgUtils' @@ -119,14 +124,9 @@ const loadCanvasData = (dvId, weight?, ext?) => { } ) } -// 地图类图表,需要预先准备图片 -const mapChartTypes = ['bubble-map', 'flow-map', 'heat-map', 'map', 'symbolic-map'] const download = type => { downloadStatus.value = true - const mapElementIds = - state.canvasDataPreview - ?.filter(ele => mapChartTypes.includes(ele.innerType)) - .map(ele => ele.id) || [] + const mapElementIds = getMapElementIds(state.canvasDataPreview) mapElementIds.forEach(id => useEmitt().emitter.emit('l7-prepare-picture', id)) setTimeout(() => { const vueDom = previewCanvasContainer.value.querySelector('.canvas-container') @@ -143,10 +143,7 @@ const download = type => { } const fileDownload = (downloadType, attachParams) => { downloadStatus.value = true - const mapElementIds = - state.canvasDataPreview - ?.filter(ele => mapChartTypes.includes(ele.innerType)) - .map(ele => ele.id) || [] + const mapElementIds = getMapElementIds(state.canvasDataPreview) mapElementIds.forEach(id => useEmitt().emitter.emit('l7-prepare-picture', id)) nextTick(() => { const vueDom = previewCanvasContainer.value.querySelector('.canvas-container')