feat(outbound): 添加批量移除和一键清空功能
This commit is contained in:
@ -8,6 +8,13 @@
|
||||
<span class="subtitle">(请添加需要出库的物品)</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-button v-if="userStore.hasPermission('outbound_selection:operation')" type="danger" plain :disabled="selectedRows.length === 0" @click="batchRemove">
|
||||
批量移除
|
||||
</el-button>
|
||||
<el-button v-if="userStore.hasPermission('outbound_selection:operation')" type="danger" :disabled="selectedItems.length === 0" @click="clearAll">
|
||||
清空货车
|
||||
</el-button>
|
||||
<el-divider direction="vertical" />
|
||||
<el-button v-if="userStore.hasPermission('outbound_selection:operation')" type="primary" :icon="Plus" @click="openManualSelect">
|
||||
手动添加库存
|
||||
</el-button>
|
||||
@ -38,7 +45,9 @@
|
||||
border
|
||||
style="width: 100%"
|
||||
row-key="uniqueKey"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
|
||||
<el-table-column label="类型" width="100" align="center">
|
||||
@ -339,6 +348,7 @@ const userStore = useUserStore()
|
||||
|
||||
// --- 状态变量 ---
|
||||
const selectedItems = ref<any[]>([])
|
||||
const selectedRows = ref<any[]>([])
|
||||
|
||||
// 按库位路径自然升序排序(优化拣货路径)
|
||||
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user