message.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /**
  2. * 消息通知相关js
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/9/25
  6. * @version
  7. */
  8. let isLoading = false;
  9. $(document).ready(function() {
  10. // 消息框弹出
  11. $("#msg").on("shown.bs.modal", function() {
  12. let loadingElement = $("#message-loading");
  13. $.ajax({
  14. url: '/message/list',
  15. type: 'post',
  16. data: '',
  17. dataType: 'json',
  18. error: function() {
  19. loadingElement.text('加载数据失败');
  20. },
  21. beforeSend: function() {
  22. loadingElement.text('正在加载数据').show();
  23. },
  24. success: function(response) {
  25. loadingElement.text('').hide();
  26. $("#message-list").show();
  27. if (response.err === 1 || response.err === undefined) {
  28. let msg = response.msg !== undefined ? response.msg : '读取数据失败!';
  29. alert(msg);
  30. return false;
  31. }
  32. let listData = response.data;
  33. if (listData.length <= 0) {
  34. return false;
  35. }
  36. let listHtml = '';
  37. for(let tmp of listData) {
  38. let unreadHtml = tmp.is_read === 0 ? '<i class="fa fa-circle-o text-danger unread" title="未读"></i> ' : '';
  39. let dateString = moment(tmp.message.release_time).format('YYYY-MM-DD');
  40. let dateTimeString = moment(tmp.message.release_time).format('YYYY-MM-DD HH:mm:ss');
  41. listHtml += '<tr>' +
  42. '<td>'+ unreadHtml +'<a href="javascript:void(0);" class="detail" data-id="'+ tmp._id +'">'+ tmp.message.title +'</a></td>' +
  43. '<td><span title="'+ dateTimeString +'">'+ dateString +'</span></td>';
  44. }
  45. $("#message-list tbody").html(listHtml);
  46. }
  47. });
  48. });
  49. // 获取详细消息
  50. $("#msg").on("click", "a.detail", function() {
  51. let self = $(this);
  52. let id = self.data("id");
  53. if (id === undefined || id === '' || isLoading) {
  54. return false;
  55. }
  56. let isUnread = self.prev().is(".unread");
  57. let loadingElement = $("#message-loading");
  58. let listElement = $("#message-list");
  59. $.ajax({
  60. url: '/message/detail',
  61. type: 'post',
  62. data: 'id=' + id,
  63. dataType: 'json',
  64. error: function() {
  65. isLoading = false;
  66. listElement.show();
  67. loadingElement.text('').hide();
  68. },
  69. beforeSend: function() {
  70. isLoading = true;
  71. listElement.hide();
  72. loadingElement.text('正在加载详细内容').show();
  73. },
  74. success: function(response) {
  75. isLoading = false;
  76. loadingElement.text('').hide();
  77. let messageData = response.data;
  78. if (response.err === 1 || response.err === undefined || messageData === undefined) {
  79. let msg = response.msg !== undefined ? response.msg : '读取数据失败!';
  80. listElement.show();
  81. loadingElement.text('').hide();
  82. alert(msg);
  83. return false;
  84. }
  85. // 移除未读标记
  86. if (isUnread) {
  87. self.prev('i').remove();
  88. changeNumByStep(-1);
  89. }
  90. $("#message-content .title").text(messageData.message.title);
  91. $("#message-content .time").text('发布:' + moment(messageData.message.release_time).format('YYYY-MM-DD HH:mm:ss'));
  92. $("#message-content .content-area").html(messageData.message.content);
  93. $("#message-content").show();
  94. }
  95. });
  96. });
  97. // 设置全部已读
  98. $("#set-all-read").click(function() {
  99. if (isLoading) {
  100. return false;
  101. }
  102. $.ajax({
  103. url: '/message/read',
  104. type: 'post',
  105. data: '',
  106. dataType: 'json',
  107. error: function() {
  108. isLoading = false;
  109. },
  110. beforeSend: function() {
  111. isLoading = true;
  112. },
  113. success: function(response) {
  114. isLoading = false;
  115. if (response.err === 0) {
  116. $("#message-list tbody .unread").remove();
  117. changeNumByStep(0);
  118. } else {
  119. let msg = response.msg !== undefined ? response.msg : '未知错误!';
  120. alert(msg);
  121. }
  122. }
  123. });
  124. });
  125. // 返回按钮
  126. $("#message-content .back").click(function() {
  127. $("#message-content").hide();
  128. $("#message-list").show();
  129. });
  130. });
  131. /**
  132. * 设置头部信封数量
  133. *
  134. * @param {Number} step
  135. * @return {void}
  136. */
  137. function changeNumByStep(step) {
  138. let messageElement = $("#notify-info");
  139. let unreadElement = $("#unread-num");
  140. if (step === 0) {
  141. messageElement.removeClass('new-msg');
  142. unreadElement.text(0);
  143. } else {
  144. let currentNum = unreadElement.text();
  145. currentNum = parseInt(currentNum);
  146. let num = currentNum + step;
  147. if (num === 0) {
  148. messageElement.removeClass('new-msg');
  149. }
  150. unreadElement.text(num);
  151. }
  152. }