diff --git a/core/core-backend/src/main/java/io/dataease/commons/constants/DataVisualizationConstants.java b/core/core-backend/src/main/java/io/dataease/commons/constants/DataVisualizationConstants.java index 081d4c96bb..f542a86a4a 100644 --- a/core/core-backend/src/main/java/io/dataease/commons/constants/DataVisualizationConstants.java +++ b/core/core-backend/src/main/java/io/dataease/commons/constants/DataVisualizationConstants.java @@ -10,6 +10,9 @@ public class DataVisualizationConstants { // 主工程 public static final String MAIN = "main"; + + // 主工程编辑区 + public static final String MAIN_EDIT = "main-edit"; } //新建仪表板来源 diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java index 3e0abc96b4..5c8efe0bfc 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationLinkJumpMapper.java @@ -38,6 +38,8 @@ public interface ExtVisualizationLinkJumpMapper { List getTargetVisualizationJumpInfo(@Param("request") VisualizationLinkJumpBaseRequest request); + List getTargetVisualizationJumpInfoSnapshot(@Param("request") VisualizationLinkJumpBaseRequest request); + void copyLinkJump(@Param("copyId")Long copyId); void copyLinkJumpInfo(@Param("copyId")Long copyId); diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java index d6307cf2db..7cd823b27a 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java @@ -170,7 +170,7 @@ public class DataVisualizationServer implements DataVisualizationApi { String busiFlag = request.getBusiFlag(); String resourceTable = request.getResourceTable(); // 如果是编辑查询 则进行镜像检查 - if (CommonConstants.RESOURCE_TABLE.SNAPSHOT.equals(resourceTable)) { + if (DataVisualizationConstants.QUERY_SOURCE.MAIN_EDIT.equals(request.getSource())) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", dvId); queryWrapper.in("status", Arrays.asList(CommonConstants.DV_STATUS.UNPUBLISHED, CommonConstants.DV_STATUS.SAVED_UNPUBLISHED)); // 状态为0 未发布 和 2 已保存未发布的 不需要重置镜像 diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java index 6f24f212aa..620920d437 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationLinkJumpService.java @@ -81,12 +81,12 @@ public class VisualizationLinkJumpService implements VisualizationLinkJumpApi { @DeLinkPermit //获取仪表板的跳转信息 @Override - public VisualizationLinkJumpBaseResponse queryVisualizationJumpInfo(Long dvId,String resourceTable) { + public VisualizationLinkJumpBaseResponse queryVisualizationJumpInfo(Long dvId, String resourceTable) { Map resultBase = new HashMap<>(); List resultLinkJumpList = null; - if(CommonConstants.RESOURCE_TABLE.SNAPSHOT.equals(resourceTable)){ + if (CommonConstants.RESOURCE_TABLE.SNAPSHOT.equals(resourceTable)) { resultLinkJumpList = extVisualizationLinkJumpMapper.queryWithDvIdSnapshot(dvId, AuthUtils.getUser().getUserId(), ModelUtils.isDesktop()); - }else{ + } else { resultLinkJumpList = extVisualizationLinkJumpMapper.queryWithDvId(dvId, AuthUtils.getUser().getUserId(), ModelUtils.isDesktop()); } Optional.ofNullable(resultLinkJumpList).orElse(new ArrayList<>()).forEach(resultLinkJump -> { @@ -155,7 +155,12 @@ public class VisualizationLinkJumpService implements VisualizationLinkJumpApi { @DeLinkPermit("#p0.targetDvId") @Override public VisualizationLinkJumpBaseResponse queryTargetVisualizationJumpInfo(VisualizationLinkJumpBaseRequest request) { - List result = extVisualizationLinkJumpMapper.getTargetVisualizationJumpInfo(request); + List result = null; + if (CommonConstants.RESOURCE_TABLE.SNAPSHOT.equals(request.getResourceTable())) { + result = extVisualizationLinkJumpMapper.getTargetVisualizationJumpInfoSnapshot(request); + } else { + result = extVisualizationLinkJumpMapper.getTargetVisualizationJumpInfo(request); + } return new VisualizationLinkJumpBaseResponse(null, Optional.ofNullable(result).orElse(new ArrayList<>()).stream().filter(item -> StringUtils.isNotEmpty(item.getSourceInfo())).collect(Collectors.toMap(VisualizationLinkJumpDTO::getSourceInfo, VisualizationLinkJumpDTO::getTargetInfoList))); } @@ -174,7 +179,7 @@ public class VisualizationLinkJumpService implements VisualizationLinkJumpApi { outParamsJumpInfo = new ArrayList<>(); componentData = "[]"; } - return new VisualizationComponentDTO(componentData,result,outParamsJumpInfo); + return new VisualizationComponentDTO(componentData, result, outParamsJumpInfo); } diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml index ee8da92f7a..a5dbd5c833 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationLinkJumpMapper.xml @@ -357,6 +357,24 @@ + + insert into visualization_link_jump (id, source_dv_id, source_view_id, link_jump_info, `checked`, copy_from, copy_id) diff --git a/core/core-frontend/src/utils/canvasUtils.ts b/core/core-frontend/src/utils/canvasUtils.ts index 0e441e79e5..246d6fadaf 100644 --- a/core/core-frontend/src/utils/canvasUtils.ts +++ b/core/core-frontend/src/utils/canvasUtils.ts @@ -339,7 +339,7 @@ export function initCanvasDataPrepare(dvId, params, callBack) { const copyFlag = busiFlag != null && busiFlag.includes('-copy') const busiFlagCustom = copyFlag ? busiFlag.split('-')[0] : busiFlag const method = copyFlag ? findCopyResource : findById - let attachInfo = { source: 'main' } + let attachInfo = { source: params.source ? params.source : 'main' } if (dvMainStore.canvasAttachInfo && !!dvMainStore.canvasAttachInfo.taskId) { attachInfo = { source: 'report', taskId: dvMainStore.canvasAttachInfo.taskId } const showWatermarkExist = diff --git a/core/core-frontend/src/views/chart/components/views/index.vue b/core/core-frontend/src/views/chart/components/views/index.vue index e4d61d6885..5efdc12ee3 100644 --- a/core/core-frontend/src/views/chart/components/views/index.vue +++ b/core/core-frontend/src/views/chart/components/views/index.vue @@ -470,9 +470,11 @@ const jumpClick = param => { const jumpInfoParam = `&jumpInfoParam=${encodeURIComponent( Base64.encode(JSON.stringify(param)) )}` + // 内部仪表板跳转 if (jumpInfo.linkType === 'inner') { if (jumpInfo.targetDvId) { + const editPreviewParams = showPosition.value === 'canvas' ? '&editPreview=true' : '' const filterOuterParams = {} const curFilter = dvMainStore.getLastViewRequestInfo(param.viewId) const targetViewInfoList = jumpInfo.targetViewInfoList @@ -507,9 +509,9 @@ const jumpClick = param => { if (jumpInfo.publicJumpId) { let url = `${embeddedBaseUrl}#/de-link/${jumpInfo.publicJumpId}?fromLink=true&dvType=${jumpInfo.targetDvType}` if (attachParamsInfo) { - url = url + attachParamsInfo + jumpInfoParam + url = url + attachParamsInfo + jumpInfoParam + editPreviewParams } else { - url = url + '&ignoreParams=true' + jumpInfoParam + url = url + '&ignoreParams=true' + jumpInfoParam + editPreviewParams } const currentUrl = window.location.href localStorage.setItem('beforeJumpUrl', currentUrl) @@ -520,9 +522,9 @@ const jumpClick = param => { } else { let url = `${embeddedBaseUrl}#/preview?dvId=${jumpInfo.targetDvId}&fromLink=true&dvType=${jumpInfo.targetDvType}` if (attachParamsInfo) { - url = url + attachParamsInfo + jumpInfoParam + url = url + attachParamsInfo + jumpInfoParam + editPreviewParams } else { - url = url + '&ignoreParams=true' + jumpInfoParam + url = url + '&ignoreParams=true' + jumpInfoParam + editPreviewParams } const currentUrl = window.location.href localStorage.setItem('beforeJumpUrl', currentUrl) diff --git a/core/core-frontend/src/views/dashboard/index.vue b/core/core-frontend/src/views/dashboard/index.vue index 2de66c3936..550186ffdf 100644 --- a/core/core-frontend/src/views/dashboard/index.vue +++ b/core/core-frontend/src/views/dashboard/index.vue @@ -162,19 +162,23 @@ const doUseCache = flag => { const initLocalCanvasData = callBack => { const { resourceId, opt, sourcePid } = state const busiFlag = opt === 'copy' ? 'dashboard-copy' : 'dashboard' - initCanvasData(resourceId, { busiFlag, resourceTable: 'snapshot' }, function () { - dataInitState.value = true - if (dvInfo.value && opt === 'copy') { - dvInfo.value.dataState = 'prepare' - dvInfo.value.optType = 'copy' - dvInfo.value.pid = sourcePid - setTimeout(() => { - snapshotStore.recordSnapshotCache('initLocalCanvasData') - }, 1500) + initCanvasData( + resourceId, + { busiFlag, resourceTable: 'snapshot', source: 'main-edit' }, + function () { + dataInitState.value = true + if (dvInfo.value && opt === 'copy') { + dvInfo.value.dataState = 'prepare' + dvInfo.value.optType = 'copy' + dvInfo.value.pid = sourcePid + setTimeout(() => { + snapshotStore.recordSnapshotCache('initLocalCanvasData') + }, 1500) + } + onInitReady({ resourceId: resourceId }) + callBack && callBack() } - onInitReady({ resourceId: resourceId }) - callBack && callBack() - }) + ) } onMounted(async () => { dvMainStore.setCurComponent({ component: null, index: null }) diff --git a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue index c1bd887948..eb921cf79e 100644 --- a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue +++ b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue @@ -64,7 +64,8 @@ const loadCanvasDataAsync = async (dvId, dvType, ignoreParams = false) => { sourceDvId: jumpParam.sourceDvId, sourceViewId: jumpParam.sourceViewId, sourceFieldId: null, - targetDvId: dvId + targetDvId: dvId, + resourceTable: state.editPreview ? 'snapshot' : 'core' } try { // 刷新跳转目标仪表板联动信息 diff --git a/core/core-frontend/src/views/data-visualization/index.vue b/core/core-frontend/src/views/data-visualization/index.vue index e77047cc7c..43de3dc4bb 100644 --- a/core/core-frontend/src/views/data-visualization/index.vue +++ b/core/core-frontend/src/views/data-visualization/index.vue @@ -303,24 +303,28 @@ const doUseCache = flag => { const initLocalCanvasData = async callback => { const { opt, sourcePid, resourceId } = state const busiFlag = opt === 'copy' ? 'dataV-copy' : 'dataV' - await initCanvasData(resourceId, { busiFlag, resourceTable: 'snapshot' }, function () { - state.canvasInitStatus = true - // afterInit - nextTick(() => { - dvMainStore.setDataPrepareState(true) - snapshotStore.recordSnapshotCache('renderChart') - if (dvInfo.value && opt === 'copy') { - dvInfo.value.dataState = 'prepare' - dvInfo.value.optType = 'copy' - dvInfo.value.pid = sourcePid - setTimeout(() => { - snapshotStore.recordSnapshotCache('renderChart') - }, 1500) - } - onInitReady({ resourceId: resourceId }) - callback && callback() - }) - }) + await initCanvasData( + resourceId, + { busiFlag, resourceTable: 'snapshot', source: 'main-edit' }, + function () { + state.canvasInitStatus = true + // afterInit + nextTick(() => { + dvMainStore.setDataPrepareState(true) + snapshotStore.recordSnapshotCache('renderChart') + if (dvInfo.value && opt === 'copy') { + dvInfo.value.dataState = 'prepare' + dvInfo.value.optType = 'copy' + dvInfo.value.pid = sourcePid + setTimeout(() => { + snapshotStore.recordSnapshotCache('renderChart') + }, 1500) + } + onInitReady({ resourceId: resourceId }) + callback && callback() + }) + } + ) } const previewScaleChange = () => { diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/DataVisualizationBaseRequest.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/DataVisualizationBaseRequest.java index a5e0d8928a..5b7d092587 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/DataVisualizationBaseRequest.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/DataVisualizationBaseRequest.java @@ -35,7 +35,7 @@ public class DataVisualizationBaseRequest extends DataVisualizationVO { private List activeViewIds; - // 查询来源 main=主工程 report=定时报告 + // 查询来源 main-edit= 主工程编辑区 main=主工程 report=定时报告 private String source; // 定时报告id diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/VisualizationLinkJumpBaseRequest.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/VisualizationLinkJumpBaseRequest.java index ed9ffbdeed..5ef434288f 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/VisualizationLinkJumpBaseRequest.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/request/VisualizationLinkJumpBaseRequest.java @@ -2,6 +2,7 @@ package io.dataease.api.visualization.request; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.dataease.constant.CommonConstants; import lombok.Data; /** @@ -26,6 +27,8 @@ public class VisualizationLinkJumpBaseRequest { private Boolean activeStatus; + private String resourceTable = CommonConstants.RESOURCE_TABLE.CORE; + public VisualizationLinkJumpBaseRequest() { }