chat-list.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. // pages/chat-list/chat-list.js
  2. // import Times from "../../utils/time";
  3. const webSocket = require('../../utils/websocket.js');
  4. const app = getApp();
  5. /**
  6. * 会话列表页面
  7. */
  8. Page({
  9. /**
  10. * 页面的初始数据
  11. */
  12. data: {
  13. conversations: [],
  14. myheadurl:''
  15. },
  16. /**
  17. * 生命周期函数--监听页面加载
  18. */
  19. onLoad(options) {
  20. let that = this;
  21. app.postRequest('my/images/headurl', {}, function (res) {
  22. if (res.code == 201) {
  23. // console.log(res);
  24. that.setData({
  25. myheadurl: res.data.img,
  26. // optioninfocode: res,
  27. })
  28. }
  29. })
  30. // emojiChar: "☺-😋-😌-😍-😏-😜-😝-😞-😔-😪-😭-😁-😂-😃-😅-😆-👿-😒-😓-😔-😏-😖-😘-😚-😒-😡-😢-😣-😤-😢-😨-😳-😵-😷-😸-😻-😼-😽-😾-😿-🙊-🙋-🙏-✈-🚇-🚃-🚌-🍄-🍅-🍆-🍇-🍈-🍉-🍑-🍒-🍓-🐔-🐶-🐷-👦-👧-👱-👩-👰-👨-👲-👳-💃-💄-💅-💆-💇-🌹-💑-💓-💘-🚲",
  31. },
  32. toChat(e) { //跳转进入聊天页面
  33. // console.log(e);
  34. // return ;
  35. let _that = this;
  36. for (var index in _that.data.conversations){
  37. if (_that.data.conversations[index].to_id == e.currentTarget.dataset.item.to_id){
  38. _that.data.conversations[index].count = 0;
  39. }
  40. }
  41. //唯一用户表示
  42. wx.setStorageSync('ChatListCount', e.currentTarget.dataset.item.to_str);
  43. // wx.setStorageSync('','');
  44. wx.setStorageSync('chat_to_id', e.currentTarget.dataset.item.to_id)
  45. wx.navigateTo({
  46. url: '../chat/chat?to_id=' + e.currentTarget.dataset.item.to_id + '&headUrl=' + e.currentTarget.dataset.item.img + '&myheadurl='+_that.data.myheadurl
  47. });
  48. },
  49. /**
  50. * 生命周期函数--监听页面显示
  51. */
  52. onShow(e) {
  53. var _this = this;
  54. try {
  55. let value = wx.getStorageSync('chat_to_id')
  56. if (value) {
  57. for (var index in _this.data.conversations) {
  58. if (_this.data.conversations[index].to_id == value) {
  59. _this.data.conversations[index].count = 0;
  60. }
  61. }
  62. }
  63. } catch (e) {
  64. }
  65. console.log(e,111111222222);
  66. webSocket.sendSocketMessage({
  67. msg: JSON.stringify({ form_id: getApp().UserId(), type: 'Chat_list' }),
  68. success: function (res) {
  69. console.log(res, 'dakai111');
  70. }, fail: function (res) {
  71. console.log('发送消息失败')
  72. }
  73. })
  74. webSocket.onSocketMessageCallback = this.onSocketMessageCallback;
  75. // console.log(Times.dealChatTime(new Date(), 1555257947));
  76. // _this.setData({
  77. // conversations: [{
  78. // friendId:1111,
  79. // msgUserId: 2222,//消息的所有人id
  80. // friendHeadUrl: 'http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg',//好友头像
  81. // conversationId: -1,//会话id,目前未用到
  82. // friendName: '夏天的风',//好友昵称
  83. // content:'dsadasdsa',//最新一条消息
  84. // unread: 10,//未读消息计数
  85. // timestamp: 1555257947,//最新消息的时间戳
  86. // timeStr:'2019-04-15 00:05:47'//最新消息的时间
  87. // }]
  88. // })
  89. },
  90. getConversationsItem(item) {
  91. let {latestMsg, ...msg} = item;
  92. return Object.assign(msg, JSON.parse(latestMsg));
  93. },
  94. onSocketMessageCallback:function(e){
  95. let _this = this;
  96. let data = JSON.parse(e);
  97. let chatlistcount = wx.getStorageSync('ChatListCount')
  98. try {
  99. } catch (e) {
  100. // Do something when catch error
  101. }
  102. switch(data.type){
  103. case 'Chat_list':
  104. let dataAtt = data.data
  105. console.log(data.data,111111);
  106. for (var index in dataAtt) {
  107. //清除缓存
  108. if (chatlistcount && dataAtt[index].to_str == chatlistcount) {
  109. wx.removeStorageSync('ChatListCount');
  110. console.log(112233);
  111. dataAtt[index].count = 0;
  112. }
  113. if (dataAtt[index].type == 2) {
  114. dataAtt[index].content = '[图片]'
  115. }
  116. }
  117. if(data.data){
  118. _this.setData({
  119. conversations: _this.sortarr(dataAtt)
  120. })
  121. }
  122. break;
  123. case 'chat_list_message':
  124. let dataArr = _this.data.conversations;
  125. let idData = [];
  126. console.log(data.data,'chat_list_message');
  127. for (var index in dataArr){
  128. // idData.push(String(dataArr[index].to_id));
  129. idData.push(String(dataArr[index].to_str)); //统一转换成string
  130. if (dataArr[index].to_str == data.data.to_str)
  131. {
  132. dataArr[index].count = data.data.count;
  133. dataArr[index].content = data.data.content;
  134. dataArr[index].timeStr = data.data.timeStr;
  135. dataArr[index].create_at = data.data.create_at;
  136. }
  137. if(dataArr[index].type == 2){
  138. dataArr[index].content = '[图片]'
  139. }
  140. }
  141. //新增一列
  142. if (idData.indexOf(String(data.data.to_str)) == '-1'){
  143. dataArr.push(data.data);
  144. }
  145. _this.setData({
  146. conversations: _this.sortarr(dataArr)
  147. })
  148. break;
  149. break;
  150. }
  151. },
  152. sortarr:function(arr){//冒泡排序
  153. for(let i = 0;i<arr.length- 1; i++) {
  154. for (let j = 0; j < arr.length - 1 - i; j++) {
  155. if (arr[j].create_at < arr[j + 1].create_at) {
  156. var temp = arr[j];
  157. arr[j] = arr[j + 1];
  158. arr[j + 1] = temp;
  159. }
  160. }
  161. }
  162. return arr;
  163. }
  164. });