Sin descripción

main.js 37KB

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