diff --git a/core/core-frontend/src/custom-component/de-tabs/Component.vue b/core/core-frontend/src/custom-component/de-tabs/Component.vue index 56e17c599e..78e3b8b8d9 100644 --- a/core/core-frontend/src/custom-component/de-tabs/Component.vue +++ b/core/core-frontend/src/custom-component/de-tabs/Component.vue @@ -47,6 +47,9 @@ > 删除 + + 复制 + @@ -126,10 +129,12 @@ import DePreview from '@/components/data-visualization/canvas/DePreview.vue' import { useEmitt } from '@/hooks/web/useEmitt' import { getPanelAllLinkageInfo } from '@/api/visualization/linkage' import { dataVTabComponentAdd, groupSizeStyleAdaptor } from '@/utils/style' +import { copyStoreWithOut, deepCopyTabItemHelper } from '@/store/modules/data-visualization/copy' const dvMainStore = dvMainStoreWithOut() const { tabMoveInActiveId, bashMatrixInfo, editMode, mobileInPc } = storeToRefs(dvMainStore) const tabComponentRef = ref(null) let carouselTimer = null +const copyStore = copyStoreWithOut() const props = defineProps({ canvasStyleData: { @@ -259,6 +264,10 @@ function deleteCur(param) { } } } +function copyCur(param) { + state.curItem = param + element.value.propValue.push(deepCopyTabItemHelper(element.value.id, param)) +} function editCurTitle(param) { state.activeTabName = param.name diff --git a/core/core-frontend/src/store/modules/data-visualization/copy.ts b/core/core-frontend/src/store/modules/data-visualization/copy.ts index 7427d5b287..4cb9cdaf73 100644 --- a/core/core-frontend/src/store/modules/data-visualization/copy.ts +++ b/core/core-frontend/src/store/modules/data-visualization/copy.ts @@ -184,6 +184,19 @@ export const copyStore = defineStore('copy', { } }) +export function deepCopyTabItemHelper(tabId, tabItem, idMap) { + const result = deepCopy(tabItem) + const newComponentId = generateID() + result.id = newComponentId + result.componentData = [] + tabItem.componentData.forEach(item => { + const newItem = deepCopyHelper(item, idMap) + newItem.canvasId = tabId + '--' + newComponentId + result.componentData.push(deepCopyHelper(item, idMap)) + }) + return result +} + function deepCopyHelper(data, idMap) { const result = deepCopy(data) const newComponentId = generateID()