From a6409ac091bb142398ae072533522870794f85de Mon Sep 17 00:00:00 2001 From: DXC Date: Tue, 21 Apr 2026 13:11:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(outbound):=20=E6=B7=BB=E5=8A=A0=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E7=A7=BB=E9=99=A4=E5=92=8C=E4=B8=80=E9=94=AE=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/outbound/Selection.vue | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/inventory-web/src/views/outbound/Selection.vue b/inventory-web/src/views/outbound/Selection.vue index ea83722..9ce2746 100644 --- a/inventory-web/src/views/outbound/Selection.vue +++ b/inventory-web/src/views/outbound/Selection.vue @@ -8,6 +8,13 @@ (请添加需要出库的物品)
+ + 批量移除 + + + 清空货车 + + 手动添加库存 @@ -38,7 +45,9 @@ border style="width: 100%" row-key="uniqueKey" + @selection-change="handleSelectionChange" > + @@ -339,6 +348,7 @@ const userStore = useUserStore() // --- 状态变量 --- const selectedItems = ref([]) +const selectedRows = ref([]) // 按库位路径自然升序排序(优化拣货路径) const sortedSelectedItems = computed(() => { @@ -695,6 +705,44 @@ const confirmBomAdd = async () => { // --- 通用逻辑 --- +const handleSelectionChange = (val: any[]) => { + selectedRows.value = val +} + +const clearAll = () => { + ElMessageBox.confirm( + '确定要清空当前拣货车中的所有物品吗?', + '清空确认', + { + confirmButtonText: '确定清空', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + selectedItems.value = [] + selectedRows.value = [] + ElMessage.success('已清空拣货车') + }).catch(() => {}) +} + +const batchRemove = () => { + if (selectedRows.value.length === 0) return + ElMessageBox.confirm( + `确定要移除选中的 ${selectedRows.value.length} 项物品吗?`, + '批量移除确认', + { + confirmButtonText: '确定移除', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + const keysToRemove = new Set(selectedRows.value.map(row => row.uniqueKey)) + selectedItems.value = selectedItems.value.filter(item => !keysToRemove.has(item.uniqueKey)) + selectedRows.value = [] + ElMessage.success(`已移除 ${keysToRemove.size} 项物品`) + }).catch(() => {}) +} + const removeRow = (index: number) => { selectedItems.value.splice(index, 1) }