feat: 护肤品用ml单位,精油用滴,通过unit字段区分
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 12s
Test / e2e-test (push) Successful in 53s

- 后端: oils表新增unit列(drop/ml),API返回unit字段
- 前端: 根据unit='ml'显示ml单位,精油显示滴/drop
- 护肤品drop_count改为实际ml容量,成本按用量比例计算
  如玫瑰护手霜100ml ¥135,配方用30ml → 成本¥40.5

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 14:48:11 +00:00
parent fba66b42c2
commit a3bf13c58d
3 changed files with 16 additions and 8 deletions

View File

@@ -70,6 +70,7 @@ export const useOilsStore = defineStore('oils', () => {
retailPrice: oil.retail_price ?? null,
isActive: oil.is_active !== 0,
enName: oil.en_name ?? null,
unit: oil.unit || 'drop',
}
}
oils.value = newOils
@@ -93,18 +94,22 @@ export const useOilsStore = defineStore('oils', () => {
delete oilsMeta.value[name]
}
function isPortionUnit(name) {
function isMlUnit(name) {
const meta = oilsMeta.value[name]
return meta && meta.dropCount === 1
return meta && meta.unit === 'ml'
}
function isPortionUnit(name) {
return isMlUnit(name)
}
function unitLabel(name, lang = 'zh') {
if (isPortionUnit(name)) return lang === 'en' ? 'portion' : '份'
if (isMlUnit(name)) return 'ml'
return lang === 'en' ? 'drop' : '滴'
}
function unitLabelPlural(name, count, lang = 'zh') {
if (isPortionUnit(name)) return lang === 'en' ? (count === 1 ? 'portion' : 'portions') : '份'
if (isMlUnit(name)) return 'ml'
return lang === 'en' ? (count === 1 ? 'drop' : 'drops') : '滴'
}