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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+