This commit is contained in:
zhx 2026-07-14 14:07:20 +08:00
parent c2a681ea2b
commit ee32247f4a
2 changed files with 1326 additions and 380 deletions

File diff suppressed because it is too large Load Diff

View File

@ -232,6 +232,7 @@
.badges img {
width: 12px;
height: 12px;
object-fit: contain;
}
.score-pill {
position: absolute;
@ -377,6 +378,7 @@
.row-badges img {
width: 12px;
height: 12px;
object-fit: contain;
}
.row-score {
display: flex;
@ -925,6 +927,14 @@
function byId(id) {
return document.getElementById(id);
}
function escapeAttr(value) {
return String(value || '')
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
function queryValue(name) {
return new URLSearchParams(window.location.search).get(
name
@ -994,11 +1004,22 @@
};
});
}
function badges() {
var html = '';
for (var i = 0; i < 4; i += 1)
html += '<img src="assets/vip.webp" alt="">';
return html;
function badges(item) {
var covers =
item && item.user
? item.user.short_badge_cover_urls || []
: [];
// 榜单设计最多预留四个短徽章位;没有真实封面时返回空串,不再展示占位徽章。
return covers
.slice(0, 4)
.map(function (coverURL) {
return (
'<img src="' +
escapeAttr(coverURL) +
'" alt="">'
);
})
.join('');
}
function score(value, className) {
return (
@ -1015,6 +1036,13 @@
var room = item.room || {};
var userId = item.user_id || user.user_id || '';
var roomId = item.room_id || room.room_id || '';
var shortBadgeCovers =
user.short_badge_cover_urls ||
user.shortBadgeCoverUrls ||
[];
if (!Array.isArray(shortBadgeCovers)) {
shortBadgeCovers = [];
}
return {
rank: Number(item.rank || 0),
user_id: String(userId || ''),
@ -1048,6 +1076,13 @@
user.avatar_url ||
user.avatarUrl ||
'',
short_badge_cover_urls:
shortBadgeCovers.filter(function (url) {
return (
typeof url === 'string' &&
url.trim()
);
}),
}
: null,
room: roomId
@ -1108,7 +1143,7 @@
'" alt=""><img class="podium-frame" src="assets/top-frame.webp" alt=""><div class="podium-name">' +
userName(top[0]) +
'</div><div class="badges">' +
badges() +
badges(top[0]) +
'</div>' +
score(top[0].gift_value, 'score-pill') +
'</button>';
@ -1120,7 +1155,7 @@
'" alt=""><img class="podium-frame" src="assets/side-frame-blue.webp" alt=""><div class="podium-name">' +
userName(top[1]) +
'</div><div class="badges">' +
badges() +
badges(top[1]) +
'</div>' +
score(top[1].gift_value, 'score-pill') +
'</button>';
@ -1132,7 +1167,7 @@
'" alt=""><img class="podium-frame" src="assets/side-frame-red.webp" alt=""><div class="podium-name">' +
userName(top[2]) +
'</div><div class="badges">' +
badges() +
badges(top[2]) +
'</div>' +
score(top[2].gift_value, 'score-pill') +
'</button>';
@ -1151,7 +1186,7 @@
'" alt=""><div class="row-main"><div class="row-name">' +
userName(item) +
'</div><div class="row-badges">' +
badges() +
badges(item) +
'</div></div>' +
score(item.gift_value, 'row-score') +
'</button>'