地铁二期项目正式开始

callSocket.js 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. var ws,
  2. n = 0,
  3. seatComming,
  4. timer,
  5. hidTel,
  6. hidCallID,
  7. hidActionID,
  8. directType,
  9. sendType,
  10. mesCont,
  11. eorrorConnect,
  12. errorState = false,
  13. OperatorLogText,
  14. makeCallId = "",
  15. lockReconnect = false,
  16. obj = {},
  17. cls = 0,
  18. ivrState,
  19. clsCookie,
  20. LoginState,
  21. lasttime = new Date().getTime(),
  22. reconnecTion,
  23. recon,
  24. loginOr = false,
  25. GetState;
  26. //创建scoket连接
  27. function createWebSocket() {
  28. try {
  29. $("#top-search li i").removeClass("active");
  30. //Connect();
  31. } catch (e) {
  32. reconnect();
  33. }
  34. }
  35. function closeSocket(e) {
  36. if (
  37. (event.clientX > document.body.clientWidth && event.clientY < 0) ||
  38. event.altKey
  39. ) {
  40. } else {
  41. //ws.close();
  42. if (helper.cookies.get("callState") != "1") {
  43. ws.close();
  44. }
  45. //helper.cookies.set('clsCookie', 1);
  46. }
  47. }
  48. if (
  49. helper.cookies.get("callState") == "5" ||
  50. helper.cookies.get("callState") == "2"
  51. ) {
  52. Connect();
  53. }
  54. function Connect() {
  55. //+ huayi.config.socket_ip + ":" + huayi.config.socket_port 121.196.219.217:8081
  56. // ws = new WebSocket("ws://10.200.46.27:8081");
  57. ws = new WebSocket("ws://192.168.8.7:8081");
  58. //ws = new WebSocket("ws://121.196.219.217:8081");
  59. //ws = new WebSocket("ws://" + ytsoft.config.socket_ip + ":" + ytsoft.config.socket_port);
  60. ws.onopen = function () {
  61. console.log(new Date() + " " + "建立连接");
  62. helper.cookies.set("clsCookie", 1);
  63. cls = 0;
  64. var usercode = document.getElementById("txtLabourwork").value;
  65. var extnumber = document.getElementById("txtPhoneNum").value;
  66. if (
  67. helper.cookies.get("callState") == "1" ||
  68. helper.cookies.get("callState") == null
  69. ) {
  70. $(".popRemind").hide();
  71. obj = {};
  72. obj.Type = "Login";
  73. obj.AgentID = usercode;
  74. obj.AgentExten = extnumber;
  75. obj.AgentGroup = "12";
  76. obj.AgentType = "0";
  77. Send();
  78. //setTimeout("SetLogin(helper.cookies.get('callState'))", 1000);
  79. } else {
  80. setTimeout("SetLogin(helper.cookies.get('callState'))", 1000);
  81. }
  82. };
  83. //接收到消息的回调方法
  84. ws.onmessage = function (evt) {
  85. //如果获取到消息,心跳检测重置
  86. //拿到任何消息都说明当前连接是正常的
  87. //heartCheck.reset().start();
  88. heartCheck.reset().reset;
  89. var myDate = new Date();
  90. console.log(myDate + " receive " + evt.data);
  91. var data = JSON.parse(evt.data)[0];
  92. if (data) {
  93. var rlt = data.Result;
  94. if (rlt == true) {
  95. var type = data.Type;
  96. switch (type.toLowerCase()) {
  97. case "login":
  98. button_QRCall();
  99. break; //签入
  100. case "logout":
  101. LogoutBack();
  102. break; //签出
  103. case "dropcall":
  104. DropCallBack();
  105. //button_ReleaseAnswer();
  106. break; //挂断
  107. case "makecall": //MakeCall
  108. //外呼先示忙
  109. makecallBack();
  110. break; //外呼
  111. case "setstate":
  112. SetState(data);
  113. break; //置忙置闲
  114. case "meeting":
  115. //OpenWindowShow1('telmanage/calloutopt.aspx?otype=3', '多方通话', 800, 500);
  116. break; //多方通话
  117. case "transfer":
  118. transferBack();
  119. break; //转移
  120. case "hold":
  121. //button_KeepCall(); //保持方法
  122. break; //保持
  123. case "retrieve":
  124. //button_GetKeepCall();
  125. break; //接回
  126. case "incoming":
  127. Form_callCommingCaller(data);
  128. break; //来电
  129. case "subscribe":
  130. //SubScribeBack();
  131. break; //监测
  132. case "subscribecancel":
  133. //SubScribeCancelBack();
  134. break; //停止监测
  135. case "agentstate":
  136. AgentStateBack(data);
  137. break; //坐席状态
  138. case "linestate":
  139. LineStateBack(data);
  140. break; //线路状态
  141. case "motorsetstate":
  142. //SayFreeBack();
  143. case "agentstateagent":
  144. agentstateagent(data);
  145. break; //班长置闲
  146. case "linestateagent":
  147. LineStateAgentBack(data);
  148. break; //线路状态通知
  149. case "callid":
  150. //CallIDBack(data);
  151. break; //获取callid
  152. case "listen":
  153. listenBack();
  154. break; //获取callid
  155. case "insert":
  156. insertBack(data);
  157. break; //获取callid
  158. case "recordpath":
  159. //RecordPathBack(data);
  160. break; //录音返回
  161. }
  162. } else {
  163. var type = data.Type;
  164. if (type.toLowerCase() == "waitcount") {
  165. WaitCountBack(data);
  166. }
  167. if (rlt == false) {
  168. //$(".hwzt").text('操作失败!');
  169. //外呼失败的文字展示
  170. if (data.Type.toLowerCase() == "makecall") {
  171. switch (data.ErrorCode) {
  172. case 1:
  173. layer.msg("挂机,请重试");
  174. break;
  175. case 2:
  176. layer.msg("FS外呼命令失败,请重试!");
  177. break;
  178. case 3:
  179. layer.msg("外呼获取座席失败,请重试!");
  180. break;
  181. case 4:
  182. layer.msg("座席置忙禁止座席外呼,请重试!");
  183. break;
  184. case 5:
  185. layer.msg("主叫座席分机非空闲或摘机拨号,请重试!");
  186. break;
  187. case 6:
  188. layer.msg("为外呼设置座席状态失败,请重试!");
  189. break;
  190. case 7:
  191. layer.msg("被叫座席非空闲,请重试!");
  192. break;
  193. case 8:
  194. layer.msg("执行分机呼叫失败, 未找到分机通道,请重试!");
  195. break;
  196. case 9:
  197. layer.msg("执行分机呼叫失败, 无法绑定分机通道,请重试!");
  198. break;
  199. case 10:
  200. layer.msg("禁止分机自呼,请重试!");
  201. break;
  202. case 11:
  203. layer.msg("发送分机呼叫Esl命令失败,请重试!");
  204. break;
  205. case 12:
  206. layer.msg("目标分机非空闲,请重试!");
  207. break;
  208. case 13:
  209. layer.msg("主控通道非空闲,请重试!");
  210. break;
  211. case 14:
  212. layer.msg("校验不通过绑定本端逻辑线路失败,请重试!");
  213. break;
  214. case 15:
  215. layer.msg("校验不通过本端当前线路忙,请重试!");
  216. break;
  217. case 16:
  218. layer.msg("校验不通过对端线路状态忙,请重试!");
  219. break;
  220. case 17:
  221. layer.msg("被叫关机,请重试!");
  222. break;
  223. case 18:
  224. layer.msg("无效号码,请重试!");
  225. break;
  226. case 19:
  227. layer.msg("无人接听,请重试!");
  228. break;
  229. case 20:
  230. layer.msg("交换机错误(用户无法接通),请重试!");
  231. break;
  232. case 21:
  233. layer.msg(
  234. "话机外呼执行数据交换操作失败未找到分机通道,请重试!"
  235. );
  236. break;
  237. case 22:
  238. layer.msg(
  239. "话机外呼执行数据交换操作失败分机通道未绑定任务,请重试!"
  240. );
  241. break;
  242. case 23:
  243. layer.msg("执行设备外呼任务失败无法获取对应线路,请重试!");
  244. break;
  245. }
  246. }
  247. if (data.Type == "AcdConnectNotify") {
  248. $("#top-search li i").removeClass("active");
  249. layer.msg("Acd未连接");
  250. }
  251. } else {
  252. //layer.msg(rlt);
  253. }
  254. }
  255. }
  256. };
  257. //连接关闭的回调方法
  258. ws.onclose = function (evt) {
  259. if (cls == 0) {
  260. cls = 1;
  261. layer.msg("连接关闭!");
  262. $("#top-search li i").removeClass("active");
  263. if (helper.cookies.get("clsCookie")) {
  264. if (helper.cookies.get("callState") != "1") {
  265. Connect();
  266. }
  267. } else {
  268. reconnect();
  269. }
  270. }
  271. console.log("111");
  272. };
  273. //连接发生错误的回调方法
  274. ws.onerror = function (evt) {
  275. //产生异常
  276. //layer.msg('连接出现异常!');
  277. console.log(ws);
  278. if (ws == null || ws.readyState != ws.OPEN) {
  279. console.log(new Date() + "开始重连");
  280. reconnect();
  281. }
  282. };
  283. }
  284. //重连
  285. function reconnect() {
  286. if (lockReconnect) return;
  287. lockReconnect = true;
  288. //没连接上会一直重连,设置延迟避免请求过多
  289. setTimeout(function () {
  290. console.log(new Date() + " " + "重连中……");
  291. createWebSocket("ws://121.196.219.217:8081");
  292. lockReconnect = false;
  293. }, 2000);
  294. }
  295. //发送
  296. function Send() {
  297. if (ws.readyState != ws.OPEN) {
  298. if (loginOr) {
  299. errorState = true;
  300. layer.msg("连接异常!");
  301. reconnect();
  302. } else {
  303. errorState = false;
  304. layer.msg("连接异常!");
  305. reconnect();
  306. }
  307. }
  308. if (ws.readyState == ws.OPEN) {
  309. console.log(new Date() + " send " + JSON.stringify(obj));
  310. ws.send(JSON.stringify(obj));
  311. }
  312. }
  313. //心跳检测
  314. var heartCheck = {
  315. timeout: 25000, //25秒
  316. timeoutObj: null,
  317. serverTimeoutObj: null,
  318. reset: function () {
  319. clearTimeout(this.timeoutObj);
  320. clearTimeout(this.serverTimeoutObj);
  321. return this;
  322. },
  323. start: function () {
  324. var self = this;
  325. this.timeoutObj = setTimeout(function () {
  326. //这里发送一个心跳,后端收到后,返回一个心跳消息,
  327. //onmessage拿到返回的心跳就说明连接正常
  328. obj.Type = "Heart";
  329. Send();
  330. self.serverTimeoutObj = setTimeout(function () {
  331. //如果超过一定时间还没重置,说明后端主动断开了
  332. //ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
  333. //同步签出状态
  334. $("#top-search li i").removeClass("active");
  335. $(".Login").addClass("active");
  336. $(".zxzt").removeClass("bl").addClass("br");
  337. $(".fwzt").removeClass("bl").addClass("br");
  338. $(".hwzt").text("");
  339. if (cls == 0) {
  340. cls = 1;
  341. reconnect();
  342. }
  343. }, self.timeout);
  344. }, this.timeout);
  345. },
  346. };
  347. //默认记忆上次是否签入,是否置忙置闲 0表示已签入 空闲,1表示签入置忙,2表示签出
  348. function SetLogin(state) {
  349. if (state == 1) {
  350. return;
  351. }
  352. var usercode = document.getElementById("txtLabourwork").value;
  353. var extnumber = document.getElementById("txtPhoneNum").value;
  354. obj = {};
  355. obj.Type = "Login";
  356. obj.AgentID = usercode;
  357. obj.AgentExten = extnumber;
  358. obj.AgentGroup = "12";
  359. obj.AgentType = "0";
  360. Send();
  361. if (state == 5) {
  362. setTimeout("SayBusy()", 1000);
  363. }
  364. }
  365. //置忙
  366. function SayBusy() {
  367. obj.Type = "SayBusy";
  368. Send();
  369. }
  370. //签入
  371. function button_QRCall() {
  372. $(".fa-phone").addClass("selectClass");
  373. $(".fa-phone").removeClass("defaultClass");
  374. $(".fa-pause").addClass("selectClass");
  375. $(".fa-pause").removeClass("defaultClass");
  376. $("#imgServerState").attr("src", "/Content/images/server1.png");
  377. $("#imgAgentState").attr("src", "/Content/images/zx1.png");
  378. $("#imgServerState").attr("alt", "签入");
  379. layer.msg("签入成功");
  380. helper.cookies.set("callState", 2);
  381. OperatorLogText = "签入";
  382. OperatorLog(OperatorLogText);
  383. try {
  384. var result = OCX_AgentLogOut();
  385. } catch (e) {
  386. document.getElementById("spanServerRes").innerHTML = e.message;
  387. }
  388. //AgentQR();
  389. }
  390. //签出
  391. function LogoutBack() {
  392. $(".fa-phone").removeClass("selectClass");
  393. $(".fa-phone").addClass("defaultClass");
  394. $(".fa-play").removeClass("selectClass");
  395. $(".fa-play").addClass("defaultClass");
  396. $(".fa-pause").removeClass("selectClass");
  397. $(".fa-pause").addClass("defaultClass");
  398. $("#imgServerState").attr("src", "/Content/images/server0.png");
  399. $("#imgAgentState").attr("src", "/Content/images/zx2.png");
  400. $("#imgServerState").attr("alt", "未签入");
  401. layer.msg("签出成功");
  402. OperatorLogText = "签出";
  403. OperatorLog(OperatorLogText);
  404. helper.cookies.set("callState", 1);
  405. ws.close();
  406. }
  407. // 监听
  408. function listenBack() {
  409. seatComming = false;
  410. layer.msg("监听成功");
  411. }
  412. function insertBack() {
  413. seatComming = false;
  414. layer.msg("强插成功");
  415. }
  416. //排队数量
  417. function WaitCountBack(data) {
  418. console.log(data.WaitCount);
  419. document.getElementById("spanqueuingnum").innerHTML = data.WaitCount;
  420. }
  421. function makecallBack() {
  422. layer.msg("外呼成功");
  423. $(".fa-play").removeClass("selectClass");
  424. $(".fa-play").addClass("defaultClass");
  425. $(".fa-pause").removeClass("selectClass");
  426. $(".fa-pause").addClass("defaultClass");
  427. }
  428. //来电弹屏事件
  429. function Form_callCommingCaller(data) {
  430. if (seatComming) {
  431. return;
  432. }
  433. becallout = false;
  434. becallcome = true;
  435. callerNum = data.Number;
  436. $(".fa-play").removeClass("selectClass");
  437. $(".fa-play").addClass("defaultClass");
  438. $(".fa-pause").removeClass("selectClass");
  439. $(".fa-pause").addClass("defaultClass");
  440. document.getElementById("forZYnumber").value = callerNum;
  441. document.getElementById("callnum").value = callerNum;
  442. var timeno = new Date().getTime();
  443. //document.getElementById("mainframe").src = "/CallRecord/CallScreen/?workOrderNum=10929";
  444. //try {
  445. var userid = document.getElementById("txtAgentId").value;
  446. var usercode = document.getElementById("txtLabourwork").value;
  447. var username = document.getElementById("txtAgentName").value;
  448. var extnumber = document.getElementById("txtPhoneNum").value;
  449. //获取呼叫编号
  450. var callid = data.CallID;
  451. CBnumber = data.CallID;
  452. document.getElementById("CallHjbh").value = CBnumber;
  453. helper.cookies.set("CallID", CBnumber);
  454. username = encodeURI(username);
  455. var opturl =
  456. "/OCXOpt/OCXOptCallAjax/?optaction=zhenlingEvent&timeno=" +
  457. timeno +
  458. "&callid=" +
  459. CBnumber +
  460. "&userid=" +
  461. userid +
  462. "&usercode=" +
  463. usercode +
  464. "&username=" +
  465. username +
  466. "&extnumber=" +
  467. extnumber +
  468. "&callerNum=" +
  469. callerNum;
  470. console.log(
  471. "/OCXOpt/OCXOptCallAjax/?optaction=zhenlingEvent&timeno=" +
  472. timeno +
  473. "&callid=" +
  474. CBnumber +
  475. "&userid=" +
  476. userid +
  477. "&usercode=" +
  478. usercode +
  479. "&username=" +
  480. username +
  481. "&extnumber=" +
  482. extnumber +
  483. "&callerNum=" +
  484. callerNum
  485. );
  486. $.ajax({
  487. url: "/OCXOpt/writelog",
  488. type: "post",
  489. async: false, //同步请求
  490. dataType: "json",
  491. cache: false,
  492. data: { message: opturl },
  493. success: function (res) {},
  494. });
  495. $.ajax({
  496. type: "get",
  497. url: opturl,
  498. dataType: "html",
  499. async: false,
  500. cache: false,
  501. success: function (res) {
  502. if (res != "error") {
  503. $(".callScreen").show();
  504. $("#workOrderNum").val(res);
  505. lineState();
  506. resOrder();
  507. //document.getElementById("mainframe").src = "/CallRecord/CallScreen/?workOrderNum=" + res;
  508. //layer.open({
  509. //type: 2,
  510. // anim: 4,
  511. //scrollbar: false,
  512. //content: '/CallRecord/CallScreen/?workOrderNum=' + res,
  513. //area: ['100%', '100%'],
  514. // id: 'WorkOrderAllListReport',
  515. //title: '来电弹屏'
  516. //});
  517. } else {
  518. //document.getElementById("mainframe").src = "/CallRecord/CallScreen/?workOrderNum=111";
  519. //layer.open({
  520. // type: 2,
  521. // anim: 4,
  522. //scrollbar: false,
  523. //content: '/CallRecord/CallScreen/?workOrderNum=111',
  524. //area: ['100%', '100%'],
  525. //id: 'WorkOrderAllListReport',
  526. // title: '来电弹屏'
  527. // });
  528. }
  529. },
  530. }); //更新摘机事件
  531. //} catch (e) {
  532. //alert(e.Message);
  533. //}
  534. //f_addTab('callin_' + CBnumber + callerNum, callerNum + '来电', '../telmanage/callinoptbbzx.aspx?callid=' + CBnumber + "&phone=" + callerNum + "&timeno=" + timeno);
  535. }
  536. //***************************************************
  537. function CallIDBack(data) {
  538. //$(".hidCallID").val(data.CurrID);
  539. }
  540. //挂断
  541. function DropCallBack() {
  542. //if(ivrState){ return };
  543. helper.cookies.set("initDrop", 0);
  544. layer.msg("挂断成功");
  545. var usercode = document.getElementById("txtLabourwork").value;
  546. var extnumber = document.getElementById("txtPhoneNum").value;
  547. obj = {};
  548. obj.Type = "SayBusy";
  549. obj.AgentID = usercode;
  550. obj.AgentExten = extnumber;
  551. obj.AgentGroup = "12";
  552. obj.AgentType = "0";
  553. Send();
  554. }
  555. function transferBack() {
  556. layer.msg("转接成功");
  557. }
  558. //线路状态通知
  559. function LineStateAgentBack(data) {
  560. var objiframe = $("iframe:visible");
  561. //0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,9通话保持中
  562. if (data.State == "0") {
  563. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  564. }
  565. if (data.State == "1") {
  566. $("#imgAgentState").attr("src", "/Content/images/zx1.png");
  567. helper.cookies.set("callState", 2);
  568. }
  569. if (data.State == "2") {
  570. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  571. }
  572. if (data.State == "3") {
  573. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  574. }
  575. if (data.State == "4") {
  576. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  577. }
  578. if (data.State == "5") {
  579. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  580. }
  581. if (data.State == "6") {
  582. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  583. }
  584. if (data.State == "7") {
  585. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  586. }
  587. if (data.State == "8") {
  588. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  589. }
  590. if (data.State == "9") {
  591. $("#imgAgentState").attr("src", "/Content/images/zx4.png");
  592. }
  593. }
  594. function toDub(i) {
  595. return i < 10 ? "0" + i : "" + i;
  596. }
  597. //外呼
  598. function MakeCallBack(data) {
  599. var makeCallPhone = $.cookie("makeCallPhone");
  600. }
  601. //置忙置闲
  602. function SetState(obj) {
  603. if (obj.State == "5") {
  604. $(".fa-pause").addClass("defaultClass");
  605. $(".fa-pause").removeClass("selectClass");
  606. $(".fa-play").addClass("selectClass");
  607. $(".fa-play").removeClass("defaultClass");
  608. $("#imgAgentState").attr("src", "/Content/images/zx3.png");
  609. //$.cookie("callState", obj.State, {expires: 7});
  610. OperatorLogText = "置忙";
  611. OperatorLog(OperatorLogText);
  612. helper.cookies.set("callState", obj.State);
  613. //$('#imgAgentState').attr('src', '/Content/images/zx2.png');
  614. }
  615. if (obj.State == "2") {
  616. $(".fa-pause").addClass("selectClass");
  617. $(".fa-pause").removeClass("defaultClass");
  618. $(".fa-play").addClass("defaultClass");
  619. $(".fa-play").removeClass("selectClass");
  620. $("#imgAgentState").attr("src", "/Content/images/zx1.png");
  621. OperatorLogText = "置闲";
  622. OperatorLog(OperatorLogText);
  623. //$.cookie("callState", obj.State, {expires: 7});
  624. helper.cookies.set("callState", obj.State);
  625. }
  626. }
  627. function OperatorLog(OperatorLogText) {
  628. console.log(OperatorLogText);
  629. var data = {
  630. typeName: OperatorLogText,
  631. };
  632. $.ajax({
  633. url: "/main/addOPeratorLog",
  634. type: "post",
  635. async: false, //同步请求
  636. contentType: "application/json",
  637. dataType: "text",
  638. cache: false,
  639. data: JSON.stringify(data),
  640. success: function (thisResult) {},
  641. error: function (error) {
  642. return false;
  643. },
  644. });
  645. }
  646. function agentstateagent(data) {
  647. if (data.AgentState == "5") {
  648. $(".fa-pause").addClass("defaultClass");
  649. $(".fa-pause").removeClass("selectClass");
  650. $(".fa-play").addClass("selectClass");
  651. $(".fa-play").removeClass("defaultClass");
  652. $("#imgAgentState").attr("src", "/Content/images/zx3.png");
  653. //$.cookie("callState", obj.State, {expires: 7});
  654. helper.cookies.set("callState", obj.State);
  655. //$('#imgAgentState').attr('src', '/Content/images/zx2.png');
  656. }
  657. if (data.AgentState == "2") {
  658. $(".fa-pause").addClass("selectClass");
  659. $(".fa-pause").removeClass("defaultClass");
  660. $(".fa-play").addClass("defaultClass");
  661. $(".fa-play").removeClass("selectClass");
  662. $("#imgAgentState").attr("src", "/Content/images/zx1.png");
  663. //$.cookie("callState", obj.State, {expires: 7});
  664. helper.cookies.set("callState", obj.State);
  665. }
  666. if (data.AgentState == "7" && LogoutState) {
  667. $(".popRemind").show();
  668. $(".fa-phone").removeClass("selectClass");
  669. $(".fa-phone").addClass("defaultClass");
  670. $(".fa-play").removeClass("selectClass");
  671. $(".fa-play").addClass("defaultClass");
  672. $(".fa-pause").removeClass("selectClass");
  673. $(".fa-pause").addClass("defaultClass");
  674. $("#imgServerState").attr("src", "/Content/images/server0.png");
  675. $("#imgAgentState").attr("src", "/Content/images/zx2.png");
  676. $("#imgServerState").attr("alt", "未签入");
  677. helper.cookies.set("callState", 1);
  678. ws.close();
  679. }
  680. }
  681. //多方通话
  682. function MeetingBack() {}
  683. //转移
  684. function TransferBack() {}
  685. //保持
  686. function HoldBack() {}
  687. //接回
  688. function RetrieveBack() {}
  689. //监测
  690. function SubScribeBack() {
  691. navBar;
  692. }
  693. //取消监测
  694. function SubScribeCancelBack() {}
  695. //班长监测返回状态
  696. //坐席状态
  697. function AgentStateBack(data) {
  698. //console.log("监控")
  699. console.log(data.AgentID + "&&agentstate" + data.State);
  700. //0离线, 1登陆中, 2空闲, 3通话中 4话后处理 5小休 6被请求 7 注销
  701. //$('#navBar ul li').find("dd.layui-this").children("a").attr("data-url") GetState(data.AgentID, data.State)
  702. //var seatMonit =$('#navBar ul li').find("dd.layui-this").children("a")
  703. if (data.State == "0") {
  704. GetState = "0";
  705. } //0离线
  706. if (data.State == "1") {
  707. GetState = "99";
  708. } //1登陆中
  709. if (data.State == "2") {
  710. GetState = "2";
  711. } //2空闲
  712. if (data.State == "3") {
  713. GetState = "3";
  714. } //3通话中
  715. if (data.State == "4") {
  716. GetState = "5";
  717. } //4话后处理
  718. if (data.State == "5") {
  719. GetState = "4";
  720. } //5小休
  721. if (data.State == "6") {
  722. GetState = "9";
  723. } //6被请求
  724. if (data.State == "7") {
  725. GetState = "0";
  726. } //7 注销
  727. //window.frames[obj.attr("name")].UpdateAgentState(data.AgentID, data.State);
  728. console.log(window.frames[1].GetState);
  729. if (window.frames[1].GetState) {
  730. window.frames[1].GetState(data.AgentID, GetState);
  731. }
  732. }
  733. //线路状态
  734. function LineStateBack(data) {
  735. console.log(data.AgentID + "&&linestate" + data.State);
  736. //0分机不可用,1空闲,2摘记等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中
  737. //7播放忙音中,8通话保持中,9话机移除,10保持/空闲,11保持/摘机等待拨号
  738. //12保持/正在拨号,13保持/呼出振铃,14保持/通话中
  739. if (data.State == "0") {
  740. GetState = "99";
  741. } //0分机不可用
  742. if (data.State == "1") {
  743. if (GetState == "4") {
  744. GetState == "4";
  745. } else {
  746. GetState = "2";
  747. }
  748. } //1空闲
  749. if (data.State == "2") {
  750. GetState = "99";
  751. } //2摘记等待拨号
  752. if (data.State == "3") {
  753. GetState = "9";
  754. } //3正在拨号
  755. if (data.State == "4") {
  756. GetState = "9";
  757. } //4呼出振铃
  758. if (data.State == "5") {
  759. GetState = "9";
  760. } //5来电振铃
  761. if (data.State == "6") {
  762. GetState = "3";
  763. } //6通话中
  764. if (data.State == "7") {
  765. GetState = "99";
  766. } //7播放忙音中
  767. if (data.State == "8") {
  768. GetState = "99";
  769. } //8通话保持中
  770. if (data.State == "9") {
  771. GetState = "99";
  772. } //9话机移除
  773. if (data.State == "10") {
  774. GetState = "99";
  775. } //10保持/空闲
  776. if (data.State == "11") {
  777. GetState = "99";
  778. } //11保持/摘机等待拨号
  779. if (data.State == "12") {
  780. GetState = "99";
  781. } //12保持/正在拨号
  782. if (data.State == "13") {
  783. GetState = "99";
  784. } //13保持/呼出振铃
  785. if (data.State == "14") {
  786. GetState = "99";
  787. } //14保持/通话中
  788. if (window.frames["mainframe"].GetState) {
  789. window.frames["mainframe"].GetState(data.AgentID, GetState);
  790. }
  791. }
  792. //录音返回
  793. function RecordPathBack(data) {}
  794. //获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
  795. function getNowFormatDate() {
  796. var date = new Date();
  797. var seperator1 = "-";
  798. var seperator2 = ":";
  799. var month = date.getMonth() + 1;
  800. var strDate = date.getDate();
  801. if (month >= 1 && month <= 9) {
  802. month = "0" + month;
  803. }
  804. if (strDate >= 0 && strDate <= 9) {
  805. strDate = "0" + strDate;
  806. }
  807. var currentdate =
  808. date.getFullYear() +
  809. seperator1 +
  810. month +
  811. seperator1 +
  812. strDate +
  813. " " +
  814. date.getHours() +
  815. seperator2 +
  816. date.getMinutes() +
  817. seperator2 +
  818. date.getSeconds();
  819. return currentdate;
  820. }