diff --git a/frontend/src/views/RecipeSearch.vue b/frontend/src/views/RecipeSearch.vue index 6f142f2..1cac3b2 100644 --- a/frontend/src/views/RecipeSearch.vue +++ b/frontend/src/views/RecipeSearch.vue @@ -175,6 +175,7 @@ import { useUiStore } from '../stores/ui' import { api } from '../composables/useApi' import RecipeCard from '../components/RecipeCard.vue' import RecipeDetailOverlay from '../components/RecipeDetailOverlay.vue' +import { oilEn } from '../composables/useOilTranslation' const auth = useAuthStore() const oils = useOilsStore() @@ -313,11 +314,14 @@ function expandQuery(q) { const exactResults = computed(() => { if (!searchQuery.value.trim()) return [] const q = searchQuery.value.trim().toLowerCase() + const isEn = /^[a-zA-Z\s]+$/.test(q) return recipeStore.recipes.filter(r => { const nameMatch = r.name.toLowerCase().includes(q) + const enNameMatch = isEn && (r.en_name || '').toLowerCase().includes(q) + const oilEnMatch = isEn && r.ingredients.some(ing => (oilEn(ing.oil) || '').toLowerCase().includes(q)) const visibleTags = auth.canEdit ? (r.tags || []) : (r.tags || []).filter(t => !EDITOR_ONLY_TAGS.includes(t)) const tagMatch = visibleTags.some(t => t.toLowerCase().includes(q)) - return nameMatch || tagMatch + return nameMatch || enNameMatch || oilEnMatch || tagMatch }).sort((a, b) => a.name.localeCompare(b.name, 'zh')) })