diff --git a/core/core-frontend/src/components/dashboard/DbToolbar.vue b/core/core-frontend/src/components/dashboard/DbToolbar.vue index 28802b75ae..d62a0393a9 100644 --- a/core/core-frontend/src/components/dashboard/DbToolbar.vue +++ b/core/core-frontend/src/components/dashboard/DbToolbar.vue @@ -287,7 +287,11 @@ const backHandler = (url: string) => { } wsCache.delete('DE-DV-CATCH-' + dvInfo.value.id) wsCache.set('db-info-id', dvInfo.value.id) - history.back() + if (!!history.state.back) { + history.back() + } else { + window.open(url, '_self') + } } const multiplexingCanvasOpen = () => { diff --git a/core/core-frontend/src/components/data-visualization/DvToolbar.vue b/core/core-frontend/src/components/data-visualization/DvToolbar.vue index 36be9d297c..0fa706ec73 100644 --- a/core/core-frontend/src/components/data-visualization/DvToolbar.vue +++ b/core/core-frontend/src/components/data-visualization/DvToolbar.vue @@ -236,7 +236,11 @@ const backHandler = (url: string) => { dvMainStore.canvasStateChange({ key: 'curPointArea', value: 'base' }) wsCache.delete('DE-DV-CATCH-' + dvInfo.value.id) wsCache.set('dv-info-id', dvInfo.value.id) - history.back() + if (!!history.state.back) { + history.back() + } else { + window.open(url, '_self') + } } const openHandler = ref(null) diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue index 4e3aed5f72..ee547b7e35 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue @@ -38,7 +38,7 @@ import EmptyBackground from '@/components/empty-background/src/EmptyBackground.v import { Icon } from '@/components/icon-custom' import { useWindowSize } from '@vueuse/core' import CalcFieldEdit from './CalcFieldEdit.vue' -import { useRoute } from 'vue-router' +import { useRoute, useRouter } from 'vue-router' import UnionEdit from './UnionEdit.vue' import type { FormInstance } from 'element-plus-secondary' import type { BusiTreeNode } from '@/models/tree/TreeNode' @@ -78,6 +78,7 @@ const appStore = useAppStoreWithOut() const embeddedStore = useEmbedded() const { t } = useI18n() const route = useRoute() +const { push } = useRouter() const quotaTableHeight = ref(238) const creatDsFolder = ref() const editCalcField = ref(false) @@ -251,7 +252,16 @@ const pushDataset = () => { } const routeName = embeddedStore.getToken && appStore.getIsIframe ? 'dataset-embedded' : 'dataset' wsCache.set(`${routeName}-info-id`, nodeInfo.id) - history.back() + if (!!history.state.back) { + history.back() + } else { + push({ + name: routeName, + params: { + id: nodeInfo.id + } + }) + } } const backToMain = () => { diff --git a/core/core-frontend/src/views/visualized/data/dataset/index.vue b/core/core-frontend/src/views/visualized/data/dataset/index.vue index 811704349f..a64276ab61 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/index.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/index.vue @@ -146,6 +146,7 @@ const isIframe = computed(() => appStore.getIsIframe) const exportPermissions = computed(() => exportPermission(nodeInfo.weight, nodeInfo.ext)) const createPanel = path => { const baseUrl = `#/${path}?opt=create&id=${nodeInfo.id}` + wsCache.set('dataset-info-id', nodeInfo.id) window.open(baseUrl, openType) } @@ -343,6 +344,8 @@ onBeforeMount(() => { const paramId = wsCache.get('dataset-info-id') nodeInfo.id = (paramId as string) || (route.query.id as string) || '' wsCache.delete('dataset-info-id') + wsCache.delete('db-info-id') + wsCache.delete('dv-info-id') loadInit() getData() getLimit()