diff --git a/inventory-web/src/components/QrScanner/index.vue b/inventory-web/src/components/QrScanner/index.vue index 0f8b633..96e12de 100644 --- a/inventory-web/src/components/QrScanner/index.vue +++ b/inventory-web/src/components/QrScanner/index.vue @@ -99,19 +99,21 @@ const startScanning = async () => { }) const config = { - fps: 20, + fps: 15, // 15帧足够,给平板留出运算余地 disableFlip: false, + // 动态计算的扫描框:屏幕宽度的 70%、高度的 40%(上限 800×400),扁长方形适配 CODE_128 + qrbox: (viewfinderWidth: number, viewfinderHeight: number) => { + const boxWidth = Math.min(viewfinderWidth * 0.7, 800) + const boxHeight = Math.min(viewfinderHeight * 0.4, 400) + return { width: boxWidth, height: boxHeight } + }, videoConstraints: { facingMode: "environment", - // ★★★ 核心修改:设置为 2K (QHD) 分辨率 ★★★ - // min: 1280x720 (保证低端机能启动) - // ideal: 2560x1440 (2K QHD,清晰度与性能的平衡点) - width: { min: 1280, ideal: 2560, max: 3840 }, - height: { min: 720, ideal: 1440, max: 2160 }, - // 16:9 的比例 - aspectRatio: { ideal: 1.7777777778 }, - focusMode: "continuous", - advanced: [{ focusMode: "macro" }, { zoom: 2.0 }] + // 降级到 720p,保障高帧率和清晰度 + width: { ideal: 1280 }, + height: { ideal: 720 }, + // 依赖设备原生自动对焦,去掉强行 zoom + focusMode: "continuous" } } diff --git a/inventory-web/src/components/SmartScannerDialog.vue b/inventory-web/src/components/SmartScannerDialog.vue index 34df529..c357869 100644 --- a/inventory-web/src/components/SmartScannerDialog.vue +++ b/inventory-web/src/components/SmartScannerDialog.vue @@ -70,7 +70,7 @@