IntelligentRecognition/ah-jjsp-web/.svn/pristine/5b/5ba70dca782dd52411251623d39...

680 lines
22 KiB
Plaintext
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.

let dtree, util, tree,layer;
let noNum = 0, num = 0, all = 0;
let type = 'city';
let puidParam;
let winDom = 'videoPlayer1';
layui.extend({
dtree: '../../js/layui_dtree/dtree/dtree'
}).use(['util', 'dtree','layer'], function () {
util = layui.util;
dtree = layui.dtree;
layer = layui.layer;
initTreeCity("");
initVideo();
//按钮点击事件
util.event('lay-active', {
city: function () {
changBtn(this, $(this).parent(), 'checkBtn');
if (type !== 'city') {
initTreeCity("");
type = 'city';
}
},
risk: function () {
changBtn(this, $(this).parent(), 'checkBtn');
if (type !== 'risk') {
initTreeRisk("");
type = 'risk';
}
},
regular: function () {
changBtn(this, $(this).parent(), 'checkBtn');
if (type !== 'regular') {
initTreeRegular("");
type = 'regular';
}
},
swCity:function(){
changBtn(this, $(this).parent(), 'checkBtn');
if (type !== 'swCity') {
initTreeSwCity("");
type = 'swCity';
}
},
query: function () {
let keyWord = $('#keyWord').val();
let pattern = new RegExp("[%_<>]");
if (pattern.test(keyWord)) {
$("#keyWord").val('');
return layer.msg('关键字查询包含特殊字符,请重新输入', {
icon: 7,
time: 2000 //2秒关闭如果不配置默认是3秒
});
}
if (type === 'city') {
initTreeCity(keyWord);
} else if(type === 'risk'){
initTreeRisk(keyWord);
}else if(type === 'regular'){
initTreeRegular(keyWord);
}else if(type === 'swCity'){
initTreeSwCity(keyWord);
}
},
photoLocal: function () {
screenshot();
},
videoRemote: function () {
if (videoObject.playState) {
if (isEmpty(videoObject.remoteId)) {
$(this).attr("src", "../../img/video/videoRemote-select.png");
remoteVideo(videoObject.devCode, 0);
} else {
$(this).attr("src", "../../img/video/videoRemote.png");
stopRemote(videoObject.remoteId, 0)
}
} else {
layer.msg("请先播放视频。。。", {icon: 0});
}
},
photoRemote: function () {
if (videoObject.playState) {
remoteVideo(videoObject.devCode, 1);
} else {
layer.msg("请先播放视频。。。", {icon: 0});
}
}
});
dtree.on("node('ballTree')", function (obj) {
if (!videoObject.recordVideoState && isEmpty(videoObject.remoteId)) {
let data = obj.param.recordData;
let devName = data.tName;
let passWay = localStorage.getItem("passWay");
if (passWay == null || passWay == '') {
passWay = 'to-2';
}
if (data.genre === '1') {
if (!isEmpty(data.puid)) {
if (videoObject.devCode !== data.puid) {
videoObject.devCode = passWay === 'to-1' ? data.tCode : data.puid;
videoObject.videoType = passWay;
puidParam=data.puid;
playVideo(1, videoObject.devCode, devName, videoObject.videoType);
} else {
layer.msg("视频正在播放中....", {icon: 0});
}
} else {
layer.msg("工程未绑定球机", {icon: 0});
}
}
} else {
if (isEmpty(videoObject.remoteId)) {
layer.msg("当前视频正在本地录像,请先关闭本地录像", {icon: 0});
} else {
layer.msg("当前视频正在远程录像,请先关闭远程录像", {icon: 0});
}
}
});
tree = dtree.render({
elem: "#ballTree",
initLevel: 1,
data: [],
checkbar: false,//开启复选框
menubar: false,
ficon: ['2'],
skin: "lay",
record: true,
toolbar: true,
toolbarFun: toolbarFun,
done: function (res, $ul, first) {
$('.icon-shexiangtou1').next().css('color', "#2f82fb");
$('div[data-id$="top"]').addClass('top');
}
});
});
//树右击事件
let toolbarFun = {
loadToolbarBefore: function (buttons, param, $div) {
if (param.recordData.genre === '1') {
openRemotePatrol(param.nodeId, param.recordData.puid, param.recordData.tCode, param.recordData.twCode, param.recordData.tdCode, param.recordData.passWay);
}
}
}
/*打开远程巡视页面*/
function openRemotePatrol(id, puid, tCode, twCode, tdCode, passWay) {
let layerIndex = layer.open({
id: "remotePatrol",
title: false,
type: 2,
maxmin: false,
content: '../dutyTask/remotePatrol/remotePatrol.html',
area: ['100%', '100%'],
closeBtn: 0,
success: function (layero, index) {
let iframeWin = window["layui-layer-iframe" + layerIndex];
iframeWin.setParams(id, puid, tCode, twCode, tdCode, passWay);
},
end: function () {
}
});
}
/**
* 地市树
* @param keyWord
*/
function initTreeCity(keyWord) {
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: $('#keyWord').val()
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListCity',
data: {
keyWord: $('#keyWord').val()
},
success: function (data) {
calleArr(data.data);
let treeData = [{
id: "top",
title: '<span style="font-size: 18px">球机</span><span style="font-size: 16px;">&nbsp;&nbsp;(在线:<span style="color: green">' + num + '&nbsp;&nbsp;</span>' + " 不在线:" + '<span style="color: red">' + noNum + '&nbsp;&nbsp;</span>' + " 总数:" + all + ')</span>',
checkArr: "0",
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData,
});
}
});
}
/**
* 省外球机树
* @param keyWord
*/
function initTreeSwCity(keyWord) {
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: keyWord
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListSWCity',
data: {
keyWord: keyWord
},
success: function (data) {
calleArr2(data.data);
let treeData = [{
id: "top",
title: '<span style="font-size: 18px">省外球机</span><span style="font-size: 16px;">&nbsp;&nbsp;(在线:<span style="color: green">' + num + '&nbsp;&nbsp;</span>' + " 不在线:" + '<span style="color: red">' + noNum + '&nbsp;&nbsp;</span>' + " 总数:" + all + ')</span>',
checkArr: "0",
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData
});
}
});
}
/**
* @param {Object} keyWord
*/
function initTreeRisk(keyWord) {
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: keyWord
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListRisk',
data: {
keyWord: keyWord
},
success: function (data) {
calleArr(data.data);
let treeData = [{
id: "top",
title: '<span style="font-size: 18px">球机</span><span style="font-size: 16px;">&nbsp;&nbsp;(在线:<span style="color: green">' + num + '&nbsp;&nbsp;</span>' + " 不在线:" + '<span style="color: red">' + noNum + '&nbsp;&nbsp;</span>' + " 总数:" + all + ')</span>',
checkArr: "0",
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData
});
}
});
}
// 固定球机树
function initTreeRegular(){
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: $('#keyWord').val()
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListRegular',
data: {
keyWord: $('#keyWord').val()
},
success: function (data) {
handleData(data.data);
let treeData = [{
id: "top",
title: '<span style="font-size: 18px">固定球机</span><span style="font-size: 16px;">&nbsp;&nbsp;(在线:<span style="color: green">' + num + '&nbsp;&nbsp;</span>' + " 不在线:" + '<span style="color: red">' + noNum + '&nbsp;&nbsp;</span>' + " 总数:" + all + ')</span>',
checkArr: "0",
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData,
});
$('.dtree-lay-item').css('padding-left','20px');
}
});
}
/**
* 遍历树数据
* @param treeData
*/
function calleArr(treeData) {
console.log(treeData)
num = 0;
noNum = 0;
all = 0;
for (let i in treeData) {
let objNum = 0;
let objNoNum = 0;
let obj = treeData[i];
obj.iconClass = 'iconfont icon-dingwei';
if (obj.children) {
for (let i in obj.children) {
if (!isEmpty(obj.children[i].puid)) {
//判断球机图标
if (!isEmpty(obj.children[i].state) && obj.children[i].state === '1') {
//在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou1';
num++;
objNum++;
} else {
//不在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
} else {
//不在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
all++;
}
obj.title = obj.title + '&nbsp;&nbsp;(<span style="color: green">' + objNum + '</span>/<span style="color: red">' + objNoNum + '</span>)';
}
}
}
/**
* 遍历树数据
* @param treeData
*/
function calleArr2(treeData) {
console.log(treeData)
num = 0;
noNum = 0;
all = 0;
for (let i in treeData) {
let objNum = 0;
let objNoNum = 0;
treeData.iconClass = 'iconfont icon-shexiangtou';
if (!isEmpty(treeData[i].puid)) {
//判断球机图标
if (!isEmpty(treeData[i].state) && treeData[i].state === '1') {
//在线图标
treeData[i].iconClass = 'iconfont icon-shexiangtou1';
num++;
objNum++;
} else {
//不在线图标
treeData[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
} else {
//不在线图标
treeData[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
all++;
treeData.title = treeData.title + '&nbsp;&nbsp;(<span style="color: green">' + objNum + '</span>/<span style="color: red">' + objNoNum + '</span>)';
}
}
// 处理固定式球机数据
function handleData(treeData){
num = 0;
noNum = 0;
all = 0;
for (let i in treeData) {
let objNum = 0;
let objNoNum = 0;
let obj = treeData[i];
obj.iconClass = 'none';
if (obj.children) {
for (let i in obj.children) {
if (!isEmpty(obj.children[i].puid)) {
//判断球机图标
if (!isEmpty(obj.children[i].state) && obj.children[i].state === '1') {
//在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou1';
num++;
objNum++;
} else {
//不在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
} else {
//不在线图标
obj.children[i].iconClass = 'iconfont icon-shexiangtou';
noNum++;
objNoNum++;
}
all++;
}
obj.title = obj.title + '&nbsp;&nbsp;(<span style="color: green">' + objNum + '</span>/<span style="color: red">' + objNoNum + '</span>)';
}
}
}
/**
* 播放视频
* @param {Object} winNum
* @param {Object} devCode
* @param {Object} devName
* @param videoType 视频类型
*/
function playVideo(winNum, devCode, devName, videoType) {
videos.closeAllVideo();
destoryVideo(flvPlayer);
if (videoObject.videoType !== 'to-1') {
let index = devCode.indexOf("-");
if(index > 0){ // 固定球机播放
let puid = devCode.substring(0,index);
let idx = devCode.substring(index + 1,devCode.length);
QXPlayVideo(puid, idx, winDom)
}else{
QXPlayVideo(devCode, '0', winDom)
}
} else {
let index = devCode.indexOf("-");
if(index > 0){ // 固定球机播放
let puid = devCode.substring(0,index);
let idx = devCode.substring(index + 1,devCode.length);
TYPlayVideo(1, puid, devName)
}else{
TYPlayVideo(1, devCode, devName)
}
}
}
/**
* 云台控制
* @param devCode
*/
function playControl() {
let key;
//点击事件
let btn = $('[lay-event=control]');
btn.unbind();
btn.mousedown(function (event) {
if (videoObject.playState) {
if (videoObject.videoType !== 'to-1') {
key = qxControlType[$(this).attr('id')];
if (key[2]) {
turnControl(key[0], videoObject.devCode).then(r => {
});
} else {
qxControl(videoObject.devCode, key[1])
}
} else {
key = controlType[$(this).attr('id')][0]
videos.videoControl(videoObject.devCode, key, 5, 5);
}
}
event.stopPropagation();
}).mouseup(function (event) {
if (videoObject.playState) {
if (videoObject.videoType !== 'to-1') {
key = qxControlType[$(this).attr('id')];
if (key[2]) {
turnControl(key[3], videoObject.devCode).then(r => {
});
} else {
qxControl(videoObject.devCode, key[3])
}
} else {
key = controlType[$(this).attr('id')][1]
videos.videoControl(videoObject.devCode, key, 5, 5);
}
} else {
layer.msg("请先播放视频....", {icon: 0});
}
event.stopPropagation();
});
}
/**
* 改变底部按钮样式
*/
function changBtn(dom, parentDom, css) {
let button = $(dom);
if (!button.hasClass(css)) {
$.each(parentDom.children(), function (index, item) {
$(item).removeClass(css);
});
}
button.addClass(css);
}
// 输入框查询禁用快捷键
let isProhibitKey = false;
function prohibitKey(type){
if(type === 1){ // 禁用
console.log('禁用')
isProhibitKey = true;
}else if(type === 2){ // 不禁用
console.log('不禁用')
isProhibitKey = false;
}
}
let numA = "";
let up = "W";
let down = "S";
let left = "A";
let right = "D";
let amplify = "Q";
let shrink = "E";
let farFocus = "R";
let nearFocus = "T";
let photoLocal = "F";
let videoLocal = "G";
let escape = "Escape";
//键盘监听事件——本地截屏
document.onkeydown = function (event) {
up = isEmpty(localStorage.getItem("up")) ? "W" : localStorage.getItem("up");
down = isEmpty(localStorage.getItem("down")) ? "S" : localStorage.getItem("down");
left = isEmpty(localStorage.getItem("left")) ? "A" : localStorage.getItem("left");
right = isEmpty(localStorage.getItem("right")) ? "D" : localStorage.getItem("right");
amplify = isEmpty(localStorage.getItem("amplify")) ? "Q" : localStorage.getItem("amplify");
shrink = isEmpty(localStorage.getItem("shrink")) ? "E" : localStorage.getItem("shrink");
farFocus = isEmpty(localStorage.getItem("farFocus")) ? "R" : localStorage.getItem("farFocus");
nearFocus = isEmpty(localStorage.getItem("nearFocus")) ? "T" : localStorage.getItem("nearFocus");
photoLocal = isEmpty(localStorage.getItem("photoLocal")) ? "F" : localStorage.getItem("photoLocal");
videoLocal = isEmpty(localStorage.getItem("videoLocal")) ? "G" : localStorage.getItem("videoLocal");
escape = isEmpty(localStorage.getItem("escape")) ? "Escape" : localStorage.getItem("escape");
let e = event || window.event || arguments.callee.caller.arguments[0];
if (numA !== e.code.replaceAll("Key", '')) {
whichkey(event);
}
numA = e.code.replaceAll("Key", '');
};
function whichkey(event) {
if(isProhibitKey){
return false;
}
let e = event || window.event || arguments.callee.caller.arguments[0];
if (e.code === escape && e) {
configure();
} else if (e && e.code.replaceAll("Key", '') === photoLocal) { // Ctrl_B
screenshot();
} else if (e && e.code.replaceAll("Key", '') === videoLocal) { // Ctrl_B
$("#videoLocal").click()
} else if (e && e.code.replaceAll("Key", '') === up) { // Ctrl_B
controlDown("up");
} else if (e && e.code.replaceAll("Key", '') === down) { // Ctrl_B
controlDown("down");
} else if (e && e.code.replaceAll("Key", '') === left) { // Ctrl_B
controlDown("left");
} else if (e && e.code.replaceAll("Key", '') === right) { // Ctrl_B
controlDown("right");
} else if (e && e.code.replaceAll("Key", '') === amplify) { // Ctrl_B
controlDown("amplify");
} else if (e && e.code.replaceAll("Key", '') === shrink) { // Ctrl_B
controlDown("shrink");
} else if (e && e.code.replaceAll("Key", '') === farFocus) { // Ctrl_B
controlDown("farFocus");
} else if (e && e.code.replaceAll("Key", '') === nearFocus) { // Ctrl_B
controlDown("nearFocus");
}
}
document.onkeyup = function (event) {
numA = "";
let e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.code.replaceAll("Key", '') === up) { // Ctrl_B
controlUp("up");
} else if (e && e.code.replaceAll("Key", '') === down) { // Ctrl_B
controlUp("down");
} else if (e && e.code.replaceAll("Key", '') === left) { // Ctrl_B
controlUp("left");
} else if (e && e.code.replaceAll("Key", '') === right) { // Ctrl_B
controlUp("right");
} else if (e && e.code.replaceAll("Key", '') === amplify) { // Ctrl_B
controlUp("amplify");
} else if (e && e.code.replaceAll("Key", '') === shrink) { // Ctrl_B
controlUp("shrink");
} else if (e && e.code.replaceAll("Key", '') === farFocus) { // Ctrl_B
controlUp("farFocus");
} else if (e && e.code.replaceAll("Key", '') === nearFocus) { // Ctrl_B
controlUp("nearFocus");
}
}
function controlDown(type) {
if(isProhibitKey){
return false;
}
let key;
if (videoObject.playState) {
if (videoObject.videoType === 'to-2') {
key = qxControlType[type];
if (key[2]) {
console.log(key[2]);
turnControl(key[0], videoObject.devCode).then(r => {
});
} else {
console.log(key[3]);
qxControl(videoObject.devCode, key[1])
}
} else {
key = controlType[type][0]
console.log(key);
videos.videoControl(videoObject.devCode, key, 5, 5);
}
} else {
layer.msg("请先播放视频....", {icon: 0});
}
}
function controlUp(type) {
if(isProhibitKey){
return false;
}
let key;
if (videoObject.playState) {
if (videoObject.videoType === 'to-2') {
key = qxControlType[type];
if (key[2]) {
turnControl(key[3], videoObject.devCode).then(r => {
});
} else {
qxControl(videoObject.devCode, key[3])
}
} else {
key = controlType[type][0]
videos.videoControl(videoObject.devCode, key, 5, 5);
}
} else {
layer.msg("请先播放视频....", {icon: 0});
}
}
function set3DisTrue(){
let is3D = $('#3dset').prop('checked')
if(is3D){
layer.msg('已开启3D云台', {icon: 1})
}else{
layer.msg('已关闭3D云台', {icon: 1})
}
localStorage.setItem("threeD",is3D);
}
function configure() {
let height = '80%', width = '30%';
let index = parent.layer.open({
id: "configure",
title: ['快捷键设置', 'font-size:18px;'],
type: 2,
shade: 0.1,
shadeClose: false,
maxmin: false,
content: '../video/configure.html',
area: [width, height],
});
}