From a84df92d9ee713d9f7bfb4a065547e7b43bb7af9 Mon Sep 17 00:00:00 2001 From: luoxuancong Date: Fri, 7 Mar 2025 14:30:41 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=96=B0=E5=A2=9E=E5=A4=A7=E5=B1=8F?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=89=B9=E9=87=8F=E5=A4=8D=E5=88=B6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7=E4=BD=93?= =?UTF-8?q?=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report-ui/src/utils/screenMixins.js | 59 +++++++++++++++---- .../designer/components/contentMenu.vue | 2 +- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/report-ui/src/utils/screenMixins.js b/report-ui/src/utils/screenMixins.js index f67f0713..e99b5f9d 100644 --- a/report-ui/src/utils/screenMixins.js +++ b/report-ui/src/utils/screenMixins.js @@ -295,16 +295,55 @@ const mixin = { }, // 复制 copylayer() { - const obj = this.deepClone(this.widgets[this.rightClickIndex]); - obj.value.position.top += 40; // 复制的元素向右下角偏移一点 - obj.value.position.left += 40; - obj.value.widgetId = Number(Math.random().toString().substr(2)).toString( - 36 - ); - this.widgets.splice(this.widgets.length, 0, obj); - this.$nextTick(() => { - this.layerClick(this.widgets.length - 1); // 复制后定位到最新的组件 - }); + if (this.selectedWidgets.length === 1) { + // 单选复制 + const obj = this.deepClone(this.widgets[this.rightClickIndex]); + obj.value.position.top += 40; // 复制的元素向右下角偏移一点 + obj.value.position.left += 40; + obj.value.widgetId = Number( + Math.random() + .toString() + .substr(2) + ).toString(36); + this.widgets.splice(this.widgets.length, 0, obj); + this.$nextTick(() => { + this.layerClick(this.widgets.length - 1); // 复制后定位到最新的组件 + }); + } else { + // 多选复制 + this.handleMouseDown(); + const selectedWidgets = []; + const selectedWidgetsDom = []; + this.widgets.filter(c => { + this.selectedWidgets.filter(d => { + if (c.value.widgetId === d.value.widgetId) { + selectedWidgets.push(c) + selectedWidgetsDom.push(d) + } + }) + }) + this.selectedWidgets = []; + selectedWidgets.map((sw, index) => { + const newSw = this.deepClone(sw) + newSw.value.position.left += 100; + newSw.value.widgetId = Number( + Math.random() + .toString() + .substr(2) + ).toString(36); + this.widgets.push(newSw); + this.$nextTick(() => { + this.$refs.widgets.map(select => { + if (select.value.widgetId === newSw.value.widgetId) { + this.$nextTick(() => { + select.$refs.draggable.setActive(true); + this.selectedWidgets.push(select); + }); + } + }) + }) + }) + } }, // 置顶 istopLayer() { diff --git a/report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue b/report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue index 84fd7759..d09e08c2 100644 --- a/report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue +++ b/report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue @@ -16,7 +16,7 @@
解除锁定
-
+
复制图层