From 7b57bb9b051be952b753b695076a337a1e17355d Mon Sep 17 00:00:00 2001 From: zc Date: Thu, 19 Mar 2026 11:16:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/weightManage/index.vue | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/views/weightManage/index.vue b/src/views/weightManage/index.vue index f4d1aa6..dd13b07 100644 --- a/src/views/weightManage/index.vue +++ b/src/views/weightManage/index.vue @@ -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 }