let dtree, recordTable, videoTable,imageTable, form, layer, laydate, util, tree;
let noNum = 0, num = 0, all = 0;
let type = 'city';
let dataType = 'video';
let terrace = 'platform'
let arr = [];
let tybns = [];
let upDownData = [];
let passWay;
layui.extend({
dtree: '{/}../../js/layui_dtree/dtree/dtree'
}).use(['layer', 'laydate', 'form', 'table', 'util', 'dtree', 'table'], function () {
layer = layui.layer;
form = layui.form;
laydate = layui.laydate;
recordTable = layui.table;
videoTable = layui.table;
imageTable = layui.table;
util = layui.util;
dtree = layui.dtree;
passWay= localStorage.getItem("passWay");
form.render();
inputTime();
//视频日期范围
laydate.render({
elem: '#videoTime'
, type: 'date'
, range: '~'
, format: 'yyyy-MM-dd',
max: Date.parse(new Date()),
});
//图片日期范围
laydate.render({
elem: '#imgTime'
, type: 'date'
, range: '~'
, format: 'yyyy-MM-dd',
max: Date.parse(new Date()),
});
//记录日期范围
laydate.render({
elem: '#recordTime'
, type: 'date'
, range: '~'
, format: 'yyyy-MM-dd',
max: Date.parse(new Date()),
});
tree = dtree.render({
elem: "#ballTree",
initLevel: 1,
data: [],
checkbar: true,//开启复选框
menubar: false,
ficon: ['2'],
skin: "lay",
record: true,
checkbarFun: checkBarFun,
done: function (res, $ul, first) {
$('.icon-shexiangtou1').next().css('color', "#2f82fb");
$('div[data-id$="top"]').addClass('top');
}
});
initTreeCity("");
getBallVideo();
//工具条事件
videoTable.on('tool(videoTable)', function (obj) {
let data = obj.data;
let layEvent = obj.event;
switch (layEvent) {
case 'see':
data.type = terrace;
console.log(JSON.stringify(data));
toPage(JSON.stringify(data));
break;
default:
break;
}
});
util.event('lay-active', {
//地市
city: function () {
if (type !== 'city') {
changBtn(this, $(this).parent(), 'checkBtn');
initTreeCity("");
type = 'city';
}
},
//风险等级
risk: function () {
if (type !== 'risk') {
changBtn(this, $(this).parent(), 'checkBtn');
initTreeRisk("");
type = 'risk';
}
},
regular: function () {
if (type !== 'regular') {
changBtn(this, $(this).parent(), 'checkBtn');
initTreeRegular("");
type = 'regular';
}
},
//查询
query: function () {
if (type === 'city') {
initTreeCity($('#keyWord').val());
} else if (type === 'risk') {
initTreeRisk($('#keyWord').val());
} else {
initTreeRegular($('#keyWord').val());
}
},
queryRecord: function () {
getBallUpDown();
},
videoQuery: function () {
if (terrace === 'frontEnd') {
getBallVideoWeb();
} else {
getBallVideo()
}
},
imgQuery: function () {
if (terrace === 'frontEnd') {
getBallImageWeb();
} else {
getBallImage()
}
},
recordDownload: function () {
},
//平台
platform: function () {
changBtn(this, $(this).parent(), 'checkBtn');
terrace = 'platform'
if (dataType !== 'record') {
getBallVideo();
}
},
//前端
frontEnd: function () {
changBtn(this, $(this).parent(), 'checkBtn');
terrace = 'frontEnd'
if (dataType !== 'record') {
getBallVideoWeb();
}
},
//录像查询
video: function () {
changBtn(this, $(this).parent(), 'checkLi');
changContentRight('video');
//initVideoTable();
dataType = 'video'
if (terrace === 'frontEnd') {
getBallVideoWeb();
} else {
getBallVideo()
}
},
//图片查询
img: function () {
changContentRight('img');
changBtn(this, $(this).parent(), 'checkLi');
dataType = 'img'
if (terrace === 'frontEnd') {
getBallImageWeb();
} else {
getBallImage()
}
},
//上下线记录查询
history: function () {
changContentRight('record');
changBtn(this, $(this).parent(), 'checkLi');
dataType = 'record'
getBallUpDown();
}
});
});
/**
* 树单选框监听事件
* @type {{chooseDone: checkBarFun.chooseDone}}
*/
let checkBarFun = {
chooseDone: function (obj) {
console.log(obj);
arr = [];
$.each(obj, function (index, item) {
/* var passWay = item.recordData.passWay;
arr.push({
name: item.context,
puId: item.recordData.puid
})*/
if (passWay == 'to-1') {//通道1
tybns.push({
name: item.context,
puId: item.recordData.tCode,
passWay: passWay
})
arr.push({
name: item.context,
puId: item.recordData.tCode,
passWay:passWay
})
} else {
tybns.push({
name: item.context,
puId: item.recordData.puid,
passWay: passWay
})
arr.push({
name: item.context,
puId: item.recordData.puid,
passWay:passWay
})
}
})
if (dataType === 'record') {
getBallUpDown();
}else if (dataType === 'img') {
if (terrace === 'frontEnd') {
getBallImageWeb();
} else {
getBallImage()
}
}else{
if (terrace === 'frontEnd') {
getBallVideoWeb();
} else {
getBallVideo()
}
}
}
}
/**
* 获取设备上下线数据
*/
function getBallUpDown() {
let dom = $('#recordTime');
let startTime = isEmpty(dom.val().split('~')[0]) ? "" : dom.val().split('~')[0];
let endTime = isEmpty(dom.val().split('~')[1]) ? "" : dom.val().split('~')[1];
let params = {
puIdList: JSON.stringify(tybns),
startTime: startTime,
endTime: endTime
}
let loadingMsg = layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
Ajax().post({
url: dataUrl + 'proteam/pot/video/getBallUpDown',
headers: {
"encrypt": sm3(JSON.stringify(params))
},
data: params,
async: true,
success: function (data) {
layer.close(loadingMsg); // 关闭提示层
if (data.code === 200) {
initRecordTable(data.data);
} else {
initRecordTable([]);
}
},
error: function () {
layer.close(loadingMsg); // 关闭提示层
}
});
}
/**
* 获取球机前端录像//图片
*/
function getBallVideoWeb() {
let dom = $('#videoTime');
let startTime = isEmpty(dom.val().split('~')[0]) ? "" : dom.val().split('~')[0];
let endTime = isEmpty(dom.val().split('~')[1]) ? "" : dom.val().split('~')[1];
let params = {
puIdList: JSON.stringify(arr),
type: dataType === 'img' ? "1" : "0",
startTime: startTime,
endTime: endTime
}
let loadingMsg = layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
Ajax().post({
url: dataUrl + 'proteam/pot/video/getBallVideoWeb',
headers: {
"encrypt": sm3(JSON.stringify(params))
},
data: params,
async: true,
success: function (data) {
console.log(data);
if (dataType === 'video') {
initVideoTable(data.data);
}
if (dataType === 'img') {
initImageTable(data.data);
}
layer.close(loadingMsg); // 关闭提示层
console.log(data);
},
error: function () {
layer.close(loadingMsg); // 关闭提示层
}
});
}
/**
* 获取球机前端录像//图片
*/
function getBallImageWeb() {
let dom = $('#imgTime');
let startTime = isEmpty(dom.val().split('~')[0]) ? "" : dom.val().split('~')[0];
let endTime = isEmpty(dom.val().split('~')[1]) ? "" : dom.val().split('~')[1];
let params = {
puIdList: JSON.stringify(arr),
type: dataType === 'img' ? "1" : "0",
startTime: startTime,
endTime: endTime
}
let loadingMsg = layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
Ajax().post({
url: dataUrl + 'proteam/pot/video/getBallVideoWeb',
headers: {
"encrypt": sm3(JSON.stringify(params))
},
data: params,
async: true,
success: function (data) {
console.log(data);
if (dataType === 'video') {
initVideoTable(data.data);
}
if (dataType === 'img') {
initImageTable(data.data);
}
layer.close(loadingMsg); // 关闭提示层
console.log(data);
},
error: function () {
layer.close(loadingMsg); // 关闭提示层
}
});
}
/**
* 获取球机平台录像//图片
*/
function getBallVideo() {
let dom = $('#videoTime');
let startTime = isEmpty(dom.val().split('~')[0]) ? "" : dom.val().split('~')[0];
let endTime = isEmpty(dom.val().split('~')[1]) ? "" : dom.val().split('~')[1];
let params = {
puIdList: JSON.stringify(arr),
type: dataType === 'img' ? "1" : "0",
startTime: startTime,
endTime: endTime.trim()
}
let loadingMsg = layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
Ajax().post({
url: dataUrl + 'proteam/pot/video/getBallVideo',
headers: {
"encrypt": sm3(JSON.stringify(params))
},
data: params,
async: true,
success: function (data) {
console.log(data);
if (dataType === 'video') {
initVideoTable(data.data);
}
if (dataType === 'img') {
initImageTable(data.data);
}
layer.close(loadingMsg); // 关闭提示层
console.log(data);
},
error: function () {
layer.close(loadingMsg); // 关闭提示层
}
});
}
/**
* 获取球机平台录像//图片
*/
function getBallImage() {
let dom = $('#imgTime');
let startTime = isEmpty(dom.val().split('~')[0]) ? "" : dom.val().split('~')[0];
let endTime = isEmpty(dom.val().split('~')[1]) ? "" : dom.val().split('~')[1];
let params = {
puIdList: JSON.stringify(arr),
type: dataType === 'img' ? "1" : "0",
startTime: startTime,
endTime: endTime.trim()
}
let loadingMsg = layer.msg('数据加载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
Ajax().post({
url: dataUrl + 'proteam/pot/video/getBallVideo',
headers: {
"encrypt": sm3(JSON.stringify(params))
},
data: params,
async: true,
success: function (data) {
console.log(data);
if (dataType === 'video') {
initVideoTable(data.data);
}
if (dataType === 'img') {
initImageTable(data.data);
}
layer.close(loadingMsg); // 关闭提示层
console.log(data);
},
error: function () {
layer.close(loadingMsg); // 关闭提示层
}
});
}
function initImageTable(videoTableData) {
imageTable.render({
elem: "#imageTable",
id: "imageTable",
height: "full-80",
data: videoTableData,
page: true, //开启分页
limit: 10, //默认十条数据一页
limits: [10, 20, 30], //数据分页条
loading: false,
cols: [
[//表头
{
type: 'checkbox'
},
{
field: "number",
type: "numbers",
title: "序号",
minWidth: 200,
unresize: true,
align: "center",
},
{
field: "name",
title: "文件名称",
unresize: true,
sort: true,
minWidth: 200,
align: "center"
},
{
field: "size",
title: "文件大小",
unresize: true,
sort: true,
minWidth: 200,
align: "center",
templet: function (d) {
return "" + (d.size / 1024 / 1024).toFixed(2) + "Mb";
}
},
{
field: "begin",
title: "抓拍时间",
unresize: true,
sort: true,
minWidth: 200,
align: "center",
templet: function (d) {
return "" + timestamp(d.begin) + "";
}
},
{
fixed: 'right',
title: "操作",
align: 'center',
minWidth: 200,
toolbar: '#barDemo'
}
],
],
done: function (res, curr, count) {
$(".layui-laypage-skip").css("display", "none");
}
});
}
/**
* 视频列表
*/
function initVideoTable(videoTableData) {
videoTable.render({
elem: "#videoTable",
id: "videoTable",
height: "full-80",
data: videoTableData,
page: true, //开启分页
limit: 10, //默认十条数据一页
limits: [10, 20, 30], //数据分页条
loading: false,
cols: [
[//表头
{
type: 'checkbox'
},
{
field: "number",
type: "numbers",
title: "序号",
minWidth: 200,
unresize: true,
align: "center",
},
{
field: "name",
title: "文件名称",
unresize: true,
sort: true,
minWidth: 200,
align: "center"
},
{
field: "size",
title: "文件大小",
unresize: true,
sort: true,
minWidth: 200,
align: "center",
templet: function (d) {
return "" + (d.size / 1024 / 1024).toFixed(2) + "Mb";
}
},
{
field: "begin",
title: "录像时间",
unresize: true,
sort: true,
minWidth: 200,
align: "center",
templet: function (d) {
return "" + timestamp(d.begin) + "~" + timestamp(d.end) + "";
}
},
{
fixed: 'right',
title: "操作",
align: 'center',
minWidth: 200,
toolbar: '#barDemo'
}
],
],
done: function (res, curr, count) {
$(".layui-laypage-skip").css("display", "none");
}
});
}
function initRecordTable(recordTableData) {
recordTable.render({
elem: "#recordTable",
id: "recordTable",
height: "full-80",
data: recordTableData,
page: true, //开启分页
limit: 10, //默认十条数据一页
limits: [10, 20, 30], //数据分页条
cols: [
[//表头
{
type: 'checkbox'
},
{
field: "number",
type: "numbers",
title: "序号",
minWidth: 200,
unresize: true,
align: "center",
},
{
field: "name",
title: "所在工程",
unresize: true,
sort: true,
minWidth: 100,
align: "center"
},
{
field: "puid",
title: "PUID",
unresize: true,
sort: true,
minWidth: 100,
align: "center"
},
{
field: "onLineTime",
title: "时间",
unresize: true,
sort: true,
minWidth: 100,
align: "center"
},
{
field: "type",
title: "类型",
unresize: true,
sort: true,
minWidth: 100,
align: "center"
}
],
],
done: function (res, curr, count) {
$(".layui-laypage-skip").css("display", "none");
}
});
}
/**
* 地市树
* @param keyWord
*/
function initTreeCity(keyWord) {
arr = [];
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: $('#keyWord').val()
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListCity',
data: {
keyWord: $('#keyWord').val()
},
success: function (data) {
console.log(data);
calleArr(data.data);
let treeData = [{
id: "top",
title: '球机 (在线:' + num + ' ' + " 不在线:" + '' + noNum + ' ' + " 总数:" + all + ')',
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
console.log(treeData);
dtree.reload(tree, {
data: treeData
});
}
});
}
/**
* 风险等级树
* @param keyWord
*/
function initTreeRisk(keyWord) {
arr = [];
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: '球机 (在线:' + '' + num + ' ' + " 不在线:" + '' + noNum + ' ' + " 总数:" + all + ')',
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData
});
}
});
}
// 固定球机树
function initTreeRegular() {
arr = [];
Ajax().post({
headers: {
"encrypt": sm3(JSON.stringify({
keyWord: $('#keyWord').val()
}))
},
url: dataUrl + 'proteam/pot/video/getMenuListRegular',
data: {
keyWord: $('#keyWord').val()
},
success: function (data) {
calleArr(data.data);
let treeData = [{
id: "top",
title: '球机 (在线:' + '' + num + ' ' + " 不在线:" + '' + noNum + ' ' + " 总数:" + all + ')',
parentId: "-1",
children: data.data,
iconClass: 'iconfont icon-shexiangtou',
spread: true,
}];
dtree.reload(tree, {
data: treeData
});
}
});
}
/**
* 遍历树数据
* @param treeData
*/
function calleArr(treeData) {
num = 0;
noNum = 0;
all = 0;
for (let i in treeData) {
let obj = treeData[i];
obj.iconClass = 'iconfont icon-dingwei';
if (obj.children) {
for (let i in obj.children) {
obj.children[i].checkArr = "0";
obj.children[i].iconClass = "none";
if (!isEmpty(obj.children[i].puid)) {
//判断球机图标
if (!isEmpty(obj.children[i].state) && obj.children[i].state === '1') {
//在线图标
num++;
} else {
//不在线图标
noNum++;
}
//人员图标
if (obj.children[i].children) {
for (let a in obj.children[i].children) {
obj.children[a].children[a].iconClass = 'iconfont icon-renyuan';
}
}
all++;
}
}
}
}
}
/**
* 改变底部按钮样式
*/
function changBtn(dom, parentDom, css) {
let button = $(dom);
if (!button.hasClass(css)) {
$.each(parentDom.children(), function (index, item) {
$(item).removeClass(css);
});
}
button.addClass(css);
}
/**
* 改变右侧显示
*/
function changContentRight(dom) {
let content = $('.' + dom);
if (!content.hasClass('list-show')) {
$.each($('.list'), function (index, item) {
$(item).removeClass('list-show');
});
}
content.addClass('list-show');
}
function inputTime() {
$.each($('.time'), function (index, item) {
$(item).attr('value', getNowDate() + " ~ " + getNowDate());
});
}
function getNowDate() {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
function timestamp(time) {
let date = new Date(time * 1000);
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds()
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
if (hours < 10) {
hours = "0" + hours;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds
}
function GetDateDiff(startTime, endTime, diffType) {
//将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
startTime = startTime.replace(/\-/g, "/");
endTime = endTime.replace(/\-/g, "/");
//将计算间隔类性字符转换为小写
diffType = diffType.toLowerCase();
let sTime = new Date(startTime); //开始时间
let eTime = new Date(endTime); //结束时间
//作为除数的数字
let timeType = 1;
switch (diffType) {
case"second":
timeType = 1000;
break;
case"minute":
timeType = 1000 * 60;
break;
case"hour":
timeType = 1000 * 3600;
break;
case"day":
timeType = 1000 * 3600 * 24;
break;
default:
break;
}
return parseInt((eTime.getTime() - sTime.getTime()) / parseInt(timeType));
}
/**
* 跳转点播页面
* @param teamId 班组id
*/
function toPage(item) {
let width = '65%', height = '90%';
layer.open({
title: ['视频点播', 'font-size:18px;'],
type: 2,
skin: 'shadows',
content: '../../html/video/flvStart.html',
area: [width, height],
maxmin: false,
success: function (layero, index) {
let body = layer.getChildFrame('body', index);
let iframeWin = window[layero.find('iframe')[0]['name']];//获得iframe页的窗口对象,执行iframe页的方法:
iframeWin.setForm(item);//调用子页面的方法,页面锁定
}
});
}