QR upload: replace inline hint with dialog, add back button in brand page
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Failing after 1m21s
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Failing after 1m21s
- Replace the inline brand-upload-hint bar in RecipeDetailOverlay with a confirm dialog (「去上传」/「取消」) that pops up when the card opens - Extend useDialog/CustomDialog to support custom ok/cancel button text - Add a 「← 返回配方卡片」banner in MyDiary brand tab when navigated from a recipe card, allowing return without uploading Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -107,6 +107,11 @@
|
||||
|
||||
<!-- Brand Tab -->
|
||||
<div v-if="activeTab === 'brand'" class="tab-content">
|
||||
<!-- Back to recipe card (when navigated from a recipe) -->
|
||||
<div v-if="returnRecipeId" class="return-banner">
|
||||
<span>📋 上传完成后可返回配方卡片</span>
|
||||
<button class="btn-return" @click="goBackToRecipe">← 返回配方卡片</button>
|
||||
</div>
|
||||
<div class="section-card">
|
||||
<h4>🏷️ 品牌设置</h4>
|
||||
|
||||
@@ -232,6 +237,7 @@ const router = useRouter()
|
||||
const activeTab = ref('brand')
|
||||
const pasteText = ref('')
|
||||
const selectedDiaryId = ref(null)
|
||||
const returnRecipeId = ref(null)
|
||||
const selectedDiary = ref(null)
|
||||
const newEntryText = ref('')
|
||||
|
||||
@@ -266,8 +272,16 @@ onMounted(async () => {
|
||||
await diaryStore.loadDiary()
|
||||
displayName.value = auth.user.display_name || ''
|
||||
await loadBrandSettings()
|
||||
returnRecipeId.value = localStorage.getItem('oil_return_recipe_id') || null
|
||||
})
|
||||
|
||||
function goBackToRecipe() {
|
||||
if (returnRecipeId.value) {
|
||||
localStorage.removeItem('oil_return_recipe_id')
|
||||
router.push('/?openRecipe=' + encodeURIComponent(returnRecipeId.value))
|
||||
}
|
||||
}
|
||||
|
||||
function selectDiary(d) {
|
||||
const id = d._id || d.id
|
||||
selectedDiaryId.value = id
|
||||
@@ -755,6 +769,39 @@ async function applyBusiness() {
|
||||
border-color: #7ec6a4;
|
||||
}
|
||||
|
||||
/* Return banner */
|
||||
.return-banner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
background: #f0faf5;
|
||||
border: 1.5px solid #7ec6a4;
|
||||
border-radius: 12px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 14px;
|
||||
font-size: 13px;
|
||||
color: #3e7d5a;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.btn-return {
|
||||
background: linear-gradient(135deg, #7ec6a4 0%, #4a9d7e 100%);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
padding: 6px 14px;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
font-family: inherit;
|
||||
font-weight: 500;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.btn-return:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
/* Brand */
|
||||
.form-group {
|
||||
margin-bottom: 14px;
|
||||
|
||||
Reference in New Issue
Block a user