feat: 英文搜索+全部配方翻译
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 6s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Successful in 52s
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 6s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Successful in 52s
- 搜索框支持英文:自动匹配配方英文名和精油英文名 - 292条配方全部翻译英文名(本地+线上同步) - 输入英文时搜索范围包含en_name和精油英文名 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -175,6 +175,7 @@ import { useUiStore } from '../stores/ui'
|
|||||||
import { api } from '../composables/useApi'
|
import { api } from '../composables/useApi'
|
||||||
import RecipeCard from '../components/RecipeCard.vue'
|
import RecipeCard from '../components/RecipeCard.vue'
|
||||||
import RecipeDetailOverlay from '../components/RecipeDetailOverlay.vue'
|
import RecipeDetailOverlay from '../components/RecipeDetailOverlay.vue'
|
||||||
|
import { oilEn } from '../composables/useOilTranslation'
|
||||||
|
|
||||||
const auth = useAuthStore()
|
const auth = useAuthStore()
|
||||||
const oils = useOilsStore()
|
const oils = useOilsStore()
|
||||||
@@ -313,11 +314,14 @@ function expandQuery(q) {
|
|||||||
const exactResults = computed(() => {
|
const exactResults = computed(() => {
|
||||||
if (!searchQuery.value.trim()) return []
|
if (!searchQuery.value.trim()) return []
|
||||||
const q = searchQuery.value.trim().toLowerCase()
|
const q = searchQuery.value.trim().toLowerCase()
|
||||||
|
const isEn = /^[a-zA-Z\s]+$/.test(q)
|
||||||
return recipeStore.recipes.filter(r => {
|
return recipeStore.recipes.filter(r => {
|
||||||
const nameMatch = r.name.toLowerCase().includes(q)
|
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 visibleTags = auth.canEdit ? (r.tags || []) : (r.tags || []).filter(t => !EDITOR_ONLY_TAGS.includes(t))
|
||||||
const tagMatch = visibleTags.some(t => t.toLowerCase().includes(q))
|
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'))
|
}).sort((a, b) => a.name.localeCompare(b.name, 'zh'))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user