diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 4fa9a292..b9abf5c9 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -998,6 +998,7 @@ export default { aiRecommend: 'AI Recommendation', reRecommend: 'Regenerate Recommendation', aiRecommendError: 'AI Recommendation Failed', + refreshSearch: 'Re-search', }, browse: { actor: 'Actor', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 68de3843..aa35c1c4 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -993,6 +993,7 @@ export default { aiRecommend: '智能推荐', reRecommend: '重新生成推荐', aiRecommendError: '智能推荐失败', + refreshSearch: '重新搜索', }, browse: { actor: '演员', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 9e592a2e..c5a98532 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -994,6 +994,7 @@ export default { aiRecommend: '智能推薦', reRecommend: '重新生成推薦', aiRecommendError: '智能推薦失敗', + refreshSearch: '重新搜尋', }, browse: { actor: '演員', diff --git a/src/pages/resource.vue b/src/pages/resource.vue index 31c32b18..5f29a21e 100644 --- a/src/pages/resource.vue +++ b/src/pages/resource.vue @@ -95,6 +95,9 @@ const cardScroll = useInfiniteScroll(filteredCardDataList) // 是否刷新过 const isRefreshed = ref(false) +// 是否正在重新搜索 +const isRefreshing = ref(false) + // 加载进度文本 const progressText = ref(t('common.pleaseWait')) @@ -464,6 +467,23 @@ async function fetchData() { } } +// 重新搜索(使用相同参数重新触发搜索) +async function refreshSearch() { + if (isRefreshing.value || progressActive.value) return + isRefreshing.value = true + try { + // 如正在显示AI推荐结果,先切回原始结果,确保状态干净 + if (showingAiResults.value) { + await switchToOriginalResults() + } + await fetchData() + } catch (error) { + console.error('重新搜索失败:', error) + } finally { + isRefreshing.value = false + } +} + // 切换到智能推荐结果(自动保存筛选条件) async function switchToAiResults() { if (showingAiResults.value) { @@ -833,6 +853,22 @@ onUnmounted(() => { + + + + + {{ t('resource.refreshSearch') }} + + +
@@ -1180,6 +1216,14 @@ onUnmounted(() => { background-color: rgba(var(--v-theme-primary), 0.05); } +/* 重新搜索按钮 */ +.refresh-search-btn { + block-size: 44px !important; + inline-size: 44px !important; + border-radius: 8px !important; + background-color: rgba(var(--v-theme-surface-variant), 0.1); +} + /* AI按钮组样式 */ .ai-toggle-container { position: relative; @@ -1371,6 +1415,11 @@ onUnmounted(() => { inline-size: 36px; } + .refresh-search-btn { + block-size: 36px !important; + inline-size: 36px !important; + } + .ai-toggle-buttons { block-size: 36px; }