瀏覽代碼

解决移动问题

liuwei 4 年之前
父節點
當前提交
cb05e8f6a8
共有 100 個文件被更改,包括 42 次插入45 次删除
  1. 31 33
      src/renderer/components/BigShow.vue
  2. 11 12
      src/utils/tools.js
  3. 0 0
      static/Data/10.png
  4. 0 0
      static/Data/100.png
  5. 0 0
      static/Data/101.png
  6. 0 0
      static/Data/102.png
  7. 0 0
      static/Data/103.png
  8. 0 0
      static/Data/104.png
  9. 0 0
      static/Data/105.png
  10. 0 0
      static/Data/106.png
  11. 0 0
      static/Data/107.png
  12. 0 0
      static/Data/108.png
  13. 0 0
      static/Data/109.png
  14. 0 0
      static/Data/11.png
  15. 0 0
      static/Data/110.png
  16. 0 0
      static/Data/111.png
  17. 0 0
      static/Data/112.png
  18. 0 0
      static/Data/113.png
  19. 0 0
      static/Data/114.png
  20. 0 0
      static/Data/115.png
  21. 0 0
      static/Data/116.png
  22. 0 0
      static/Data/117.png
  23. 0 0
      static/Data/118.png
  24. 0 0
      static/Data/119.png
  25. 0 0
      static/Data/12.png
  26. 0 0
      static/Data/120.png
  27. 0 0
      static/Data/121.png
  28. 0 0
      static/Data/122.png
  29. 0 0
      static/Data/123.png
  30. 0 0
      static/Data/124.png
  31. 0 0
      static/Data/125.png
  32. 0 0
      static/Data/126.png
  33. 0 0
      static/Data/127.png
  34. 0 0
      static/Data/128.png
  35. 0 0
      static/Data/129.png
  36. 0 0
      static/Data/13.png
  37. 0 0
      static/Data/130.png
  38. 0 0
      static/Data/131.png
  39. 0 0
      static/Data/132.png
  40. 0 0
      static/Data/133.png
  41. 0 0
      static/Data/134.png
  42. 0 0
      static/Data/135.png
  43. 0 0
      static/Data/136.png
  44. 0 0
      static/Data/137.png
  45. 0 0
      static/Data/138.png
  46. 0 0
      static/Data/139.png
  47. 0 0
      static/Data/14.png
  48. 0 0
      static/Data/140.png
  49. 0 0
      static/Data/141.png
  50. 0 0
      static/Data/142.png
  51. 0 0
      static/Data/143.png
  52. 0 0
      static/Data/144.png
  53. 0 0
      static/Data/145.png
  54. 0 0
      static/Data/146.png
  55. 0 0
      static/Data/147.png
  56. 0 0
      static/Data/148.png
  57. 0 0
      static/Data/149.png
  58. 0 0
      static/Data/15.png
  59. 0 0
      static/Data/150.png
  60. 0 0
      static/Data/151.png
  61. 0 0
      static/Data/152.png
  62. 0 0
      static/Data/153.png
  63. 0 0
      static/Data/154.png
  64. 0 0
      static/Data/155.png
  65. 0 0
      static/Data/156.png
  66. 0 0
      static/Data/157.png
  67. 0 0
      static/Data/158.png
  68. 0 0
      static/Data/159.png
  69. 0 0
      static/Data/16.png
  70. 0 0
      static/Data/160.png
  71. 0 0
      static/Data/161.png
  72. 0 0
      static/Data/162.png
  73. 0 0
      static/Data/163.png
  74. 0 0
      static/Data/164.png
  75. 0 0
      static/Data/165.png
  76. 0 0
      static/Data/166.png
  77. 0 0
      static/Data/167.png
  78. 0 0
      static/Data/168.png
  79. 0 0
      static/Data/169.png
  80. 0 0
      static/Data/17.png
  81. 0 0
      static/Data/170.png
  82. 0 0
      static/Data/171.png
  83. 0 0
      static/Data/172.png
  84. 0 0
      static/Data/173.png
  85. 0 0
      static/Data/174.png
  86. 0 0
      static/Data/175.png
  87. 0 0
      static/Data/176.png
  88. 0 0
      static/Data/177.png
  89. 0 0
      static/Data/178.png
  90. 0 0
      static/Data/179.png
  91. 0 0
      static/Data/18.png
  92. 0 0
      static/Data/180.png
  93. 0 0
      static/Data/181.png
  94. 0 0
      static/Data/182.png
  95. 0 0
      static/Data/183.png
  96. 0 0
      static/Data/184.png
  97. 0 0
      static/Data/185.png
  98. 0 0
      static/Data/186.png
  99. 0 0
      static/Data/187.png
  100. 0 0
      static/Data1/188.png

