diff --git a/core/core-frontend/src/custom-component/common/DeRuler.vue b/core/core-frontend/src/custom-component/common/DeRuler.vue index 6fca376555..8316f93ac9 100644 --- a/core/core-frontend/src/custom-component/common/DeRuler.vue +++ b/core/core-frontend/src/custom-component/common/DeRuler.vue @@ -21,7 +21,7 @@ const props = defineProps({ const labelInterval = 5 -const { canvasStyleData, curComponent } = storeToRefs(dvMainStore) +const { canvasStyleData, curComponent, componentData } = storeToRefs(dvMainStore) const rulerSize = computed(() => props.direction === 'horizontal' ? canvasStyleData.value.width : canvasStyleData.value.height @@ -41,13 +41,27 @@ const curComponentSize = computed(() => { } }) +// 计算复合画布内部组件偏移量 +const parentStyle = computed(() => { + const style = { left: 0, top: 0 } + if (curComponent.value && curComponent.value.canvasId !== 'canvas-main') { + componentData.value.forEach(item => { + if (curComponent.value.canvasId.index(item.id) > -1) { + style.left = item.style.left + style.top = item.style.top + } + }) + } + return style +}) + const curComponentShadow = computed(() => { if (curComponent.value) { return { left: (props.direction === 'horizontal' - ? curComponent.value.style.left - : curComponent.value.style.top) + 'px', + ? curComponent.value.style.left + parentStyle.value.left + : curComponent.value.style.top + parentStyle.value.top) + 'px', width: (props.direction === 'horizontal' ? curComponent.value.style.width