diff --git a/frontend/src/components/RecipeDetailOverlay.vue b/frontend/src/components/RecipeDetailOverlay.vue index d8a4bd7..4a6b9b6 100644 --- a/frontend/src/components/RecipeDetailOverlay.vue +++ b/frontend/src/components/RecipeDetailOverlay.vue @@ -516,13 +516,18 @@ async function loadBrand() { } catch { brand.value = {} } - // Show upload prompt if user hasn't set up brand assets yet + // Prompt QR upload at most once per month if (showBrandHint.value) { - const ok = await showConfirm( - '上传你的专属二维码,让配方卡片更专业 ✨', - { okText: '去上传', cancelText: '取消' } - ) - if (ok) goUploadQr() + const lastPrompt = localStorage.getItem('qr_upload_prompt_time') + const oneMonth = 30 * 24 * 60 * 60 * 1000 + if (!lastPrompt || Date.now() - Number(lastPrompt) > oneMonth) { + localStorage.setItem('qr_upload_prompt_time', String(Date.now())) + const ok = await showConfirm( + '上传你的专属二维码,让配方卡片更专业 ✨', + { okText: '去上传', cancelText: '下次再说' } + ) + if (ok) goUploadQr() + } } }