Compare commits
2 Commits
7059706e9b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a491fd75c3 | |||
| f6c665c8fa |
@@ -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.js(crypto 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 = "修改库存单据";
|
||||||
}
|
}
|
||||||
// 取消按钮
|
// 取消按钮
|
||||||
|
|||||||
Reference in New Issue
Block a user