diff --git a/src/api/feed.js b/src/api/feed.js index 7531017c..e938cd5d 100644 --- a/src/api/feed.js +++ b/src/api/feed.js @@ -278,7 +278,7 @@ import {PaginationDTO, Response} from '../enums'; /** * @typedef {object} RecipeIngredientDto * @property {number} raw_material_id - 原料ID - * @property {number} [percentage] - 原料在配方中的百分比 (0-1之间) + * @property {number} [percentage] - 原料在配方中的百分比 (0-100之间) */ /** diff --git a/src/components/feed/RecipeDetailDialog.vue b/src/components/feed/RecipeDetailDialog.vue index 18febbb7..ec44a7f5 100644 --- a/src/components/feed/RecipeDetailDialog.vue +++ b/src/components/feed/RecipeDetailDialog.vue @@ -25,7 +25,7 @@ @@ -35,7 +35,7 @@ @@ -111,7 +111,7 @@ export default { ingredients.forEach(ing => { if (ing.raw_material_nutrients) { ing.raw_material_nutrients.forEach(nutrient => { - const contribution = nutrient.value * ing.percentage; + const contribution = nutrient.value * (ing.percentage / 100); // 修正:计算时需要将百分比转换为小数 if (summary.has(nutrient.nutrient_name)) { summary.set(nutrient.nutrient_name, summary.get(nutrient.nutrient_name) + contribution); } else { @@ -213,11 +213,11 @@ export default { // 保存配方 const handleSaveRecipe = async () => { - // 验证占比总和是否为1 + // 验证占比总和是否为100 const totalPercentage = localIngredientDetails.value.reduce((sum, ing) => sum + ing.percentage, 0); - if (Math.abs(totalPercentage - 1) > 0.001) { // 允许浮点数误差 - ElMessage.error(`原料总占比必须为100%,当前为${(totalPercentage * 100).toFixed(2)}%`); + if (Math.abs(totalPercentage - 100) > 0.001) { // 允许浮点数误差 + ElMessage.error(`原料总占比必须为100%,当前为${totalPercentage.toFixed(2)}%`); return; }