feat: 完成训练分级庆祝 (normal/first/milestone/record)

- normal: 12 条彩带
- record (破个人纪录): 24 条 + 横幅"🏆 新纪录!X秒"
- milestone (连击 7/14/30/50/100/365 天): 32 条 + 横幅
- first (首次训练): 40 条 + 横幅"🎉 第一次训练"

横幅 3.5s 后自动淡出,彩带时长随等级递增(2.4s → 4s)。
This commit is contained in:
2026-07-08 14:13:11 +08:00
parent 9bd4b8c2f4
commit 96d92cfe10
3 changed files with 115 additions and 23 deletions
+11 -10
View File
@@ -2,16 +2,17 @@
<!-- 全屏彩带完成庆祝 -->
<view class="confetti" wx:if="{{isCompleted}}">
<view class="confetti-piece c1"></view>
<view class="confetti-piece c2"></view>
<view class="confetti-piece c3"></view>
<view class="confetti-piece c4"></view>
<view class="confetti-piece c5"></view>
<view class="confetti-piece c6"></view>
<view class="confetti-piece c7"></view>
<view class="confetti-piece c8"></view>
<view class="confetti-piece c9"></view>
<view class="confetti-piece c10"></view>
<view
wx:for="{{confettiPieces}}"
wx:key="i"
class="confetti-piece confetti-piece--{{celebrationLevel}}"
style="left: {{item.left}}%; background: {{item.color}}; animation-delay: {{item.delay}}s; transform: rotate({{item.rotate}}deg); width: {{item.size}}rpx; height: {{item.size * 2}}rpx;"
></view>
</view>
<!-- 成就横幅 (record / milestone / first) -->
<view class="achievement-banner" wx:if="{{isCompleted && celebrationLevel !== 'normal'}}">
<text class="achievement-text">{{celebrationMessage}}</text>
</view>
<!-- 呼吸引导环 + 进度条 -->