From dd2bf3874b1f6c5b1e17988453fc3eedb3cfbac2 Mon Sep 17 00:00:00 2001 From: qianbao Date: Sun, 30 Jul 2023 17:29:21 +0800 Subject: [PATCH] 1、添加锁定图层、解除锁定功能 2、添加轮播大屏组件 3、添加左对齐功能 4、添加分组移动功能 --- src/views/bigscreenDesigner/designer/components/contentMenu.vue | 50 +++++++++++++++++++++++++++++++++++++++++--------- src/views/bigscreenDesigner/designer/components/dynamicForm.vue | 10 +++++++++- src/views/bigscreenDesigner/designer/components/dynamicHtmlSlider.vue | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/bigscreenDesigner/designer/index.vue | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ src/views/bigscreenDesigner/designer/tools/configure/div/widget-html-slider.js | 22 ++++++++-------------- src/views/bigscreenDesigner/designer/widget/div/widgetHtmlSlider.vue | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------ 6 files changed, 383 insertions(+), 84 deletions(-) create mode 100644 src/views/bigscreenDesigner/designer/components/dynamicHtmlSlider.vue diff --git a/src/views/bigscreenDesigner/designer/components/contentMenu.vue b/src/views/bigscreenDesigner/designer/components/contentMenu.vue index 15562b1..4d07b8f 100644 --- a/src/views/bigscreenDesigner/designer/components/contentMenu.vue +++ b/src/views/bigscreenDesigner/designer/components/contentMenu.vue @@ -6,25 +6,40 @@
复制图层
-
- 置顶图层 +
+ 左对齐
置底图层
+
+ 置顶图层 +
上移一层
下移一层
+
+ 锁定图层 +
+
+ 解除锁定 +
+
+ 添加分组 +
+
+ 移除分组 +
diff --git a/src/views/bigscreenDesigner/designer/index.vue b/src/views/bigscreenDesigner/designer/index.vue index e280e4a..cabd587 100644 --- a/src/views/bigscreenDesigner/designer/index.vue +++ b/src/views/bigscreenDesigner/designer/index.vue @@ -327,6 +327,9 @@ @setlowLayer="setlowLayer" @moveupLayer="moveupLayer" @movedownLayer="movedownLayer" + @setAlignment="setAlignment" + @delGroupLayer="delGroupLayer" + @addGroupLayer="addGroupLayer" /> @@ -471,7 +474,7 @@ export default { size: "50", }; this.sizeRange.some((item, index) => { - console.log(item,index); + // console.log(item,index); if (item <= 100 * this.bigscreenScaleInWorkbench) { obj.index = index; obj.size = 100 * this.bigscreenScaleInWorkbench; @@ -618,6 +621,7 @@ export default { // 监听按下键盘事件 handleKeyDown: debounce(function(code) { // 判断是否按住shift键,是就把pin赋值为true + // console.log(code) if (code.keyCode === 16 && code.shiftKey) { this.shiftEnt = true; }else if ( @@ -628,14 +632,14 @@ export default { ) { //上下左右移动 this.dragWidgetMoveByKey(code,this.widgetIndex); + }else if (code.key=='Tab'&& code.keyCode === 9) { + this.shiftEnt = false; + //标记重置 + this.handleMouseDown(); } }, 10, true), handleKeyUp: debounce(function(code) { // 判断是否松开shift键,是就把pin赋值为false - if (code.keyCode === 16) { - this.shiftEnt = false; - this.selectMore=[]; - } }, 500, true), /** * @description: 重做 @@ -1176,7 +1180,6 @@ export default { widgetValueChanged(key, val) { if (this.screenCode == "screen") { if (key === 'setup') { - // console.log("dddd",key,val,"this.screenCode",this.screenCode); // 全局配置更改 let newSetup = new Array(); this.dashboard = this.deepClone(val); @@ -1219,6 +1222,14 @@ export default { } else { for (let i = 0; i < this.widgets.length; i++) { if (this.widgetIndex == i) { + if(this.shiftEnt && val && val.hasOwnProperty("left") && val.hasOwnProperty("top")){ + const obj = this.widgets[i].value.position; + const leftOld = obj.left; + const leftNew = val.left; + const topOld = obj.top; + const topNew = val.top; + this.moveGroup(leftOld,leftNew,topOld,topNew); + } this.widgets[i].value[key] = this.deepClone(val); this.setDefaultValue(this.widgets[i].options[key], val); } @@ -1336,6 +1347,67 @@ export default { this.widgets.unshift(this.widgets.splice(this.rightClickIndex, 1)[0]); } }, + //添加分组 + addGroupLayer() { + // const obj = this.widgets[this.rightClickIndex]; + // this.$set(obj.value.position, "disabled", true); + this.$message({ + type: "info", + message: "小编正在努力开发中,尽情期待(可以选择多选后改变坐标移动哦)", + }); + }, + //移除分组 + delGroupLayer() { + this.$message({ + type: "info", + message: "小编正在努力开发中,尽情期待(可以选择多选后改变坐标移动哦)", + }); + }, + //图层对齐 + setAlignment() { + this.selectMore = this.setUnique(this.selectMore); + if(!this.shiftEnt || !this.selectMore){ + this.$message({ + type: "info", + message: "对不起,左对齐只能多选情况下使用", + }); + return; + } + const obj = this.widgets[this.widgetIndex]; + const leftNew = obj.value.position.left; + if(this.isNotBlankArray(this.selectMore)){ + for(let i = 0; i< this.selectMore.length;i++){ + const index = this.selectMore[i]; + if(this.widgetIndex != index){ + this.widgets[index].value.position.left=leftNew; + this.$refs.widgets[index].$refs.draggable.setActive(false); + } + } + this.setShiftEntFalse(); + } + }, + //输入坐标选中的整体移动 + moveGroup(leftOld,leftNew,topOld,topNew) { + this.selectMore = this.setUnique(this.selectMore); + if(this.isNotBlankArray(this.selectMore)){ + const leftDiff = leftNew - leftOld; + const topDiff = topNew - topOld; + for(let i = 0; i< this.selectMore.length;i++){ + const index = this.selectMore[i]; + if(this.widgetIndex != index){ + this.widgets[index].value.position.left=this.widgets[index].value.position.left+leftDiff; + this.widgets[index].value.position.top=this.widgets[index].value.position.top+topDiff; + //移除锁定标记 + // this.$refs.widgets[index].$refs.draggable.setActive(false); + } + } + // this.setShiftEntFalse(); + } + }, + setShiftEntFalse(){ + this.shiftEnt = false; + this.selectMore = []; + }, //输入删除键删除 entryDelete(index){ this.widgets.splice(index, 1); diff --git a/src/views/bigscreenDesigner/designer/tools/configure/div/widget-html-slider.js b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-html-slider.js index 3e1161e..dbf1d22 100644 --- a/src/views/bigscreenDesigner/designer/tools/configure/div/widget-html-slider.js +++ b/src/views/bigscreenDesigner/designer/tools/configure/div/widget-html-slider.js @@ -50,20 +50,14 @@ export const widgetHtmlSlider = { placeholder: '', value: 300000 }, - [ - { - name: '地址设置', - list: [ - // { - // type: 'el-input-number', - // label: '', - // name: 'httpurl', - // required: false, - // value: '', - // }, - ], - }, - ], + { + type: 'dynamic-html-slider', + label: '轮播地址', + name: 'urls', + required: false, + placeholder: '', + value: [] + } ], data:[], // 坐标 diff --git a/src/views/bigscreenDesigner/designer/widget/div/widgetHtmlSlider.vue b/src/views/bigscreenDesigner/designer/widget/div/widgetHtmlSlider.vue index acff974..0925ce0 100644 --- a/src/views/bigscreenDesigner/designer/widget/div/widgetHtmlSlider.vue +++ b/src/views/bigscreenDesigner/designer/widget/div/widgetHtmlSlider.vue @@ -1,9 +1,9 @@