points-log.wxml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <!--pages/points-log/points-log.wxml-->
  2. <view class="container">
  3. <!-- 积分概览 -->
  4. <view class="points-overview">
  5. <view class="overview-item">
  6. <text class="overview-label">总积分</text>
  7. <text class="overview-value">{{totalPoints}}</text>
  8. </view>
  9. <view class="overview-divider"></view>
  10. <view class="overview-item">
  11. <text class="overview-label">本月积分</text>
  12. <text class="overview-value month">{{monthPoints}}</text>
  13. </view>
  14. </view>
  15. <!-- 筛选栏 -->
  16. <view class="filter-bar">
  17. <view class="date-filter">
  18. <view
  19. class="filter-item {{dateType === 'today' ? 'active' : ''}}"
  20. data-type="today"
  21. bindtap="onDateTypeChange"
  22. >今日</view>
  23. <view
  24. class="filter-item {{dateType === 'week' ? 'active' : ''}}"
  25. data-type="week"
  26. bindtap="onDateTypeChange"
  27. >本周</view>
  28. <view
  29. class="filter-item {{dateType === 'month' ? 'active' : ''}}"
  30. data-type="month"
  31. bindtap="onDateTypeChange"
  32. >本月</view>
  33. <view
  34. class="filter-item {{dateType === 'all' ? 'active' : ''}}"
  35. data-type="all"
  36. bindtap="onDateTypeChange"
  37. >全部</view>
  38. </view>
  39. <view class="type-filter">
  40. <view
  41. class="filter-item {{typeFilter === 'all' ? 'active' : ''}}"
  42. data-type="all"
  43. bindtap="onTypeFilterChange"
  44. >全部</view>
  45. <view
  46. class="filter-item {{typeFilter === 'earn' ? 'active' : ''}}"
  47. data-type="earn"
  48. bindtap="onTypeFilterChange"
  49. >获得</view>
  50. <view
  51. class="filter-item {{typeFilter === 'spend' ? 'active' : ''}}"
  52. data-type="spend"
  53. bindtap="onTypeFilterChange"
  54. >兑换</view>
  55. <view
  56. class="filter-item {{typeFilter === 'bonus' ? 'active' : ''}}"
  57. data-type="bonus"
  58. bindtap="onTypeFilterChange"
  59. >奖励</view>
  60. <view
  61. class="filter-item {{typeFilter === 'penalty' ? 'active' : ''}}"
  62. data-type="penalty"
  63. bindtap="onTypeFilterChange"
  64. >扣分</view>
  65. </view>
  66. </view>
  67. <!-- 积分记录列表 -->
  68. <view class="log-list">
  69. <!-- 加载状态 -->
  70. <view class="loading" wx:if="{{loading}}">
  71. <text>加载中...</text>
  72. </view>
  73. <!-- 记录列表 -->
  74. <block wx:else>
  75. <block wx:if="{{filteredLogs.length > 0}}">
  76. <view
  77. class="log-item"
  78. wx:for="{{filteredLogs}}"
  79. wx:key="id"
  80. >
  81. <view class="log-icon" style="background-color: {{getTypeColor(item.type)}}">
  82. <text>{{getTypeIcon(item.type)}}</text>
  83. </view>
  84. <view class="log-content">
  85. <view class="log-header">
  86. <text class="log-type">{{getTypeName(item.type)}}</text>
  87. <text class="log-amount {{item.amount > 0 ? 'positive' : 'negative'}}">
  88. {{item.amount > 0 ? '+' : ''}}{{item.amount}}
  89. </text>
  90. </view>
  91. <text class="log-description">{{item.description}}</text>
  92. <text class="log-time">{{item.createdAt}}</text>
  93. </view>
  94. </view>
  95. </block>
  96. <!-- 空状态 -->
  97. <view class="empty-state" wx:else>
  98. <image class="empty-icon" src="/images/empty-log.svg" mode="aspectFit"></image>
  99. <text class="empty-text">暂无积分记录</text>
  100. <text class="empty-desc">完成任务或兑换奖励后将在这里显示</text>
  101. </view>
  102. </block>
  103. </view>
  104. <!-- 导出按钮 -->
  105. <view class="export-btn" bindtap="onExport">
  106. <text class="export-icon">📊</text>
  107. <text class="export-text">导出记录</text>
  108. </view>
  109. </view>