diff --git a/src/views/mes/tasksummary/components/TaskScheduleDialog.vue b/src/views/mes/tasksummary/components/TaskScheduleDialog.vue index 956a9707..73eb984b 100644 --- a/src/views/mes/tasksummary/components/TaskScheduleDialog.vue +++ b/src/views/mes/tasksummary/components/TaskScheduleDialog.vue @@ -151,7 +151,7 @@ @select="handleDetailSelect" @select-all="handleDetailSelectAll" > - + @@ -449,7 +449,10 @@ const handleCurrentTaskChange = async (row: any) => { const parentIsSelected = taskTableRef.value?.getSelectionRows()?.some((t: any) => t.id === row.id) if (parentIsSelected) { detailList.value.forEach(child => { - detailTableRef.value?.toggleRowSelection(child, true) + const unplanNumber = child.number - child.planNumber + if (unplanNumber > 0) { + detailTableRef.value?.toggleRowSelection(child, true) + } }) } }) @@ -474,7 +477,10 @@ const handleTaskSelect = async (selection: any[], row: any) => { return } detailList.value.forEach((child) => { - detailTableRef.value?.toggleRowSelection(child, true) + const unplanNumber = child.number - child.planNumber + if (unplanNumber > 0) { + detailTableRef.value?.toggleRowSelection(child, true) + } }) return } @@ -507,9 +513,12 @@ const handleTaskSelectAll = async (selection: any[]) => { taskTableRef.value?.toggleRowSelection(row, false) } else { childList.forEach((child) => { - const rowInView = detailList.value.find(d => d.id === child.id) - if (rowInView) { - detailTableRef.value?.toggleRowSelection(rowInView, true) + const unplanNumber = child.number - child.planNumber + if (unplanNumber > 0) { + const rowInView = detailList.value.find(d => d.id === child.id) + if (rowInView) { + detailTableRef.value?.toggleRowSelection(rowInView, true) + } } }) } @@ -528,10 +537,13 @@ const handleTaskSelectAll = async (selection: any[]) => { const handleDetailSelect = (selection: any[], row: any) => { const taskId = row.taskId const childList = allDetailsMap.value[taskId] || [] + const selectableChildren = childList.filter(child => { + const unplanNumber = child.number - child.planNumber + return unplanNumber > 0 + }) - // check if all children for this task are selected - const allChildrenSelected = childList.every(child => selection.some(sel => sel.id === child.id)) - const noChildrenSelected = childList.every(child => !selection.some(sel => sel.id === child.id)) + const allChildrenSelected = selectableChildren.length > 0 && selectableChildren.every(child => selection.some(sel => sel.id === child.id)) + const noChildrenSelected = selectableChildren.every(child => !selection.some(sel => sel.id === child.id)) const parentTask = taskList.value.find(task => task.id === taskId) if (parentTask) { @@ -548,14 +560,16 @@ const handleDetailSelectAll = (selection: any[]) => { const taskId = currentTask.value.id const childList = allDetailsMap.value[taskId] || [] + const selectableChildren = childList.filter(child => { + const unplanNumber = child.number - child.planNumber + return unplanNumber > 0 + }) const parentTask = taskList.value.find(task => task.id === taskId) if (parentTask) { - // if any child in current view is selected, consider it an intent to select parent (if not all were selected) - // selection will contain all selected items across pages, so we need to filter for current view's task const currentViewSelection = selection.filter(sel => sel.taskId === taskId) - if (currentViewSelection.length === childList.length && childList.length > 0) { + if (selectableChildren.length > 0 && currentViewSelection.length === selectableChildren.length) { taskTableRef.value?.toggleRowSelection(parentTask, true) } else if (currentViewSelection.length === 0) { taskTableRef.value?.toggleRowSelection(parentTask, false) @@ -565,6 +579,11 @@ const handleDetailSelectAll = (selection: any[]) => { const isTaskRowSelectable = () => !taskTableBusy.value && !detailLoading.value +const isDetailRowSelectable = (row: any) => { + const unplanNumber = row.number - row.planNumber + return unplanNumber > 0 +} + const handleSearch = async () => { queryParams.pageNo = 1 await loadTaskList() @@ -697,14 +716,18 @@ const handleSubmit = async () => { } const selectedRows = detailTableRef.value?.getSelectionRows() || [] - if (selectedRows.length === 0) { + const filteredRows = selectedRows.filter((row: any) => { + const unplanNumber = row.number - row.planNumber + return unplanNumber > 0 + }) + if (filteredRows.length === 0) { message.warning(t('ProductionPlan.TaskSummary.selectDetailWarning')) return } submitLoading.value = true try { - console.log(selectedRows) - const createReqVO = selectedRows.map((row: any) => { + console.log(filteredRows) + const createReqVO = filteredRows.map((row: any) => { const planNumber = row.number - row.planNumber > 0 ? row.number - row.planNumber : 0 return { // PlanForm fields