fix(数据大屏): 修复数据大屏过滤组件失效问题 (#17453)

This commit is contained in:
王嘉豪
2025-11-19 12:42:44 +08:00
committed by GitHub
parent 4811bd6f3e
commit d36b8b57c7
3 changed files with 31 additions and 13 deletions

View File

@@ -36,7 +36,15 @@ export function imgUrlTrans(url) {
}
}
export function download2AppTemplate(downloadType, canvasDom, name, attachParams, callBack?) {
export function download2AppTemplate(
downloadType,
canvasDom,
name,
attachParams,
componentDataSource = componentData.value,
canvasStyleDataSource = canvasStyleData.value,
callBack?
) {
try {
findStaticSource(function (staticResource) {
html2canvas(canvasDom).then(canvas => {
@@ -53,8 +61,8 @@ export function download2AppTemplate(downloadType, canvasDom, name, attachParams
dvType: dvInfo.value.type,
nodeType: downloadType,
version: 3,
canvasStyleData: JSON.stringify(canvasStyleData.value),
componentData: JSON.stringify(componentData.value),
canvasStyleData: JSON.stringify(canvasStyleDataSource),
componentData: JSON.stringify(componentDataSource),
dynamicData: JSON.stringify(canvasViewDataTemplate),
staticResource: JSON.stringify(staticResource || {}),
appData: attachParams ? JSON.stringify(attachParams) : null

View File

@@ -191,7 +191,7 @@ const fileDownload = (downloadType, attachParams) => {
downloadStatus.value = true
nextTick(() => {
const vueDom = previewCanvasContainer.value.querySelector('.canvas-container')
download2AppTemplate(downloadType, vueDom, state.dvInfo.name, attachParams, () => {
download2AppTemplate(downloadType, vueDom, state.dvInfo.name, attachParams, null, null, () => {
downloadStatus.value = false
const param = {
id: state.dvInfo.id,

View File

@@ -103,8 +103,8 @@ const loadCanvasData = (dvId, weight?, ext?) => {
dataInitState.value = true
// 修复铺满全屏模版导出错位问题
if (props.showPosition !== 'multiplexing') {
dvMainStore.setCanvasStyle(deepCopy(canvasStyleResult))
dvMainStore.setComponentData(deepCopy(canvasDataResult))
state.canvasDataPreviewSource = deepCopy(canvasDataResult)
state.canvasStylePreviewSource = deepCopy(canvasStyleResult)
}
if (props.showPosition === 'preview') {
@@ -139,14 +139,22 @@ const fileDownload = (downloadType, attachParams) => {
downloadStatus.value = true
nextTick(() => {
const vueDom = previewCanvasContainer.value.querySelector('.canvas-container')
download2AppTemplate(downloadType, vueDom, state.dvInfo.name, attachParams, () => {
downloadStatus.value = false
const param = {
id: state.dvInfo.id,
type: state.dvInfo.type === 'dashboard' ? 'panel' : 'screen'
download2AppTemplate(
downloadType,
vueDom,
state.dvInfo.name,
attachParams,
state.canvasDataPreviewSource,
state.canvasStylePreviewSource,
() => {
downloadStatus.value = false
const param = {
id: state.dvInfo.id,
type: state.dvInfo.type === 'dashboard' ? 'panel' : 'screen'
}
downloadType === 'app' ? exportLogApp(param) : exportLogTemplate(param)
}
downloadType === 'app' ? exportLogApp(param) : exportLogTemplate(param)
})
)
})
}
@@ -201,6 +209,8 @@ const dataVKeepSize = computed(() => {
})
const state = reactive({
canvasDataPreviewSource: null,
canvasStylePreviewSource: null,
canvasDataPreview: null,
canvasStylePreview: null,
canvasViewInfoPreview: null,