message.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <div class="mobile-center">
  3. <div class="com-mobile-header mobile-center-header">
  4. <a @click="goLastPage"><i class="iconfont icon-fanhui"></i></a>
  5. <p>消息</p>
  6. <p class="en-name"><img :src="`/images/mobile/center/${user.data.enterprise.uu ? 'en' : 'self'}.png`" alt="">{{currentEnName}}</p>
  7. </div>
  8. <div class="mobile-content">
  9. <div v-if="messageList.content && messageList.content.length" class="message-list" v-bind:key="item.id" v-for="item in messageList.content">
  10. <div class="content">
  11. <div class="new-dot">
  12. <b v-if="item.isRead === 0"></b>
  13. <img src="/images/mobile/center/user/message.png" alt="">
  14. </div>
  15. <div class="message">
  16. <p>{{item.createTime | time}}</p>
  17. <a :href="item.type === 'MALL跳转卖家待报价页面' ? '/vendor#/seekPurchase?type=1' : item.type === 'MALL公共询价' ? '/user#/seekPurchase' : item.type === '商城公共询价采纳结果' ? '/vendor#/vendorPurchaseOffer' : ''"
  18. v-if="item.type"
  19. :title="item.content" class="info" target="_blank">{{item.content}}</a>
  20. <a v-else :title="item.content" class="noLink info">{{item.content}}</a>
  21. </div>
  22. </div>
  23. </div>
  24. <empty-status v-if="!messageList.content.length" :showLink="true" :text="'抱歉,暂无消息'"></empty-status>
  25. </div>
  26. <pull-up :searchMore="fetching" :allPage="allPage" :page="page" @pullUpAction="onPullUpAction"></pull-up>
  27. </div>
  28. </template>
  29. <script>
  30. import { RemindBox, PullUp, EmptyStatus } from '~components/mobile/common'
  31. export default {
  32. middleware: 'authenticated',
  33. layout: 'mobileNoHeader',
  34. data () {
  35. return {
  36. count: 10,
  37. page: 1
  38. }
  39. },
  40. fetch ({ store }) {
  41. let user = store.state.option.user.data
  42. return Promise.all([
  43. // 获取消息列表
  44. store.dispatch('messageShow/getAllMessage', { receiverUu: user.userUU, receiverEnuu: user.enterprise.uu, consumerApp: 'MALL', count: 10, page: 1, sorting: {'createTime': 'DESC'} })
  45. ])
  46. },
  47. computed: {
  48. user () {
  49. return this.$store.state.option.user
  50. },
  51. messageList () {
  52. return this.$store.state.messageShow.messageList.list.data
  53. },
  54. fetching () {
  55. return this.messageList.fetching
  56. },
  57. allPage () {
  58. return Math.floor(this.messageList.totalElements / this.messageList.size) + Math.floor(this.messageList.totalElements % this.messageList.size > 0 ? 1 : 0)
  59. }
  60. },
  61. components: {
  62. RemindBox,
  63. PullUp,
  64. EmptyStatus
  65. },
  66. methods: {
  67. reloadList: function () {
  68. this.$store.dispatch('messageShow/getAllMessage', { receiverUu: this.user.data.userUU, receiverEnuu: this.user.data.enterprise.uu, consumerApp: 'MALL', page: this.page, count: this.count, sorting: {'createTime': 'DESC'} })
  69. },
  70. onPullUpAction: function () {
  71. this.page++
  72. this.reloadList()
  73. }
  74. }
  75. }
  76. </script>
  77. <style lang="scss" scoped>
  78. .mobile-content {
  79. margin-top: .6rem !important;
  80. padding: .2rem;
  81. background: #f1f3f6;
  82. .com-none-state {
  83. padding-bottom: 100%;
  84. }
  85. .message-list {
  86. background: #fff;
  87. padding: 0 .15rem 0 .2rem;
  88. .content {
  89. padding: .14rem 0;
  90. overflow: hidden;
  91. border-bottom: 1px solid #d3d3d3;
  92. .new-dot {
  93. position: relative;
  94. b{
  95. position: absolute;
  96. left: .2rem;
  97. top: .25rem;
  98. width: .16rem;
  99. height: .16rem;
  100. border-radius: 50%;
  101. background: #fc0405;
  102. }
  103. }
  104. img{
  105. margin: .3rem 0 0 .12rem;
  106. float: left;
  107. width: .8rem;
  108. height: .8rem;
  109. }
  110. .message{
  111. margin-left: .24rem;
  112. float: left;
  113. width: 5.4rem;
  114. p{
  115. display: inherit;
  116. margin-bottom: .1rem;
  117. text-align: right;
  118. font-size: .24rem;
  119. color: #666;
  120. }
  121. a.info{
  122. font-size: .28rem;
  123. color: #333;
  124. }
  125. }
  126. }
  127. }
  128. }
  129. .message-list:last-child .content{
  130. border-bottom: none;
  131. }
  132. </style>