IM12345_Web demo - 代码源于 商丘市12345项目

chat.js 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. var wst, objs = {}, lockReconnect = false;
  2. function CreateWebSockets() {
  3. try {
  4. // $("#conn").attr("disabled", "disabled");
  5. Connects();
  6. } catch (e) {
  7. ReConnect();
  8. }
  9. }
  10. //连接
  11. function Connects() {
  12. // ws = new WebSocket("ws://192.168.4.18:4006");
  13. // ws = new WebSocket("ws://192.168.1.21:2021");
  14. wst = new WebSocket("ws://192.168.8.10:2022");
  15. wst.onopen = function () {
  16. console.log(new Date() + " " + "建立连接");
  17. // $("#conn").removeAttr("disabled");
  18. var userCode = $.cookie("zx_user");
  19. Conn(userCode); //注册
  20. lockReconnect = false;
  21. };
  22. //接收到消息的回调方法
  23. wst.onmessage = function (evt) {
  24. console.log(new Date() + " receive " + evt.data);
  25. var data = JSON.parse(evt.data);
  26. if (data) {
  27. var ele = $("#" + data.code).find(".chatlist_con")[0];
  28. var type = data.action;
  29. switch (type.toLowerCase()) {
  30. case "serconn":
  31. if (!data.state) {
  32. $(".error").text(data.msg);
  33. }
  34. else {
  35. $(".sidebar_list").empty();//sidebar
  36. $(".chat_main").empty();
  37. }
  38. break;
  39. case "sersend":
  40. if (data.state) {
  41. append(ele, "self", data.msg, data.code, data.time, data.humanclass);
  42. $("#" + data.code).find(".send_content").val("");
  43. }
  44. else {
  45. notice(ele, "notice", data.msg);
  46. }
  47. break
  48. //case "sersenderror":
  49. // append("notice", data.msg);
  50. // break
  51. case "serreceive":
  52. if (!ele) {
  53. $('.before').show();
  54. var first = '';
  55. if (!$(".sidebar_list li").length) {
  56. first = 'activess';
  57. }
  58. // var userhtml = '<span class="user ' + first + '" code="' + data.code + '">' + data.name + '</span>';
  59. var userhtml = '<li class="user ' + first + ' li' + data.code + '" code="' + data.code + '">' +
  60. '<img class="ver_middle" src="img/youkeTx.png" alt="" width="30" height="30"/>' +
  61. '<p class="chat_name">' + data.name + '</p>' +
  62. '<i class="fa fa-circle pie" style="color:red;"></i>' +
  63. '<i class="fa fa-remove closeds" onclick="removed(this)"></i>' +
  64. '</li>';
  65. $(userhtml).appendTo(".sidebar_list").click(function () {
  66. $(".user").removeClass("activess");
  67. // $(this).siblings('li').removeClass("actives");
  68. $(this).addClass("activess");
  69. $(this).find('.pie').removeClass('pieShow').addClass('pieHide');
  70. $('.open_chat').find('.before').removeClass('show').addClass('hide');
  71. $(".tabMain").removeClass("activess");
  72. $("#" + $(this).attr("code")).addClass("activess");
  73. var conul = $("#" + $(this).attr("code")).find(".chatlist_con");
  74. $(conul).scrollTop($(conul)[0].scrollHeight);
  75. });
  76. var tabhtml = '<div class="tabMain ' + first + '" id="' + data.code + '">' +
  77. '<div class="main_message">' +
  78. '<ul class="chatlist_con">' +
  79. '<a href="javascript:void(0)" class="more" onclick="getmore(\'' + data.code + '\')"><i class="fa fa-clock-o" style="margin-right: 5px;"></i>查看更多信息</a>' +
  80. '<input type="hidden" class="hidnum" />' +
  81. '</ul>' +
  82. '</div>' +
  83. '<div class="main_sendMessage ">' +
  84. '<textarea name=" " rows=" " cols=" " onkeypress="keySend(event)" placeholder="按Enter 发送 " class="send_content "></textarea>' +
  85. '<input type="hidden" class="hidcid" value="' + data.code + '" />' +
  86. '<div class="send_btn ">' +
  87. '<button class="sendTo " onclick="sendinfo(\'' + data.code + '\') ">发送(S)</button>' +
  88. '<span style="color:red; " class="senderror"></span>' +
  89. '</div>' +
  90. '</div>' +
  91. '</div>';
  92. $(".chat_main").append($(tabhtml));
  93. ele = $("#" + data.code).find(".chatlist_con")[0];
  94. objs.action = "loglist";
  95. objs.code = data.code;
  96. Sends();
  97. }
  98. if (!data.state) {
  99. notice(ele, "notice", data.msg);
  100. }
  101. else {
  102. append(ele, "left", data.msg, data.code, data.time, data.humanclass);
  103. }
  104. break; //收到消息
  105. case "loglist":
  106. var list = data.data.rows;
  107. $(list).each(function (i, n) {
  108. var classname = "self";
  109. if (n.F_FromUser == data.code) {
  110. classname = "left";
  111. }
  112. insert(ele, classname, n.F_Message, $("#" + data.code).find(".hidnum").val(), n.F_HumanClass);
  113. })
  114. if (!data.data.isfirst) {
  115. $(ele).find(".more").css("display", "block");
  116. $("#" + data.code).find(".hidnum").val(data.data.num);
  117. }
  118. else {
  119. $(ele).find(".more").css("display", "none");
  120. }
  121. break;//聊天记录
  122. }
  123. }
  124. };
  125. //连接关闭的回调方法
  126. wst.onclose = function (evt) {
  127. console.log(new Date() + " " + "连接关闭");
  128. console.log(new Date() + " " + "开始重连");
  129. ReConnect();
  130. };
  131. //连接发生错误的回调方法
  132. wst.onerror = function (evt) {
  133. console.log(new Date() + " " + "连接异常");
  134. console.log(new Date() + " " + "开始重连");
  135. ReConnect();
  136. };
  137. }
  138. //重连
  139. function ReConnect() {
  140. if (!lockReconnect) {
  141. lockReconnect = true;
  142. //没连接上会一直重连,设置延迟避免请求过多
  143. setTimeout(function () {
  144. console.log(new Date() + " " + "重连中……");
  145. lockReconnect = false;
  146. CreateWebSockets();
  147. }, 2000);
  148. }
  149. }
  150. //发送
  151. function Sends() {
  152. if (wst.readyState != wst.OPEN) {
  153. ReConnect();
  154. }
  155. if (wst.readyState == wst.OPEN) {
  156. console.log(new Date() + " send " + JSON.stringify(objs));
  157. wst.send(JSON.stringify(objs));
  158. }
  159. }
  160. //注册
  161. function Conn(userCode) {
  162. console.log(userCode);
  163. objs.action = "serconn";
  164. objs.code = userCode;
  165. Sends();
  166. }
  167. //查看更多
  168. function getmore(ele) {
  169. objs.action = "loglist";
  170. objs.code = $("#" + ele).find(".hidcid").val();
  171. objs.msg = $("#" + ele).find(".hidnum").val();
  172. Sends();
  173. }
  174. //发送消息
  175. function sendinfo(ele) {
  176. var msg = $("#" + ele).find(".send_content").val();
  177. if ($.trim(msg)) {
  178. objs.action = "sersend";
  179. objs.code = $("#" + ele).find(".hidcid").val();
  180. objs.msg = msg;
  181. Sends();
  182. $("#" + ele).find(".senderror").text("");
  183. }
  184. else {
  185. $("#" + ele).find(".send_content").val('');
  186. $("#" + ele).find(".senderror").text("请输入内容");
  187. }
  188. }
  189. function append(ele, cname, msg, codes, dates, humanclass) {
  190. var html = '<li>' +
  191. '<p class="message_time"><span>' + dates + '</span></p>' +
  192. '<div class="message_mincon ' + cname + '">'
  193. if (humanclass) {
  194. if (humanclass == 1)
  195. html += '<img class="ver_middle chat_yhtx" src="img/kefuTx.png" alt="" width="30" height="30" />'
  196. else if (humanclass == 2)
  197. html += '<img class="ver_middle chat_yhtx" src="img/youkeTx.png" alt="" width="30" height="30" />'
  198. else
  199. html += '<img class="ver_middle chat_yhtx" src="img/robot.png" alt="" width="30" height="30" />'
  200. }
  201. else {
  202. if (cname == 'self') {
  203. html += '<img class="ver_middle" src="img/kefuTx.png" alt="" width="30" height="30"/>'
  204. } else {
  205. html += '<img class="ver_middle" src="img/youkeTx.png" alt="" width="30" height="30"/>'
  206. }
  207. }
  208. html += '<div class="message_text">' + msg + '</div>' +
  209. '</div>' +
  210. '</li>'
  211. $(html).appendTo(ele);
  212. $(ele).scrollTop($(ele)[0].scrollHeight);
  213. $('.li' + codes).find('.pie').removeClass('pieHide').addClass('pieShow');
  214. $('.open_chat').find('.before').removeClass('hide').addClass('show');
  215. }
  216. function insert(ele, cname, msg, nodown, humanclass) {
  217. var html = '<li>' +
  218. // '<p class="message_time"><span>' + n.CreateDate + '</span></p>' +
  219. '<div class="message_mincon ' + cname + '">'
  220. if (humanclass) {
  221. if (humanclass == 1)
  222. html += '<img class="ver_middle chat_yhtx" src="img/kefuTx.png" alt="" width="30" height="30" />'
  223. else if (humanclass == 2)
  224. html += '<img class="ver_middle chat_yhtx" src="img/youkeTx.png" alt="" width="30" height="30" />'
  225. else
  226. html += '<img class="ver_middle chat_yhtx" src="img/robot.png" alt="" width="30" height="30" />'
  227. }
  228. else {
  229. if (cname == 'self') {
  230. html += '<img class="ver_middle chat_yhtx" src="img/kefuTx.png" alt="" width="30" height="30" />'
  231. } else {
  232. html += '<img class="ver_middle" src="img/youkeTx.png" alt="" width="30" height="30"/>'
  233. }
  234. }
  235. html += '<div class="message_text">' + msg + '</div>' +
  236. '</div>' +
  237. '</li>'
  238. var list = $(ele).find("li");
  239. if (list.length) {
  240. $(html).insertBefore(list[0]);
  241. }
  242. else {
  243. $(html).appendTo(ele);
  244. }
  245. if (!nodown) {
  246. $(ele).scrollTop($(ele)[0].scrollHeight);
  247. }
  248. }
  249. function notice(ele, cname, msg) {
  250. var html = '<li><span class="' + cname + '">' + msg + '</span></li>';
  251. $(html).appendTo(ele);
  252. $(ele).scrollTop($(ele)[0].scrollHeight);
  253. }
  254. // //键盘发送事件
  255. function keySend(event) {
  256. event = event || window.event;
  257. if (event.keyCode == 13) {
  258. $(".sendTo").click();
  259. event.returnValue = false;
  260. return false
  261. }
  262. }
  263. function removed(ele) {
  264. var code = $(ele).parent().attr('code');
  265. $(".user").removeClass("activess");
  266. $("#" + code).remove();
  267. $(ele).parent().remove();
  268. $(ele).parent().parent();
  269. showChat();
  270. }
  271. function showChat() {
  272. $('.sidebar_list').children("li:first-child").addClass("activess");
  273. $('.chat_main').children(".tabMain:first-child").addClass("activess");
  274. }
  275. $('.open_chat').click(function () {
  276. if ($('#chat').css('display') == 'block') {
  277. $('#chat').hide();
  278. } else {
  279. $('#chat').show();
  280. $(".send_content").focus();
  281. }
  282. })
  283. //聊天右侧列表开始
  284. //弹屏右侧切换效果
  285. $(".chat_ld-service li").click(function () {
  286. $(this).addClass("chat_cr-click").siblings().removeClass("chat_cr-click");
  287. var index = $(this).index();
  288. var ss = $(this).attr("itemtype");
  289. $(".chat_Content_box").find(".chat_complain").eq(index).addClass("chat_Shows").siblings().removeClass("chat_Shows");
  290. $(".chat_Content_box").find(".chat_complain").eq(index).find("input").focus();
  291. });
  292. //聊天右侧列表结束
  293. //获取快速回复
  294. quick_answer();
  295. //知识库列表
  296. knowledge_answer();
  297. //工单搜索
  298. workorder_answer();
  299. //客户档案搜索
  300. customer_answer();
  301. //快速回复搜索
  302. $('.Seach_answer').on('click', function () {
  303. quick_answer();
  304. })
  305. //知识库搜索
  306. $('.Seach_knowledge').on('click', function () {
  307. knowledge_answer();
  308. })
  309. //工单搜索
  310. $('.Seach_workorder').on('click', function () {
  311. workorder_answer();
  312. })
  313. //客户档案搜索
  314. $('.Seach_customer').on('click', function () {
  315. customer_answer();
  316. })
  317. //快速回复
  318. function quick_answer() {
  319. $('.quick_answer').empty();
  320. $.ajax({
  321. type: "get",
  322. url: huayi.config.callcenter_url + "ChatMessages/GetReplyList",
  323. dataType: 'json',
  324. async: false,
  325. data: {
  326. keyword: $('#key_answer').val(),
  327. page: 1, //当前第几页
  328. pagesize: 20, //每页显示的记录数
  329. token: $.cookie("token")
  330. },
  331. success: function (data) {
  332. $.each(data.rows, function (i, n) {
  333. var collection_imgurl = n.IsCollection == true ? "./img/collection_active.png" : "./img/collection.png";
  334. $('<li class="chat_item">' +
  335. '<span class="answer_text" title="' + n.F_ReplyContent + '">' + GetLimitStr(n.F_ReplyContent, 68) + '<div>' +
  336. '<button type="button" class="btn btn-primary btn-sm" onclick=sendMsg("' + n.F_ReplyContent + '",' + n.F_Id + ')>发送</button> ' +
  337. '<img onclick="collection_img(' + n.F_Id + ')" src="' + collection_imgurl + '"/>' +
  338. '</div></span></li>').appendTo($('.quick_answer'));
  339. });
  340. // 搜索关键词高亮显示
  341. GetReplaceKey(data.keys, document.getElementById('quick_answer').innerHTML, "quick_answer");
  342. }
  343. });
  344. }
  345. //知识库列表
  346. function knowledge_answer() {
  347. $('.knowledge_anwser').empty();
  348. $.ajax({
  349. type: "get",
  350. url: huayi.config.callcenter_url + "ChatMessages/GetKnowledgeList",
  351. dataType: 'json',
  352. async: true,
  353. data: {
  354. keyword: $('#key_knowledge').val(),
  355. page: 1, //当前第几页
  356. pagesize: 20, //每页显示的记录数
  357. token: $.cookie("token")
  358. },
  359. success: function (data) {
  360. $.each(data.rows, function (i, n) {
  361. var collection_imgurl = n.IsCollection == true ? "./img/collection_active.png" : "./img/collection.png";
  362. $('<div class="knowledge_title">' + n.F_Title + '</div>' +
  363. '<li class="chat_item">' +
  364. '<span class="answer_text" title="' + GetLimitStr(n.F_Content, 200) + '">' + GetLimitStr(n.F_Content, 68) + '<div>' + //n.F_Description
  365. '<button type="button" class="btn btn-primary btn-sm" onclick=sendKnowledgeMsg("' + GetLimitStr(n.F_Content, 1000) + '",' + n.F_RepositoryId + ')>发送</button> ' +
  366. '<img id="collectionimg" itemcollection = ' + n.F_RepositoryId + ' src="' + collection_imgurl + '"/>' +
  367. '</div></span></li>').appendTo($('.knowledge_anwser'));
  368. });
  369. // 搜索关键词高亮显示
  370. GetReplaceKey(data.keys, document.getElementById('knowledge_anwser').innerHTML, "knowledge_anwser");
  371. }
  372. });
  373. }
  374. //工单列表
  375. function workorder_answer() {
  376. $('.workorder_anwser').empty();
  377. $.ajax({
  378. type: "get",
  379. url: huayi.config.callcenter_url + "ChatMessages/GetWorkOrderList",
  380. dataType: 'json',
  381. async: true,
  382. data: {
  383. keyword: $('#key_workorder').val(),
  384. page: 1, //当前第几页
  385. pagesize: 20, //每页显示的记录数
  386. token: $.cookie("token")
  387. },
  388. success: function (data) {
  389. $.each(data.rows, function (i, n) {
  390. //var collection_imgurl = n.IsCollection == true ? "./img/collection_active.png" : "./img/collection.png";
  391. $('<div class="knowledge_title">' + n.F_WorkOrderId + '&nbsp;' + n.F_ComTitle + '【' + States(n.F_WorkState, n.F_IsReturn) + '】</div>' +
  392. '<li class="chat_item">' +
  393. '<span class="answer_text" title="' + GetLimitStr(n.F_ComContent, 200) + '">' + GetLimitStr(n.F_ComContent, 68) + '<div>' + //n.F_Description
  394. '<button type="button" class="btn btn-primary btn-sm" onclick=sendworkorderMsg("' + n.F_WorkOrderId + '&nbsp;' + n.F_ComTitle + '【' + States(n.F_WorkState, n.F_IsReturn) + '】&nbsp;内容:' + GetLimitStr(n.F_ComContent, 1000) + '",' + n.F_WorkOrderId + ')>发送</button> ' +
  395. //'<img id="collectionimg" itemcollection = ' + n.F_WorkOrderId + ' src="' + collection_imgurl + '"/>' +
  396. '</div></span></li>').appendTo($('.workorder_anwser'));
  397. });
  398. // 搜索关键词高亮显示
  399. GetReplaceKey(data.keys, document.getElementById('workorder_anwser').innerHTML, "workorder_anwser");
  400. }
  401. });
  402. }
  403. //客户档案列表
  404. function customer_answer() {
  405. $('.customer_anwser').empty();
  406. $.ajax({
  407. type: "get",
  408. url: huayi.config.callcenter_url + "ChatMessages/GetCustomerList",
  409. dataType: 'json',
  410. async: true,
  411. data: {
  412. keyword: $('#key_workorder').val(),
  413. page: 1, //当前第几页
  414. pagesize: 20, //每页显示的记录数
  415. token: $.cookie("token")
  416. },
  417. success: function (data) {
  418. $.each(data.rows, function (i, n) {
  419. $('<div class="knowledge_title">' + n.F_CustomerName + '</div>' +
  420. '<li class="chat_item">' +
  421. '<span class="answer_text" title="客户电话:' + n.F_Mobile + ' ' + n.F_CustomerEName + ' 联系电话:' + n.F_Telephone + '">客户电话:' + n.F_Mobile + ' ' + n.F_CustomerEName + ' 联系电话:' + n.F_Telephone + '<div>' + //n.F_Description
  422. '<button type="button" class="btn btn-primary btn-sm" onclick=sendcustomerMsg("' + n.F_CustomerName + '&nbsp;客户电话:' + n.F_Mobile + '&nbsp;' + n.F_CustomerEName + '&nbsp;联系电话:' + n.F_Telephone + '",' + n.F_CustomerId + ')>发送</button> ' +
  423. '</div></span></li>').appendTo($('.customer_anwser'));
  424. });
  425. // 搜索关键词高亮显示
  426. GetReplaceKey(data.keys, document.getElementById('customer_anwser').innerHTML, "customer_anwser");
  427. }
  428. });
  429. }
  430. //状态
  431. function States(WorkState, IsReturn) {
  432. var html = '';
  433. switch (WorkState + '') {
  434. case '0':
  435. html = '新工单';
  436. if (IsReturn == 1) {
  437. html = '新工单(回退)';
  438. }
  439. break;
  440. case '1':
  441. html = '待交办';
  442. break;
  443. case '2':
  444. html = '待查收';
  445. break;
  446. case '3':
  447. html = '退回审核中';
  448. break;
  449. case '4':
  450. html = '办理中';
  451. break;
  452. case '5':
  453. html = '延时审核';
  454. break;
  455. case '6':
  456. html = '已办理';
  457. break;
  458. case '7':
  459. html = '已回访';
  460. break;
  461. case '8':
  462. html = '重办中';
  463. break;
  464. case '9':
  465. html = '已结案';
  466. break;
  467. case '10':
  468. html = '待审核';
  469. break;
  470. case '11':
  471. html = '重办待交办';
  472. break;
  473. // case '12':
  474. // html = '待审核';
  475. // break;
  476. case '13':
  477. html = '重办驳回';
  478. break;
  479. }
  480. return html;
  481. }
  482. // IM在线客服 - 键盘发送事件
  483. $('.inputkeyword').bind('keypress', function (event) {
  484. if (event.keyCode == "13") {
  485. var id = $(this).attr("id");
  486. if (id == "key_answer")
  487. $(".Seach_answer").click();
  488. else if (id == "key_knowledge")
  489. $(".Seach_knowledge").click();
  490. else if (id == "key_workorder")
  491. $(".Seach_workorder").click();
  492. else
  493. $(".Seach_customer").click();
  494. }
  495. })
  496. // 发送 - 快速回复
  497. function sendMsg(msg, id) {
  498. $.ajax({
  499. type: "post",
  500. url: huayi.config.callcenter_url + "ChatMessages/SendReply",
  501. async: true,
  502. data: {
  503. id: id,
  504. token: $.cookie('token')
  505. },
  506. success: function (result) {
  507. var result = $.parseJSON(result)
  508. if (result.state == 'success') {
  509. layer.msg(result.message);
  510. }
  511. }
  512. });
  513. objs.action = "sersend";
  514. // objs.code = $("#" + ele).find(".hidcid").val();
  515. objs.msg = msg;
  516. Sends();
  517. }
  518. // 收藏 - 快速恢复
  519. function collection_img(id) {
  520. $.ajax({
  521. type: "post",
  522. url: huayi.config.callcenter_url + "ChatMessages/CollectionReply",
  523. async: true,
  524. data: {
  525. id: id,
  526. token: $.cookie('token')
  527. },
  528. success: function (result) {
  529. var result = $.parseJSON(result)
  530. if (result.state == 'success') {
  531. quick_answer();
  532. layer.msg(result.message);
  533. }
  534. }
  535. });
  536. }
  537. // 发送 - 快速回复
  538. function sendKnowledgeMsg(msg, id) {
  539. $.ajax({
  540. type: "post",
  541. url: huayi.config.callcenter_url + "ChatMessages/SendKnowledge",
  542. async: true,
  543. data: {
  544. id: id,
  545. token: $.cookie('token')
  546. },
  547. success: function (result) {
  548. var result = $.parseJSON(result)
  549. if (result.state == 'success') {
  550. layer.msg(result.message);
  551. }
  552. }
  553. });
  554. objs.action = "sersend";
  555. // objs.code = $("#" + ele).find(".hidcid").val();
  556. objs.msg = msg;
  557. Sends();
  558. }
  559. // 收藏 - 知识库
  560. $('#knowledge_anwser').on('click', "li span div img", function () {
  561. var collection_act_url = "./img/collection_active.png";
  562. var collection_url = "./img/collection.png";
  563. var id = $(this).attr("itemcollection");
  564. var src = $(this).attr("src");
  565. var b = false; var reg = "";
  566. $.ajax({
  567. type: "post",
  568. url: huayi.config.callcenter_url + "ChatMessages/CollectionKnowledge",
  569. async: false,
  570. data: {
  571. id: id,
  572. token: $.cookie('token')
  573. },
  574. success: function (result) {
  575. var result = $.parseJSON(result)
  576. if (result.state == 'success') {
  577. //knowledge_answer(); //注释掉原因 - 操作成功后列表刷新闪动厉害
  578. b = true;
  579. reg = result.message;
  580. }
  581. }
  582. });
  583. if(b){
  584. if (src == collection_act_url) {
  585. $(this).attr("src", collection_url);
  586. } else {
  587. $(this).attr("src", collection_act_url);
  588. }
  589. layer.msg(reg);
  590. }
  591. })
  592. // 发送 - 工单
  593. function sendworkorderMsg(msg, id) {
  594. $.ajax({
  595. type: "post",
  596. url: huayi.config.callcenter_url + "ChatMessages/SendWorkOrder",
  597. async: true,
  598. data: {
  599. id: id,
  600. token: $.cookie('token')
  601. },
  602. success: function (result) {
  603. var result = $.parseJSON(result)
  604. if (result.state == 'success') {
  605. layer.msg(result.message);
  606. }
  607. }
  608. });
  609. objs.action = "sersend";
  610. // objs.code = $("#" + ele).find(".hidcid").val();
  611. objs.msg = msg;
  612. Sends();
  613. }
  614. // 发送 - 客户档案
  615. function sendcustomerMsg(msg, id) {
  616. $.ajax({
  617. type: "post",
  618. url: huayi.config.callcenter_url + "ChatMessages/SendCustomer",
  619. async: true,
  620. data: {
  621. id: id,
  622. token: $.cookie('token')
  623. },
  624. success: function (result) {
  625. var result = $.parseJSON(result)
  626. if (result.state == 'success') {
  627. layer.msg(result.message);
  628. }
  629. }
  630. });
  631. objs.action = "sersend";
  632. // objs.code = $("#" + ele).find(".hidcid").val();
  633. objs.msg = msg;
  634. Sends();
  635. }
  636. //// 收藏 - 知识库
  637. //function collection_img_knowledge(id) {
  638. // var ss = $(this).attr("itemcollection");
  639. // $.ajax({
  640. // type: "post",
  641. // url: huayi.config.callcenter_url + "ChatMessages/CollectionKnowledge",
  642. // async: true,
  643. // data: {
  644. // id: id,
  645. // token: $.cookie('token')
  646. // },
  647. // success: function (result) {
  648. // var result = $.parseJSON(result)
  649. // if (result.state == 'success') {
  650. // //knowledge_answer(); //注释掉原因 - 操作成功后列表刷新闪动厉害
  651. // var collection_act_url = "./img/collection_active.png";
  652. // var collection_url = "./img/collection.png";
  653. // if ($(this).attr("src") == collection_act_url) {
  654. // $(this).attr("src", collection_url);
  655. // } else {
  656. // $(this).attr("src", collection_act_url);
  657. // }
  658. // layer.msg(result.message);
  659. // }
  660. // }
  661. // });
  662. //}
  663. //截取字符串 - IM在线客服
  664. function GetLimitStr(val, len) {
  665. if (val) {
  666. // var val = val.replace(/<[^>]+>/g, "");
  667. var val = RemoveHtml(val);
  668. if (val.length > len) {
  669. val = val.substr(0, len) + "...";
  670. }
  671. return val;
  672. } else {
  673. return '';
  674. }
  675. }
  676. // 过滤HTML标签以及空格
  677. function RemoveHtml(str) {
  678. str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
  679. str = str.replace(/[ | ]*\n/g, '\n'); //去除行尾空白
  680. str = str.replace(/\n[\s| | ]*\r/g, '\n'); //去除多余空行
  681. str = str.replace(/(<br[^>]*>| |\s*)/g, '')
  682. str = str.replace(/ /ig, ''); //去掉空格
  683. str = str.replace(/(^\s*)|(\s*$)/g, ""); //去掉空格
  684. str = str.replace(/&nbsp;/ig, ""); //&nbsp;全部替换为空字符串
  685. return str;
  686. }
  687. // 批量替换关键词 - 搜索关键词高亮显示
  688. function GetReplaceKey(str, innerHtmlContent, id) {
  689. if (str.trim()) {
  690. var arr = str.split(',');
  691. $.each(arr, function (index, j) {
  692. var reg = new RegExp(j, 'g')
  693. innerHtmlContent = innerHtmlContent.replace(reg, `<font color=#c00>${j}</font>`)
  694. });
  695. document.getElementById(id).innerHTML = innerHtmlContent
  696. }
  697. }