index.wxml 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <view class="checkin-container">
  2. <!-- 用户信息栏 -->
  3. <view class="user-header">
  4. <view class="user-info">
  5. <image class="avatar" src="{{userInfo.avatar || appAssetsUrl2 + 'new/user.png'}}" mode="aspectFill"></image>
  6. <view class="user-details">
  7. <view class="nickname">{{userInfo.nickname}} 👑</view>
  8. </view>
  9. </view>
  10. <view class="points-info">
  11. <view class="points-number">{{userInfo.points}}</view>
  12. <view class="points-label">我的积分</view>
  13. </view>
  14. </view>
  15. <!-- 签到标题和月份 -->
  16. <view class="checkin-header">
  17. <view class="checkin-title">每日签到</view>
  18. <view class="month-info">{{currentYear}}.{{currentMonth}}月</view>
  19. </view>
  20. <!-- 日历组件 -->
  21. <view class="calendar-container">
  22. <!-- 星期标题 -->
  23. <view class="weekdays">
  24. <view class="weekday" wx:for="{{weekdays}}" wx:key="index">{{item}}</view>
  25. </view>
  26. <!-- 日期网格 -->
  27. <view class="calendar-grid">
  28. <view class="calendar-day {{item.isEmpty ? 'empty' : ''}} {{item.isToday ? 'today' : ''}} {{item.isChecked ? 'checked' : ''}}"
  29. wx:for="{{calendarDays}}" wx:key="index">
  30. <view class="day-number" wx:if="{{!item.isEmpty}}">{{item.day}}</view>
  31. <view class="check-dot" wx:if="{{item.isChecked && !item.isEmpty}}"></view>
  32. </view>
  33. </view>
  34. </view>
  35. <!-- 签到按钮 -->
  36. <view class="checkin-btn-container">
  37. <button class="checkin-btn {{isCheckedToday ? 'disabled' : ''}}"
  38. bindtap="handleCheckin"
  39. disabled="{{isCheckedToday}}">
  40. {{isCheckedToday ? '今日已签到' : '立即签到'}}
  41. </button>
  42. </view>
  43. <!-- 积分任务 -->
  44. <view class="tasks-section">
  45. <view class="tasks-title">积分任务</view>
  46. <view class="tasks-list">
  47. <view class="task-item" wx:for="{{tasks}}" wx:key="id" bindtap="handleTaskClick" data-id="{{item.id}}">
  48. <view class="task-content">
  49. <image class="task-icon" src="{{item.icon || appAssetsUrl2 + 'new/user.png'}}" mode="aspectFit"></image>
  50. <view class="task-info">
  51. <view class="task-title">{{item.title}} {{item.count || ''}}</view>
  52. <view class="task-desc">{{item.desc}}</view>
  53. </view>
  54. </view>
  55. <view class="task-action">
  56. <text class="action-text">{{item.status}}</text>
  57. </view>
  58. </view>
  59. </view>
  60. </view>
  61. </view>