216 lines
9.5 KiB
Plaintext
216 lines
9.5 KiB
Plaintext
<%@ page language="java" pageEncoding="UTF-8"%>
|
||
<%@page import="com.sipai.entity.timeefficiency.PatrolRecord"%>
|
||
<%@page import="com.sipai.entity.timeefficiency.TimeEfficiencyCommStr"%>
|
||
<% request.setAttribute("Status_Issue", com.sipai.entity.timeefficiency.PatrolRecord.Status_Issue); %>
|
||
<% request.setAttribute("Status_Start", com.sipai.entity.timeefficiency.PatrolRecord.Status_Start); %>
|
||
<% request.setAttribute("Status_Finish", com.sipai.entity.timeefficiency.PatrolRecord.Status_Finish); %>
|
||
<% request.setAttribute("Status_PartFinish", com.sipai.entity.timeefficiency.PatrolRecord.Status_PartFinish); %>
|
||
<% request.setAttribute("Status_Undo", com.sipai.entity.timeefficiency.PatrolRecord.Status_Undo); %>
|
||
|
||
<script type="text/javascript">
|
||
var nowid = '';
|
||
$(function() {
|
||
$("#cameras").bootstrapTable({ // 对应table标签的id
|
||
url: ext.contextPath + '/timeEfficiency/patrolRecord/getCameras.do', // 获取表格数据的url
|
||
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
|
||
striped: true, //表格显示条纹,默认为false
|
||
pagination: false, // 在表格底部显示分页组件,默认false
|
||
pageList: [10, 20,50], // 设置页面可以显示的数据条数
|
||
pageSize: 50, // 页面数据条数
|
||
pageNumber: 1, // 首页页码
|
||
sidePagination: 'client', // 设置为服务器端分页
|
||
queryParams: function (params) { // 请求服务器数据时发送的参数,可以在这里添加额外的查询参数,返回false则终止请求
|
||
return {
|
||
rows: params.limit, // 每页要显示的数据条数
|
||
page: params.offset/params.limit+1, // 每页显示数据的开始页码
|
||
sort: params.sort, // 要排序的字段
|
||
order: params.order,
|
||
patrolRecordId: '${patrolRecordId}'
|
||
}
|
||
},
|
||
responseHandler: function(res){
|
||
return res.result
|
||
},
|
||
sortName: 'id', // 要排序的字段
|
||
sortOrder: 'desc', // 排序规则
|
||
columns: [
|
||
{
|
||
field: 'name', // 返回json数据中的name
|
||
title: '摄像机名称', // 表格表头显示文字
|
||
align: 'center', // 左右居中
|
||
valign: 'middle',
|
||
width: '15%',
|
||
formatter: function (value, row, index) {
|
||
return row.camera.name;
|
||
}
|
||
},
|
||
{
|
||
field: 'status', // 返回json数据中的name
|
||
title: '状态', // 表格表头显示文字
|
||
align: 'center', // 左右居中
|
||
valign: 'middle',
|
||
width: '10%',
|
||
formatter: function (value, row, index) {
|
||
var str = "";
|
||
if("${Status_Issue}"==value){
|
||
//str = '<span style="color:#c12e2a;"><i class="fa fa-times-circle-o" aria-hidden="true"></i> 已下发</span>';
|
||
str = '<span style="color:#c12e2a;"><i class="fa fa-close" aria-hidden="true"></i>未打卡</span>';
|
||
}
|
||
if("${Status_Finish}"==value){
|
||
//str = '<span style="color:#3e8f3e"><i class="fa fa-check-circle-o" aria-hidden="true"></i> 已完成</span>';
|
||
str = '<span style="color:#3e8f3e"><i class="fa fa-check" aria-hidden="true"></i>已打卡</span>';
|
||
}
|
||
return str;
|
||
}
|
||
}
|
||
],
|
||
onLoadSuccess: function(){ //加载成功时执行
|
||
adjustBootstrapTableView("table_patrolPoint");
|
||
},
|
||
onLoadError: function(){ //加载失败时执行
|
||
console.info("加载数据失败");
|
||
},
|
||
onDblClickRow: function(row){
|
||
$.post(ext.contextPath + '/work/camera/closeRPCWebSocket.do',{id:nowid,time:'now',uuid:'${uuid}'},function(){
|
||
})
|
||
showVideo(row.camera.id,row.id);
|
||
}
|
||
});
|
||
var cameraid = '${patrolPointId}';
|
||
var paid = '${cid}';
|
||
console.log('cameraid:'+cameraid);
|
||
console.log('paid:'+paid);
|
||
showVideo(cameraid,paid);
|
||
// showVideo('${id}','${patrolPointId}');
|
||
nowid = '${patrolPointId}';
|
||
//getCamerasByProcessSectionId('${patrolRecordId}');
|
||
//getCamerasByProcessSectionId('d9016deabd2749be8b381159f29fc0dc');
|
||
});
|
||
|
||
function getCamerasByProcessSectionId(patrolRecordId) {
|
||
$.post(ext.contextPath +"/timeEfficiency/patrolRecord/getCamerasByPatrolRecordId.do", {patrolRecordId: patrolRecordId}, function(data) {
|
||
/*alert('摄像头数据:' + data);*/
|
||
var res = JSON.parse(data);
|
||
for(var i = 0, len = res.length; i < len; i++) {
|
||
var videoIframe = document.createElement('iframe');
|
||
videoIframe.id = 'videoIframe-' + res[i].id;
|
||
videoIframe.style.cssText = 'width:510px;height:320px;border:0;margin:2px;top:0;z-index:9999;float:left;';
|
||
switch(res[i].type){
|
||
case 'dahua':
|
||
videoIframe.src = ext.contextPath +"/work/camera/cameraview_dahua_new.do?id=" + res[i].id;
|
||
break;
|
||
default:
|
||
videoIframe.src = ext.contextPath +"/work/camera/cameraview_new.do?id=" + res[i].id;
|
||
}
|
||
|
||
document.querySelector('#camerasFrame').appendChild(videoIframe);
|
||
}
|
||
});
|
||
}
|
||
var websocket = null;
|
||
function showVideo(cameraid,pid){
|
||
if(websocket != null){
|
||
websocket.close();
|
||
$.post(ext.contextPath + '/work/camera/closeRPCWebSocket.do',{id:nowid,time:'now',uuid:'${uuid}'},function(data){
|
||
});
|
||
}
|
||
nowid = cameraid;
|
||
//var websocket = null;
|
||
var restartDialog;
|
||
//判断当前浏览器是否支持WebSocket
|
||
if ('WebSocket' in window) {
|
||
var time = '${time}';
|
||
if(time==null || time==''){
|
||
time="now";
|
||
}
|
||
$.post(ext.contextPath + '/work/camera/getCameraById.do',{id:cameraid},function(data){
|
||
var camera = JSON.parse(data);
|
||
websocket = new WebSocket("${ws}/videoWebSocket/"+camera.type+"/"+camera.url+"/"+camera.username+"/"+camera.password+"/"+camera.channel+"/"+time+"/${uuid}");
|
||
websocket.onerror = function () {
|
||
};
|
||
|
||
//连接成功建立的回调方法
|
||
websocket.onopen = function () {
|
||
console.info('消息滚动websocker开启');
|
||
}
|
||
//接收到消息的回调方法
|
||
websocket.onmessage = function (event) {
|
||
var result= JSON.parse(event.data);
|
||
$("#show_video").attr("src", "data:image/*;base64," + result.data);
|
||
}
|
||
websocket.onclose = function () {
|
||
closeWebSocket();
|
||
}
|
||
})
|
||
//websocket = new WebSocket(ext.basePath.replace("http","ws")+"/videoWebSocket/${id}/"+time+"/${uuid}");
|
||
}
|
||
else {
|
||
alert('当前浏览器 Not support websocket')
|
||
}
|
||
setTimeout(function(){
|
||
var k = 0;
|
||
var interval = setInterval(function(){
|
||
if(k<11){
|
||
$('#time').html('倒计时:'+(10-k)+'s后完成该摄像头视频巡检');
|
||
k++;
|
||
}else{
|
||
$('#time').html('该摄像头视频巡检完成,可切换下一个视频');
|
||
$.post(ext.contextPath+'/timeEfficiency/patrolRecord/finishCameraPatrol_New.do',{id: pid},function(data){
|
||
$("#table_patrolPoint").bootstrapTable('refresh');
|
||
$("#cameras").bootstrapTable('refresh');
|
||
});
|
||
clearInterval(interval);
|
||
}
|
||
},1000);
|
||
},10000);
|
||
}
|
||
|
||
var closecamera=function(){
|
||
if(websocket != null){
|
||
websocket.close();
|
||
$.post(ext.contextPath + '/work/camera/closeRPCWebSocket.do',{id:nowid,time:'now',uuid:'${uuid}'},function(data){
|
||
});
|
||
}
|
||
$('#camerasFrame').html('');
|
||
}
|
||
</script>
|
||
</head>
|
||
<div class="modal fade" id="subModal_contents">
|
||
<div class="modal-dialog modal-lg">
|
||
<div class="modal-content" style="width: 950px;">
|
||
<div class="modal-header">
|
||
<!-- <button type="button" class="close" data-dismiss="modal" aria-label="Close"> -->
|
||
<!-- <span aria-hidden="true">×</span></button> -->
|
||
<h4 class="modal-title"></h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="box box-primary" >
|
||
<div class="box-header with-border">
|
||
双击摄像头列表可切换摄像头<h3 class="box-title" id="time">倒计时:10s后完成该摄像头视频巡检</h3>
|
||
</div>
|
||
<!-- /.box-header -->
|
||
<div class="box-body ">
|
||
<div style="width:100%;padding:2px;background:rgba(255,255,255,0);float:left;">
|
||
<div style="width:30%;padding:2px;background:rgba(255,255,255,0);float:left;">
|
||
<table id="cameras"></table>
|
||
</div>
|
||
<div id="camerasFrame" style="width:68%;padding:2px;background:rgba(255,255,255,0);float:left;">
|
||
<img id="show_video" style="width: 100%;border:1px solid black;" src="" alt="正在加载。。。">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal" onclick="closecamera()">关闭</button>
|
||
</div>
|
||
</div>
|
||
<!-- /.modal-content -->
|
||
</div>
|
||
<!-- /.modal-dialog -->
|
||
</div>
|
||
|
||
|
||
|
||
|