/************ 常量配置项*****************/ 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 + '
姓名:' + 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(); }