From 6d57b13a751a9f0166bec4c37a24cccbcaec3cf3 Mon Sep 17 00:00:00 2001 From: hwj Date: Mon, 20 Apr 2026 11:11:53 +0800 Subject: [PATCH] =?UTF-8?q?style=EF=BC=9A=E6=8E=92=E4=BA=A7=E5=BC=B9?= =?UTF-8?q?=E6=A1=86-=E4=BB=BB=E5=8A=A1=E5=8D=95=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E6=98=8E=E7=BB=86-=E6=9C=AA=E8=AE=A1=E5=88=92=E6=95=B0?= =?UTF-8?q?=E4=B8=BA0=E7=9A=84=EF=BC=8C=E4=B8=8D=E8=83=BD=E5=8B=BE?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TaskScheduleDialog.vue | 53 +++++++++++++------ 1 file changed, 38 insertions(+), 15 deletions(-) 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