feat(timer): 训练时长低于阈值不记录并明确提示

- config.js 新增 minRecordSeconds: 20 阈值配置,改配置即可调整门槛
- timer.js: finishTraining/_onCircuitComplete 低时长不播完成语音;
  _saveAndShowCompletion 兜底判断,任何入口都不会把短时训练落库;
  新增 _showNotRecorded: 不保存记录、不更新连胜,复用完成弹窗展示实际秒数
- timer.wxml/wxss: 完成弹窗新增"未计入记录"提示行(门槛说明),
  未记录时隐藏"查看记录/分享"按钮,只留"再来一次+回到首页"
- 修复状态残留: 未记录后点"再来一次",下次正常完成不会误显示"未计入记录"
This commit is contained in:
2026-08-12 10:20:40 +08:00
parent 178a51d261
commit f1ad3eeb95
5 changed files with 152 additions and 3 deletions
+12 -1
View File
@@ -172,6 +172,15 @@
<text class="streak-text">连续打卡 {{completionStreak}} 天</text>
</view>
<!-- 未达最低记录时长:明确提示本次未计入记录,并说明门槛 -->
<view class="completion-not-recorded" wx:if="{{completionNotRecorded}}">
<view class="completion-not-recorded-main">
<image class="completion-not-recorded-icon" src="{{icons.infoFill}}" mode="aspectFit"></image>
<text class="completion-not-recorded-title">本次训练未计入记录</text>
</view>
<text class="completion-not-recorded-sub">撑满 {{minRecordSeconds}} 秒以上才会记录并计入连续打卡</text>
</view>
<!-- 科学提示:价值行 + 弱化风险行(config.scienceTips 按时长选段) -->
<view class="completion-tip" wx:if="{{completionTipValue}}">
<text class="completion-tip-value">{{completionTipValue}}</text>
@@ -185,13 +194,15 @@
<view class="completion-btn completion-btn--primary" bindtap="onTrainAgain">
<text>再来一次</text>
</view>
<view class="completion-btn" bindtap="onViewRecords">
<!-- 未记录时没有成绩可看/可晒,隐藏查看记录与分享入口 -->
<view class="completion-btn" wx:if="{{!completionNotRecorded}}" bindtap="onViewRecords">
<text>查看记录</text>
</view>
<!-- openType="share" 会触发 Page.onShareAppMessage(已实现),
没有这个属性 + onShareAppMessage 时分享按钮就是灰色的。
ui-btn 透传 openType 到内部原生 button。 -->
<ui-btn
wx:if="{{!completionNotRecorded}}"
variant="ghost"
size="md"
customStyle="flex:1; height:88rpx;"