message-reminder.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <view class="content">
  3. <view class="search"></view>
  4. <view class="list">
  5. <view class="item" v-for="(item,index) in list" :key="index" @click="read(item)">
  6. <view class="top">
  7. <view class="left">
  8. <view class="name">{{item.title}}</view>
  9. <view class="time">{{item.created_at}} {{item.send_user}}</view>
  10. </view>
  11. <view class="right">
  12. <view class="tip" v-if="item.read == 0">未读</view>
  13. <view class="tip" v-if="item.read == 1" style="background-color: #4CD964;">已读</view>
  14. </view>
  15. </view>
  16. <view class="inner">
  17. <!-- {{item.content}} -->
  18. <view v-html="item.content"></view>
  19. </view>
  20. </view>
  21. </view>
  22. <view class="bottom">
  23. <view class="title" @click="get_all_list()">所有消息</view>
  24. <view class="title" @click="get_unread_list('unread')">未读消息</view>
  25. <view class="title" @click="read_all()">全部标已读</view>
  26. </view>
  27. </view>
  28. </template>
  29. <script>
  30. export default {
  31. data() {
  32. return {
  33. type:"",
  34. page:1,
  35. list: []
  36. };
  37. },
  38. onLoad() {
  39. this.get_message_list(this.page)
  40. },
  41. onShow() {
  42. this.page = 1,
  43. this.type = ""
  44. this.list = []
  45. this.get_message_list(this.page)
  46. this.$forceUpdate()
  47. },
  48. onReachBottom(){
  49. this.page++
  50. // console.log(this.page)
  51. this.get_message_list()
  52. },
  53. methods: {
  54. get_message_list() {
  55. uni.showLoading()
  56. this.$api.message_list({
  57. type: this.type,
  58. page:this.page,
  59. page_size:10
  60. }).then((res) => {
  61. console.log(res.data.data.data)
  62. // this.list = res.data.data.data
  63. this.list = this.list.concat(res.data.data.data)
  64. uni.hideLoading()
  65. })
  66. },
  67. read(item) {
  68. this.$api.message_read({
  69. id:item.id
  70. }).then((res)=>{
  71. console.log(res)
  72. this.get_message_list()
  73. })
  74. uni.navigateTo({
  75. url: "message-detail/message-detail",
  76. success: function(res) {
  77. // 通过eventChannel向被打开页面传送数据
  78. res.eventChannel.emit('acceptDataFromOpenerPage', {
  79. data: item
  80. })
  81. }
  82. })
  83. },
  84. read_all() {
  85. uni.showToast({
  86. icon: "none",
  87. title: "全部已读"
  88. })
  89. this.$api.message_read({
  90. }).then((res) => {
  91. console.log(res)
  92. this.page = 1,
  93. this.type = ""
  94. this.list = []
  95. this.get_message_list()
  96. })
  97. },
  98. get_all_list() {
  99. this.page = 1,
  100. this.type = ""
  101. this.list = []
  102. this.get_message_list()
  103. },
  104. get_unread_list() {
  105. this.page = 1,
  106. this.type = "unread"
  107. this.list = []
  108. this.get_message_list()
  109. }
  110. }
  111. }
  112. </script>
  113. <style lang="scss">
  114. page {
  115. background-color: #f1f1f1;
  116. }
  117. .content {
  118. width: 749rpx;
  119. }
  120. .list {
  121. width: 749rpx;
  122. box-sizing: border-box;
  123. padding: 24rpx;
  124. margin-bottom: 80px;
  125. .item {
  126. width: 700rpx;
  127. background-color: #FFFFFF;
  128. box-sizing: border-box;
  129. padding: 10px 20rpx;
  130. margin-bottom: 10px;
  131. .top {
  132. width: 660rpx;
  133. display: flex;
  134. justify-content: space-between;
  135. .left {
  136. width: 540rpx;
  137. .name {
  138. line-height: 25px;
  139. overflow: hidden;
  140. /*超出部分隐藏*/
  141. white-space: nowrap;
  142. /*不换行*/
  143. text-overflow: ellipsis;
  144. /*超出部分文字以...显示*/
  145. }
  146. .time {
  147. line-height: 30px;
  148. font-size: 14px;
  149. color: #999;
  150. }
  151. }
  152. .right {
  153. width: 88rpx;
  154. .tip {
  155. text-align: center;
  156. line-height: 25px;
  157. background-color: #DD524D;
  158. font-size: 12px;
  159. color: #FFFFFF;
  160. }
  161. }
  162. }
  163. .inner {
  164. width: 660rpx;
  165. text-indent: 2em;
  166. font-size: 14px;
  167. line-height: 1.5;
  168. overflow: hidden;
  169. word-break: break-all;
  170. text-overflow: ellipsis;
  171. display: -webkit-box;
  172. -webkit-box-orient: vertical;
  173. -webkit-line-clamp: 4;
  174. }
  175. }
  176. }
  177. .bottom {
  178. background-color: #FFFFFF;
  179. position: fixed;
  180. left: 0;
  181. bottom: 0;
  182. border-top: 1px solid #eee;
  183. height: 50px;
  184. display: flex;
  185. justify-content: space-between;
  186. align-items: center;
  187. .title {
  188. width: 249rpx;
  189. padding: 5px 0;
  190. text-align: center;
  191. border-right: 1px solid #eee;
  192. }
  193. .title:last-child {
  194. border-right: none;
  195. }
  196. }
  197. </style>