Explorar o código

拖拽信号源定位不准的问题已解决

liuwei %!s(int64=4) %!d(string=hai) anos
pai
achega
fb7728b0e7
Modificáronse 2 ficheiros con 37 adicións e 29 borrados
  1. 23 23
      src/renderer/components/BigShow.vue
  2. 14 6
      src/renderer/components/SignalList.vue

+ 23 - 23
src/renderer/components/BigShow.vue

@@ -197,32 +197,32 @@
                 },
 
                 set(arr) {
-                    const bigscreenId = this.$store.state.curOpeBigscreenId
-                    const bigScreenObj = this.$store.state.bigScreenObj
-                    const bigScale = this.$store.state.bigScale
-                    const positionNum = this.$store.state.positionNum
+                    setTimeout(() => {
+                        const bigscreenId = this.$store.state.curOpeBigscreenId
+                        const bigScreenObj = this.$store.state.bigScreenObj
+                        const bigScale = this.$store.state.bigScale
+                        const positionNum = this.$store.state.positionNum
 
-                    // debugger
+                        const arr2 = []
+                        arr.forEach(item => {
+                            arr2.push(JSON.parse(JSON.stringify(item)))
+                        })
 
-                    const arr2 = []
-                    arr.forEach(item => {
-                        arr2.push(JSON.parse(JSON.stringify(item)))
+                        const newObj = arr2.filter(item => !item.Id)
+                        const otherSignals = arr2.filter(item => item.Id)
+                        newObj[0].Id = guId()
+                        newObj[0].bigscreenId = bigscreenId
+                        newObj[0].splitScreenStatus = bigScreenObj[bigscreenId].splitStatus + 1
+                        newObj[0].width = bigScreenObj[bigscreenId].width * bigScale / newObj[0].splitScreenStatus
+                        newObj[0].height = bigScreenObj[bigscreenId].height * bigScale / newObj[0].splitScreenStatus
+                        newObj[0].widthScale = newObj[0].width / (bigScreenObj[bigscreenId].width * bigScale)
+                        newObj[0].heightScale = newObj[0].height / (bigScreenObj[bigscreenId].height * bigScale)
+                        const positionInfo = elePosition(newObj[0].width,newObj[0].height,positionNum,this.screenPosition[bigscreenId].top,this.screenPosition[bigscreenId].left,bigScreenObj[bigscreenId].splitStatus+1)
+                        newObj[0].top = positionInfo.top - this.screenPosition[bigscreenId].top
+                        newObj[0].left = positionInfo.left - this.screenPosition[bigscreenId].left
+                        bigScreenObj[bigscreenId].signalArr = [...newObj,...otherSignals]
+                        this.refreshBigScreen(bigScreenObj,bigscreenId)
                     })
-                    
-                    const newObj = arr2.filter(item => !item.Id)
-                    const otherSignals = arr2.filter(item => item.Id)
-                    newObj[0].Id = guId()
-                    newObj[0].bigscreenId = bigscreenId
-                    newObj[0].splitScreenStatus = bigScreenObj[bigscreenId].splitStatus + 1
-                    newObj[0].width = bigScreenObj[bigscreenId].width * bigScale / newObj[0].splitScreenStatus
-                    newObj[0].height = bigScreenObj[bigscreenId].height * bigScale / newObj[0].splitScreenStatus
-                    newObj[0].widthScale = newObj[0].width / (bigScreenObj[bigscreenId].width * bigScale)
-                    newObj[0].heightScale = newObj[0].height / (bigScreenObj[bigscreenId].height * bigScale)
-                    const positionInfo = elePosition(newObj[0].width,newObj[0].height,positionNum,this.screenPosition[bigscreenId].top,this.screenPosition[bigscreenId].left,bigScreenObj[bigscreenId].splitStatus+1)
-                    newObj[0].top = positionInfo.top - this.screenPosition[bigscreenId].top
-                    newObj[0].left = positionInfo.left - this.screenPosition[bigscreenId].left
-                    bigScreenObj[bigscreenId].signalArr = [...newObj,...otherSignals]
-                    this.refreshBigScreen(bigScreenObj,bigscreenId)
                 }
             },
             

+ 14 - 6
src/renderer/components/SignalList.vue

@@ -17,6 +17,7 @@
             v-model="signalListJson"
             :options="dragOptions1"
             :move="onMove"
+            @end="end"
             id="signalContainer"
     >
         <!--信号源列表项-->
@@ -70,11 +71,10 @@
             // 移动信号源
             onMove({relatedContext, draggedContext}) {
                 // 首先要知道拖拽到哪个大屏
-                const bigscreenObj = this.$store.state.bigScreenObj
-                let len = bigscreenObj[relatedContext.component.$el.id].signalArr.length
-                let index = relatedContext.index ? relatedContext.index : 1
-                // 更新当前拖拽的位置(这里暂没有减去已有信号源的数量)
-                this.$store.dispatch('updatePositionNum',index-len)
+                // const bigscreenObj = this.$store.state.bigScreenObj
+                // let len = bigscreenObj[relatedContext.component.$el.id].signalArr.length
+                // let index = relatedContext.index ? relatedContext.index : 1
+                // const count = index-len > 0 ? index-len : 1
                 // 更新当前操作大屏ID
                 this.$store.dispatch('updateCurBigscreenId',relatedContext.component.$el.id)
 
@@ -83,7 +83,15 @@
                 return (
                     (!relatedElement || !relatedElement.fixed) && !draggedElement.fixed
                 )
-            }
+            },
+
+            end: function (evt) {
+                const bigscreenObj = this.$store.state.bigScreenObj
+                let len = bigscreenObj[evt.to.id].signalArr.length
+                const count = evt.newIndex+1-len>0 ? evt.newIndex+1-len : 1
+                // 更新当前拖拽的位置
+                this.$store.dispatch('updatePositionNum',count)
+            },
         },
 
         computed: {