diff --git a/src/views/admin/template/components/culture-protocol-form.vue b/src/views/admin/template/components/culture-protocol-form.vue index 2485f62..ef9554f 100644 --- a/src/views/admin/template/components/culture-protocol-form.vue +++ b/src/views/admin/template/components/culture-protocol-form.vue @@ -110,36 +110,39 @@
-
- - - - - - - - - - - - - - - - - - - - - - - -
- 添加任务 + + + + + + + + + + + + + + + + + 添加任务 + + +
请先在"固定补料泵"选择补料培养基
@@ -253,6 +256,61 @@ const state = reactive({ const { form } = toRefs(state) const activeTab = ref('basic') const lastActiveTab = ref('basic') +const feedingTaskActiveTab = ref('') + +const feedingPumpTabs = computed(() => { + // 只显示已选择补料培养基的泵 + return state.form.fixedFeedingPumps + .filter(pump => pump.itemDefFeedingMediumID) + .map(pump => { + const medium = state.mediumOptions.find(m => m.id === pump.itemDefFeedingMediumID) + return { + feedingPumpNo: pump.feedingPumpNo, + feedingPumpName: pump.feedingPumpName, + mediumName: medium ? medium.name : '' + } + }) +}) + +watch( + () => feedingPumpTabs.value, + (tabs) => { + // 自动切换到第一个tab + if (tabs.length && !feedingTaskActiveTab.value) { + feedingTaskActiveTab.value = String(tabs[0].feedingPumpNo) + } else if (!tabs.length) { + feedingTaskActiveTab.value = '' + } + }, + { immediate: true } +) + +function getTasksByPumpNo(pumpNo: number) { + return state.form.feedingTasks.filter(task => task.feedingPumpNo === pumpNo) +} + +function addTaskByPump(pumpNo: number) { + state.form.feedingTasks.push({ + id: 0, + cultureProtocolId: 0, + feedingPumpNo: pumpNo, + day: 0, + feedingTime: '', + feedingType: 0, + feedingVolumePercent: 0, + feedingVolume: 0 + }) +} + +function removeTaskByPump(pumpNo: number, index: number) { + // 只移除当前泵下的第index个任务 + const tasks = getTasksByPumpNo(pumpNo) + const task = tasks[index] + const globalIndex = state.form.feedingTasks.findIndex(t => t === task) + if (globalIndex !== -1) { + state.form.feedingTasks.splice(globalIndex, 1) + } +} // 监听反应器选择变化 watch(() => state.form.equReactorId, (newVal, oldVal) => { @@ -379,25 +437,6 @@ const removeRule = (index: number) => { state.form.autoGlucoseFeedingRules.splice(index, 1) } -// 添加任务 -const addTask = () => { - state.form.feedingTasks.push({ - id: 0, - cultureProtocolId: 0, - feedingPumpNo: 0, - day: 0, - feedingTime: '', - feedingType: 0, - feedingVolumePercent: 0, - feedingVolume: 0 - }) -} - -// 移除任务 -const removeTask = (index: number) => { - state.form.feedingTasks.splice(index, 1) -} - const handleTabClick = async (tab: any, event: any) => { if (lastActiveTab.value == 'pumps') {