Compare commits

..

9 Commits

2 changed files with 100 additions and 61 deletions

View File

@@ -904,59 +904,74 @@ function addData() {
return; return;
} }
let data = outTempData.value.concat(checkPlanList.value); let data = outTempData.value.concat(checkPlanList.value);
let arr = []; // 去重后的最终数组 // let arr = []; // 去重后的最终数组
let duplicateSapNos = ''; // 存储重复数据的sapNo // let duplicateSapNos = ''; // 存储重复数据的sapNo
let invalidQtySapNos = ''; // 存储入库数量有误的sapNo // let invalidQtySapNos = ''; // 存储入库数量有误的sapNo
const uniqueKeys = new Set(); // 用于存储唯一的组合键 (id+pcode+realQty) // const uniqueKeys = new Set(); // 用于存储唯一的组合键 (id+pcode+realQty)
// 遍历数组,先校验数量合法性,再判断唯一性 // // 遍历数组,先校验数量合法性,再判断唯一性
data.forEach(item => { // data.forEach(item => {
// 1. 校验realQty是否大于0处理空值/非数字情况) // // 1. 校验realQty是否大于0处理空值/非数字情况)
const realQty = Number(item.realQty); // const realQty = Number(item.realQty);
if (isNaN(realQty) || realQty <= 0) { // if (isNaN(realQty) || realQty <= 0) {
// 避免同一个sapNo重复添加到提示中 // // 避免同一个sapNo重复添加到提示中
if (!invalidQtySapNos.includes(item.sapNo)) { // if (!invalidQtySapNos.includes(item.sapNo)) {
invalidQtySapNos += item.sapNo + ','; // invalidQtySapNos += item.sapNo + ',';
} // }
return; // 数量不合法,直接跳过后续唯一性判断 // return; // 数量不合法,直接跳过后续唯一性判断
// }
// // 2. 生成唯一标识组合键
// const uniqueKey = `${item.id}_${item.pcode}_${realQty}`;
// // 3. 检查组合键是否已存在
// if (uniqueKeys.has(uniqueKey)) {
// // 存在重复拼接sapNo去重避免重复拼接
// if (!duplicateSapNos.includes(item.sapNo)) {
// duplicateSapNos += item.sapNo + ',';
// }
// } else {
// // 不存在重复,加入结果数组并记录组合键
// arr.push(item);
// uniqueKeys.add(uniqueKey);
// }
// console.log(uniqueKeys)
// });
// // 处理入库数量有误的提示
// if (invalidQtySapNos) {
// invalidQtySapNos = invalidQtySapNos.slice(0, -1); // 去掉最后一个逗号
// proxy.$modal.msgError(`入库数量有误:${invalidQtySapNos}入库数量需大于0`);
// return
// }
// // 处理重复数据的提示
// if (duplicateSapNos) {
// duplicateSapNos = duplicateSapNos.slice(0, -1); // 去掉最后一个逗号
// proxy.$modal.msgError(`存在重复数据:${duplicateSapNos}`);
// }
outTempData.value = data
} }
// 2. 生成唯一标识组合键 const generateSimpleUniqueStr = () => {
const uniqueKey = `${item.id}_${item.pcode}_${realQty}`; if (typeof crypto !== 'undefined' && crypto.randomUUID) {
return crypto.randomUUID();
// 3. 检查组合键是否已存在
if (uniqueKeys.has(uniqueKey)) {
// 存在重复拼接sapNo去重避免重复拼接
if (!duplicateSapNos.includes(item.sapNo)) {
duplicateSapNos += item.sapNo + ',';
}
} else {
// 不存在重复,加入结果数组并记录组合键
arr.push(item);
uniqueKeys.add(uniqueKey);
}
console.log(uniqueKeys)
});
// 处理入库数量有误的提示
if (invalidQtySapNos) {
invalidQtySapNos = invalidQtySapNos.slice(0, -1); // 去掉最后一个逗号
proxy.$modal.msgError(`入库数量有误:${invalidQtySapNos}入库数量需大于0`);
return
} }
// 处理重复数据的提示 // 兼容旧版浏览器/Node.jscrypto API 降级)
if (duplicateSapNos) { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
duplicateSapNos = duplicateSapNos.slice(0, -1); // 去掉最后一个逗号 (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
proxy.$modal.msgError(`存在重复数据:${duplicateSapNos}`); );
}
outTempData.value = arr
} }
// 查看所有的出库数据 // 查看所有的出库数据
const viewData = () => { const viewData = () => {
planList.value = JSON.parse(JSON.stringify(outTempData.value)); let arr = JSON.parse(JSON.stringify(outTempData.value));
planList.value = arr.map(item => ({
...item,
uniqueId: generateSimpleUniqueStr() // 新增随机唯一值
}));
} }
// 删除选中的出库数据 // 删除选中的出库数据
@@ -966,11 +981,11 @@ const deleteData = () => {
return; return;
} }
proxy.$modal.confirm("确认删除选中的出库数据吗?").then(() => { proxy.$modal.confirm("确认删除选中的出库数据吗?").then(() => {
const ids = checkPlanList.value.map(item => item.id); const uniqueIds = checkPlanList.value.map(item => item.uniqueId);
console.log(ids) console.log(uniqueIds)
planList.value = planList.value.filter(item => { planList.value = planList.value.filter(item => {
// 无id的元素默认保留如果想删除无id的可改为 item?.id && !arr2Ids.has(item.id) // 无id的元素默认保留如果想删除无id的可改为 item?.id && !arr2Ids.has(item.id)
return !ids.includes(item?.id); return !uniqueIds.includes(item?.uniqueId);
}); });
outTempData.value = planList.value outTempData.value = planList.value
}); });
@@ -978,7 +993,7 @@ const deleteData = () => {
//新增入库 多选框选中数据 //新增入库 多选框选中数据
function handleSelectionChange(selection) { function handleSelectionChange(selection, $event) {
checkPlanList.value = selection; checkPlanList.value = selection;
} }
@@ -1008,7 +1023,7 @@ function searchPlan() {
proxy.$modal.msgWarning("暂无数据"); proxy.$modal.msgWarning("暂无数据");
return; return;
} }
planList.value = planData; planList.value = planList.value.concat(planData);
}); });
} }
@@ -1416,6 +1431,7 @@ function handleUpdate(row) {
]; ];
pcodeList(storeData.value.warehouseCode); pcodeList(storeData.value.warehouseCode);
open.value = true; open.value = true;
outTempData.value = []
title.value = "修改库存单据"; title.value = "修改库存单据";
} }
// 取消按钮 // 取消按钮
@@ -1563,6 +1579,11 @@ function handleDispatch() {
proxy.$modal.msgError("请勾选数据"); proxy.$modal.msgError("请勾选数据");
return; return;
} }
let isDiaodu = checkStockList.value.some((item) => item.execStatus == 0);
if(isDiaodu){
proxy.$modal.msgWarning("预入库数据不能生成调度任务");
return;
}
dispatchOpen.value = true; dispatchOpen.value = true;
} }
// 提交调度任务 // 提交调度任务
@@ -1573,7 +1594,7 @@ function submitDispatch() {
return; return;
} }
let data; let data;
if (billStatus.value == "rk") {
data = checkStockList.value.map((item) => ({ data = checkStockList.value.map((item) => ({
sourceName: "V01-010101", sourceName: "V01-010101",
targetName: item.pcode, targetName: item.pcode,
@@ -1583,17 +1604,28 @@ function submitDispatch() {
num: 1, num: 1,
dispatchMode: resource.value, dispatchMode: resource.value,
})); }));
} else if (billStatus.value == "ck") {
data = checkStockList.value.map((item) => ({ // if (billStatus.value == "rk") {
sourceName: item.pcode, // data = checkStockList.value.map((item) => ({
targetName: "V01-010101", // sourceName: "V01-010101",
taskTypeName: "下架", // targetName: item.pcode,
taskType: 1, // taskTypeName: "上架",
mid: item.wlNo, // taskType: 0,
num: 1, // mid: item.wlNo,
dispatchMode: resource.value, // num: 1,
})); // dispatchMode: resource.value,
} // }));
// } else if (billStatus.value == "ck") {
// data = checkStockList.value.map((item) => ({
// sourceName: item.pcode,
// targetName: "V01-010101",
// taskTypeName: "下架",
// taskType: 1,
// mid: item.wlNo,
// num: 1,
// dispatchMode: resource.value,
// }));
// }
//调用生成调度任务接口 //调用生成调度任务接口
generateDispatch(data).then((response) => { generateDispatch(data).then((response) => {
// console.log(11111) // console.log(11111)

View File

@@ -1654,6 +1654,12 @@ function handleDispatch() {
proxy.$modal.msgError("请勾选数据"); proxy.$modal.msgError("请勾选数据");
return; return;
} }
let isDiaodu = checkStockList.value.some((item) => item.execStatus == 0);
if(isDiaodu){
proxy.$modal.msgWarning("预出库数据不能生成调度任务");
return;
}
dispatchOpen.value = true; dispatchOpen.value = true;
} }
// 提交调度任务 // 提交调度任务
@@ -1665,7 +1671,8 @@ function submitDispatch() {
//调用生成调度任务接口 //调用生成调度任务接口
const data = checkStockList.value.map((item) => ({ const data = checkStockList.value.map((item) => ({
sourceName: item.pcode, sourceName: item.pcode,
targetName: "V01-230101", // targetName: "V01-230101",
targetName: "V01-010101",
taskTypeName: "下架", taskTypeName: "下架",
taskType: 1, taskType: 1,
mid: item.wlNo, mid: item.wlNo,