+ 31 - 33
src/renderer/components/BigShow.vue

@@ -22,12 +22,15 @@
         >
             <VueDragResize
                     v-for="itemV in signalPreList" :key="itemV.Id" class="sitem"
-                    :w="item.Width*bigScale/itemV.splitScreenStatus" :h="item.Height*bigScale/itemV.splitScreenStatus" :parentLimitation="true"
-                    @dragging="(obj) => dragging(obj,itemV)" @dragstop="(obj) => dragStop(obj,itemV)" @resizestop="(obj) => reSizeSignal(obj,itemV)"
+                    :w="item.Width*bigScale/itemV.splitScreenStatus" :h="item.Height*bigScale/itemV.splitScreenStatus" :parentLimitation="false"
+                    @dragging="(obj) => testThrottleFn(obj,itemV)"
+                    @dragstop="(obj) => dragStop(obj,itemV)"
+                    @resizing="(obj) => resizing(obj,itemV)"
+                    @resizestop="(obj) => reSizeSignal(obj,itemV)"
                     :style="{
                         position: 'fixed',
-                        top:itemV.top + 'px',
-                        left:itemV.left + 'px'
+                        left: itemV.left + 'px',
+                        top: itemV.top + 'px'
                     }"
             >
                 <div ref="signal">
@@ -55,7 +58,7 @@
     import VueDragResize from 'vue-drag-resize'
 
     import '../assets/less/splitscreen.less'
-    import {elePosition, getElementLeft, getElementTop, getStaticFile, guId} from "../../utils/tools"
+    import {elePosition, getElementLeft, getElementTop, getStaticFile, guId, throttleFunc} from "../../utils/tools"
     import {reqRefreshView} from "../api"
     import VideoPlayer from "./player.vue"
 
@@ -84,6 +87,7 @@
                 },
                 screenPosition:{}, // 大屏在视口中的位置
                 newIndex: 1, // 开窗拖到第几个格子中
+                testThrottleFn:throttleFunc(this.handleDragging, 20),
             }
         },
 
