From 4442da31c33264c0854fb2ebc01a956b68fd591c Mon Sep 17 00:00:00 2001 From: Victor_Jay Date: Wed, 3 Jun 2026 00:04:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B6=E8=97=8F=E5=A4=B9=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E4=BC=98=E5=8C=96=20=E2=80=94=20=E5=B7=B2=E6=94=B6?= =?UTF-8?q?=E8=97=8F=E6=A0=87=E8=AF=86=20+=20=E7=A7=BB=E9=99=A4=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=20+=20=E7=82=B9=E5=87=BB=E5=8F=AF=E9=9D=A0=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 收藏夹选项中已收藏项显示黄色'已收藏'徽章,一目了然 - 点击判断改用 classList.contains('active') 替代 JS 变量,防 currentFolderId 为空 - addToFolder 兜底处理'已在此收藏夹中'错误,不弹 alert - 取消收藏确认文案优化为'确定移出该收藏夹吗?' --- templates/MetaLab-2026/static/css/posts.css | 11 +++++++++++ templates/MetaLab-2026/static/js/post-favorite.js | 10 ++++++++-- templates/shared/static/js/utils.js | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/templates/MetaLab-2026/static/css/posts.css b/templates/MetaLab-2026/static/css/posts.css index c81e37d..50cc688 100644 --- a/templates/MetaLab-2026/static/css/posts.css +++ b/templates/MetaLab-2026/static/css/posts.css @@ -927,6 +927,17 @@ color: #9ca3af; } +.fav-active-tag { + font-size: 11px; + color: #f59e0b; + background: #fef3c7; + padding: 1px 6px; + border-radius: 4px; + font-weight: 500; + flex-shrink: 0; + margin-right: 4px; +} + .fav-folder-opt-count { font-size: 12px; color: #9ca3af; diff --git a/templates/MetaLab-2026/static/js/post-favorite.js b/templates/MetaLab-2026/static/js/post-favorite.js index 838eb26..dec708d 100644 --- a/templates/MetaLab-2026/static/js/post-favorite.js +++ b/templates/MetaLab-2026/static/js/post-favorite.js @@ -47,6 +47,7 @@ var isActive = currentFolderId === f.id; html += '
' + '' + escapeHtml(f.name) + (f.is_default ? ' (默认)' : '') + '' + + (isActive ? '已收藏' : '') + '' + (f.item_count || 0) + ' 篇' + '
'; }); @@ -110,6 +111,11 @@ updateBtn(true); if (favCountEl) favCountEl.textContent = (parseInt(favCountEl.textContent) || 0) + 1; hideModal(); + } else if (d.message && d.message.indexOf('已在此收藏夹中') !== -1) { + // 后端返回已收藏,直接关闭弹窗(兜底) + currentFolderId = folderId; + updateBtn(true); + hideModal(); } else { alert(d.message || '操作失败'); } @@ -119,7 +125,7 @@ function removeFromFolder(folderId) { if (loading) return; - showConfirm('确认', '确定取消收藏吗?').then(function(ok) { + showConfirm('确认取消收藏', '确定移出该收藏夹吗?').then(function(ok) { if (!ok) return; loading = true; api('DELETE', '/api/folders/' + folderId + '/posts/' + postId) @@ -194,7 +200,7 @@ if (!option) return; var folderId = parseInt(option.getAttribute('data-id')); if (isNaN(folderId)) return; - if (currentFolderId === folderId) { + if (option.classList.contains('active')) { removeFromFolder(folderId); } else { addToFolder(folderId); diff --git a/templates/shared/static/js/utils.js b/templates/shared/static/js/utils.js index b6a03f2..d8071cb 100644 --- a/templates/shared/static/js/utils.js +++ b/templates/shared/static/js/utils.js @@ -127,7 +127,7 @@ function showConfirm(title, message) { var overlay = document.createElement('div'); setStyles(overlay, { position: 'fixed', inset: '0', background: 'rgba(0,0,0,0.4)', - zIndex: '9998', display: 'flex', alignItems: 'center', justifyContent: 'center' + zIndex: '10000', display: 'flex', alignItems: 'center', justifyContent: 'center' }); // 弹窗容器 @@ -209,7 +209,7 @@ function showPrompt(message, defaultValue) { var overlay = document.createElement('div'); setStyles(overlay, { position: 'fixed', inset: '0', background: 'rgba(0,0,0,0.4)', - zIndex: '9998', display: 'flex', alignItems: 'center', justifyContent: 'center' + zIndex: '10000', display: 'flex', alignItems: 'center', justifyContent: 'center' }); // 弹窗容器