mall.wxml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <view class="mall-page">
  2. <!-- 积分信息卡片 -->
  3. <view class="points-info-card">
  4. <view class="points-header">
  5. <view class="points-title">我的积分</view>
  6. <button class="history-btn" bindtap="viewPointsHistory">明细</button>
  7. </view>
  8. <view class="points-value">{{memberInfo.points}}</view>
  9. <view class="points-desc">积分一年有效,消费1元得1积分</view>
  10. </view>
  11. <!-- 我的优惠券 -->
  12. <view class="my-coupons-section">
  13. <view class="section-header">
  14. <view class="section-title">我的优惠券</view>
  15. <button class="view-all-btn" bindtap="viewMyCoupons">查看全部</button>
  16. </view>
  17. <scroll-view scroll-x="true" class="coupons-scroll">
  18. <view class="coupons-container">
  19. <block wx:for="{{coupons}}" wx:key="id">
  20. <view class="coupon-item">
  21. <view class="coupon-value">¥{{item.value}}</view>
  22. <view class="coupon-name">{{item.name}}</view>
  23. <view class="coupon-expire">{{item.expireDate.split('T')[0]}}到期</view>
  24. </view>
  25. </block>
  26. <view wx:if="{{coupons.length === 0}}" class="no-coupons">
  27. <view class="no-coupons-text">暂无可用优惠券</view>
  28. </view>
  29. </view>
  30. </scroll-view>
  31. </view>
  32. <!-- 积分商城 -->
  33. <view class="points-mall-section">
  34. <view class="section-header">
  35. <view class="section-title">积分商城</view>
  36. </view>
  37. <view class="products-grid">
  38. <block wx:for="{{pointsProducts}}" wx:key="id">
  39. <view class="product-card" bindtap="selectProduct" data-id="{{item.id}}">
  40. <view class="product-icon">{{item.icon}}</view>
  41. <view class="product-info">
  42. <view class="product-name">{{item.name}}</view>
  43. <view class="product-desc">{{item.description}}</view>
  44. <view class="product-points">
  45. <text class="points-number">{{item.points}}</text>
  46. <text class="points-unit">积分</text>
  47. </view>
  48. </view>
  49. <view class="exchange-btn {{memberInfo.points >= item.points ? 'can-exchange' : 'cannot-exchange'}}">
  50. {{memberInfo.points >= item.points ? '立即兑换' : '积分不足'}}
  51. </view>
  52. </view>
  53. </block>
  54. </view>
  55. </view>
  56. </view>
  57. <!-- 兑换确认弹窗 -->
  58. <view wx:if="{{showExchangeModal}}" class="modal-overlay" bindtap="closeExchangeModal">
  59. <view class="modal-content" catchtap="">
  60. <view class="modal-header">
  61. <view class="modal-title">确认兑换</view>
  62. <button class="modal-close" bindtap="closeExchangeModal">×</button>
  63. </view>
  64. <view class="modal-body">
  65. <view class="exchange-product">
  66. <view class="product-icon-large">{{selectedProduct.icon}}</view>
  67. <view class="product-details">
  68. <view class="product-name">{{selectedProduct.name}}</view>
  69. <view class="product-value">价值¥{{selectedProduct.value}}</view>
  70. <view class="product-points">需要{{selectedProduct.points}}积分</view>
  71. <view class="product-validity">有效期{{selectedProduct.validDays}}天</view>
  72. </view>
  73. </view>
  74. <view class="points-status">
  75. <view class="current-points">当前积分:{{memberInfo.points}}</view>
  76. <view class="after-exchange">兑换后剩余:{{memberInfo.points - selectedProduct.points}}</view>
  77. </view>
  78. </view>
  79. <view class="modal-footer">
  80. <button class="cancel-btn" bindtap="closeExchangeModal">取消</button>
  81. <button class="confirm-btn" bindtap="confirmExchange"
  82. disabled="{{memberInfo.points < selectedProduct.points}}">
  83. 确认兑换
  84. </button>
  85. </view>
  86. </view>
  87. </view>