出库任务批量修改日期
This commit is contained in:
parent
c7eebdab59
commit
b75fceca38
|
|
@ -27,6 +27,14 @@ export const editDate = (params) => {
|
|||
})
|
||||
}
|
||||
|
||||
export const batchEditDate = (params) => {
|
||||
return request({
|
||||
url: '/taskQuery/batchEditDate',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据物料id查询物料信息
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import axios from 'axios'
|
||||
|
||||
const request = axios.create({
|
||||
baseURL: 'http://172.18.222.253:12315/wms',
|
||||
//baseURL: 'http://localhost:12315/wms',
|
||||
//baseURL: 'http://172.18.222.253:12315/wms',
|
||||
baseURL: 'http://localhost:12315/wms',
|
||||
timeout: 5000
|
||||
})
|
||||
// 172.18.222.253
|
||||
|
|
|
|||
|
|
@ -43,8 +43,21 @@
|
|||
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }"
|
||||
@sort-change="handleSortChange">
|
||||
<el-table-column width="65px" fixed="left">
|
||||
<template #header>
|
||||
<el-checkbox
|
||||
v-model="isSelectAll"
|
||||
@change="handleSelectAllChange">
|
||||
|
||||
</el-checkbox>
|
||||
</template>
|
||||
<template v-slot="scope">
|
||||
<el-radio :label="scope.row.goodsId" v-model="goodsId"> </el-radio>
|
||||
<!-- 单选改为多选 -->
|
||||
<el-checkbox
|
||||
:label="scope.row.goodsId"
|
||||
v-model="scope.row.checked"
|
||||
@change="handleSelectionChange(scope.row)">
|
||||
|
||||
</el-checkbox>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="workOrder" label="工单详情" fixed="left" min-width="120px" sortable="custom"
|
||||
|
|
@ -87,6 +100,19 @@
|
|||
<el-button size="default" type="warning" @click.stop="handleDelete(scope.row)">加急</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template #header>
|
||||
<div style="display: flex; flex-direction: column; align-items: center;">
|
||||
<span>操作</span>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="handleBatchEdit"
|
||||
:disabled="selectedRows.length === 0"
|
||||
style="margin-top: 5px;">
|
||||
批量修改时间({{ selectedRows.length }})
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
|
@ -117,7 +143,25 @@
|
|||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showBatchEditDialog" title="批量修改执行日期" width="30%" draggable>
|
||||
<el-form ref="batchEditFormRef" :model="batchEditForm" label-width="100px">
|
||||
<el-form-item label="执行时间">
|
||||
<el-date-picker
|
||||
v-model="batchEditForm.pickingDate"
|
||||
type="date"
|
||||
placeholder="请选择执行时间"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD" style="width: 100%">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="showBatchEditDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="saveBatchEdit(batchEditForm)">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</el-container>
|
||||
</el-config-provider>
|
||||
|
|
@ -126,7 +170,7 @@
|
|||
<script setup>
|
||||
import store from '@/store'
|
||||
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
||||
import {editDate, getGoodsInfoByPage, upOutsType} from '@/api/goods.js'
|
||||
import {batchEditDate, editDate, getGoodsInfoByPage, upOutsType} from '@/api/goods.js'
|
||||
import {ref, reactive, onMounted, nextTick, onBeforeUnmount} from 'vue'
|
||||
import {ElMessage} from 'element-plus'
|
||||
import {genTableRequest} from '@/utils/generator.js'
|
||||
|
|
@ -160,6 +204,11 @@ let searchQueryFormEntity = reactive({
|
|||
goodsDesc: '',
|
||||
workOrder: '',
|
||||
})
|
||||
let selectedRows = ref([]) // 新增:存储选中的行
|
||||
let showBatchEditDialog = ref(false) // 新增:控制批量编辑对话框显示
|
||||
const batchEditForm = reactive({
|
||||
pickingDate: ''
|
||||
}) // 新增:批量编辑表单
|
||||
let searchQueryFormRef = ref()
|
||||
let rowEditFlag = ref(false)
|
||||
let goodsId = ''
|
||||
|
|
@ -184,6 +233,75 @@ const resizeHeight = () => {
|
|||
maxHeight.value = window.innerHeight * 0.55
|
||||
}
|
||||
|
||||
// 处理选择变化
|
||||
const handleSelectionChange = (row) => {
|
||||
if (row.checked) {
|
||||
// 如果选中且不在列表中,则添加
|
||||
if (!selectedRows.value.some(item => item.goodsId === row.goodsId)) {
|
||||
selectedRows.value.push(row)
|
||||
}
|
||||
} else {
|
||||
// 如果取消选中,则从列表中移除
|
||||
selectedRows.value = selectedRows.value.filter(item => item.goodsId !== row.goodsId)
|
||||
}
|
||||
}
|
||||
// 批量编辑处理
|
||||
const handleBatchEdit = () => {
|
||||
if (selectedRows.value.length === 0) {
|
||||
ElMessage.warning('请至少选择一条记录')
|
||||
return
|
||||
}
|
||||
batchEditForm.pickingDate = ''
|
||||
showBatchEditDialog.value = true
|
||||
}
|
||||
|
||||
const handleSelectAllChange = (val) => {
|
||||
tableData.value.forEach(row => {
|
||||
row.checked = val
|
||||
})
|
||||
|
||||
if (val) {
|
||||
// 全选
|
||||
selectedRows.value = [...tableData.value]
|
||||
} else {
|
||||
// 取消全选
|
||||
selectedRows.value = []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 保存批量编辑
|
||||
const saveBatchEdit = (form) => {
|
||||
if (!form.pickingDate) {
|
||||
ElMessage.warning('请选择执行时间')
|
||||
return
|
||||
}
|
||||
|
||||
const taskIds = selectedRows.value.map(row => row.taskId)
|
||||
const request = {
|
||||
taskIds: taskIds,
|
||||
pickingDate: form.pickingDate
|
||||
}
|
||||
|
||||
// 需要在API中实现批量更新接口
|
||||
batchEditDate(request).then((res) => {
|
||||
if (res.data.code === 0) {
|
||||
ElMessage.success('批量修改成功')
|
||||
showBatchEditDialog.value = false
|
||||
search()
|
||||
// 清空选择
|
||||
selectedRows.value.forEach(row => {
|
||||
row.checked = false
|
||||
})
|
||||
selectedRows.value = []
|
||||
} else {
|
||||
ElMessage.error(res.data.message)
|
||||
}
|
||||
}).catch(() => {
|
||||
ElMessage.error('批量修改失败')
|
||||
})
|
||||
}
|
||||
|
||||
// 保存编辑
|
||||
const saveEdit = (editForm) => {
|
||||
let request = {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.wms_main.model.vo.wms;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OutsBatchEditDateVo {
|
||||
private List<String> taskIds; // 任务ID列表
|
||||
private Date pickingDate; // 统一设置的执行时间
|
||||
}
|
||||
|
|
@ -62,6 +62,11 @@ public interface ITaskQueryControllerService {
|
|||
|
||||
WmsApiResponse<String> editDate(OutsVo outsVo);
|
||||
|
||||
|
||||
// ITaskQueryControllerService.java
|
||||
WmsApiResponse<String> batchEditDate(OutsBatchEditDateVo batchEditDateVo);
|
||||
|
||||
|
||||
/**
|
||||
* 更新出库单信息
|
||||
*
|
||||
|
|
|
|||
|
|
@ -297,6 +297,76 @@ public class TaskQueryControllerServiceImpl implements ITaskQueryControllerServi
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public WmsApiResponse<String> batchEditDate(OutsBatchEditDateVo batchEditDateVo) {
|
||||
// 1. 参数校验
|
||||
if (batchEditDateVo == null || batchEditDateVo.getTaskIds() == null || batchEditDateVo.getTaskIds().isEmpty()) {
|
||||
return WmsApiResponse.error("任务ID列表不能为空", null);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(String.valueOf(batchEditDateVo.getPickingDate()))) {
|
||||
return WmsApiResponse.error("请选择执行时间", null);
|
||||
}
|
||||
|
||||
int successCount = 0;
|
||||
int failCount = 0;
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
|
||||
// 2. 遍历任务ID列表,逐个更新
|
||||
for (String taskId : batchEditDateVo.getTaskIds()) {
|
||||
try {
|
||||
// 查询原任务
|
||||
TAppOuts existingOuts = appOutsService.getOne(new LambdaQueryWrapper<TAppOuts>()
|
||||
.eq(TAppOuts::getTaskId, taskId));
|
||||
|
||||
if (existingOuts == null) {
|
||||
errorMsg.append("任务ID: ").append(taskId).append(" 未找到对应的任务; ");
|
||||
failCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (existingOuts.getDistributeNum() > 0) {
|
||||
errorMsg.append("任务ID: ").append(taskId).append(" 已经开始执行; ");
|
||||
failCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// 检查是否重复修改
|
||||
if (existingOuts.getPickingDate() != null && existingOuts.getPickingDate().equals(batchEditDateVo.getPickingDate())) {
|
||||
errorMsg.append("任务ID: ").append(taskId).append(" 请勿重复修改; ");
|
||||
failCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// 更新执行时间
|
||||
existingOuts.setPickingDate(batchEditDateVo.getPickingDate());
|
||||
|
||||
// 执行更新操作
|
||||
boolean updateSuccess = appOutsService.updateById(existingOuts);
|
||||
|
||||
if (updateSuccess) {
|
||||
successCount++;
|
||||
} else {
|
||||
errorMsg.append("任务ID: ").append(taskId).append(" 更新失败; ");
|
||||
failCount++;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
errorMsg.append("任务ID: ").append(taskId).append(" 更新异常: ").append(e.getMessage()).append("; ");
|
||||
failCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 返回结果
|
||||
if (successCount > 0 && failCount == 0) {
|
||||
return WmsApiResponse.success("全部执行时间更新成功,共更新" + successCount + "条记录", null);
|
||||
} else if (successCount > 0 && failCount > 0) {
|
||||
return WmsApiResponse.success("部分执行时间更新成功,成功" + successCount + "条,失败" + failCount + "条。失败原因:" + errorMsg.toString(), null);
|
||||
} else {
|
||||
return WmsApiResponse.error("执行时间更新全部失败。失败原因:" + errorMsg.toString(), null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public WmsApiResponse<String> updateOutsInfo(TAppPickTask appTask) {
|
||||
if (appTask == null || StringUtils.isEmpty(appTask.getPickId())) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user