@@ -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. 生成唯一标识组合键
// // 2. 生成唯一标识组合键
const uniqueKey = ` ${ item . id } _ ${ item . pcode } _ ${ realQty } ` ;
// const uniqueKey = `${item.id}_${item.pcode}_${realQty}`;
// 3. 检查组合键是否已存在
// // 3. 检查组合键是否已存在
if ( uniqueKeys. has ( uniqueKey ) ) {
// if ( uniqueKeys.has(uniqueKey)) {
// 存在重复, 拼接sapNo( 去重避免重复拼接)
// // 存在重复, 拼接sapNo( 去重避免重复拼接)
if ( ! duplicateSapNos. includes( item . sapNo ) ) {
// if (! duplicateSapNos. includes(item.sapNo)) {
duplicateSapNos += item . sapNo + ',' ;
// duplicateSapNos += item.sapNo + ',';
}
// }
} else {
// } else {
// 不存在重复,加入结果数组并记录组合键
// // 不存在重复,加入结果数组并记录组合键
arr. push ( item ) ;
// arr.push(item);
uniqueKeys. add ( uniqueKey) ;
// uniqueKeys.add( uniqueKey);
}
// }
console. log ( uniqueKeys)
// console.log( uniqueKeys)
} ) ;
// });
// 处理入库数量有误的提示
// // 处理入库数量有误的提示
if ( invalidQtySapNos) {
// if ( invalidQtySapNos) {
invalidQtySapNos = invalidQtySapNos. slice ( 0 , - 1 ) ; // 去掉最后一个逗号
// invalidQtySapNos = invalidQtySapNos.slice(0, -1); // 去掉最后一个逗号
proxy. $modal. msgError( ` 入库数量有误:${ invalidQtySapNos} ( 入库数量需大于0) ` ) ;
// proxy. $modal. msgError(` 入库数量有误:${ invalidQtySapNos} ( 入库数量需大于0) `);
return
// return
// }
// // 处理重复数据的提示
// if (duplicateSapNos) {
// duplicateSapNos = duplicateSapNos.slice(0, -1); // 去掉最后一个逗号
// proxy.$modal.msgError(`存在重复数据:${duplicateSapNos}`);
// }
outTempData . value = data
}
const generateSimpleUniqueStr = ( ) => {
if ( typeof crypto !== 'undefined' && crypto . randomUUID ) {
return crypto . randomUUID ( ) ;
}
}
// 处理重复数据的提示
// 兼容旧版浏览器/Node.js( crypto API 降级)
if ( duplicateSapNos ) {
return ( [ 1 e7 ] + - 1 e3 + - 4 e3 + - 8 e3 + - 1 e11 ) . 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 i ds = checkPlanList . value . map ( item => item . i d) ;
const uniqueI ds = checkPlanList . value . map ( item => item . uniqueI d) ;
console . log ( i ds)
console . log ( uniqueI ds)
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 ! i ds. includes ( item ? . i d) ;
return ! uniqueI ds. includes ( item ? . uniqueI d) ;
} ) ;
} ) ;
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)