45 lines
2.0 KiB
Plaintext
45 lines
2.0 KiB
Plaintext
<view wx:if="{{loading}}" class="loading">加载中...</view>
|
|
<view wx:else><view data-theme="{{themeMode}}">
|
|
<!-- Actions button -->
|
|
<view class="action-btn" bindtap="toggleActions">⋯</view>
|
|
<view class="action-menu" wx:if="{{showActions}}">
|
|
<view class="action-item" bindtap="onTogglePause">{{item?.status==='active'?'暂停打卡':'恢复打卡'}}</view>
|
|
<view class="action-item" bindtap="onDelete" style="color:#FF3B30">删除</view>
|
|
</view>
|
|
|
|
<!-- Item info -->
|
|
<view class="card" wx:if="{{item}}">
|
|
<view class="item-header">
|
|
<view class="item-icon">{{item.icon || '📋'}}</view>
|
|
<view>
|
|
<text class="item-name">{{item.name}}</text>
|
|
<text class="item-meta">{{item.category}} · {{item.cycleType}} · {{item.status==='active'?'进行中':'已暂停'}}</text>
|
|
<text class="item-goal" wx:if="{{item.dailyGoal}}">🎯 {{item.dailyGoal}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- Stats -->
|
|
<view class="stats-row">
|
|
<view class="stat"><text class="stat-num">{{streak}}</text><text class="stat-lbl">连续天数</text></view>
|
|
<view class="stat"><text class="stat-num">{{records.length}}</text><text class="stat-lbl">本月打卡</text></view>
|
|
<view class="stat"><text class="stat-num">{{days.filter(d=>d.checked).length}}/{{days.length}}</text><text class="stat-lbl">完成率</text></view>
|
|
</view>
|
|
|
|
<!-- Calendar -->
|
|
<view class="card calendar">
|
|
<view class="cal-header">
|
|
<text class="cal-nav" bindtap="prevMonth">←</text>
|
|
<text>{{year}}年{{month}}月</text>
|
|
<text class="cal-nav" bindtap="nextMonth">→</text>
|
|
</view>
|
|
<view class="cal-grid">
|
|
<view wx:for="{{['日','一','二','三','四','五','六']}}" wx:key="*this" class="cal-weekday">{{item}}</view>
|
|
<view wx:for="{{days}}" wx:key="day" class="cal-day {{item.checked?'checked':''}} {{item.isToday?'today':''}}" wx:for-item="d">
|
|
<text wx:if="{{!d.empty}}">{{d.day}}</text>
|
|
<view class="cal-dot" wx:if="{{!d.empty && d.checked}}"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view></view>
|