chat-list.js 5.5 KB

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