feat: 排行榜虚拟领奖台 + 勋章对齐与尺寸统一
- 领奖台数据不足 3 名时显示虚拟空位(虚线轮廓+虚位以待) - 领奖台勋章与昵称对齐改为等高盒结构性修复(移除 margin 盲推) - 全 app 成就勋章图标尺寸统一为 30rpx(前三名/列表/设置页/记录页一致) - 勋章 SVG 按包围盒精确居中(utils/icons.js) - 设置页/记录页勋章展示配套调整
This commit is contained in:
@@ -67,6 +67,7 @@ Page({
|
||||
icons: iconsMod.build(),
|
||||
nickName: '',
|
||||
avatarUrl: '',
|
||||
unlockedBadges: [],
|
||||
// Dark mode
|
||||
darkModePref: 'system',
|
||||
darkModeOptions: [
|
||||
@@ -125,10 +126,27 @@ Page({
|
||||
plans: buildPlansList(storage.getCustomPlans()),
|
||||
nickName: profile.nickname || '',
|
||||
avatarUrl: profile.avatarUrl || '',
|
||||
darkModePref: darkMod.getPref()
|
||||
darkModePref: darkMod.getPref(),
|
||||
// 已解锁勋章:个人资料昵称旁展示(主题色版,浅底可见)
|
||||
unlockedBadges: this._getUnlockedBadges()
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 已解锁勋章列表 = 累计去重训练日达到阈值的 badge。
|
||||
* iconFill 是 icons.build 生成的主题色变体 key(icons.js PATHS.*Fill)。
|
||||
*/
|
||||
_getUnlockedBadges() {
|
||||
try {
|
||||
const totalDays = storage.getTotalStats().totalDays
|
||||
return config.trainingDayBadges
|
||||
.filter(b => totalDays >= b.days)
|
||||
.map(b => ({ ...b, iconFill: b.icon + 'Fill' }))
|
||||
} catch (e) {
|
||||
return []
|
||||
}
|
||||
},
|
||||
|
||||
applyThemeToPage() {
|
||||
themeMod.applyThemeToPage(this)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user