Browse Source

多屏操作未解决

liuwei 4 years ago
parent
commit
4502f27da3
3 changed files with 38 additions and 20 deletions
  1. 21 19
      src/renderer/components/BigShow.vue
  2. 0 1
      src/renderer/components/SignalList.vue
  3. 17 0
      src/utils/tools.js

+ 21 - 19
src/renderer/components/BigShow.vue

@@ -190,7 +190,7 @@
                 const newSignalPreList = bigScreenObj[bigscreen.ID].signalArr.filter(item => item.Id !== signal.Id)
                 // 2.重新赋值
                 bigScreenObj[bigscreen.ID].signalArr = newSignalPreList
-            }
+            },
         },
 
         computed: {
@@ -302,21 +302,14 @@
         watch: {
             // 监视大屏对象的变化(深度监视)
             bigScreenObj: {
-                handler: function (val, oldVal) {
+                handler: function (val) {
                     const bigscreenId = this.$store.state.curOpeBigscreenId
                     const bigScale = this.$store.state.bigScale
                     const positionNum = this.$store.state.positionNum
                     if(bigscreenId){
-                        const arr = val[bigscreenId].signalArr
+                        /*const arr = val[bigscreenId].signalArr
                         let len = arr.length
-
                         if(len){
-                            const signals = []
-                            arr.forEach(item => signals.push(JSON.parse(JSON.stringify(item))))
-                            
-                            // 删除数据的最后一项,重新赋值再添加
-                            signals.pop()
-
                             // 给新增的信号源进行赋值
                             const signalObj = arr[len-1]
                             signalObj.Id = guId()
@@ -328,16 +321,25 @@
                             const positionInfo = elePosition(signalObj.width,signalObj.height,positionNum,this.screenPosition[bigscreenId].top,this.screenPosition[bigscreenId].left,val[bigscreenId].splitStatus+1)
                             signalObj.top = positionInfo.top - this.screenPosition[bigscreenId].top
                             signalObj.left = positionInfo.left- this.screenPosition[bigscreenId].left
-                            signals.push(signalObj)
-
-                            const newVal = {...val}
-                            console.log(newVal)
-
-                            // console.log(signals,val)
+                        }*/
+                        
+                        const arr = []
+                        val[bigscreenId].signalArr.forEach(item => {
+                            arr.push(JSON.parse(JSON.stringify(item)))
+                        })
 
-                            // console.log([...signals,signalObj],val)
-                            // this.$store.dispatch('secondUpdateBigscreenObj',[...signals,signalObj])
-                        }
+                        arr.forEach(item => {
+                            item.Id = guId()
+                            item.splitScreenStatus = val[bigscreenId].splitStatus + 1
+                            item.width = val[bigscreenId].width * bigScale / item.splitScreenStatus
+                            item.height = val[bigscreenId].height * bigScale / item.splitScreenStatus
+                            item.widthScale = item.width / (val[bigscreenId].width * bigScale)
+                            item.heightScale = item.height / (val[bigscreenId].height * bigScale)
+                            const positionInfo = elePosition(item.width,item.height,positionNum,this.screenPosition[bigscreenId].top,this.screenPosition[bigscreenId].left,val[bigscreenId].splitStatus+1)
+                            item.top = positionInfo.top - this.screenPosition[bigscreenId].top
+                            item.left = positionInfo.left- this.screenPosition[bigscreenId].left
+                        })
+                        console.log(arr)
                     }
                 },
                 deep:true

+ 0 - 1
src/renderer/components/SignalList.vue

@@ -1,5 +1,4 @@
 <!--信号源列表组件-->
-
 <template>
     <!--信号源容器-->
     <draggable

+ 17 - 0
src/utils/tools.js

@@ -178,4 +178,21 @@ export function elePosition(width,height,count,top,left,splitNum) {
     }
 }
 
+// 深度克隆对象
+export function newobj(obj) {
+    var str, newobj = obj.constructor === Array ? [] : {};//constructor 属性返回对创建此对象的数组函数的引用。创建相同类型的空数据
+    if (typeof obj !== 'object') {
+        return;
+    } else {
+        for (var i in obj) {
+            if (typeof obj[i] === 'object'){//判断对象的这条属性是否为对象
+                newobj[i] = newObj(obj[i]);//若是对象进行嵌套调用
+            }else{
+                newobj[i] = obj[i];
+            }
+        }
+    }
+    return newobj;//返回深度克隆后的对象
+}
+