中鑫之宝5.0前端

main.js 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. 
  2. var ws, heartbeat, n = 0, timer;
  3. var obj = {};
  4. var cls = 0;
  5. var lasttime = new Date().getTime();
  6. heartbeat = setInterval(function () { Heart() }, 60000);
  7. //连接
  8. function Connect() {
  9. try {
  10. ws = new WebSocket("ws://" + huayi.config.socket_ip + ":" + huayi.config.socket_port);
  11. ws.onopen = function () {
  12. console.log("建立连接");
  13. cls = 0;
  14. $(".Login").addClass("active");
  15. lasttime = new Date().getTime();
  16. };
  17. //接收到消息的回调方法
  18. ws.onmessage = function (evt) {
  19. console.log(evt.data);
  20. var data = JSON.parse(evt.data)[0];
  21. if (data) {
  22. var rlt = data.Result;
  23. if (rlt == true) {
  24. var type = data.Type;
  25. switch (type.toLowerCase()) {
  26. case "heart": HeartBack(); break;//心跳
  27. case "login": LoginBack(); break;//签入
  28. case "logout": LogoutBack(); break;//签出
  29. case "dropcall": DropCallBack(); break;//挂断
  30. case "makecall": MakeCallBack(); break;//外呼
  31. case "setstate": SetState(data); break;//置忙置闲
  32. //case "saybusy": SayBusyBack(data); break;
  33. //case "sayfree": SayFreeBack(data); break;
  34. case "meeting": MeetingBack(); break;//多方通话
  35. case "transfer": TransferBack(); break;//转移
  36. case "hold": HoldBack(); break;//保持
  37. case "retrieve": RetrieveBack(); break;//接回
  38. case "incoming": IncomingBack(data); break;//来电
  39. case "subscribe": SubScribeBack(); break;//监测
  40. case "subscribecancel": SubScribeCancelBack(); break;//停止监测
  41. case "agentstate": AgentStateBack(data); break;//坐席状态
  42. case "linestate": LineStateBack(data); break;//线路状态
  43. case "motorsetstate": SayFreeBack(); break;//班长置闲
  44. case "linestateagent": LineStateAgentBack(data); break;//线路状态通知
  45. case "callid": CallIDBack(data); break;//获取callid
  46. case "recordpath": RecordPathBack(data); break;//录音返回
  47. }
  48. }
  49. else {
  50. if (rlt == false) {
  51. layer.confirm('操作失败!', {
  52. btn: ['确定']
  53. });
  54. }
  55. else {
  56. layer.confirm(rlt, {
  57. btn: ['确定']
  58. });
  59. }
  60. }
  61. }
  62. };
  63. //连接关闭的回调方法
  64. ws.onclose = function (evt) {
  65. if (cls == 0) {
  66. cls = 1;
  67. console.log("连接关闭!");
  68. layer.confirm('连接关闭!', {
  69. btn: ['确定']
  70. });
  71. $("#top-search li i").removeClass("active");
  72. }
  73. };
  74. //连接发生错误的回调方法
  75. ws.onerror = function (evt) {
  76. //产生异常
  77. console.log("WebSocketError!");
  78. };
  79. }
  80. catch (ex) {
  81. layer.confirm('连接失败!', {
  82. btn: ['确定']
  83. });
  84. }
  85. }
  86. //发送
  87. function Send() {
  88. if (ws.readyState != ws.OPEN) {
  89. Connect();
  90. }
  91. if (ws.readyState == ws.OPEN) {
  92. ws.send(JSON.stringify(obj));
  93. }
  94. }
  95. //心跳
  96. function Heart() {
  97. if (new Date().getTime() - lasttime > 70000) {
  98. Connect();
  99. }
  100. else {
  101. if (ws.bufferedAmount == 0) {
  102. obj.Type = "Heart";
  103. Send();
  104. }
  105. }
  106. }
  107. function HeartBack() {
  108. lasttime = new Date().getTime();
  109. }
  110. //签入
  111. function LoginBack() {
  112. $("#top-search li i").removeClass("active");
  113. $(".Logout").addClass("active");
  114. $(".SayBusy").addClass("active");
  115. $(".MakeCall").addClass("active");
  116. $(".zxzt").removeClass("lx").removeClass("br");
  117. $(".zxzt").addClass("bl");
  118. }
  119. //签出
  120. function LogoutBack() {
  121. $("#top-search li i").removeClass("active");
  122. $(".Login").addClass("active");
  123. $(".zxzt").removeClass("bl").removeClass("br");
  124. $(".zxzt").addClass("lx");
  125. $(".fwzt").removeClass("bl").removeClass("br");
  126. $(".fwzt").addClass("lx");
  127. }
  128. //来电
  129. function IncomingBack(data) {
  130. $(".hidTel").val(data.Number);
  131. $(".tel").text(data.Number);
  132. $(".ldtime").text(getNowFormatDate());
  133. $(".thsc").text("00:00");
  134. //获取callid
  135. $.ajaxSettings.async = false;
  136. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetCallIdByPhone', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  137. $.ajaxSettings.async = true;
  138. if (result.state.toLowerCase() == "success") {
  139. $(".hidCallID").val(result.data.CallId);
  140. }
  141. })
  142. //获取电话所属地
  143. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetPhoneLocation', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  144. if (result.state.toLowerCase() == "success") {
  145. $(".ldname").text(result.data[0].F_Name);
  146. $(".khgsd").text(result.data[0].F_Name);
  147. }
  148. })
  149. //获取客户信息
  150. $(".ldtel").text($(".hidTel").val());
  151. $("#tsdh").val($(".hidTel").val());
  152. $(".ldtel1").val($(".hidTel").val());
  153. $.getJSON(huayi.config.callcenter_url + 'CallInScreen/GetCustomerByTel', { "tel": $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  154. if (result.state.toLowerCase() == "success") {
  155. if (result.data.length > 0) {
  156. $(".ldname").val(result.data[0].F_CustomerName);
  157. $("#tskh").val(result.data[0].F_CustomerName);
  158. $("#khid").val(result.data[0].F_CustomerId);
  159. $(".khbh").val(result.data[0].F_CustomerCode);
  160. $(".ldtel1").val(result.data[0].F_Telephone);
  161. $(".ldtel2").val(result.data[0].F_Mobile);
  162. $(".ldtel3").val(result.data[0].F_ChargeTelephone);
  163. }
  164. }
  165. })
  166. loadOld();
  167. $('.maxOpen').trigger("click");
  168. $('.head-pic .lahei .la-before').show();
  169. $('.head-pic .lahei .la-after').hide();
  170. $(".Bacha").hide();
  171. }
  172. function CallIDBack(data) {
  173. //$(".hidCallID").val(data.CurrID);
  174. }
  175. //挂断
  176. function DropCallBack() {
  177. $("#top-search li i").removeClass("active");
  178. $(".Logout").addClass("active");
  179. $(".SayBusy").addClass("active");
  180. $(".MakeCall").addClass("active");
  181. $(".td-call").hide();
  182. //$('.ldtp-con').css("display", 'none');
  183. }
  184. function LineStateAgentBack(data) {
  185. if (data.State == '1') {
  186. clearInterval(timer);
  187. if ($(".hidTel").val() && $(".hidCallID").val()) {
  188. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateGJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  189. result = JSON.parse(result);
  190. if (result.state.toLowerCase() == "success") {
  191. }
  192. })
  193. }
  194. $("#top-search li i").removeClass("active");
  195. $(".Logout").addClass("active");
  196. $(".SayBusy").addClass("active");
  197. $(".MakeCall").addClass("active");
  198. $(".td-call").hide();
  199. $(".Bacha").show();
  200. //$(".hidTel").val("");
  201. //$(".hidCallID").val("");
  202. $(".fwzt").removeClass("lx").removeClass("br");
  203. $(".fwzt").addClass("bl");
  204. }
  205. if (data.State == '5') {
  206. if ($(".hidTel").val() && $(".hidCallID").val()) {
  207. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZL', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  208. result = JSON.parse(result);
  209. if (result.state.toLowerCase() == "success") {
  210. }
  211. })
  212. }
  213. }
  214. if (data.State == '6') {
  215. if ($(".hidTel").val() && $(".hidCallID").val()) {
  216. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateZJ', { callid: $(".hidCallID").val(), "token": $.cookie("token") }, function (result) {
  217. result = JSON.parse(result);
  218. if (result.state.toLowerCase() == "success") {
  219. }
  220. })
  221. }
  222. $(".fwzt").removeClass("lx").removeClass("bl");
  223. $(".fwzt").addClass("br");
  224. $(".td-call").show();
  225. n = 0;
  226. $("#top-search li i").removeClass("active");
  227. $(".DropCall").addClass("active");
  228. $(".Hold").addClass("active");
  229. $(".Transfer").addClass("active");
  230. $(".Meeting").addClass("active");
  231. clearInterval(timer);
  232. timer = setInterval(function () {
  233. n++;
  234. var m = parseInt(n / 60 % 60);
  235. var s = parseInt(n % 60);
  236. $(".thsc").text(toDub(m) + ":" + toDub(s));
  237. }, 1000);
  238. }
  239. }
  240. function toDub(i) {
  241. return i < 10 ? "0" + i : "" + i;
  242. }
  243. //外呼
  244. function MakeCallBack() {
  245. $("#top-search li i").removeClass("active");
  246. $(".DropCall").addClass("active");
  247. }
  248. //置忙置闲
  249. function SetState(obj) {
  250. if (obj.State == '5') {
  251. $(".SayBusy").removeClass("active");
  252. $(".SayFree").addClass("active");
  253. $(".zxzt").removeClass("bl").removeClass("lx");
  254. $(".zxzt").addClass("br");
  255. }
  256. if (obj.State == '2') {
  257. $(".SayBusy").addClass("active");
  258. $(".SayFree").removeClass("active");
  259. $(".zxzt").removeClass("lx").removeClass("br");
  260. $(".zxzt").addClass("bl");
  261. }
  262. }
  263. //置忙
  264. function SayBusyBack() {
  265. $(".SayBusy").removeClass("active");
  266. $(".SayFree").addClass("active");
  267. }
  268. //置闲
  269. function SayFreeBack() {
  270. $(".SayBusy").addClass("active");
  271. $(".SayFree").removeClass("active");
  272. }
  273. //多方通话
  274. function MeetingBack() {
  275. }
  276. //转移
  277. function TransferBack() {
  278. $("#top-search li i").removeClass("active");
  279. $(".Logout").addClass("active");
  280. $(".SayBusy").addClass("active");
  281. $(".MakeCall").addClass("active");
  282. }
  283. //保持
  284. function HoldBack() {
  285. $(".Hold").removeClass("active");
  286. $(".Retrieve").addClass("active");
  287. }
  288. //接回
  289. function RetrieveBack() {
  290. $(".Hold").addClass("active");
  291. $(".Retrieve").removeClass("active");
  292. }
  293. //监测
  294. function SubScribeBack() {
  295. var obj = $("iframe:visible")
  296. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  297. window.frames[obj.attr("name")].Start();
  298. }
  299. }
  300. //取消监测
  301. function SubScribeCancelBack() {
  302. var obj = $("iframe:visible")
  303. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  304. window.frames[obj.attr("name")].Stop();
  305. }
  306. }
  307. //班长监测返回状态
  308. //坐席状态
  309. function AgentStateBack(data) {
  310. var obj = $("iframe:visible")
  311. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  312. window.frames[obj.attr("name")].UpdateAgentState(data.AgentID, data.State);
  313. }
  314. }
  315. //线路状态
  316. function LineStateBack(data) {
  317. var obj = $("iframe:visible")
  318. if (obj.attr("data-id") == "./TelCall/SeatMonitor.html") {
  319. window.frames[obj.attr("name")].UpdateLineState(data.AgentID, data.State);
  320. }
  321. }
  322. //录音返回
  323. function RecordPathBack(data) {
  324. if ($(".hidTel").val() && $(".hidCallID").val()) {
  325. $.post(huayi.config.callcenter_url + 'CallInScreen/UpdateLY', { callid: $(".hidCallID").val(),path:data.RecPath, "token": $.cookie("token") }, function (result) {
  326. result = JSON.parse(result);
  327. if (result.state.toLowerCase() == "success") {
  328. }
  329. })
  330. }
  331. }
  332. //获取当前的日期时间 格式“yyyy-MM-dd HH:mm:ss”
  333. function getNowFormatDate() {
  334. var date = new Date();
  335. var seperator1 = "-";
  336. var seperator2 = ":";
  337. var month = date.getMonth() + 1;
  338. var strDate = date.getDate();
  339. if (month >= 1 && month <= 9) {
  340. month = "0" + month;
  341. }
  342. if (strDate >= 0 && strDate <= 9) {
  343. strDate = "0" + strDate;
  344. }
  345. var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
  346. + " " + date.getHours() + seperator2 + date.getMinutes()
  347. + seperator2 + date.getSeconds();
  348. return currentdate;
  349. }
  350. //来电弹屏
  351. laydate.skin('molv');
  352. //laydate({
  353. // elem: '#startTime',
  354. // event: 'focus'
  355. //});
  356. //laydate({
  357. // elem: '#endTime',
  358. // event: 'focus'
  359. //});
  360. //laydate({
  361. // elem: '#bx_startTime',
  362. // event: 'focus'
  363. //});
  364. //laydate({
  365. // elem: '#bx_endTime',
  366. // event: 'focus'
  367. //});
  368. laydate({
  369. elem: '#old_startTime',
  370. event: 'focus'
  371. });
  372. laydate({
  373. elem: '#old_endTime',
  374. event: 'focus'
  375. });
  376. laydate({
  377. elem: '#con_startTime',
  378. event: 'focus'
  379. });
  380. laydate({
  381. elem: '#con_endTime',
  382. event: 'focus'
  383. });
  384. //弹屏右侧切换效果
  385. $(".ldtp-cr ul.ld-service li").click(function() {
  386. $(this).addClass("cr-click").siblings().removeClass("cr-click");
  387. //var inedx = $(this).index();
  388. //console.log(inedx);
  389. //var indexCon = $('.ld-sercon>div').eq(inedx);
  390. //indexCon.show();
  391. //indexCon.siblings().hide();
  392. //indexCon.find('.ld-sercon-con').show();
  393. //indexCon.find('.second-con').hide();
  394. //indexCon.find('.addjl').click(function() {
  395. // var par = $(this).parent().parent();
  396. // par.hide().siblings().show();
  397. //})
  398. loadOld();
  399. });
  400. $('.pre-add').click(function() {
  401. var par = $(this).parent().parent();
  402. par.hide().siblings().show();
  403. })
  404. //最大化 最小化效果
  405. //最小化
  406. $('.minClosed').click(function () {
  407. $('.ldtp-con').removeClass('fadeInDown');
  408. $('.ldtp-con').addClass('fadeOutUp');
  409. $('.ldtp-con').css("display", "none");
  410. $('.maxOpen').show();
  411. $('.maxOpen').addClass('fadeInDown');
  412. });
  413. //最大化
  414. $('.maxOpen').click(function() {
  415. $('.ldtp-con').removeClass('fadeOutUp');
  416. $('.ldtp-con').addClass('fadeInDown');
  417. $('.ldtp-con').css("display","block");
  418. $('.maxOpen').hide();
  419. $('.maxOpen').removeClass('fadeInDown');
  420. $('.maxOpen').addClass('fadeInDown');
  421. $('.first').removeClass('first');
  422. $('.ldtp-con').addClass('first');
  423. })
  424. //关闭弹框
  425. $(".Bacha").click(function () {
  426. $('.ldtp-con').removeClass('fadeInDown');
  427. $('.ldtp-con').addClass('fadeOutUp');
  428. $('.ldtp-con').css("display", "none");
  429. obj.Type = "SayFree";
  430. Send();
  431. })
  432. //顶部小头像
  433. var little_pic = $('.head-pic .hp-box img').attr("src");
  434. //console.log(little_pic);
  435. $('.maxOpen li .photo img').attr("src", little_pic);
  436. //$('.ldtp-cr').scroll(function() {
  437. // var scheit = $('.ldtp-cr').scrollTop();
  438. // //console.log(scheit);
  439. // if (scheit > 10) {
  440. // $('.minClosed').css({
  441. // 'background': '#000',
  442. // 'top': '13px',
  443. // 'right': '15px'
  444. // });
  445. // $('.minClosed a').css('background', '#fff');
  446. // } else {
  447. // $('.minClosed').css({
  448. // 'background': '',
  449. // 'top': '0',
  450. // 'right': '80px'
  451. // }) ;
  452. // $('.minClosed a').css('background', '#000');
  453. // }
  454. //})
  455. //点击左侧菜单来电弹屏显示
  456. $('.tantan').click(function () {
  457. $('.maxOpen').trigger("click");
  458. $('.head-pic .lahei .la-before').show();
  459. $('.head-pic .lahei .la-after').hide();
  460. loadOld();
  461. })
  462. //点击挂断
  463. $('.head-pic .td-call .take').click(function() {
  464. //$('.ldtp-con').css("display", 'none');
  465. obj.Type = "DropCall";
  466. Send();
  467. }) ;
  468. //点击拉黑事件
  469. $('.head-pic .lahei .la-before').click(function () {
  470. if (!$(".hidTel").val()) {
  471. layer.confirm('来电号码为空!', {
  472. btn: ['确定']
  473. });
  474. return;
  475. }
  476. $("#time-word").val('');
  477. $('.ldtp-con .hei-list').show();
  478. //$('.ldtp-con .hei-list').removeClass('bounceOutUp');
  479. //$('.ldtp-con .hei-list').addClass('bounceIn');
  480. })
  481. //拉黑输入框事件
  482. $('.hei-list .bacha').click(function(){
  483. //$('.ldtp-con .hei-list').removeClass('bounceIn');
  484. //$('.ldtp-con .hei-list').addClass('bounceOutUp');
  485. $('.ldtp-con .hei-list').hide();
  486. $("#time-word").val('');
  487. })
  488. var reg = /^\+?[1-9][0-9]*$/;
  489. $('#bc').click(function () {
  490. var n = $("#time-word").val();
  491. var val = $("input[name='time']:checked").val();
  492. if (n) {
  493. if (!(reg.test(n))) {
  494. layer.confirm('请输入整数时间!', {
  495. btn: ['确定']
  496. });
  497. return;
  498. }
  499. }
  500. else {
  501. if (val == '4') {
  502. n = 0;
  503. }
  504. else {
  505. layer.confirm('请输入整数时间!', {
  506. btn: ['确定']
  507. });
  508. return;
  509. }
  510. }
  511. $.post(huayi.config.callcenter_url+'CallInScreen/AddBlack',{tel: $(".hidTel").val(), num: n, type: val,"token": $.cookie("token")}, function (result) {
  512. result = $.parseJSON(result);
  513. if (result.state.toLowerCase() == "success") {
  514. layer.msg("拉入黑名单成功");
  515. $('.la-shichang .blackTime').html(result.data);
  516. //$('.ldtp-con .hei-list').removeClass('bounceIn');
  517. //$('.ldtp-con .hei-list').addClass('bounceOutUp');
  518. $('.ldtp-con .hei-list').hide();
  519. $('.head-pic .lahei .la-before').hide();
  520. $('.head-pic .lahei .la-after').show();
  521. $('.head-pic .lahei .retur').show();
  522. }
  523. })
  524. })
  525. $('.la-after').click(function () {
  526. if (!$(".hidTel").val()) {
  527. layer.confirm('来电号码为空!', {
  528. btn: ['确定']
  529. });
  530. return;
  531. }
  532. $("#time-word").val('');
  533. $('.ldtp-con .hei-list').show();
  534. $('.ldtp-con .hei-list').removeClass('bounceOutUp');
  535. $('.ldtp-con .hei-list').addClass('bounceIn');
  536. })
  537. $('.head-pic .lahei .retur').click(function () {
  538. $.getJSON(huayi.config.callcenter_url+'CallInScreen/DelBlack', { tel: $(".hidTel").val(), "token": $.cookie("token") }, function (result) {
  539. if (result.state.toLowerCase() == "success") {
  540. layer.msg("取消黑名单成功");
  541. $('.head-pic .lahei .retur').hide();
  542. $('.head-pic .lahei .la-after').hide();
  543. $('.head-pic .lahei .la-before').show();
  544. }
  545. })
  546. })