fix(预约扫码页): 修复重复触发硬件动作,添加调试日志并新增站点logo
1个文件已添加
2个文件已修改
13 ■■■■■ 已修改文件
pages/appointment-scan/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
utils/visitorDevice.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/appointment-scan/index.vue
@@ -651,6 +651,7 @@
const showMissingEntryDialog = ref(false);
const dialogCountdown = ref(5);
let dialogTimer = null;
let hasMountedHardwareFlow = false;
const hours = Array.from({ length: 24 }, (_, index) => String(index).padStart(2, '0'));
const minutes = Array.from({ length: 60 }, (_, index) => String(index).padStart(2, '0'));
@@ -846,6 +847,8 @@
    startDialogCountdown();
  }
  hasMountedHardwareFlow = true;
  // 首屏硬件动作不要依赖 init 回调,否则 init 卡住时扫码第一步不会触发
  triggerHardwareByStep(currentStepName.value);
@@ -889,6 +892,12 @@
// 监听步骤变化,动态启停硬件
watch(currentStepName, (newStep, oldStep) => {
  // onLoad 修改 mode / step 时会先触发一次 watch,这里等页面挂载后再处理,
  // 避免现场登记和签离首屏读卡被 onLoad + onMounted 重复触发两次。
  if (!hasMountedHardwareFlow) {
    return;
  }
  // 先关闭上一步的硬件
  if (oldStep === 'qr') HardwareAPI.stopScan();
  if (oldStep === 'idcard') HardwareAPI.stopReadCard();
static/logo.png
utils/visitorDevice.js
@@ -169,6 +169,10 @@
    // #ifdef APP-PLUS
    if (HardwarePlugin) {
        showPluginDebugModal('开始扫码调用', {
        method: 'startScan',
        message: '前端已发起开始扫码请求1111',
        });
      HardwarePlugin.startScan({}, (res) => {
        showPluginDebugModal('扫码回调', res);
        if (res && res.code === 200) {