Files
shanghaiganxiangtuzhuangwor…/pages/LCLPackage/utils.js
2025-11-06 17:42:14 +08:00

118 lines
2.7 KiB
JavaScript

/**
* 入库通用工具方法
*/
/**
* 显示操作确认模态框
* @param {string} title - 标题
* @param {string} content - 内容
* @param {boolean} showCancel - 是否显示取消按钮
* @returns {Promise} Promise对象
*/
export function showOperationConfirm(title, content, showCancel = true) {
return new Promise((resolve) => {
uni.showModal({
title: title || '提示',
content: content || '',
showCancel: showCancel,
cancelText: '取消',
confirmText: '确定',
success: function(res) {
resolve(res);
}
});
});
}
/**
* 检查是否为重复箱
* @param {Array} list - 箱子列表
* @param {string} patchCode - 批次号
* @returns {boolean} 是否重复
*/
export function isRepeatPackage(list, patchCode) {
if (!list || list.length === 0) return false;
for (let item of list) {
if (item.patchCode === patchCode) {
return true;
}
}
return false;
}
/**
* 检查是否更换了批次
* @param {Array} list - 箱子列表
* @param {string} productionTime - 批次时间
* @returns {boolean} 是否更换批次
*/
export function isChangeBatch(list, productionTime) {
if (!list || list.length === 0) return false;
const lastItem = list[list.length - 1];
return lastItem.productionTime !== productionTime;
}
/**
* 检查是否为重复箱(基于originalCode)
* @param {Array} list - 箱子列表
* @param {string} originalCode - 原始编码
* @returns {boolean} 是否重复
*/
export function isRepeatPackageByCode(list, originalCode) {
if (!list || list.length === 0) return false;
for (let item of list) {
if (item.originalCode === originalCode) {
return true;
}
}
return false;
}
/**
* 清除重复箱
* @param {Array} list - 箱子列表
* @returns {Array} 清除重复后的列表和重复箱信息
*/
export function clearRepeatPackages(list) {
let newArray = [];
let seen = new Map();
let repeatPackage = [];
list.forEach((item) => {
if (!seen.has(item.originalCode)) {
seen.set(item.originalCode, true);
newArray.push(item);
} else {
repeatPackage.push(item.patchCode);
}
});
return {
clearedList: newArray,
repeatPackages: repeatPackage
};
}
/**
* 防抖函数
* @param {Function} func - 要防抖的函数
* @param {number} delay - 延迟时间(ms)
* @returns {Function} 防抖后的函数
*/
export function debounce(func, delay) {
let timeoutId;
return function (...args) {
// 清除之前的定时器
if (timeoutId) {
clearTimeout(timeoutId);
}
// 设置新的定时器
timeoutId = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}