diff --git a/frontend/src/stores/oils.js b/frontend/src/stores/oils.js index c141771..234573f 100644 --- a/frontend/src/stores/oils.js +++ b/frontend/src/stores/oils.js @@ -94,25 +94,39 @@ export const useOilsStore = defineStore('oils', () => { delete oilsMeta.value[name] } - function isMlUnit(name) { + const UNIT_LABELS = { + drop: { zh: '滴', en: 'drop', enPlural: 'drops' }, + ml: { zh: 'ml', en: 'ml', enPlural: 'ml' }, + g: { zh: 'g', en: 'g', enPlural: 'g' }, + capsule: { zh: '颗', en: 'capsule', enPlural: 'capsules' }, + } + + function getUnit(name) { const meta = oilsMeta.value[name] - return meta && meta.unit === 'ml' + return (meta && meta.unit) || 'drop' + } + + function isDropUnit(name) { + return getUnit(name) === 'drop' + } + + function isMlUnit(name) { + return getUnit(name) === 'ml' } function isPortionUnit(name) { - return isMlUnit(name) + return !isDropUnit(name) } function unitLabel(name, lang = 'zh') { - if (isMlUnit(name)) return 'ml' - if (name === '植物空胶囊') return lang === 'en' ? 'capsule' : '颗' - return lang === 'en' ? 'drop' : '滴' + const u = UNIT_LABELS[getUnit(name)] || UNIT_LABELS.drop + return lang === 'en' ? u.en : u.zh } function unitLabelPlural(name, count, lang = 'zh') { - if (isMlUnit(name)) return 'ml' - if (name === '植物空胶囊') return lang === 'en' ? (count === 1 ? 'capsule' : 'capsules') : '颗' - return lang === 'en' ? (count === 1 ? 'drop' : 'drops') : '滴' + const u = UNIT_LABELS[getUnit(name)] || UNIT_LABELS.drop + if (lang === 'en') return count === 1 ? u.en : u.enPlural + return u.zh } return { @@ -127,6 +141,8 @@ export const useOilsStore = defineStore('oils', () => { loadOils, saveOil, deleteOil, + getUnit, + isDropUnit, isMlUnit, isPortionUnit, unitLabel, diff --git a/frontend/src/views/OilReference.vue b/frontend/src/views/OilReference.vue index f676e3a..4123a5f 100644 --- a/frontend/src/views/OilReference.vue +++ b/frontend/src/views/OilReference.vue @@ -227,7 +227,7 @@
-