anxiao_web/pages/hikVideo/js/rightPage.js

240 lines
8.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { playHikUrl } from "../../../public/js/url.js";
var deviceVideoWindow = [];//保存正在播放的视频窗口
function showRightPage() {
setInitPage();
}
function setInitPage() {
var div = setVideoDivHtml(4);
$(".videoShowInfo").html(div);
videoPlayEvent();
var that = document.getElementsByClassName("fourScreen")[0]
setVideoFourDivSize(that);
}
function setVideoDivHtml(number) {
var div = "";
if (deviceVideoWindow.length != 0) {
if (deviceVideoWindow.length <= number) {
for (var i = 0; i < deviceVideoWindow.length; i++) {
let cameraIndexCode = deviceVideoWindow[i]["deviceid"];
let cameraName = deviceVideoWindow[i]["cameraName"];
var url=`${playHikUrl}?cameraIndexCode=${cameraIndexCode}`
div += `<div id="videoMonitorDevice${cameraIndexCode}" deviceid="${cameraIndexCode}">
<p class="videoShowName">${cameraName}</p>
<div class="videoShowImg">
<iframe src=${url} width='100%' height='100%'></iframe>
</div>
</div>`;
}
var count = number - deviceVideoWindow.length;
div += noDataDiv(count);
} else {
div += noDataDiv(number);
var count = deviceVideoWindow.length;
for (var i = count - 1; i >= 0; i--) {
let deviceid = deviceVideoWindow[i]["deviceid"];
closeVideo(deviceid);
delDeviceVideoWindow(deviceid);
}
}
} else {
div += noDataDiv(number);
}
return div;
}
function noDataDiv(number) {
var div = "";
for (var j = 0; j < number; j++) {
div += `<div></div>`;
}
return div;
}
$(".videoScreen>img").on('click', function () {
var number = $(this).attr("number");
var div = setVideoDivHtml(parseInt(number));
$(".videoShowInfo").html(div);
videoPlayEvent();
switch (number) {
case "1":
setVideoOneDivSize(this);
break;
case "2":
setVideoTwoDivSize(this);
break;
case "4":
setVideoFourDivSize(this);
break;
case "9":
setVideoNiceDivSize(this);
break;
case "16":
setVideoSixteenDivSize(this);
break;
default:
break;
}
videoPlayEvent();
})
function videoPlayEvent() {
$(".videoShowInfo>div").unbind();
$(".videoShowInfo>div").click(function () {
$(this).attr("class", "videoOption");
$(this).siblings().removeClass("videoOption")
})
}
function getAloneVideoData(cameraIndexCode, cameraName) {
//这里需要先点击播放框在播放
var videoShowDiv = $(".videoShowInfo>div");
var flag = 0;
for (var i = 0; i < videoShowDiv.length; i++) {
var thisVideo = videoShowDiv[i];
var cls = $(thisVideo).attr("class");
if (cls == "videoOption") {
var optiondeviceid = $(thisVideo).attr("deviceid");
flag = 1;
for (var j = 0; j < deviceVideoWindow.length; j++) {
if (cameraIndexCode == deviceVideoWindow[j]["deviceid"]) {
flag = 2;
layer.msg("当前视频正在播放,请先关闭");
break;
}
}
break;
}
}
if (flag == 0) {
layer.msg("请选择播放窗口");
return;
} else if (flag == 1) {
if (optiondeviceid != undefined) {
if (optiondeviceid != cameraIndexCode) {
closeVideo(optiondeviceid);//关闭上一个,打开一个新的
}
}
openMoveDeviceVideo(cameraIndexCode, cameraName)
}
}
function openMoveDeviceVideo(cameraIndexCode, cameraName) {
var url = `${playHikUrl}?cameraIndexCode=${cameraIndexCode}`
playMdevVideo(cameraIndexCode, cameraName, url)
}
function playMdevVideo(cameraIndexCode, cameraName, url) {
var deviceVideoObj = {
"deviceid": cameraIndexCode,
"cameraName": cameraName,
"status": "open"
}
var iframe = `<p class="videoShowName">${cameraName}</p>
<div class="videoShowImg">
<iframe src=${url} width='100%' height='100%' ></iframe>
</div>`;
$(".videoShowInfo>.videoOption").html(`${iframe}`);
$(".videoShowInfo>.videoOption").attr("id", `videoMonitorDevice${cameraIndexCode}`).attr("deviceid", `${cameraIndexCode}`);
deviceVideoWindow.push(deviceVideoObj);
}
function setVideoOneDivSize(that) {
$(that).attr("src", "./image/oneSelect.png");
$(".twoScreen").attr("src", "./image/twoNoSelect.png");
$(".fourScreen").attr("src", "./image/fourNoSelect.png");
$(".niceScreen").attr("src", "./image/niceNoSelect.png");
$(".sixteenScreen").attr("src", "./image/sixteenNoSelect.png");
$(".videoShowInfo>div").css("width", "100%").css("height", "100%");
}
function setVideoTwoDivSize(that) {
$(that).attr("src", "./image/twoSelect.png");
$(".oneScreen").attr("src", "./image/oneNoSelect.png");
$(".fourScreen").attr("src", "./image/fourNoSelect.png");
$(".niceScreen").attr("src", "./image/niceNoSelect.png");
$(".sixteenScreen").attr("src", "./image/sixteenNoSelect.png");
$(".videoShowInfo>div").css("width", "50%").css("height", "100%");
}
function setVideoFourDivSize(that) {
$(that).attr("src", "./image/fourSelect.png");
$(".oneScreen").attr("src", "./image/oneNoSelect.png");
$(".twoScreen").attr("src", "./image/twoNoSelect.png");
$(".niceScreen").attr("src", "./image/niceNoSelect.png");
$(".sixteenScreen").attr("src", "./image/sixteenNoSelect.png");
$(".videoShowInfo>div").css("width", "50%").css("height", "50%");
}
function setVideoNiceDivSize(that) {
$(that).attr("src", "./image/niceSelect.png");
$(".oneScreen").attr("src", "./image/oneNoSelect.png");
$(".twoScreen").attr("src", "./image/twoNoSelect.png");
$(".fourScreen").attr("src", "./image/fourNoSelect.png");
$(".sixteenScreen").attr("src", "./image/sixteenNoSelect.png");
$(".videoShowInfo>div").css("width", "33.33%").css("height", "33.33%");
}
function setVideoSixteenDivSize(that) {
$(that).attr("src", "./image/sixteenSelect.png");
$(".oneScreen").attr("src", "./image/oneNoSelect.png");
$(".twoScreen").attr("src", "./image/twoNoSelect.png");
$(".fourScreen").attr("src", "./image/fourNoSelect.png");
$(".niceScreen").attr("src", "./image/niceNoSelect.png");
$(".videoShowInfo>div").css("width", "25%").css("height", "25%");
}
function delDeviceVideoWindow(deviceid) {
for (var j = 0; j < deviceVideoWindow.length; j++) {
if (deviceid == deviceVideoWindow[j]["deviceid"]) {
deviceVideoWindow.splice(j, 1)
}
}
}
function closeVideo(deviceid) {
delDeviceVideoWindow(deviceid);
}
//这里我需要监听一下视频的数据是否正常正常以后我在去resize
window.addEventListener('message', function (e) {
var data = e.data;
var cmd = data["cmd"];
var deviceid = data["deviceid"];
if (cmd == "videoloadedSuccess") {
var width = parseFloat($(`.videoShowInfo>#videoMonitorDevice${deviceid}>.videoShowImg`).css("width"));
var height = parseFloat($(`.videoShowInfo>#videoMonitorDevice${deviceid}>.videoShowImg`).css("height"));
//为了让视频自适应
$(`.videoShowInfo>#videoMonitorDevice${deviceid}>.videoShowImg`).css("width", width + 1 + "px").css("height", height + 1 + "px")
$(`.videoShowInfo>#videoMonitorDevice${deviceid}>.videoShowImg`).css("width", width - 1 + "px").css("height", height - 1 + "px")
}
if (cmd == "closePage") {
$(`.videoShowInfo>#videoMonitorDevice${deviceid}>iframe`).remove();
$(`.videoShowInfo>#videoMonitorDevice${deviceid}`).html("");
$(`.videoShowInfo>#videoMonitorDevice${deviceid}`).removeAttr("deviceid");
delDeviceVideoWindow(deviceid);
}
})
//页面销毁的时候,需要调用的关闭的
function videoClosePage() {
var count = deviceVideoWindow.length;
for (var i = count - 1; i >= 0; i--) {
let deviceid = deviceVideoWindow[i]["deviceid"];
closeVideo(deviceid);
}
}
$(window).bind('beforeunload', function () {
videoClosePage();
});
export {
showRightPage,
getAloneVideoData
}