33 lines
1.4 KiB
Plaintext
33 lines
1.4 KiB
Plaintext
<view wx:if="{{!loading}}">
|
|
<view data-theme="{{themeMode}}">
|
|
<view class="header-card">
|
|
<view class="avatar">{{user.nickname ? user.nickname[0] : (user.phone ? user.phone.slice(-4) : '?')}}</view>
|
|
<view class="header-info">
|
|
<text class="header-name">{{user.nickname || '用户'}}</text>
|
|
<text class="header-sub">积分 {{user.points}} · {{items.filter(i=>i.status==='active').length}} 个活跃项</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="section-header">
|
|
<text class="section-title">今日打卡</text>
|
|
<button class="create-btn" bindtap="goCreate">+ 创建</button>
|
|
</view>
|
|
|
|
<view wx:for="{{items}}" wx:key="id" class="checkin-card" data-id="{{item.id}}" bindtap="goDetail" wx:for-item="item">
|
|
<view class="card-icon">{{item.icon || '📋'}}</view>
|
|
<view class="card-body">
|
|
<text class="card-name">{{item.name}}</text>
|
|
<text class="card-meta">{{item.category}} · {{item.cycleType}}</text>
|
|
</view>
|
|
<text class="card-streak" wx:if="{{streaks[item.id]}}">🔥 {{streaks[item.id]}}天</text>
|
|
</view>
|
|
|
|
<view class="empty" wx:if="{{items.length===0}}">
|
|
<text class="empty-icon">📋</text>
|
|
<text class="empty-text">还没有打卡项</text>
|
|
<text class="empty-sub">点击上方"创建"开始</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view wx:if="{{loading}}" class="loading">加载中...</view>
|