log.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <view class="container">
  3. <mescroll-body ref="mescrollRef" :sticky="true" @init="mescrollInit" :down="{ use: false }" :up="upOption"
  4. @up="upCallback">
  5. <view class="log-list">
  6. <view v-for="(item, index) in list.data" :key="index" class="log-item">
  7. <view class="item-left flex-box">
  8. <view class="rec-status">
  9. <text>{{ item.describe }}</text>
  10. </view>
  11. <view class="rec-time">
  12. <text>{{ item.create_time }}</text>
  13. </view>
  14. </view>
  15. <view class="item-right" :class="[item.value > 0 ? 'col-green' : 'col-6']">
  16. <text>{{ item.value > 0 ? '+' : '' }}{{ item.value }}</text>
  17. </view>
  18. </view>
  19. </view>
  20. </mescroll-body>
  21. </view>
  22. </template>
  23. <script>
  24. import MescrollBody from '@/components/mescroll-uni/mescroll-body.vue'
  25. import MescrollMixin from '@/components/mescroll-uni/mescroll-mixins'
  26. import * as LogApi from '@/api/points/log'
  27. import { getEmptyPaginateObj, getMoreListData } from '@/core/app'
  28. const pageSize = 15
  29. export default {
  30. components: {
  31. MescrollBody
  32. },
  33. mixins: [MescrollMixin],
  34. data() {
  35. return {
  36. // 充值记录
  37. list: getEmptyPaginateObj(),
  38. // 上拉加载配置
  39. upOption: {
  40. // 首次自动执行
  41. auto: true,
  42. // 每页数据的数量; 默认10
  43. page: { size: pageSize },
  44. // 数量要大于12条才显示无更多数据
  45. noMoreSize: 12,
  46. // 空布局
  47. empty: {
  48. tip: '亲,暂无相关数据'
  49. }
  50. }
  51. }
  52. },
  53. /**
  54. * 生命周期函数--监听页面加载
  55. */
  56. onLoad(options) {},
  57. methods: {
  58. /**
  59. * 上拉加载的回调 (页面初始化时也会执行一次)
  60. * 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10
  61. * @param {Object} page
  62. */
  63. upCallback(page) {
  64. const app = this
  65. // 设置列表数据
  66. app.getLogList(page.num)
  67. .then(list => {
  68. const curPageLen = list.data.length
  69. const totalSize = list.data.total
  70. app.mescroll.endBySize(curPageLen, totalSize)
  71. })
  72. .catch(() => app.mescroll.endErr())
  73. },
  74. // 获取积分明细列表
  75. getLogList(pageNo = 1) {
  76. const app = this
  77. return new Promise((resolve, reject) => {
  78. LogApi.list({ page: pageNo })
  79. .then(result => {
  80. // 合并新数据
  81. const newList = result.data.list
  82. app.list.data = getMoreListData(newList, app.list, pageNo)
  83. resolve(newList)
  84. })
  85. })
  86. }
  87. }
  88. }
  89. </script>
  90. <style lang="scss" scoped>
  91. page,
  92. .container {
  93. background: #fff;
  94. }
  95. .log-list {
  96. padding: 0 30rpx;
  97. }
  98. .log-item {
  99. font-size: 28rpx;
  100. padding: 20rpx 20rpx;
  101. line-height: 1.8;
  102. border-bottom: 1rpx solid rgb(238, 238, 238);
  103. display: flex;
  104. justify-content: center;
  105. align-items: center;
  106. }
  107. .rec-status {
  108. color: #333;
  109. .rec-time {
  110. color: rgb(160, 160, 160);
  111. font-size: 26rpx;
  112. }
  113. }
  114. </style>