|
@@ -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
|