From e0729ce600fefa3a95f7065835c179587c68b126 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Tue, 2 Dec 2025 16:00:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81ai=E7=82=B9=E8=AF=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/feed.js | 2 +- src/components/feed/AIRecipeReviewDialog.vue | 188 +++++++++++++++++++ src/components/feed/RecipeTable.vue | 6 +- src/views/feed/RecipeList.vue | 26 ++- 4 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 src/components/feed/AIRecipeReviewDialog.vue diff --git a/src/api/feed.js b/src/api/feed.js index c3712f30..881dbcdd 100644 --- a/src/api/feed.js +++ b/src/api/feed.js @@ -674,7 +674,7 @@ export const generatePrioritizedStockRecipe = (pigTypeId) => { * @returns {Promise>} */ export const aiDiagnoseRecipe = (id, pigTypeId) => { - return http.get(`/api/v1/feed/recipes/${id}/ai-diagnose`, {params: {pig_type_id: pigTypeId}}); + return http.get(`/api/v1/feed/recipes/${id}/ai-diagnose`, {params: {pig_type_id: pigTypeId}, timeout: 0}); }; diff --git a/src/components/feed/AIRecipeReviewDialog.vue b/src/components/feed/AIRecipeReviewDialog.vue new file mode 100644 index 00000000..15d05b6d --- /dev/null +++ b/src/components/feed/AIRecipeReviewDialog.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/components/feed/RecipeTable.vue b/src/components/feed/RecipeTable.vue index 2c261242..9c4dc56b 100644 --- a/src/components/feed/RecipeTable.vue +++ b/src/components/feed/RecipeTable.vue @@ -24,8 +24,9 @@ - + @@ -43,6 +44,7 @@ export default { default: () => [] } }, - emits: ['edit', 'delete', 'show-details'] + // 声明新的ai-review事件 + emits: ['edit', 'delete', 'show-details', 'ai-review'] }; diff --git a/src/views/feed/RecipeList.vue b/src/views/feed/RecipeList.vue index 7f89621f..e489cc9d 100644 --- a/src/views/feed/RecipeList.vue +++ b/src/views/feed/RecipeList.vue @@ -41,6 +41,7 @@ @edit="editRecipe" @delete="deleteRecipe" @show-details="handleShowDetails" + @ai-review="openAIRecipeReviewDialog" /> @@ -65,6 +66,13 @@ @success="onGenerateRecipeSuccess" @cancel="generateRecipeDialogVisible = false" /> + + + @@ -75,7 +83,8 @@ import RecipeTable from '../../components/feed/RecipeTable.vue'; import RecipeForm from '../../components/feed/RecipeForm.vue'; import RecipeDetailDialog from '../../components/feed/RecipeDetailDialog.vue'; import { ElMessage, ElMessageBox } from 'element-plus'; -import GenerateRecipeDialog from '../../components/feed/GenerateRecipeDialog.vue'; // 引入新的组件 +import GenerateRecipeDialog from '../../components/feed/GenerateRecipeDialog.vue'; +import AIRecipeReviewDialog from '../../components/feed/AIRecipeReviewDialog.vue'; // 引入新的AI点评组件 export default { name: 'RecipeList', @@ -84,7 +93,8 @@ export default { RecipeForm, RecipeDetailDialog, Refresh, - GenerateRecipeDialog, // 注册新的组件 + GenerateRecipeDialog, + AIRecipeReviewDialog, // 注册新的AI点评组件 }, data() { return { @@ -97,6 +107,8 @@ export default { detailDialogVisible: false, selectedRecipe: null, generateRecipeDialogVisible: false, // 控制一键生成配方弹窗的显示 + aiReviewDialogVisible: false, // 控制AI点评弹窗的显示 + selectedRecipeForAIReview: null, // 存储当前选择进行AI点评的配方 }; }, async mounted() { @@ -165,7 +177,15 @@ export default { ElMessage.success(`配方 "${recipeName}" 生成成功: ${recipeDescription}`); this.generateRecipeDialogVisible = false; this.loadRecipes(); // 刷新配方列表 - } + }, + /** + * 打开AI点评配方对话框 + * @param {object} recipe - 需要AI点评的配方对象 + */ + openAIRecipeReviewDialog(recipe) { + this.selectedRecipeForAIReview = recipe; + this.aiReviewDialogVisible = true; + }, } };