visitor.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <view class="visitor-list">
  3. <mescroll-body top="40" bottom="40" @init="mescrollInit" @down="downCallback" @up="upCallback" :option="{}">
  4. <view class="visitor">
  5. <view class="visitor-item" v-for="(item,index) in list" :key="index">
  6. <image class="visitor-avatar" :src="item.userPortrait" mode="aspectFill">
  7. </image>
  8. <text class="visitor-label">{{item.userName}}访问了房源</text>
  9. <uni-dateformat class="visitor-time" :date="item.date" :threshold="[60000,3600000 * 24 * 365]">
  10. </uni-dateformat>
  11. </view>
  12. </view>
  13. </mescroll-body>
  14. </view>
  15. </template>
  16. <script>
  17. import {
  18. getVisitorByQuery
  19. } from '@/request/api/house.js'
  20. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  21. export default {
  22. mixins: [MescrollMixin], // 使用mixin
  23. data() {
  24. return {
  25. list: [],
  26. houseId: 15
  27. }
  28. },
  29. onLoad(body) {
  30. console.log(body);
  31. if (body.houseId) this.houseId = body.houseId;
  32. },
  33. methods: {
  34. /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
  35. upCallback(page) {
  36. getVisitorByQuery({
  37. currPage: page.num,
  38. pageSize: 10,
  39. projectItemTargetRoomId: this.houseId
  40. }).then(res => {
  41. if (res.code === 200) {
  42. this.mescroll.endBySize(res.data.dataList.length, res.data.totalCount);
  43. if (page.num == 1) this.list = []; //如果是第一页需手动制空列表
  44. this.list = this.list.concat(res.data.dataList); //追加新数据
  45. } else {
  46. this.mescroll.endErr();
  47. }
  48. }).catch(() => {
  49. //联网失败, 结束加载
  50. this.mescroll.endErr();
  51. })
  52. }
  53. }
  54. }
  55. </script>
  56. <style lang="scss">
  57. .visitor-list {
  58. .visitor {
  59. background: #fff;
  60. padding-left: 40rpx;
  61. }
  62. .visitor-item {
  63. display: flex;
  64. align-items: center;
  65. font-weight: 300;
  66. border-bottom: 1px solid $uni-border-1;
  67. padding: 20rpx 30rpx 20rpx 0;
  68. .visitor-avatar {
  69. width: 80rpx;
  70. height: 80rpx;
  71. border-radius: 80rpx;
  72. }
  73. .visitor-label {
  74. flex: 1;
  75. width: 0;
  76. overflow: hidden;
  77. white-space: nowrap;
  78. text-overflow: ellipsis;
  79. margin: 0 20rpx;
  80. }
  81. .visitor-time {
  82. font-size: 24rpx;
  83. color: $uni-secondary-color;
  84. }
  85. &:last-child {
  86. margin-bottom: 0;
  87. }
  88. }
  89. }
  90. </style>