log.vue 3.1 KB

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