feat(ui): 记录页月份联动与多项 UI 美化/修复

- records: 底部列表与月份选择器联动,新增 [本月|最近] 分段控件;标题/空态随模式切换
- leaderboard: 领奖台布局(冠军居中+皇冠)、次数标注于底座且三档水平对齐;头像 cloud:// 批量预解析提速(云函数需重新部署)
- index/timer: 主色底图标改白色变体修复隐形;目标数字按微信字体缩放补偿真机遮挡
- settings: 配色方案横滑渐变色卡;头像上传前压缩至 200px
- theme: 新增 teal 主题;暗黑背景统一对齐
- 圆形头像双保险(image 自身 border-radius)修复月/年榜方图

注: cloudfunctions/leaderboard 改动须在开发者工具重新部署才生效。
This commit is contained in:
2026-07-22 09:36:22 +08:00
parent 70b87d424d
commit 6176f2c341
32 changed files with 924 additions and 197 deletions
+12 -12
View File
@@ -29,21 +29,21 @@
duration="{{duration}}"
remaining="{{isCompleted ? 0 : remaining}}"
size="{{360}}"
ringWidth="{{16}}"
ringWidth="{{22}}"
status="{{status}}"
primaryColor="{{theme.primary}}"
primaryLightColor="{{theme.primaryLight}}"
trackColor="{{isDark ? '#2C2C2E' : '#EEEEEE'}}"
trackColor="{{isDark ? '#3A3A40' : '#EEEEEE'}}"
></progress-ring>
<!-- 完成庆祝粒子 -->
<view class="celebrate-burst" wx:if="{{isCompleted}}">
<view class="spark s1">✨</view>
<view class="spark s2">⭐</view>
<view class="spark s3">💫</view>
<view class="spark s4">🌟</view>
<view class="spark s5">✨</view>
<view class="spark s6">💪</view>
<image class="spark s1" src="{{icons.sparkleFill}}" mode="aspectFit"></image>
<image class="spark s2" src="{{icons.sparkleFill}}" mode="aspectFit"></image>
<image class="spark s3" src="{{icons.crownFill}}" mode="aspectFit"></image>
<image class="spark s4" src="{{icons.sparkleFill}}" mode="aspectFit"></image>
<image class="spark s5" src="{{icons.sparkleFill}}" mode="aspectFit"></image>
<image class="spark s6" src="{{icons.likeFill}}" mode="aspectFit"></image>
</view>
<view class="overtime-badge" wx:if="{{overtime > 0}}">
@@ -87,7 +87,7 @@
size="xl"
block
text="开始"
icon-src="{{icons.playFill}}"
icon-src="{{icons.playWhite}}"
bindtap="onStart"
></ui-btn>
@@ -106,7 +106,7 @@
variant="primary"
size="xl"
text="继续"
icon-src="{{icons.playFill}}"
icon-src="{{icons.playWhite}}"
custom-style="margin-right: 28rpx;"
bindtap="onStart"
></ui-btn>
@@ -137,7 +137,7 @@
<view class="completion-mask" wx:if="{{showCompletion}}" catchtouchmove="onNoop">
<view class="completion-card">
<view class="completion-emoji-wrap">
<text class="completion-emoji">{{completionLevel === 'first' ? '🎉' : completionLevel === 'record' ? '🏆' : completionLevel === 'milestone' ? '🔥' : '✨'}}</text>
<image class="completion-icon" src="{{completionLevel === 'first' ? icons.partyWhite : completionLevel === 'record' ? icons.trophyWhite : completionLevel === 'milestone' ? icons.hotWhite : icons.sparkleWhite}}" mode="aspectFit"></image>
</view>
<text class="completion-title">{{completionMessage}}</text>
@@ -153,7 +153,7 @@
</view>
<view class="completion-streak" wx:if="{{completionStreak > 0}}">
<text class="streak-flame">🔥</text>
<image class="streak-flame" src="{{icons.hotFill}}" mode="aspectFit"></image>
<text class="streak-text">连续打卡 {{completionStreak}} 天</text>
</view>