Examination_system/Examination_system-1/.svn/pristine/82/82077fbd5937824617bd04ac9a7...

456 lines
16 KiB
Plaintext
Raw Normal View History

2023-10-30 13:10:40 +08:00
var token = null;
var device_list = [];
var flvPlayer = "";
var myPlayer = "";
var pictureId = "";
var storageId = "";
var deviceinfo = {
puid: "",
idx: "",
path: "",
id: ""
};
var i = 0;
var host = _cf.q2http_url;
//post请求
function requestPost(router, params, callback) {
var self = this;
$.ajax({
type: 'post',
url: host + router,
data: params,
traditional: true,
dataType: 'json',
async: true,
complete: function (rv) {
if (typeof callback == 'function') callback(rv)
}
})
}
//get请求
function requestGet(router, callback) {
var self = this;
var url = host + router;
$.ajax({
type: 'get',
url: url,
dataType: 'json',
async: true,
complete: function (rv) {
if (typeof callback == 'function') callback(rv)
}
})
}
//创建平台连接
function connect() {
var self = this;
var params = {
"address": _cf.connParams.address,
"port": _cf.connParams.port,
"user": _cf.connParams.user,
"password": _cf.connParams.password,
"epid": _cf.connParams.epid,
"fixaddr": _cf.connParams.bfix
}
requestPost('login', params, function (rv) {
let self = this;
var result = {
errcode: -1,
token: ''
}
var respJSON = rv.responseJSON;
if (respJSON.hasOwnProperty('errcode')) {
result.errcode = respJSON.errcode;
}
if (respJSON.hasOwnProperty('token')) {
result.token = respJSON.token;
result.errcode = 0;
token = result.token;
fetch_device(0, 200);
device_resource_tree();
}
})
}
//获取设备列表
function fetch_device(offset, count) {
var self = this;
//获取设备列表的接口
var router = 'CAS/C_CAS_QueryPUIDSets?offset=' + offset + '&count=' + count + '&token=' + token;
requestGet(router, rv => {
var respJSON = rv.responseJSON;
if (respJSON.constructor != Array) {
respJSON = [respJSON];
}
device_list = respJSON;
//把设备加载到指定的位置
render_device_nodes(device_list);
if (device_list.length == count) {
offset += count;
fetch_device(offset, count);
} else {
return;
}
})
}
function render_device_nodes(device_list) {
let data = new Array();
for (var i = 0; i < device_list.length; i++) {
var list = device_list[i];
var icon = "icon-device-offline";
if (list.OnlineFlag == 1) {
icon = "icon-device-online";
}
data.push({
id: list.$,
text: list.Name,
iconCls: icon,
attributes: {
list: list
},
state: "closed",
children: [{
text: '正在查询资源……'
}]
});
data.sort((a, b) => {
return b.attributes.list.OnlineFlag - a.attributes.list.OnlineFlag;
});
}
$('#resource_tree').tree('append', {
data: data
});
}
function device_resource_tree() {
$('#resource_tree').tree({
data: [],
onBeforeLoad: function () {},
onDblClick: function (node) {
QueryRecordFiles(node);
},
onExpand: function (node) {
console.log(node)
var childs = $(this).tree('getChildren', node.target);
console.log(childs)
if (childs.length == 1) {
if (node.children[0].text == "正在查询资源……") {
var newList = node.attributes.list;
var params = {
puid: [newList.$]
};
requestPost('C_CAS_QueryPUIDRes?token=' + token, params, rv => {
var respJSON = rv.responseJSON;
var res = respJSON.Res;
var videoList = [];
console.log(res)
var childNodes = new Array();
for (let j = 0; j < res.length; j++) {
var resource = res[j];
if (resource.Type != "IV") {
continue;
} else {
videoList = resource;
var iconsuffix = "offline";
var icon = "icon-camera-" + iconsuffix;
if (newList.OnlineFlag == 1) {
iconsuffix = "online";
icon = "icon-camera-" + iconsuffix;
}
}
childNodes.push({ id: newList.$ + "_" + videoList.Idx, text: videoList.Name, iconCls: icon, attributes: { newList: newList, self: videoList } });
}
if (childNodes.length > 0) {
//删除load节点
for (var i = 0; i < childs.length; i++) {
$('#resource_tree').tree('remove', childs[i].target);
}
$('#resource_tree').tree('append', { parent: node.target, data: childNodes });
}
})
}
}
}
})
}
//获取一定时间段的前端录像或云录像
function QueryRecordFiles(node) {
if (node && node.attributes && node.attributes.self) {
var puid = node.attributes.newList.$;
var idx = node.attributes.self.Idx;
var offset = 0;
var count = 200;
var beginTime = "";
var endTime = "";
beginTime = $('#vod_record_begintime').datetimespinner('getValue');
endTime = $('#vod_record_endtime').datetimespinner('getValue');
beginTime = parseInt(DTStrToTimestamp(beginTime).getTime() / 1000);
endTime = parseInt(DTStrToTimestamp(endTime) / 1000);
//获取录像文件
queryRecordFiles(idx, puid, beginTime, endTime, offset, count);
}
}
//获取录像文件
function queryRecordFiles(idx, puid, beginTime, endTime, offset, count) {
//判断选中的是前端存储还是云存储
if ($("#showtype").is(":checked")) {
//获取前端录像文件
var files = new Array();
var router = 'SG/C_SG_QueryRecordFiles?token=' + token + '&idx=' + idx + '&puid=' + puid + '&begin=' + beginTime + '&end=' + endTime + '&offset=' + offset + '&count=' + count;
requestGet(router, rv => {
var result = new Array();
var respJSON = rv.responseJSON;
if (respJSON.constructor != Array) {
result = [respJSON];
} else {
result = respJSON;
}
for (let i = 0; i < result.length; i++) {
var f = result[i];
files.push({ type: 'local', offset: 0, name: f.Name, size: f.Size, beginTime: f.Begin, endTime: f.End, path: f.Path, puid: puid, idx: idx })
}
$('#video_file').datagrid("loadData", files);
})
} else {
if ($("#manualvideo").is(":checked")) {
var type = 0; //云录像
var videofiles = new Array();
var router = 'CSS/C_CSS_QueryStorageFiles?token=' + token + '&idx=' + idx + '&puid=' + puid + '&type=' + type + '&begin=' + beginTime + '&end=' + endTime + '&offset=' + offset + '&count=' + count;
requestGet(router, rv => {
var result = new Array();
var respJSON = rv.responseJSON;
if (respJSON.constructor != Array) {
result = [respJSON];
} else {
result = respJSON;
}
console.log(result[0])
console.log(result[0].File)
for (let i = 0; i < result[0].File.length; i++) {
var f = result[0].File[i];
//f.File;
videofiles.push({ type: 'cloud', offset: 0, name: f.Name, size: f.Size, beginTime: f.Begin, endTime: f.End, path: f.Path, id: f.ID, puid: f.PUID, idx: idx });
}
$('#video_file').datagrid("loadData", videofiles);
})
} else if ($("#manualpicture").is(":checked")) {
var type = 1; //云抓拍
var videofiles = new Array();
var router = 'CSS/C_CSS_QueryStorageFiles?token=' + token + '&idx=' + idx + '&puid=' + puid + '&type=' + type + '&begin=' + beginTime + '&end=' + endTime + '&offset=' + offset + '&count=' + count;
requestGet(router, rv => {
var result = new Array();
var respJSON = rv.responseJSON;
if (respJSON.constructor != Array) {
result = [respJSON];
} else {
result = respJSON;
}
for (let i = 0; i < result.File.length; i++) {
var f = result[i];
f.File;
videofiles.push({ type: 'cloud', offset: 0, name: f.Name, size: f.Size, beginTime: f.Begin, endTime: f.End, path: f.Path, id: f.ID, puid: f.PUID, idx: idx });
}
$('#video_file').datagrid("loadData", videofiles);
})
}
}
}
function record_file_sizemap(v, r, i) {
if (v < 1024) {
return v + "(B)";
} else if (v < (1024 * 1024)) {
return (parseInt(v) / 1024).toFixed(2) + "(KB)";
} else {
return (parseInt(v) / (1024 * 1024)).toFixed(2) + "(MB)";
}
}
function video_file_vodplay(v, r, i) {
var op = "";
op += "<a class='easyui-linkbutton' onclick='playVideo(" + i + ")' >点播</a>";
return op;
}
async function playVideo(i) {
var rows = $("#video_file").datagrid("getRows");
if (rows[i] != "") {
$("#dialog").show();
var node = rows[i];
var puid = node.puid;
var idx = 0;
var path = "";
var path = node.path;
var name = node.name;
path = path + name;
var durationSecond = node.endTime - node.beginTime;
var startTime = node.offset;
var id = node.id; //云存储
deviceinfo.puid = puid;
deviceinfo.idx = idx;
deviceinfo.path = path;
deviceinfo.id = id;
if (!id) {
//前端录像播放接口
let url = host + 'SG/VODFile.flv?puid=' + puid + '&idx=' + idx + '&path=' + path + '&startTime=' + startTime + '&durationSecond=' + durationSecond + '&stream=0&token=' + token;
console.log(url)
playPlayer(url);
} else if (id) {
//云录像、云抓拍播放接口
let url = host + 'CSS/VODFile.flv?puid=' + puid + '&idx=' + idx + '&id=' + id + '&path=' + path + '&start=' + startTime + '&stream=0&token=' + token;
playPlayer(url);
}
}
}
//点播视频
function playPlayer(url) {
let self = this;
if (flvjs.isSupported()) {
// if (flvPlayer != "") {
// flvPlayer.unload();
// flvPlayer.detachMediaElement();
// flvPlayer.destroy();
// flvPlayer = ""
// }
setTimeout(() => {
var videoElement = "";
videoElement = document.getElementById('my-video');
//
// if (i == 0) {
// videoElement = document.getElementById('my-video');
// i += 1;
// } else {
// videoElement = document.getElementById('my-video2');
// i = 0;
// }
videoElement.controls = false;
flvPlayer = flvjs.createPlayer({
type: 'flv',
url: url,
isLive: true,
hasAudio: false
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}, 10)
} else {
createPlayer();
myPlayer.src(url);
myPlayer.on("error", e => {
setTimeout(e => {
myPlayer.src(url);
myPlayer.load(url);
myPlayer.play();
}, 100);
});
myPlayer.on("ended", e => {
setTimeout((e) => {
myPlayer.src(url);
myPlayer.load(url);
myPlayer.play();
}, 100);
});
}
}
function createPlayer() {
myPlayer = new videojs('my-video', {
"techOrder": ["html5", "flash"],
preload: 'auto',
posterImage: false,
controls: true,
autoplay: true,
bigPlayButton: false,
videoWidth: 704,
videoHeight: 598,
controlBar: {
playToggle: false,
volumePanel: {
inline: false
},
remainingTimeDisplay: false,
progressControl: false,
LiveDisplay: true
}
});
}
//双击视频可以全屏播放
function videofullscreen(box) {
let self = this;
var p = '#' + box.id;
$(p).fullScreen(true);
// $(p).toggleFullScreen();
$(p).fullScreen(false);
}
/* 标准的时间字符串转为时间戳 */
function DTStrToTimestamp(dateStr) {
var d = new Date();
var patn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
if (patn.test(dateStr) || patn1.test(dateStr)) {
return new Date(dateStr.substr(0, 4), (parseInt(dateStr.substr(5, 2), 10) - 1), dateStr.substr(8,
2), dateStr.substr(11, 2), dateStr.substr(14, 2), dateStr.substr(17, 2));
} else {
return d;
}
}
//双击视频可以全屏播放
$("#windowbox").on("dblclick", function () {
alert("sssdd")
$("#windowbox").fullScreen(true);
$("#windowbox").toggleFullScreen();
})
//开始前端抓拍
// async function StartSnapshot() {
// var puid = deviceinfo.puid;
// var idx = deviceinfo.idx;
// await requestGet('SG/C_SG_StartSnapshot?token=' + token +'&idx='+ idx +'&puid=' + puid,rv =>{
// })
// }
//下载前端抓拍文件
// async function DownLoadFile() {
// var puid = deviceinfo.puid;
// var path = deviceinfo.path;
// await requestGet('SG/C_SG_DownLoadFile_PushMode?token=' + token +'&path='+ path +'&puid=' + puid,rv =>{
// })
// }
//下载云平台图片文件
// function DownLoadFile(){
// var path = deviceinfo.path;
// var id = deviceinfo.id;
// var router = 'CSS/C_CSS_DownloadFile?id=' + id + '&path=' + path + '&token=' + token;
// requestGet(router, rv => {
// })
// }
//关闭视频框
function closedialog() {
if (flvjs.isSupported()) {
if (flvPlayer != "") {
flvPlayer.unload();
flvPlayer.detachMediaElement();
flvPlayer.destroy();
flvPlayer = ""
}
}
$('#dialog').hide();
}