优化
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user