You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

chat.js 6.1 KiB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. (function () {
  2. var beginTime = "1988-01-01 00:00:00";
  3. var endTime = "1988-01-01 00:00:00";
  4. var userId = '';
  5. var msgMap = {};
  6. var timeOutId;
  7. var $scroll;
  8. var getTime = function (time) {
  9. var d = new Date();
  10. var c = d.DateDiff('d', time);
  11. if (c < 1 && c > -1) {
  12. return learun.date.format(time, 'hh:mm:ss');
  13. }
  14. else {
  15. return learun.date.format(time, 'yyyy-MM-dd hh:mm');
  16. }
  17. };
  18. var getHeadImg = function (user) {
  19. var url = '';
  20. switch (user.img) {
  21. case '0':
  22. url += 'images/on-girl.jpg';
  23. break;
  24. case '1':
  25. url += 'images/on-boy.jpg';
  26. break;
  27. default:
  28. url += config.webapi + 'learun/adms/user/img?data=' + user.id;
  29. break;
  30. }
  31. return url;
  32. };
  33. var getMsgHtml = function (item) {
  34. var _html = '\
  35. <div class="chatTime"><span>'+ getTime(item.F_CreateDate) + '</span></div>\
  36. <div class="'+ (item.F_SendUserId === userId ? 'me' : 'other') + '">\
  37. <span class="arrow"></span>\
  38. <img src="'+ config.webapi + 'learun/adms/user/img?data=' + item.F_SendUserId + '" alt="">\
  39. <span class="content">'+ item.F_Content + '</span>\
  40. </div>';
  41. return _html;
  42. };
  43. // 获取最新的消息列表
  44. var getMsg = function (userId) {
  45. learun.httpget(config.webapi + "learun/adms/im/msg/list2", { otherUserId: userId, time: endTime }, (data) => {
  46. if (data) {
  47. var $list = $('#lr_chat_msgcontent .lr-chat-msgcontent-list');
  48. $.each(data, function (_index, _item) {
  49. if (!msgMap[_item.F_MsgId]) {
  50. msgMap[_item.F_MsgId] = "1";
  51. var _html = getMsgHtml(_item);
  52. $list.append(_html);
  53. endTime = _item.F_CreateDate;
  54. $scroll.refresh(true);
  55. $scroll.scrollToBottom();
  56. }
  57. });
  58. $list = null;
  59. }
  60. timeOutId = setTimeout(function () {
  61. getMsg(userId);
  62. }, 5000);
  63. });
  64. };
  65. var page = {
  66. init: function ($page, param) {
  67. $scroll = $page.find('#lr_chat_msgcontent').pullRefresh({
  68. down: {
  69. height: 20,
  70. contentinit: '',
  71. contentdown: '',
  72. contentover: '',
  73. contentrefresh: '',
  74. callback: function () {
  75. var self = this;
  76. learun.httpget(config.webapi + "learun/adms/im/msg/list", { otherUserId: param.userId, time: beginTime }, (data) => {
  77. if (data) {
  78. var $list = $('#lr_chat_msgcontent .lr-chat-msgcontent-list');
  79. $.each(data, function (_index, _item) {
  80. if (!msgMap[_item.F_MsgId]) {
  81. msgMap[_item.F_MsgId] = "1";
  82. var _html = getMsgHtml(_item);
  83. $list.prepend(_html);
  84. beginTime = _item.F_CreateDate;
  85. }
  86. });
  87. $list = null;
  88. }
  89. self.refresh(true);
  90. self.endPulldownToRefresh();
  91. });
  92. }
  93. }
  94. });
  95. userId = learun.storage.get('userinfo').baseinfo.userId;
  96. var $list = $('#lr_chat_msgcontent .lr-chat-msgcontent-list');
  97. if (param.hasHistory) {
  98. learun.layer.loading(true, '加载聊天信息中');
  99. // 先去获取最近的十条数据
  100. learun.httpget(config.webapi + "learun/adms/im/msg/lastlist", param.userId, (data) => {
  101. learun.layer.loading(false);
  102. if (data) {
  103. $.each(data, function (_index, item) {
  104. beginTime = item.F_CreateDate;
  105. if (_index === 0) {
  106. endTime = item.F_CreateDate;
  107. }
  108. msgMap[item.F_MsgId] = '1';
  109. var _html = getMsgHtml(item);
  110. $list.prepend(_html);
  111. });
  112. }
  113. $scroll.refresh(true);
  114. $scroll.scrollToBottom();
  115. getMsg(param.userId);
  116. });
  117. }
  118. $page.find('#lr_chat_sendbtn').on('tap', function () {
  119. var text = $('#lr_chat_input').val();
  120. text = $.trim(text);
  121. $('#lr_chat_input').val("");
  122. if (text) {
  123. clearTimeout(timeOutId);
  124. var $list = $('#lr_chat_msgcontent .lr-chat-msgcontent-list');
  125. var _html = '\
  126. <div class="me">\
  127. <span class="arrow"></span>\
  128. <img src="'+ config.webapi + 'learun/adms/user/img?data=' + userId + '" alt="">\
  129. <span class="content">'+ text + '</span>\
  130. </div>';
  131. $list.append(_html);
  132. $scroll.refresh(true);
  133. $scroll.scrollToBottom();
  134. learun.httppost(config.webapi + "learun/adms/im/send", { userId: param.userId, content: text }, (data) => {
  135. if (data) {
  136. endTime = data.time;
  137. msgMap[data.msgId] = "1";
  138. }
  139. getMsg(param.userId);
  140. });
  141. }
  142. });
  143. },
  144. destroy: function (pageinfo) {
  145. clearTimeout(timeOutId);
  146. }
  147. };
  148. return page;
  149. })();