This commit is contained in:
zc
2026-03-19 11:16:13 +08:00
parent feab964397
commit 7b57bb9b05

View File

@@ -689,23 +689,32 @@ const originalHandleMaterialCodeChange = async () => {
// 记录上次输入时间,用于判断是否是扫码枪输入
let lastInputTime = 0
// 记录输入内容,用于判断是否是新的扫码
const previousInput = ''
// 记录是否正在接收扫码输入
let isScanning = false
// 处理键盘按下事件
const handleKeyDown = (event: KeyboardEvent) => {
// 获取当前时间
const currentTime = Date.now()
// 如果输入速度非常快小于100ms认为是扫码枪输入
if (currentTime - lastInputTime < 100 && formData.inputMaterialCode) {
// 扫码枪通常以回车键结束,这里不做处理
} else if (event.key.length === 1 && !event.ctrlKey && !event.altKey) {
// 如果是新的输入(不是快速连续输入),清空输入框
// 这样可以确保每次扫码都从空输入框开始
formData.inputMaterialCode = ''
// 计算时间差
const timeDiff = currentTime - lastInputTime
// 检查是否是回车键(扫码枪通常以回车键结束
if (event.key === 'Enter') {
// 扫码结束,标记为不在扫描中
isScanning = false
// 不阻止默认行为,让表单可以正常提交
}
// 检查是否是新的扫码开始
// 当时间间隔大于300ms且不是修饰键且不是功能键时认为是新的扫码开始
else if (timeDiff > 300 && !event.ctrlKey && !event.altKey && !event.metaKey) {
// 清空输入框,准备接收新的扫码数据
formData.inputMaterialCode = ''
// 标记为开始扫描
isScanning = true
// }
}
// 更新上次输入时间
lastInputTime = currentTime
}