diff --git a/src/components/feed/PigBreedTable.vue b/src/components/feed/PigBreedTable.vue index 7568a89d..0e17e96d 100644 --- a/src/components/feed/PigBreedTable.vue +++ b/src/components/feed/PigBreedTable.vue @@ -53,27 +53,45 @@ -

该品种下的年龄阶段简介

- - - - - - - - - - - - - - +
+

该品种下的年龄阶段简介

+ 添加年龄阶段 +
+ + + @@ -112,6 +130,22 @@ @refresh="handleNutrientRequirementsRefresh" > + + + + + @@ -120,12 +154,14 @@ import {ref, onMounted} from 'vue'; import {FeedApi} from '../../api/feed'; import {ElMessageBox, ElMessage} from 'element-plus'; import PigNutrientRequirementsDisplay from './PigNutrientRequirementsDisplay.vue'; // 导入新的组件 +import PigTypeEditor from './PigTypeEditor.vue'; // 导入年龄阶段编辑器组件 export default { name: 'PigBreedTable', emits: ['edit'], // 声明触发的事件 components: { PigNutrientRequirementsDisplay, // 注册组件 + PigTypeEditor, // 注册年龄阶段编辑器组件 }, setup(props, { emit }) { const mainTable = ref(null); // el-table 的引用 @@ -140,6 +176,11 @@ export default { const currentBreedName = ref(''); const currentAgeStageName = ref(''); const currentPigTypeId = ref(null); // 新增:用于传递给营养需求编辑器的 pigType ID + // 年龄阶段编辑弹窗相关 + const showPigTypeDialog = ref(false); + const currentPigType = ref({}); // 当前编辑的年龄阶段数据 + const currentBreedIdForPigType = ref(null); // 当前操作的品种ID + const isEditingPigType = ref(false); // 是否是编辑模式 const pagination = ref({ page: 1, @@ -279,6 +320,73 @@ export default { showNutrientDialog.value = false; }; + // 处理添加年龄阶段 + const handleAddPigType = (breedId) => { + isEditingPigType.value = false; + currentPigType.value = { // 初始化新年龄阶段的数据 + age_stage_name: '', + description: '', + min_days: 0, + max_days: 0, + min_weight: 0, + max_weight: 0, + daily_gain_weight: 0, + daily_feed_intake: 0, + }; + currentBreedIdForPigType.value = breedId; + showPigTypeDialog.value = true; + }; + + // 处理编辑年龄阶段 + const handleEditPigType = (pigType) => { + isEditingPigType.value = true; + currentPigType.value = { ...pigType }; // 复制一份数据进行编辑 + currentBreedIdForPigType.value = pigType.breed_id; + showPigTypeDialog.value = true; + }; + + // 处理删除年龄阶段 + const handleDeletePigType = (pigType) => { + ElMessageBox.confirm( + `确定要删除年龄阶段 "${pigType.age_stage_name}" 吗?`, + '提示', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ).then(async () => { + try { + await FeedApi.deletePigType(pigType.id); + ElMessage.success('年龄阶段删除成功'); + // 刷新当前展开行的 pig_types 数据 + const expandedRow = tableData.value.find(item => expandRowKeys.value.includes(item.breed_id)); + if (expandedRow) { + await handleExpandChange(expandedRow, [expandedRow]); + } + } catch (error) { + ElMessage.error('删除失败: ' + (error.message || '未知错误')); + } + }).catch(() => { + // 用户取消操作 + }); + }; + + // 年龄阶段编辑器保存后的回调 + const handlePigTypeSave = async () => { + showPigTypeDialog.value = false; + // 刷新当前展开行的 pig_types 数据 + const expandedRow = tableData.value.find(item => expandRowKeys.value.includes(currentBreedIdForPigType.value)); + if (expandedRow) { + await handleExpandChange(expandedRow, [expandedRow]); + } + }; + + // 年龄阶段编辑器取消后的回调 + const handlePigTypeCancel = () => { + showPigTypeDialog.value = false; + }; + onMounted(() => { fetchPigBreeds(); }); @@ -295,6 +403,10 @@ export default { currentBreedName, currentAgeStageName, currentPigTypeId, + showPigTypeDialog, + currentPigType, + currentBreedIdForPigType, + isEditingPigType, handleSearch, handleSizeChange, handleCurrentChange, @@ -305,7 +417,12 @@ export default { handleEdit, handleDelete, fetchPigBreeds, // 将方法暴露出去 + handleAddPigType, + handleEditPigType, + handleDeletePigType, handleNutrientRequirementsRefresh, // 暴露给模板 + handlePigTypeSave, + handlePigTypeCancel, }; }, }; diff --git a/src/components/feed/PigTypeEditor.vue b/src/components/feed/PigTypeEditor.vue new file mode 100644 index 00000000..f3fc1b8e --- /dev/null +++ b/src/components/feed/PigTypeEditor.vue @@ -0,0 +1,124 @@ + + + + +