fix(MCN工作台): 修复刷新回首页(P0) + 周榜页全面对齐首页交互
- 根因: app.js 先于 data-pages.js 加载,boot 立即 router() 时 DataPages 未定义 → 数据页路由被当未知路由 → location.hash='#/' 回首页 - 修复: boot 改 DOMContentLoaded + 50ms 轮询等 DataPages 就绪再路由;router 兜底保护(数据页名+DataPages未定义不跳首页) - 验证: browser-harness 真实验证(独立Chrome 9223调试实例) 直接访问/刷新/切换全部通过 - 首页周榜: 新增板块(前10+赛道日期筛选)、综合得分倒序排序、9列(新增粉丝/点赞/评论/分享+功能列)、导入按钮、去分页 - 完整周榜页(#/ranking): 对齐首页(赛道列前置、工具栏/分页右对齐、综合得分倒序+橙色、功能列居中、导入/查看按钮区分) - 路由记忆: localStorage+cookie 双写,刷新后恢复上次页面 - 其他: AI写剧本→AI生成脚本、全部字体按比例放大+2(取整无小数)、外链新标签打开、btn-import/btn-view 样式
This commit is contained in:
1 parent
63e8a66f4f
commit
79ae403b7b
9 files changed
+325
-102
No files matched your search
@@ -271,12 +271,21 @@ function getRanking({ date = '', category = '', sortBy = 'rank', order = '', pag
|
||||
for (const f of selFiles) {
|
||||
try { items = items.concat(JSON.parse(fs.readFileSync(path.join(RANKING_DIR, f), 'utf8')).list || []); } catch (e) {}
|
||||
}
|
||||
const orderDir = order === 'asc' ? 'asc' : (order === 'desc' ? 'desc' : (sortBy === 'rank' ? 'asc' : 'desc'));
|
||||
items.sort((a, b) => {
|
||||
const va = sortBy === 'rank' ? num(a.rank) : sortBy === 'comprehensiveScore' ? num(a.comprehensiveScore) : parseNum(a[sortBy]);
|
||||
const vb = sortBy === 'rank' ? num(b.rank) : sortBy === 'comprehensiveScore' ? num(b.comprehensiveScore) : parseNum(b[sortBy]);
|
||||
return orderDir === 'asc' ? va - vb : vb - va;
|
||||
});
|
||||
// 默认排序:综合得分倒序,同分按排名升序(用户点表头排序时走下方 sortBy/order 逻辑)
|
||||
if (!order && (!sortBy || sortBy === 'rank')) {
|
||||
items.sort((a, b) => {
|
||||
const scA = num(a.comprehensiveScore), scB = num(b.comprehensiveScore);
|
||||
if (scA !== scB) return scB - scA;
|
||||
return num(a.rank) - num(b.rank);
|
||||
});
|
||||
} else {
|
||||
const orderDir = order === 'asc' ? 'asc' : (order === 'desc' ? 'desc' : (sortBy === 'rank' ? 'asc' : 'desc'));
|
||||
items.sort((a, b) => {
|
||||
const va = sortBy === 'rank' ? num(a.rank) : sortBy === 'comprehensiveScore' ? num(a.comprehensiveScore) : parseNum(a[sortBy]);
|
||||
const vb = sortBy === 'rank' ? num(b.rank) : sortBy === 'comprehensiveScore' ? num(b.comprehensiveScore) : parseNum(b[sortBy]);
|
||||
return orderDir === 'asc' ? va - vb : vb - va;
|
||||
});
|
||||
}
|
||||
const total = items.length;
|
||||
const limit = Math.max(1, Math.min(Number(pageSize) || 20, 100));
|
||||
const offset = (Math.max(1, Number(page) || 1) - 1) * limit;
|
||||
|
||||
Reference in new issue
Block a user