You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

270 lines
7.1 KiB

/************ 常量配置项*****************/
var MAXMEMBERS = 6; // 对讲组成员上限, 最多支持12个
var PTTLINE = MAXMEMBERS; // 对讲组线路
var DEVMODE = true; //调试模式
/************ 全局变量 *****************/
var currentGroupG = {}; // 当前对讲组对象
var isLoginG = false; // 是否登录
// 初始化线路状态
if (MAXMEMBERS > 12) {
alert('对讲组成员上限最多支持12个');
}
var lineArr = [];
for (var i = 0; i < MAXMEMBERS; i++) {
lineArr[i] = {policeid: '', policename: ''};
}
/**
* 给警员分配线路号
* @returns {Number}, 线路号,失败返回-1
*/
function assignPoliceLine(policeid) {
//如果当前警员正在占用一条线路,返回该线路
var linenum = getPoliceLineNum(policeid);
if (linenum != -1) {
return linenum;
}
//否则返回一条空线路
for (var i = 0; i < MAXMEMBERS; i++) {
var a = IPDispatcherCtrl.GetLineState(i);
if (a == 0 && lineArr[i].policeid == '') {
return i;
}
}
return -1;
}
/**获取警员占用的线路号,没有返回-1*/
function getPoliceLineNum(policeid) {
for (var i = 0; i < MAXMEMBERS; i++) {
if (lineArr[i].policeid == policeid) {
return i;
}
}
return -1;
}
function isOpen() {
return true;
}
/**
* 获取url参数
*/
function GetUrlParam(paraName) {
var url = window.document.location.href.toString();
var arrObj = url.split("?");
if (arrObj.length > 1) {
var arrPara = arrObj[1].split("&");
var arr;
for (var i = 0; i < arrPara.length; i++) {
arr = arrPara[i].split("=");
if (arr != null && arr[0] == paraName) {
return arr[1];
}
}
return "";
} else {
return "";
}
}
/**
* 页面初始化方法
*/
function initMDSParam() {
closeIPDispatcher();
initVideoCtrl();
}
/**
* 初始化调度台
*/
function initVideoCtrl() {
// for test start
try {
IPDispatcherCtrl.strName = '1005';
IPDispatcherCtrl.strPassword = '1005';
IPDispatcherCtrl.strServer = '119.167.113.90';
IPDispatcherCtrl.strLocal = '10.16.5.22';
IPDispatcherCtrl.strLicense = '49425E54DE5743AEA6750B28E7A70202';
var bresult = IPDispatcherCtrl.IsInitialize();
IPDispatcherCtrl.Initialize();
bresult = IPDispatcherCtrl.IsInitialize();
if (bresult == 0) {
alert("调度台没有初始化!");
return;
}
IPDispatcherCtrl.Logout();
var ret = IPDispatcherCtrl.Login(10);
}
catch (e) {
alert('服务异常!');
}
// for test end
// var url = "/HiatmpPro/scs/mds/initMdsConf";
// $.ajax({
// url: url,
// type: 'get',
// dataType: 'json',
// cache: false,
// success: function (data) {
// if (data.result == false) {
// alert("初始化调度台失败!");
// } else {
// var result = data.params;
// if (result == null || typeof (result) == "undefined") {
// alert("初始化调度台失败!");
// return;
// }
// try {
// IPDispatcherCtrl.strName = result.username;
// IPDispatcherCtrl.strPassword = result.password;
// IPDispatcherCtrl.strServer = result.serverip;
// IPDispatcherCtrl.strLocal = result.localip;
// IPDispatcherCtrl.strLicense = result.license;
// var bresult = IPDispatcherCtrl.IsInitialize();
// IPDispatcherCtrl.Initialize();
// bresult = IPDispatcherCtrl.IsInitialize();
// var timeout = 0;
// if (bresult == 0) {
// alert("调度台没有初始化!");
// return;
// }
// IPDispatcherCtrl.Logout();
// var ret = IPDispatcherCtrl.Login(10);
// }
// catch (e) {
// alert('服务异常!');
// }
// }
// }
// });
}
/**
* 注销调度台控件
*/
function closeIPDispatcher() {
var voiceCtrl = document.getElementById("IPDispatcherCtrl");
if (null == voiceCtrl || "undefined" == voiceCtrl) {
return;
}
var isInit = IPDispatcherCtrl.IsInitialize();
var isLog = IPDispatcherCtrl.IsLogin();
if (isInit == 1 && isLog == 1)//登录
{
IPDispatcherCtrl.Logout();
}
IPDispatcherCtrl.OnCloseIPDispatcher();
IPDispatcherCtrl.DestroyInstance();
var isInit = IPDispatcherCtrl.IsInitialize();
if (isInit == 1) {
IPDispatcherCtrl.OnCloseIPDispatcher();
setCtrlUnUsed();
}
}
/**解散对讲组*/
function destoryCustomPttGroup() {
IPDispatcherCtrl.DestoryCustomPttGroup(currentGroupG.GroupNum, currentGroupG.GroupCreatorName);
}
/**创建对讲组*/
function createCustomPttGroup() {
IPDispatcherCtrl.SetPhoneCurrentLine(PTTLINE);
var carno = GetUrlParam('carno');
var policename = decodeURIComponent(GetUrlParam('policename'));
var groupname = carno ? carno + '布控' : '缉查布控' + new Date().getTime();
var policeid = GetUrlParam('policeid');
var bstrMembersList = '1:' + IPDispatcherCtrl.strName + ',';
// if (policeid) {
// bstrMembersList += policeid + ',';
// }
IPDispatcherCtrl.CreateCustomPttGroup(groupname, '20,120,120,2,5,1800,', bstrMembersList);
if (policeid) {
setTimeout(function () {
addMember(policeid, policename);
}, 1000);
}
}
function pttSwitch() {
var current = $('#pttbtn').html();
if (current == '释放话权') {
pttFree();
$('#pttbtn').html('请求话权');
} else {
pttSnatch();
$('#pttbtn').html('释放话权');
}
}
/**
* 对讲抢话
*/
function pttSnatch() {
IPDispatcherCtrl.PttSnatch(PTTLINE);
}
/**释放话权*/
function pttFree() {
IPDispatcherCtrl.PttFree(PTTLINE);
}
/**添加对讲组成员*/
function addMember(policeid, policename) {
IPDispatcherCtrl.AddCustomPttGroupMember(currentGroupG.GroupNum, currentGroupG.GroupName, '1:' + policeid + ',');
setTimeout(function () {
var linenum = videoMonitor(policeid, policename);
if (linenum != -1) {
lineArr[linenum].policeid = policeid;
lineArr[linenum].policename = policename;
$('#card' + linenum + ' > .cardText').html('警号:' + policeid + '<br/> 姓名:' + policename);
$('#card' + linenum + ' > .cardVideo').css('display', 'block');
}
}, 1500);
}
/**删除对讲组成员*/
function delMember(policeid) {
IPDispatcherCtrl.DelCustomPttGroupMember(currentGroupG.GroupNum, currentGroupG.GroupName, '1:' + policeid + ',');
var linenum = getPoliceLineNum(policeid);
if (linenum != -1) {
lineArr[linenum].policeid = '';
lineArr[linenum].policename = '';
$('#card' + linenum + ' > .cardText').html('');
$('#card' + linenum + ' > .cardVideo').css('display', 'none');
}
videoHangup(policeid);
}
/**视频监控*/
function videoMonitor(policeid, policename) {
var linenum = assignPoliceLine(policeid, policename);
if (linenum == -1) {
alert('没有空余线路!');
} else {
IPDispatcherCtrl.VideoMonitor(linenum, policeid);
}
return linenum;
}
/**视频挂断*/
function videoHangup(policeid) {
var linenum = getPoliceLineNum(policeid);
if (linenum != -1) {
IPDispatcherCtrl.HangupCall(linenum);
}
}
/**注销*/
window.onbeforeunload = function () {
destoryCustomPttGroup();
IPDispatcherCtrl.OnCloseIPDispatcher();
}