hookehuyr

feat(FamilyRank): 在排名卡片中显示步数并优化样式

添加步数显示到排名卡片中,使用千位分隔符格式化数字
重构排名卡片布局,调整高度和样式以更好展示信息
新增 formatStepsForList 方法用于列表中的步数格式化
1 <!-- 1 <!--
2 * @Date: 2025-09-01 13:07:52 2 * @Date: 2025-09-01 13:07:52
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-09-01 13:43:56 4 + * @LastEditTime: 2025-09-01 14:46:59
5 * @FilePath: /lls_program/src/pages/FamilyRank/index.vue 5 * @FilePath: /lls_program/src/pages/FamilyRank/index.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -39,7 +39,10 @@ ...@@ -39,7 +39,10 @@
39 </view> 39 </view>
40 <view class="family-name">{{ topRanks[1]?.familyName }}</view> 40 <view class="family-name">{{ topRanks[1]?.familyName }}</view>
41 <view class="leader-name">大家长:{{ topRanks[1]?.leaderName }}</view> 41 <view class="leader-name">大家长:{{ topRanks[1]?.leaderName }}</view>
42 - <view class="rank-number">2</view> 42 + <view class="rank-number">
43 + <view class="rank-num">2</view>
44 + <view class="steps-in-rank">{{ formatSteps(topRanks[1]?.steps) }}</view>
45 + </view>
43 </view> 46 </view>
44 47
45 <!-- 第一名 --> 48 <!-- 第一名 -->
...@@ -50,7 +53,10 @@ ...@@ -50,7 +53,10 @@
50 </view> 53 </view>
51 <view class="family-name">{{ topRanks[0]?.familyName }}</view> 54 <view class="family-name">{{ topRanks[0]?.familyName }}</view>
52 <view class="leader-name">大家长:{{ topRanks[0]?.leaderName }}</view> 55 <view class="leader-name">大家长:{{ topRanks[0]?.leaderName }}</view>
53 - <view class="rank-number">1</view> 56 + <view class="rank-number">
57 + <view class="rank-num">1</view>
58 + <view class="steps-in-rank">{{ formatSteps(topRanks[0]?.steps) }}</view>
59 + </view>
54 </view> 60 </view>
55 61
56 <!-- 第三名 --> 62 <!-- 第三名 -->
...@@ -61,7 +67,10 @@ ...@@ -61,7 +67,10 @@
61 </view> 67 </view>
62 <view class="family-name">{{ topRanks[2]?.familyName }}</view> 68 <view class="family-name">{{ topRanks[2]?.familyName }}</view>
63 <view class="leader-name">大家长:{{ topRanks[2]?.leaderName }}</view> 69 <view class="leader-name">大家长:{{ topRanks[2]?.leaderName }}</view>
64 - <view class="rank-number">3</view> 70 + <view class="rank-number">
71 + <view class="rank-num">3</view>
72 + <view class="steps-in-rank">{{ formatSteps(topRanks[2]?.steps) }}</view>
73 + </view>
65 </view> 74 </view>
66 </view> 75 </view>
67 76
...@@ -83,7 +92,7 @@ ...@@ -83,7 +92,7 @@
83 </view> 92 </view>
84 </view> 93 </view>
85 <view class="steps-info"> 94 <view class="steps-info">
86 - <view class="steps">{{ formatSteps(item.steps) }}</view> 95 + <view class="steps">{{ formatStepsForList(item.steps) }}</view>
87 </view> 96 </view>
88 </view> 97 </view>
89 </view> 98 </view>
...@@ -103,7 +112,7 @@ ...@@ -103,7 +112,7 @@
103 </view> 112 </view>
104 </view> 113 </view>
105 <view class="my-rank-right"> 114 <view class="my-rank-right">
106 - <view class="my-steps">{{ formatSteps(myRank.steps) }}</view> 115 + <view class="my-steps">{{ formatStepsForList(myRank.steps) }}</view>
107 <view class="rank-status">{{ myRank.status }}</view> 116 <view class="rank-status">{{ myRank.status }}</view>
108 </view> 117 </view>
109 </view> 118 </view>
...@@ -131,12 +140,16 @@ const switchTab = (tab) => { ...@@ -131,12 +140,16 @@ const switchTab = (tab) => {
131 * @returns {string} 格式化后的步数 140 * @returns {string} 格式化后的步数
132 */ 141 */
133 const formatSteps = (steps) => { 142 const formatSteps = (steps) => {
134 - if (steps >= 10000) { 143 + return steps ? steps.toLocaleString() : '0'
135 - return (steps / 10000).toFixed(1) + 'w' 144 +}
136 - } else if (steps >= 1000) { 145 +
137 - return (steps / 1000).toFixed(1) + 'k' 146 +/**
138 - } 147 + * 格式化步数显示(用于列表显示,使用千位分隔符格式)
139 - return steps.toString() 148 + * @param {number} steps - 步数
149 + * @returns {string} 格式化后的步数
150 + */
151 +const formatStepsForList = (steps) => {
152 + return steps ? steps.toLocaleString() : '0'
140 } 153 }
141 154
142 // 前三名数据 155 // 前三名数据
...@@ -328,15 +341,28 @@ const myRank = ref({ ...@@ -328,15 +341,28 @@ const myRank = ref({
328 width: 160rpx; 341 width: 160rpx;
329 height: 200rpx; 342 height: 200rpx;
330 display: flex; 343 display: flex;
344 + flex-direction: column;
331 align-items: center; 345 align-items: center;
332 justify-content: center; 346 justify-content: center;
333 - font-size: 48rpx;
334 - font-weight: bold;
335 - color: white;
336 position: relative; 347 position: relative;
337 background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%); 348 background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%);
338 border-radius: 20rpx 20rpx 0 0; 349 border-radius: 20rpx 20rpx 0 0;
339 box-shadow: 0 8rpx 16rpx rgba(0, 0, 0, 0.2); 350 box-shadow: 0 8rpx 16rpx rgba(0, 0, 0, 0.2);
351 +
352 + .rank-num {
353 + font-size: 48rpx;
354 + font-weight: bold;
355 + color: white;
356 + margin-bottom: 12rpx;
357 + }
358 +
359 + .steps-in-rank {
360 + font-size: 35rpx;
361 + font-weight: 600;
362 + color: white;
363 + text-align: center;
364 + line-height: 1.2;
365 + }
340 } 366 }
341 367
342 &.second { 368 &.second {
...@@ -351,7 +377,7 @@ const myRank = ref({ ...@@ -351,7 +377,7 @@ const myRank = ref({
351 377
352 .rank-number { 378 .rank-number {
353 width: 220rpx; 379 width: 220rpx;
354 - height: 180rpx; 380 + height: 200rpx;
355 background: linear-gradient(135deg, #C0C0C0 0%, #A0A0A0 100%); 381 background: linear-gradient(135deg, #C0C0C0 0%, #A0A0A0 100%);
356 } 382 }
357 } 383 }
...@@ -369,7 +395,7 @@ const myRank = ref({ ...@@ -369,7 +395,7 @@ const myRank = ref({
369 395
370 .rank-number { 396 .rank-number {
371 width: 220rpx; 397 width: 220rpx;
372 - height: 240rpx; 398 + height: 260rpx;
373 background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); 399 background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);
374 } 400 }
375 } 401 }
...@@ -386,7 +412,7 @@ const myRank = ref({ ...@@ -386,7 +412,7 @@ const myRank = ref({
386 412
387 .rank-number { 413 .rank-number {
388 width: 220rpx; 414 width: 220rpx;
389 - height: 160rpx; 415 + height: 180rpx;
390 background: linear-gradient(135deg, #CD7F32 0%, #B8860B 100%); 416 background: linear-gradient(135deg, #CD7F32 0%, #B8860B 100%);
391 } 417 }
392 } 418 }
......