messageList.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <view class="message-list">
  3. <view class="message-item" :class="item.viewed ? 'viewed':''" v-for="item in list" :key="item.id"
  4. @click="clickMessage(item)">
  5. <view class="message-title">{{item.sendUserName}}{{item.message}}</view>
  6. <view class="message-content">
  7. <view class="content-item">
  8. <uni-icons class="sub-label-icon" type="navigate" size="16"></uni-icons>
  9. <text class="name">{{item.date}}</text>
  10. </view>
  11. <view class="content-item">
  12. <uni-icons class="sub-label-icon" type="person" size="16"></uni-icons>
  13. <text class="name">{{item.sendUserName}}</text>
  14. </view>
  15. </view>
  16. </view>
  17. </view>
  18. </template>
  19. <script>
  20. import {
  21. getMessageList,
  22. setMessageViewed
  23. } from '@/request/api/message.js'
  24. export default {
  25. data() {
  26. return {
  27. list: [],
  28. type: ''
  29. }
  30. },
  31. onLoad(body) {
  32. this.type = body.type;
  33. this.init()
  34. },
  35. methods: {
  36. init() {
  37. getMessageList(this.$store.getters.user.userId || 3, this.type).then(res => {
  38. if (res.code === 200) {
  39. this.list = res.data.map(node => {
  40. node['sendUserName'] = 'vincent';
  41. node = Object.assign(node,JSON.parse(node.json))
  42. return node;
  43. });
  44. }
  45. })
  46. },
  47. clickMessage(item) {
  48. setMessageViewed(item.id).then(res => {
  49. if (res.code === 200) {
  50. this.init();
  51. }
  52. })
  53. this.$navigateTo('/pages/messageDetail/messageDetail?item=' + JSON.stringify(item));
  54. }
  55. }
  56. }
  57. </script>
  58. <style lang="scss">
  59. .message-list {
  60. padding: 20rpx 30rpx;
  61. .message-item {
  62. background: $uni-white;
  63. padding: 20rpx 30rpx;
  64. border-radius: 20rpx;
  65. margin-bottom: 20rpx;
  66. }
  67. .message-title {
  68. font-size: 32rpx;
  69. font-weight: 500;
  70. margin-bottom: 8rpx;
  71. overflow: hidden;
  72. white-space: nowrap;
  73. text-overflow: ellipsis;
  74. }
  75. .viewed {
  76. .message-title {
  77. color: $uni-secondary-color;
  78. }
  79. }
  80. .message-content {
  81. font-size: 12px;
  82. display: flex;
  83. justify-content: space-between;
  84. }
  85. .content-item {
  86. display: flex;
  87. align-items: center;
  88. height: 40rpx;
  89. .name {
  90. font-size: 24rpx;
  91. color: $uni-extra-color;
  92. margin-left: 8rpx;
  93. }
  94. .sub-label-icon {
  95. /* #ifdef H5 */
  96. color: $uni-extra-color !important;
  97. /* #endif */
  98. /* #ifdef MP-WEIXIN */
  99. text {
  100. color: $uni-extra-color !important;
  101. }
  102. /* #endif */
  103. }
  104. }
  105. }
  106. </style>