From 476d8bbd6e24d6201f5758682a1d248e6a033f8a Mon Sep 17 00:00:00 2001 From: Hera Zhao Date: Fri, 10 Apr 2026 21:58:59 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A0=E6=A4=B0=E5=AD=90=E6=B2=B9?= =?UTF-8?q?=E9=85=8D=E6=96=B9=E7=BC=96=E8=BE=91=E6=97=B6=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=AE=B9=E9=87=8F/=E6=A4=B0=E5=AD=90=E6=B2=B9/?= =?UTF-8?q?=E6=91=98=E8=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 无椰子油:容量不选中,摘要不显示,椰子油行不出现 - 有椰子油:自动匹配容量和稀释比例 - 新增配方默认无椰子油 Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/views/RecipeManager.vue | 54 ++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/frontend/src/views/RecipeManager.vue b/frontend/src/views/RecipeManager.vue index 531c098..bc784bc 100644 --- a/frontend/src/views/RecipeManager.vue +++ b/frontend/src/views/RecipeManager.vue @@ -317,8 +317,8 @@ - -
+ +
{{ recipeSummaryText }}
@@ -749,10 +749,31 @@ function editRecipe(recipe) { const ings = recipe.ingredients || [] formIngredients.value = ings.filter(i => i.oil !== '椰子油').map(i => ({ ...i, _search: i.oil, _open: false })) const coco = ings.find(i => i.oil === '椰子油') - formCocoRow.value = coco ? { ...coco, _search: '椰子油', _open: false } : { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + if (coco) { + formCocoRow.value = { ...coco, _search: '椰子油', _open: false } + // Guess volume from total drops + const eoDrops = ings.filter(i => i.oil && i.oil !== '椰子油').reduce((s, i) => s + (i.drops || 0), 0) + const totalDrops = eoDrops + coco.drops + const ml = totalDrops / DROPS_PER_ML + if (ml <= 2) formVolume.value = 'single' + else if (Math.abs(ml - 5) < 1.5) formVolume.value = '5' + else if (Math.abs(ml - 10) < 2.5) formVolume.value = '10' + else if (Math.abs(ml - 15) < 2.5) formVolume.value = '15' + else if (Math.abs(ml - 20) < 3) formVolume.value = '20' + else if (Math.abs(ml - 30) < 6) formVolume.value = '30' + else { formVolume.value = 'custom'; formCustomVolume.value = Math.round(ml) } + // Guess dilution + if (eoDrops > 0 && coco.drops > 0) { + const ratio = Math.round(coco.drops / eoDrops) + const options = [3,4,5,6,7,8,9,10,12,15,20] + formDilution.value = options.reduce((a, b) => Math.abs(b - ratio) < Math.abs(a - ratio) ? b : a) + } + } else { + formCocoRow.value = null + formVolume.value = '' + } formNote.value = recipe.note || '' formTags.value = [...(recipe.tags || [])] - calcDilutionFromIngs(recipe.ingredients) showAddOverlay.value = true } @@ -765,7 +786,7 @@ function closeOverlay() { function resetForm() { formName.value = '' formIngredients.value = [{ oil: '', drops: 1, _search: '', _open: false }] - formCocoRow.value = { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + formCocoRow.value = null formNote.value = '' formTags.value = [] smartPasteText.value = '' @@ -1218,10 +1239,29 @@ function editDiaryRecipe(diary) { const ings = diary.ingredients || [] formIngredients.value = ings.filter(i => i.oil !== '椰子油').map(i => ({ ...i, _search: i.oil, _open: false })) const coco = ings.find(i => i.oil === '椰子油') - formCocoRow.value = coco ? { ...coco, _search: '椰子油', _open: false } : { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + if (coco) { + formCocoRow.value = { ...coco, _search: '椰子油', _open: false } + const eoDrops = ings.filter(i => i.oil && i.oil !== '椰子油').reduce((s, i) => s + (i.drops || 0), 0) + const totalDrops = eoDrops + coco.drops + const ml = totalDrops / DROPS_PER_ML + if (ml <= 2) formVolume.value = 'single' + else if (Math.abs(ml - 5) < 1.5) formVolume.value = '5' + else if (Math.abs(ml - 10) < 2.5) formVolume.value = '10' + else if (Math.abs(ml - 15) < 2.5) formVolume.value = '15' + else if (Math.abs(ml - 20) < 3) formVolume.value = '20' + else if (Math.abs(ml - 30) < 6) formVolume.value = '30' + else { formVolume.value = 'custom'; formCustomVolume.value = Math.round(ml) } + if (eoDrops > 0 && coco.drops > 0) { + const ratio = Math.round(coco.drops / eoDrops) + const options = [3,4,5,6,7,8,9,10,12,15,20] + formDilution.value = options.reduce((a, b) => Math.abs(b - ratio) < Math.abs(a - ratio) ? b : a) + } + } else { + formCocoRow.value = null + formVolume.value = '' + } formNote.value = diary.note || '' formTags.value = [...(diary.tags || [])] - calcDilutionFromIngs(diary.ingredients) showAddOverlay.value = true }