Aucune description

main.js 37KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157
  1. 
  2. var ws, n = 0, timer;
  3. var lockReconnect = false;//避免重复连接
  4. var obj = {};
  5. var cls = 0;
  6. var lasttime = new Date().getTime();
  7. //创建scoket连接
  8. function createWebSocket() {
  9. try {
  10. $("#top-search li i").removeClass("active");
  11. ws = new WebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
  12. Connect();
  13. } catch (e) {
  14. reconnect();
  15. }
  16. }
  17. //连接
  18. function Connect() {
  19. try {
  20. ws.onopen = function () {
  21. console.log(new Date() + " " + "建立连接");
  22. //心跳检测重置
  23. heartCheck.reset().start();
  24. cls = 0;
  25. $(".Login").addClass("active");
  26. //自动签入
  27. //lasttime = new Date().getTime();
  28. //obj.Type = "Login";
  29. //obj.AgentType = "0";
  30. Send();
  31. };
  32. //接收到消息的回调方法
  33. ws.onmessage = function (evt) {
  34. //如果获取到消息,心跳检测重置
  35. //拿到任何消息都说明当前连接是正常的
  36. heartCheck.reset().start();
  37. var myDate = new Date();
  38. console.log(myDate + " " + evt.data);
  39. var data = JSON.parse(evt.data)[0];
  40. if (data) {
  41. var rlt = data.Result;
  42. if (rlt == true) {
  43. var type = data.Type;
  44. switch (type.toLowerCase()) {
  45. //case "heart": HeartBack(); break;//心跳
  46. case "login": LoginBack(); break;//签入
  47. case "logout": LogoutBack(); break;//签出
  48. case "dropcall": DropCallBack(); break;//挂断
  49. case "makecall": MakeCallBack(); break;//外呼
  50. case "setstate": SetState(data); break;//置忙置闲
  51. //case "saybusy": SayBusyBack(data); break;
  52. //case "sayfree": SayFreeBack(data); break;
  53. case "meeting": MeetingBack(); break;//多方通话
  54. case "transfer": TransferBack(); break;//转移
  55. case "hold": HoldBack(); break;//保持
  56. case "retrieve": RetrieveBack(); break;//接回
  57. case "incoming": IncomingBack(data); break;//来电
  58. case "subscribe": SubScribeBack(); break;//监测
  59. case "subscribecancel": SubScribeCancelBack(); break;//停止监测
  60. case "agentstate": AgentStateBack(data); break;//坐席状态
  61. case "linestate": LineStateBack(data); break;//线路状态
  62. case "motorsetstate": SayFreeBack(); break;//班长置闲
  63. case "linestateagent": LineStateAgentBack(data); break;//线路状态通知
  64. //case "callid": CallIDBack(data); break;//获取callid 此方法无用
  65. case "recordpath": RecordPathBack(data); break;//录音返回
  66. }
  67. }
  68. else {
  69. if (rlt == false) {
  70. //layer.confirm('操作失败!', {
  71. // btn: ['确定']
  72. //});
  73. $(".hwzt").text('操作失败!');
  74. }
  75. else {
  76. $(".hwzt").text(rlt);
  77. //layer.confirm(rlt, {
  78. // btn: ['确定']
  79. //});
  80. }
  81. }
  82. }
  83. };
  84. //连接关闭的回调方法
  85. ws.onclose = function (evt) {
  86. if (cls == 0) {
  87. cls = 1;
  88. //console.log("连接关闭!");
  89. //layer.confirm('连接关闭!', {
  90. // btn: ['确定']
  91. //});
  92. $(".hwzt").text('连接关闭!');
  93. $("#top-search li i").removeClass("active");
  94. reconnect();
  95. }
  96. };
  97. //连接发生错误的回调方法
  98. ws.onerror = function (evt) {
  99. //产生异常
  100. $(".hwzt").text('连接出现异常!');
  101. console.log(ws);
  102. if (ws == null || ws.readyState != ws.OPEN) {
  103. console.log(new Date() + "开始重连");
  104. reconnect();
  105. }
  106. };
  107. }
  108. catch (ex) {
  109. $(".hwzt").text('连接关闭 try-catch!');
  110. $("#top-search li i").removeClass("active");
  111. reconnect();
  112. }
  113. }
  114. //重连
  115. function reconnect() {
  116. if (lockReconnect) return;
  117. lockReconnect = true;
  118. //没连接上会一直重连,设置延迟避免请求过多
  119. setTimeout(function () {
  120. console.log(new Date() + " " + "重连中……");
  121. createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
  122. lockReconnect = false;
  123. }, 2000);
  124. }
  125. //发送
  126. function Send() {
  127. if (ws.readyState != ws.OPEN) {
  128. reconnect();
  129. }
  130. if (ws.readyState == ws.OPEN) {
  131. var myDate = new Date();
  132. console.log(obj)
  133. ws.send(JSON.stringify(obj));
  134. }
  135. }
  136. //心跳检测
  137. var heartCheck = {
  138. timeout: 25000,//25秒
  139. timeoutObj: null,
  140. serverTimeoutObj: null,
  141. reset: function () {
  142. clearTimeout(this.timeoutObj);
  143. clearTimeout(this.serverTimeoutObj);
  144. return this;
  145. },
  146. start: function () {
  147. var self = this;
  148. this.timeoutObj = setTimeout(function () {
  149. //这里发送一个心跳,后端收到后,返回一个心跳消息,
  150. //onmessage拿到返回的心跳就说明连接正常
  151. obj.Type = "Heart";
  152. Send();
  153. self.serverTimeoutObj = setTimeout(function () {//如果超过一定时间还没重置,说明后端主动断开了
  154. ws.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
  155. }, self.timeout)
  156. }, this.timeout)
  157. }
  158. }
  159. //签入
  160. function LoginBack() {
  161. $("#top-search li i").removeClass("active");
  162. $(".Logout").addClass("active");
  163. $(".SayBusy").addClass("active");
  164. $(".MakeCall").addClass("active");
  165. $(".zxzt").removeClass("br").addClass("bl");
  166. $(".fwzt").removeClass("br").addClass("bl");
  167. $(".hwzt").text('');
  168. }
  169. //签出
  170. function LogoutBack() {
  171. $("#top-search li i").removeClass("active");
  172. $(".Login").addClass("active");
  173. $(".zxzt").removeClass("bl").addClass("br");
  174. $(".fwzt").removeClass("bl").addClass("br");
  175. $(".hwzt").text('');
  176. }
  177. //来电
  178. function IncomingBack(data) {
  179. $(".hidTel").val(data.Number);
  180. $(".tel").text(data.Number);
  181. $(".ldtime").text(getNowFormatDate());
  182. $(".thsc").text("00:00");
  183. //自动外呼弹屏
  184. if (data.NumberId !== '' && typeof data.NumberId !== 'undefined') {
  185. //根据NumberId去除号码前缀
  186. $.getJSON(huayi.config.callcenter_url + 'CallPlan/RemovePre', { "callId": data.NumberId, "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  187. if (result.state.toLowerCase() == "success") {
  188. $(".hidTel").val(result.data);
  189. $(".tel").text(result.data);
  190. //获取电话所属地
  191. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetPhoneLocation', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  192. if (result.state.toLowerCase() == "success") {
  193. $(".khgsd").text(result.data);
  194. }
  195. })
  196. }
  197. })
  198. }
  199. //来电弹屏
  200. else if (data.CallID !== '' && typeof data.CallID !== 'undefined') {
  201. $("#zxdh_").val(data.Number);
  202. $("#tsdh").val(data.Number);
  203. $(".hidCallID").val(data.CallID);
  204. //获取电话所属地
  205. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetPhoneLocation', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  206. if (result.state.toLowerCase() == "success") {
  207. $(".khgsd").text(result.data);
  208. }
  209. })
  210. }
  211. //获取客户信息
  212. $(".ldtel").text($(".hidTel").val());
  213. $("#tsdh").val($(".hidTel").val());
  214. $(".ldtel1").val($(".hidTel").val());
  215. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetCustomerByTel', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  216. if (result.state.toLowerCase() == "success") {
  217. if (result.data.length > 0) {
  218. $("#zxr_").val(result.data[0].F_CustomerName);
  219. $("#tskh").val(result.data[0].F_CustomerName);
  220. $("#khid").val(result.data[0].F_CustomerId);
  221. $(".khbh").val(result.data[0].F_CustomerCode);
  222. $(".ldtel1").val(result.data[0].F_Telephone);
  223. $(".ldtel2").val(result.data[0].F_Mobile);
  224. $(".ldtel3").val(result.data[0].F_ChargeTelephone);
  225. }
  226. }
  227. })
  228. //获取历史通话记录
  229. loadOld();
  230. $('.maxOpen').trigger("click");
  231. $('.head-pic .lahei .la-before').show();
  232. $('.head-pic .lahei .la-after').hide();
  233. $(".Bacha").hide();
  234. }
  235. //CallID 在 type=Incoming 时就已经返回了,此方法无用
  236. //function CallIDBack(data) {
  237. // //$(".hidCallID").val(data.CurrID);
  238. //}
  239. //挂断
  240. function DropCallBack() {
  241. $("#top-search li i").removeClass("active");
  242. $(".Logout").addClass("active");
  243. $(".SayBusy").addClass("active");
  244. $(".MakeCall").addClass("active");
  245. $(".td-call").hide();
  246. //$('.ldtp-con').css("display", 'none');
  247. }
  248. function LineStateAgentBack(data) {
  249. //0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,9通话保持中
  250. if (data.State == '0') {
  251. $(".hwzt").text('分机不可用');//左下角状态显示
  252. }
  253. if (data.State == '1') {
  254. $(".hwzt").text('空闲');//左下角状态显示
  255. $(".fwzt").removeClass("br").addClass("bl");
  256. clearInterval(timer);
  257. if ($(".hidTel").val() && $(".hidCallID").val()) {
  258. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateGJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  259. result = JSON.parse(result);
  260. if (result.state.toLowerCase() == "success") {
  261. }
  262. })
  263. }
  264. $("#top-search li i").removeClass("active");
  265. $(".Logout").addClass("active");
  266. $(".SayBusy").addClass("active");
  267. $(".MakeCall").addClass("active");
  268. $(".td-call").hide();
  269. $(".Bacha").show();
  270. //$(".hidTel").val("");
  271. //$(".hidCallID").val("");
  272. }
  273. if (data.State == '2') {
  274. $(".hwzt").text('摘机等待拨号');//左下角状态显示
  275. }
  276. if (data.State == '3') {
  277. $(".hwzt").text('正在拨号');//左下角状态显示
  278. }
  279. if (data.State == '4') {
  280. $(".hwzt").text('呼出振铃');//左下角状态显示
  281. }
  282. if (data.State == '5') {
  283. $(".hwzt").text('来电振铃');//左下角状态显示
  284. $(".fwzt").removeClass("bl").addClass("br");
  285. if ($(".hidTel").val() && $(".hidCallID").val()) {
  286. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZL', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  287. result = JSON.parse(result);
  288. if (result.state.toLowerCase() == "success") {
  289. }
  290. })
  291. }
  292. }
  293. if (data.State == '6') {
  294. $(".hwzt").text('通话中');//左下角状态显示
  295. $(".fwzt").removeClass("bl").addClass("br");
  296. if ($(".hidTel").val() && $(".hidCallID").val()) {
  297. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  298. result = JSON.parse(result);
  299. if (result.state.toLowerCase() == "success") {
  300. }
  301. })
  302. }
  303. $(".td-call").show();
  304. n = 0;
  305. $("#top-search li i").removeClass("active");
  306. $(".DropCall").addClass("active");
  307. $(".Hold").addClass("active");
  308. $(".Transfer").addClass("active");
  309. $(".Meeting").addClass("active");
  310. clearInterval(timer);
  311. timer = setInterval(function () {
  312. n++;
  313. var m = parseInt(n / 60 % 60);
  314. var s = parseInt(n % 60);
  315. $(".thsc").text(toDub(m) + ":" + toDub(s));
  316. }, 1000);
  317. }
  318. if (data.State == '7') {
  319. $(".hwzt").text('播放忙音中');//左下角状态显示
  320. }
  321. if (data.State == '8') {
  322. $(".hwzt").text('移除IP分机');//左下角状态显示
  323. }
  324. if (data.State == '9') {
  325. $(".hwzt").text('通话保持中');//左下角状态显示
  326. }
  327. }
  328. function toDub(i) {
  329. return i < 10 ? "0" + i : "" + i;
  330. }
  331. //外呼
  332. function MakeCallBack() {
  333. $("#top-search li i").removeClass("active");
  334. $(".DropCall").addClass("active");
  335. }
  336. //置忙置闲
  337. function SetState(obj) {
  338. if (obj.State == '5') {
  339. $(".SayBusy").removeClass("active");
  340. $(".SayFree").addClass("active");
  341. $(".zxzt").removeClass("bl").addClass("br");
  342. $(".hwzt").text('置忙');
  343. }
  344. if (obj.State == '2') {
  345. $(".SayBusy").addClass("active");
  346. $(".SayFree").removeClass("active");
  347. $(".zxzt").removeClass("br").addClass("bl");
  348. $(".hwzt").text('空闲');
  349. }
  350. }
  351. //置忙
  352. function SayBusyBack() {
  353. $(".SayBusy").removeClass("active");
  354. $(".SayFree").addClass("active");
  355. }
  356. //置闲
  357. function SayFreeBack() {
  358. $(".SayBusy").addClass("active");
  359. $(".SayFree").removeClass("active");
  360. }
  361. //多方通话
  362. function MeetingBack() {
  363. }
  364. //转移
  365. function TransferBack() {
  366. $("#top-search li i").removeClass("active");
  367. $(".Logout").addClass("active");
  368. $(".SayBusy").addClass("active");
  369. $(".MakeCall").addClass("active");
  370. }
  371. //保持
  372. function HoldBack() {
  373. $(".Hold").removeClass("active");
  374. $(".Retrieve").addClass("active");
  375. }
  376. //接回
  377. function RetrieveBack() {
  378. $(".Hold").addClass("active");
  379. $(".Retrieve").removeClass("active");
  380. }
  381. //监测
  382. function SubScribeBack() {
  383. var obj = $("iframe:visible")
  384. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  385. window.frames[obj.attr("name")].Start();
  386. }
  387. }
  388. //取消监测
  389. function SubScribeCancelBack() {
  390. var obj = $("iframe:visible")
  391. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  392. window.frames[obj.attr("name")].Stop();
  393. }
  394. }
  395. //班长监测返回状态
  396. //坐席状态
  397. function AgentStateBack(data) {
  398. var obj = $("iframe:visible")
  399. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  400. window.frames[obj.attr("name")].UpdateAgentState(data.AgentID, data.State);
  401. }
  402. }
  403. //线路状态
  404. function LineStateBack(data) {
  405. var obj = $("iframe:visible")
  406. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  407. window.frames[obj.attr("name")].UpdateLineState(data.AgentID, data.State);
  408. }
  409. }
  410. //录音返回
  411. function RecordPathBack(data) {
  412. //if ($(".hidTel").val() && $(".hidCallID").val()) {
  413. // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: $(".hidCallID").val(),path:data.RecPath, "token": $.cookie("token") }, function (result) {
  414. // result = JSON.parse(result);
  415. // if (result.state.toLowerCase() == "success") {
  416. // }
  417. // })
  418. //}
  419. if ($(".hidTel").val()) {
  420. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: data.CallID, path: data.RecPath, "token": $.cookie("token") }, function (result) {
  421. result = JSON.parse(result);
  422. if (result.state.toLowerCase() == "success") {
  423. }
  424. })
  425. }
  426. }
  427. //获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
  428. function getNowFormatDate() {
  429. var date = new Date();
  430. var seperator1 = "-";
  431. var seperator2 = ":";
  432. var month = date.getMonth() + 1;
  433. var strDate = date.getDate();
  434. if (month >= 1 && month <= 9) {
  435. month = "0" + month;
  436. }
  437. if (strDate >= 0 && strDate <= 9) {
  438. strDate = "0" + strDate;
  439. }
  440. var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
  441. + " " + date.getHours() + seperator2 + date.getMinutes()
  442. + seperator2 + date.getSeconds();
  443. return currentdate;
  444. }
  445. //来电弹屏
  446. laydate.skin('molv');
  447. //laydate({
  448. // elem: '#old_startTime',
  449. // event: 'focus'
  450. //});
  451. //laydate({
  452. // elem: '#old_endTime',
  453. // event: 'focus'
  454. //});
  455. //laydate({
  456. // elem: '#con_startTime',
  457. // event: 'focus'
  458. //});
  459. //laydate({
  460. // elem: '#con_endTime',
  461. // event: 'focus'
  462. //});
  463. //弹屏右侧切换效果
  464. $(".ldtp-cr ul.ld-service li").click(function () {
  465. $(this).addClass("cr-click").siblings().removeClass("cr-click");
  466. loadOld();
  467. });
  468. $('.pre-add').click(function () {
  469. var par = $(this).parent().parent();
  470. par.hide().siblings().show();
  471. })
  472. //最大化 最小化效果
  473. //最小化
  474. $('.minClosed').click(function () {
  475. $('.ldtp-con').removeClass('fadeInDown');
  476. $('.ldtp-con').addClass('fadeOutUp');
  477. $('.ldtp-con').css("display", "none");
  478. $('.maxOpen').show();
  479. $('.maxOpen').addClass('fadeInDown');
  480. });
  481. //最大化
  482. $('.maxOpen').click(function () {
  483. $('.ldtp-con').removeClass('fadeOutUp');
  484. $('.ldtp-con').addClass('fadeInDown');
  485. $('.ldtp-con').css("display", "block");
  486. $('.maxOpen').hide();
  487. $('.maxOpen').removeClass('fadeInDown');
  488. $('.maxOpen').addClass('fadeInDown');
  489. $('.first').removeClass('first');
  490. $('.ldtp-con').addClass('first');
  491. })
  492. //关闭弹框
  493. $(".Bacha").click(function () {
  494. $('.ldtp-con').removeClass('fadeInDown');
  495. $('.ldtp-con').addClass('fadeOutUp');
  496. $('.ldtp-con').css("display", "none");
  497. obj.Type = "SayFree";
  498. Send();
  499. })
  500. //顶部小头像
  501. var little_pic = $('.head-pic .hp-box img').attr("src");
  502. $('.maxOpen li .photo img').attr("src", little_pic);
  503. //点击左侧菜单来电弹屏显示
  504. $('.tantan').click(function () {
  505. $('.maxOpen').trigger("click");
  506. $('.head-pic .lahei .la-before').show();
  507. $('.head-pic .lahei .la-after').hide();
  508. loadOld();
  509. })
  510. //点击挂断
  511. $('.head-pic .td-call .take').click(function () {
  512. obj.Type = "DropCall";
  513. Send();
  514. });
  515. //点击拉黑事件
  516. $('.head-pic .lahei .la-before').click(function () {
  517. if (!$(".hidTel").val()) {
  518. layer.confirm('来电号码为空!', {
  519. btn: ['确定']
  520. });
  521. return;
  522. }
  523. $("#time-word").val('');
  524. $('.ldtp-con .hei-list').show();
  525. })
  526. //拉黑输入框事件
  527. $('.hei-list .bacha').click(function () {
  528. $('.ldtp-con .hei-list').hide();
  529. $("#time-word").val('');
  530. })
  531. var reg = /^\+?[1-9][0-9]*$/;
  532. $('#bc').click(function () {
  533. var n = $("#time-word").val();
  534. var val = $("input[name='time']:checked").val();
  535. if (n) {
  536. if (!(reg.test(n))) {
  537. layer.confirm('请输入整数时间!', {
  538. btn: ['确定']
  539. });
  540. return;
  541. }
  542. }
  543. else {
  544. if (val == '4') {
  545. n = 0;
  546. }
  547. else {
  548. layer.confirm('请输入整数时间!', {
  549. btn: ['确定']
  550. });
  551. return;
  552. }
  553. }
  554. $.post(huayi.config.callcenter_url + 'CallInScreen/AddBlack', { tel: $(".hidTel").val(), num: n, type: val, "token": $.cookie("token") }, function (result) {
  555. result = $.parseJSON(result);
  556. if (result.state.toLowerCase() == "success") {
  557. layer.msg("拉入黑名单成功");
  558. $('.la-shichang .blackTime').html(result.data);
  559. $('.ldtp-con .hei-list').hide();
  560. $('.head-pic .lahei .la-before').hide();
  561. $('.head-pic .lahei .la-after').show();
  562. $('.head-pic .lahei .retur').show();
  563. }
  564. })
  565. })
  566. $('.la-after').click(function () {
  567. if (!$(".hidTel").val()) {
  568. layer.confirm('来电号码为空!', {
  569. btn: ['确定']
  570. });
  571. return;
  572. }
  573. $("#time-word").val('');
  574. $('.ldtp-con .hei-list').show();
  575. $('.ldtp-con .hei-list').removeClass('bounceOutUp');
  576. $('.ldtp-con .hei-list').addClass('bounceIn');
  577. })
  578. $('.head-pic .lahei .retur').click(function () {
  579. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/DelBlack', { tel: $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  580. if (result.state.toLowerCase() == "success") {
  581. layer.msg("取消黑名单成功");
  582. $('.head-pic .lahei .retur').hide();
  583. $('.head-pic .lahei .la-after').hide();
  584. $('.head-pic .lahei .la-before').show();
  585. }
  586. })
  587. })
  588. //var ws, n = 0, timer;
  589. //var lockReconnect = false;//避免重复连接
  590. //var obj = {};
  591. //var cls = 0;
  592. //var lasttime = new Date().getTime();
  593. ////创建scoket连接
  594. //function createWebSocket() {
  595. // try {
  596. // $("#top-search li i").removeClass("active");
  597. // ws = new WebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
  598. // Connect();
  599. // } catch (e) {
  600. // reconnect();
  601. // }
  602. //}
  603. ////连接
  604. //function Connect() {
  605. // try {
  606. // ws.onopen = function () {
  607. // console.log(new Date() + " " + "建立连接");
  608. // //心跳检测重置
  609. // heartCheck.reset().start();
  610. // cls = 0;
  611. // $(".Login").addClass("active");
  612. // //自动签入
  613. // //lasttime = new Date().getTime();
  614. // //obj.Type = "Login";
  615. // //obj.AgentType = "0";
  616. // Send();
  617. // };
  618. // //接收到消息的回调方法
  619. // ws.onmessage = function (evt) {
  620. // //如果获取到消息,心跳检测重置
  621. // //拿到任何消息都说明当前连接是正常的
  622. // heartCheck.reset().start();
  623. // var myDate = new Date();
  624. // console.log(myDate + " receive " + evt.data);
  625. // var data = JSON.parse(evt.data)[0];
  626. // if (data) {
  627. // var rlt = data.Result;
  628. // if (rlt == true) {
  629. // var type = data.Type;
  630. // switch (type.toLowerCase()) {
  631. // //case "heart": HeartBack(); break;//心跳
  632. // case "login": LoginBack(); break;//签入
  633. // case "logout": LogoutBack(); break;//签出
  634. // case "dropcall": DropCallBack(); break;//挂断
  635. // case "makecall": MakeCallBack(); break;//外呼
  636. // case "setstate": SetState(data); break;//置忙置闲
  637. // //case "saybusy": SayBusyBack(data); break;
  638. // //case "sayfree": SayFreeBack(data); break;
  639. // case "meeting": MeetingBack(); break;//多方通话
  640. // case "transfer": TransferBack(); break;//转移
  641. // case "hold": HoldBack(); break;//保持
  642. // case "retrieve": RetrieveBack(); break;//接回
  643. // case "incoming": IncomingBack(data); break;//来电
  644. // case "subscribe": SubScribeBack(); break;//监测
  645. // case "subscribecancel": SubScribeCancelBack(); break;//停止监测
  646. // case "agentstate": AgentStateBack(data); break;//坐席状态
  647. // case "linestate": LineStateBack(data); break;//线路状态
  648. // case "motorsetstate": SayFreeBack(); break;//班长置闲
  649. // case "linestateagent": LineStateAgentBack(data); break;//线路状态通知
  650. // case "callid": CallIDBack(data); break;//获取callid
  651. // case "recordpath": RecordPathBack(data); break;//录音返回
  652. // }
  653. // }
  654. // else {
  655. // if (rlt == false) {
  656. // //layer.confirm('操作失败!', {
  657. // // btn: ['确定']
  658. // //});
  659. // $(".hwzt").text('操作失败!');
  660. // }
  661. // else {
  662. // $(".hwzt").text(rlt);
  663. // //layer.confirm(rlt, {
  664. // // btn: ['确定']
  665. // //});
  666. // }
  667. // }
  668. // }
  669. // };
  670. // //连接关闭的回调方法
  671. // ws.onclose = function (evt) {
  672. // if (cls == 0) {
  673. // cls = 1;
  674. // //console.log("连接关闭!");
  675. // //layer.confirm('连接关闭!', {
  676. // // btn: ['确定']
  677. // //});
  678. // $(".hwzt").text('连接关闭!');
  679. // $("#top-search li i").removeClass("active");
  680. // reconnect();
  681. // }
  682. // };
  683. // //连接发生错误的回调方法
  684. // ws.onerror = function (evt) {
  685. // //产生异常
  686. // $(".hwzt").text('连接出现异常!');
  687. // console.log(ws);
  688. // if (ws == null || ws.readyState != ws.OPEN) {
  689. // console.log(new Date() + "开始重连");
  690. // reconnect();
  691. // }
  692. // };
  693. // }
  694. // catch (ex) {
  695. // $(".hwzt").text('连接关闭 try-catch!');
  696. // $("#top-search li i").removeClass("active");
  697. // reconnect();
  698. // }
  699. //}
  700. ////重连
  701. //function reconnect() {
  702. // if (lockReconnect) return;
  703. // lockReconnect = true;
  704. // //没连接上会一直重连,设置延迟避免请求过多
  705. // setTimeout(function () {
  706. // console.log(new Date() + " " + "重连中……");
  707. // createWebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
  708. // lockReconnect = false;
  709. // }, 2000);
  710. //}
  711. ////发送
  712. //function Send() {
  713. // if (ws.readyState != ws.OPEN) {
  714. // reconnect();
  715. // }
  716. // if (ws.readyState == ws.OPEN) {
  717. // console.log(new Date() + " send " + JSON.stringify(obj));
  718. // ws.send(JSON.stringify(obj));
  719. // }
  720. //}
  721. ////心跳检测
  722. //var heartCheck = {
  723. // timeout: 25000,//25秒
  724. // timeoutObj: null,
  725. // serverTimeoutObj: null,
  726. // reset: function () {
  727. // clearTimeout(this.timeoutObj);
  728. // clearTimeout(this.serverTimeoutObj);
  729. // return this;
  730. // },
  731. // start: function () {
  732. // var self = this;
  733. // this.timeoutObj = setTimeout(function () {
  734. // //这里发送一个心跳,后端收到后,返回一个心跳消息,
  735. // //onmessage拿到返回的心跳就说明连接正常
  736. // obj.Type = "Heart";
  737. // Send();
  738. // self.serverTimeoutObj = setTimeout(function () {//如果超过一定时间还没重置,说明后端主动断开了
  739. // ws.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
  740. // }, self.timeout)
  741. // }, this.timeout)
  742. // }
  743. //}
  744. ////签入
  745. //function LoginBack() {
  746. // $("#top-search li i").removeClass("active");
  747. // $(".Logout").addClass("active");
  748. // $(".SayBusy").addClass("active");
  749. // $(".MakeCall").addClass("active");
  750. // $(".zxzt").removeClass("br").addClass("bl");
  751. // $(".fwzt").removeClass("br").addClass("bl");
  752. // $(".hwzt").text('');
  753. //}
  754. ////签出
  755. //function LogoutBack() {
  756. // $("#top-search li i").removeClass("active");
  757. // $(".Login").addClass("active");
  758. // $(".zxzt").removeClass("bl").addClass("br");
  759. // $(".fwzt").removeClass("bl").addClass("br");
  760. // $(".hwzt").text('');
  761. //}
  762. ////来电
  763. //function IncomingBack(data) {
  764. // $(".hidTel").val(data.Number);
  765. // $(".tel").text(data.Number);
  766. // $("#zxdh_").val(data.Number);
  767. // $("#tsdh").val(data.Number);
  768. // $(".ldtime").text(getNowFormatDate());
  769. // $(".thsc").text("00:00");
  770. // //获取callid
  771. // $.ajaxSettings.async = false;
  772. // $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetCallIdByPhone', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  773. // $.ajaxSettings.async = true;
  774. // if (result.state.toLowerCase() == "success") {
  775. // $(".hidCallID").val(result.data.CallId);
  776. // }
  777. // })
  778. // //获取电话所属地
  779. // $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetPhoneLocation', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  780. // if (result.state.toLowerCase() == "success") {
  781. // $(".khgsd").text(result.data);
  782. // }
  783. // })
  784. // //获取客户信息
  785. // $(".ldtel").text($(".hidTel").val());
  786. // $("#tsdh").val($(".hidTel").val());
  787. // $(".ldtel1").val($(".hidTel").val());
  788. // $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetCustomerByTel', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  789. // if (result.state.toLowerCase() == "success") {
  790. // if (result.data.length > 0) {
  791. // $("#zxr_").val(result.data[0].F_CustomerName);
  792. // $("#tskh").val(result.data[0].F_CustomerName);
  793. // $("#khid").val(result.data[0].F_CustomerId);
  794. // $(".khbh").val(result.data[0].F_CustomerCode);
  795. // $(".ldtel1").val(result.data[0].F_Telephone);
  796. // $(".ldtel2").val(result.data[0].F_Mobile);
  797. // $(".ldtel3").val(result.data[0].F_ChargeTelephone);
  798. // }
  799. // }
  800. // })
  801. // loadOld();
  802. // $('.maxOpen').trigger("click");
  803. // $('.head-pic .lahei .la-before').show();
  804. // $('.head-pic .lahei .la-after').hide();
  805. // $(".Bacha").hide();
  806. //}
  807. //function CallIDBack(data) {
  808. // //$(".hidCallID").val(data.CurrID);
  809. //}
  810. ////挂断
  811. //function DropCallBack() {
  812. // $("#top-search li i").removeClass("active");
  813. // $(".Logout").addClass("active");
  814. // $(".SayBusy").addClass("active");
  815. // $(".MakeCall").addClass("active");
  816. // $(".td-call").hide();
  817. // //$('.ldtp-con').css("display", 'none');
  818. //}
  819. //function LineStateAgentBack(data) {
  820. // //0分机不可用,1空闲,2摘机等待拨号,3正在拨号,4呼出振铃,5来电振铃,6通话中,7播放忙音中,8移除IP分机,9通话保持中
  821. // if (data.State == '0') {
  822. // $(".hwzt").text('分机不可用');//左下角状态显示
  823. // }
  824. // if (data.State == '1') {
  825. // $(".hwzt").text('空闲');//左下角状态显示
  826. // $(".fwzt").removeClass("br").addClass("bl");
  827. // clearInterval(timer);
  828. // if ($(".hidTel").val() && $(".hidCallID").val()) {
  829. // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateGJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  830. // result = JSON.parse(result);
  831. // if (result.state.toLowerCase() == "success") {
  832. // }
  833. // })
  834. // }
  835. // $("#top-search li i").removeClass("active");
  836. // $(".Logout").addClass("active");
  837. // $(".SayBusy").addClass("active");
  838. // $(".MakeCall").addClass("active");
  839. // $(".td-call").hide();
  840. // $(".Bacha").show();
  841. // //$(".hidTel").val("");
  842. // //$(".hidCallID").val("");
  843. // }
  844. // if (data.State == '2') {
  845. // $(".hwzt").text('摘机等待拨号');//左下角状态显示
  846. // }
  847. // if (data.State == '3') {
  848. // $(".hwzt").text('正在拨号');//左下角状态显示
  849. // }
  850. // if (data.State == '4') {
  851. // $(".hwzt").text('呼出振铃');//左下角状态显示
  852. // }
  853. // if (data.State == '5') {
  854. // $(".hwzt").text('来电振铃');//左下角状态显示
  855. // $(".fwzt").removeClass("bl").addClass("br");
  856. // if ($(".hidTel").val() && $(".hidCallID").val()) {
  857. // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZL', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  858. // result = JSON.parse(result);
  859. // if (result.state.toLowerCase() == "success") {
  860. // }
  861. // })
  862. // }
  863. // }
  864. // if (data.State == '6') {
  865. // $(".hwzt").text('通话中');//左下角状态显示
  866. // $(".fwzt").removeClass("bl").addClass("br");
  867. // if ($(".hidTel").val() && $(".hidCallID").val()) {
  868. // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  869. // result = JSON.parse(result);
  870. // if (result.state.toLowerCase() == "success") {
  871. // }
  872. // })
  873. // }
  874. // $(".td-call").show();
  875. // n = 0;
  876. // $("#top-search li i").removeClass("active");
  877. // $(".DropCall").addClass("active");
  878. // $(".Hold").addClass("active");
  879. // $(".Transfer").addClass("active");
  880. // $(".Meeting").addClass("active");
  881. // clearInterval(timer);
  882. // timer = setInterval(function () {
  883. // n++;
  884. // var m = parseInt(n / 60 % 60);
  885. // var s = parseInt(n % 60);
  886. // $(".thsc").text(toDub(m) + ":" + toDub(s));
  887. // }, 1000);
  888. // }
  889. // if (data.State == '7') {
  890. // $(".hwzt").text('播放忙音中');//左下角状态显示
  891. // }
  892. // if (data.State == '8') {
  893. // $(".hwzt").text('移除IP分机');//左下角状态显示
  894. // }
  895. // if (data.State == '9') {
  896. // $(".hwzt").text('通话保持中');//左下角状态显示
  897. // }
  898. //}
  899. //function toDub(i) {
  900. // return i < 10 ? "0" + i : "" + i;
  901. //}
  902. ////外呼
  903. //function MakeCallBack() {
  904. // $("#top-search li i").removeClass("active");
  905. // $(".DropCall").addClass("active");
  906. //}
  907. ////置忙置闲
  908. //function SetState(obj) {
  909. // if (obj.State == '5') {
  910. // $(".SayBusy").removeClass("active");
  911. // $(".SayFree").addClass("active");
  912. // $(".zxzt").removeClass("bl").addClass("br");
  913. // $(".hwzt").text('置忙');
  914. // }
  915. // if (obj.State == '2') {
  916. // $(".SayBusy").addClass("active");
  917. // $(".SayFree").removeClass("active");
  918. // $(".zxzt").removeClass("br").addClass("bl");
  919. // $(".hwzt").text('空闲');
  920. // }
  921. //}
  922. ////置忙
  923. //function SayBusyBack() {
  924. // $(".SayBusy").removeClass("active");
  925. // $(".SayFree").addClass("active");
  926. //}
  927. ////置闲
  928. //function SayFreeBack() {
  929. // $(".SayBusy").addClass("active");
  930. // $(".SayFree").removeClass("active");
  931. //}
  932. ////多方通话
  933. //function MeetingBack() {
  934. //}
  935. ////转移
  936. //function TransferBack() {
  937. // $("#top-search li i").removeClass("active");
  938. // $(".Logout").addClass("active");
  939. // $(".SayBusy").addClass("active");
  940. // $(".MakeCall").addClass("active");
  941. //}
  942. ////保持
  943. //function HoldBack() {
  944. // $(".Hold").removeClass("active");
  945. // $(".Retrieve").addClass("active");
  946. //}
  947. ////接回
  948. //function RetrieveBack() {
  949. // $(".Hold").addClass("active");
  950. // $(".Retrieve").removeClass("active");
  951. //}
  952. ////监测
  953. //function SubScribeBack() {
  954. // var obj = $("iframe:visible")
  955. // if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  956. // window.frames[obj.attr("name")].Start();
  957. // }
  958. //}
  959. ////取消监测
  960. //function SubScribeCancelBack() {
  961. // var obj = $("iframe:visible")
  962. // if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  963. // window.frames[obj.attr("name")].Stop();
  964. // }
  965. //}
  966. ////班长监测返回状态
  967. ////坐席状态
  968. //function AgentStateBack(data) {
  969. // var obj = $("iframe:visible")
  970. // if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  971. // window.frames[obj.attr("name")].UpdateAgentState(data.AgentID, data.State);
  972. // }
  973. //}
  974. ////线路状态
  975. //function LineStateBack(data) {
  976. // var obj = $("iframe:visible")
  977. // if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  978. // window.frames[obj.attr("name")].UpdateLineState(data.AgentID, data.State);
  979. // }
  980. //}
  981. ////录音返回
  982. //function RecordPathBack(data) {
  983. // //if ($(".hidTel").val() && $(".hidCallID").val()) {
  984. // // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: $(".hidCallID").val(),path:data.RecPath, "token": $.cookie("token") }, function (result) {
  985. // // result = JSON.parse(result);
  986. // // if (result.state.toLowerCase() == "success") {
  987. // // }
  988. // // })
  989. // //}
  990. // if ($(".hidTel").val()) {
  991. // $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: data.CallID, path: data.RecPath, "token": $.cookie("token") }, function (result) {
  992. // result = JSON.parse(result);
  993. // if (result.state.toLowerCase() == "success") {
  994. // }
  995. // })
  996. // }
  997. //}
  998. ////获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
  999. //function getNowFormatDate() {
  1000. // var date = new Date();
  1001. // var seperator1 = "-";
  1002. // var seperator2 = ":";
  1003. // var month = date.getMonth() + 1;
  1004. // var strDate = date.getDate();
  1005. // if (month >= 1 && month <= 9) {
  1006. // month = "0" + month;
  1007. // }
  1008. // if (strDate >= 0 && strDate <= 9) {
  1009. // strDate = "0" + strDate;
  1010. // }
  1011. // var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
  1012. // + " " + date.getHours() + seperator2 + date.getMinutes()
  1013. // + seperator2 + date.getSeconds();
  1014. // return currentdate;
  1015. //}