@@ -106,7 +110,6 @@
         updated() {
             // 获取大屏在视口中的位置
             const screenDiv = document.getElementById('bigscreen')
-            // const screenDiv = this.$refs
             this.screenPosition = {
                 top:getElementTop(screenDiv),
                 left:getElementLeft(screenDiv)
@@ -115,26 +118,8 @@
 
         methods: {
             // 改变信号源
-            log(value) {
-                const signalList = this.$store.state.signalPreList
-                const currentElement = signalList.filter(item => item.sourceId === value.added.element.sourceId)
-                const otherElement = signalList.filter(item => item.sourceId !== value.added.element.sourceId)
-
-                // this.newIndex = value.added.newIndex-signalList.length+1
+            log() {
                 this.newIndex = this.$store.state.positionNum
-
-                const signalList2 = signalList.filter(item => item.newIndex)
-                // 考虑多种情况
-                // 1.正序排列
-                const flag = signalList2.every(item => item.newIndex < value.added.newIndex) || signalList.length === 1
-                if(flag){
-                    currentElement[currentElement.length-1].newIndex = value.added.newIndex
-                    this.$store.dispatch('updateSignalPreList', [...otherElement,...currentElement])
-                }else {
-                // 2.乱序
-                    currentElement[currentElement.length-1].newIndex = value.added.newIndex - signalList.length + 1
-                    this.$store.dispatch('updateSignalPreList', [...otherElement,...currentElement])
-                }
             },
 
             // 大屏开窗接口提交
@@ -170,22 +155,34 @@
                 })
             },
 
-            // 拖动进行中(使用函数防抖)
-            dragging(obj,item) {
-                /*const arr = this.$store.state.signalPreList.filter(a => a.Id !== item.Id)
-                item.top = item.top + obj.top
-                item.left = item.left + obj.left
+            // 处理信号源拖拽中
+            handleDragging(obj,item) {
+                const arr = this.$store.state.signalPreList.filter(a => a.Id !== item.Id)
+                item.top = this.screenPosition.top + obj.top
+                item.left = this.screenPosition.left + obj.left
                 this.$store.dispatch('updateSignalPreList',[...arr,item])
-                console.log(item)*/
             },
 
             // 拖动结束
-            dragStop() {
+            dragStop(obj,item) {
+                console.log(obj)
+
+                /*const arr = this.$store.state.signalPreList.filter(a => a.Id !== item.Id)
+                item.top = item.top + obj.top
+                item.left = item.left + obj.left
+                console.log(obj,item)
+                this.$store.dispatch('updateSignalPreList',[...arr,item])*/
+
                 const arr = this.$store.state.signalPreList
                 this.reqRefreshBigScreen(arr)
             },
 
-            // 放大缩小信号源
+            // 缩放进行中
+            resizing(obj,itemV) {
+
+            },
+
+            // 放大缩小信号源(缩放结束事件)
             async reSizeSignal(obj,itemV) {
                 const arr = this.$data.streamWindows
                 // 找出当前改动的信号源
@@ -233,6 +230,7 @@
                         signalObj.height = this.currentBigshow[0].Height * this.$store.state.bigScale / (this.$store.state.splitScreenStatus+1)
                         signalObj.widthScale = signalObj.width / (this.currentBigshow[0].Width * this.$store.state.bigScale)
                         signalObj.heightScale = signalObj.height / (this.currentBigshow[0].Height * this.$store.state.bigScale)
+                        signalObj.isFixed = true // 是否使用固定定位
                         this.$store.dispatch('updateSignalPreList', [...arr2,signalObj])
 
                         // 添加定时器是为了得到最新的newIndex

+ 11 - 12
src/utils/tools.js

@@ -87,19 +87,18 @@ export function gridPosition(splitStatus,count) {
     }
 }
 
-// 函数防抖
-export function debounce(fn, wait) {
-    var timer = null;
-    return function () {
-        var context = this
-        var args = arguments
-        if (timer) {
-            clearTimeout(timer);
-            timer = null;
+// 时间戳实现节流函数:
+export function throttleFunc(fn, delay) {
+    var previous = 0;
+    // 使用闭包返回一个函数并且用到闭包函数外面的变量previous
+    return function() {
+        var _this = this;
+        var args = arguments;
+        var now = new Date();
+        if(now - previous > delay) {
+            fn.apply(_this, args);
+            previous = now;
         }
-        timer = setTimeout(function () {
-            fn.apply(context, args)
-        }, wait)
     }
 }
 

static/Data1/10.png → static/Data/10.png


static/Data1/100.png → static/Data/100.png


static/Data1/101.png → static/Data/101.png


static/Data1/102.png → static/Data/102.png


static/Data1/103.png → static/Data/103.png


static/Data1/104.png → static/Data/104.png


static/Data1/105.png → static/Data/105.png


static/Data1/106.png → static/Data/106.png


static/Data1/107.png → static/Data/107.png


static/Data1/108.png → static/Data/108.png


static/Data1/109.png → static/Data/109.png


static/Data1/11.png → static/Data/11.png


static/Data1/110.png → static/Data/110.png


static/Data1/111.png → static/Data/111.png


static/Data1/112.png → static/Data/112.png


static/Data1/113.png → static/Data/113.png


static/Data1/114.png → static/Data/114.png


static/Data1/115.png → static/Data/115.png


static/Data1/116.png → static/Data/116.png


static/Data1/117.png → static/Data/117.png


static/Data1/118.png → static/Data/118.png


static/Data1/119.png → static/Data/119.png


static/Data1/12.png → static/Data/12.png


static/Data1/120.png → static/Data/120.png


static/Data1/121.png → static/Data/121.png


static/Data1/122.png → static/Data/122.png


static/Data1/123.png → static/Data/123.png


static/Data1/124.png → static/Data/124.png


static/Data1/125.png → static/Data/125.png


static/Data1/126.png → static/Data/126.png


static/Data1/127.png → static/Data/127.png


static/Data1/128.png → static/Data/128.png


static/Data1/129.png → static/Data/129.png


static/Data1/13.png → static/Data/13.png


static/Data1/130.png → static/Data/130.png


static/Data1/131.png → static/Data/131.png


static/Data1/132.png → static/Data/132.png


static/Data1/133.png → static/Data/133.png


static/Data1/134.png → static/Data/134.png


static/Data1/135.png → static/Data/135.png


static/Data1/136.png → static/Data/136.png


static/Data1/137.png → static/Data/137.png


static/Data1/138.png → static/Data/138.png


static/Data1/139.png → static/Data/139.png


static/Data1/14.png → static/Data/14.png


static/Data1/140.png → static/Data/140.png


static/Data1/141.png → static/Data/141.png


static/Data1/142.png → static/Data/142.png


static/Data1/143.png → static/Data/143.png


static/Data1/144.png → static/Data/144.png


static/Data1/145.png → static/Data/145.png


static/Data1/146.png → static/Data/146.png


static/Data1/147.png → static/Data/147.png


static/Data1/148.png → static/Data/148.png


static/Data1/149.png → static/Data/149.png


static/Data1/15.png → static/Data/15.png


static/Data1/150.png → static/Data/150.png


static/Data1/151.png → static/Data/151.png


static/Data1/152.png → static/Data/152.png


static/Data1/153.png → static/Data/153.png


static/Data1/154.png → static/Data/154.png


static/Data1/155.png → static/Data/155.png


static/Data1/156.png → static/Data/156.png


static/Data1/157.png → static/Data/157.png


static/Data1/158.png → static/Data/158.png


static/Data1/159.png → static/Data/159.png


static/Data1/16.png → static/Data/16.png


static/Data1/160.png → static/Data/160.png


static/Data1/161.png → static/Data/161.png


static/Data1/162.png → static/Data/162.png


static/Data1/163.png → static/Data/163.png


static/Data1/164.png → static/Data/164.png


static/Data1/165.png → static/Data/165.png


static/Data1/166.png → static/Data/166.png


static/Data1/167.png → static/Data/167.png


static/Data1/168.png → static/Data/168.png


static/Data1/169.png → static/Data/169.png


static/Data1/17.png → static/Data/17.png


static/Data1/170.png → static/Data/170.png


static/Data1/171.png → static/Data/171.png


static/Data1/172.png → static/Data/172.png


static/Data1/173.png → static/Data/173.png


static/Data1/174.png → static/Data/174.png


static/Data1/175.png → static/Data/175.png


static/Data1/176.png → static/Data/176.png


static/Data1/177.png → static/Data/177.png


static/Data1/178.png → static/Data/178.png


static/Data1/179.png → static/Data/179.png


static/Data1/18.png → static/Data/18.png


static/Data1/180.png → static/Data/180.png


static/Data1/181.png → static/Data/181.png


static/Data1/182.png → static/Data/182.png


static/Data1/183.png → static/Data/183.png


static/Data1/184.png → static/Data/184.png


static/Data1/185.png → static/Data/185.png


static/Data1/186.png → static/Data/186.png


static/Data1/187.png → static/Data/187.png


+ 0 - 0
static/Data1/188.png


部分文件因文件數量過多而無法顯示