diff --git a/api/100J/HBY100-J.js b/api/100J/HBY100-J.js index c4fbe22..bae7095 100644 --- a/api/100J/HBY100-J.js +++ b/api/100J/HBY100-J.js @@ -545,19 +545,48 @@ export function deviceDetail(id) { function execWithBleFirst(bleExec, httpExec, logName, onWaiting) { const doBle = () => bleExec().then(res => ({ ...(res || {}), _channel: 'ble' })); const do4G = () => httpExec().then(res => { res._channel = '4g'; return res; }); + const hideWaitUi = () => { + if (typeof onWaiting === 'function') return; + try { + uni.hideLoading(); + } catch (e) {} + }; + const showWaitUi = (title) => { + if (typeof onWaiting === 'function') return; + try { + uni.hideLoading(); + uni.showLoading({ title, mask: false }); + } catch (e) {} + }; + if (protocolInstance.isBleConnected && protocolInstance.bleDeviceId) { - return doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); }); - } - // 无 bleDeviceId 时:可能扫描中,先等待连接(设备页在后台可能完成连接) - if (!protocolInstance.bleDeviceId) { - if (typeof onWaiting === 'function') onWaiting(); - return waitForBleConnection(12000).then(connected => { - return connected ? doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); }) : do4G(); + return doBle().catch(() => { + console.log('[100J]', logName || '指令', '蓝牙失败,回退4G'); + return do4G(); }); } - return tryReconnectBle(2500).then(reconnected => { - return reconnected ? doBle().catch(() => { console.log('[100J] 蓝牙失败,回退4G'); return do4G(); }) : do4G(); - }); + // 无 bleDeviceId:页面可能在扫描,最多等 12s(否则用户以为点了没反应) + if (!protocolInstance.bleDeviceId) { + if (typeof onWaiting === 'function') onWaiting(); + else showWaitUi('蓝牙连接中…'); + return waitForBleConnection(12000) + .then(connected => { + return connected ? doBle().catch(() => { + console.log('[100J]', logName || '指令', '蓝牙失败,回退4G'); + return do4G(); + }) : do4G(); + }) + .finally(hideWaitUi); + } + if (typeof onWaiting !== 'function') showWaitUi('正在重连蓝牙…'); + return tryReconnectBle(2500) + .then(reconnected => { + return reconnected ? doBle().catch(() => { + console.log('[100J]', logName || '指令', '蓝牙失败,回退4G'); + return do4G(); + }) : do4G(); + }) + .finally(hideWaitUi); } // 爆闪模式 diff --git a/pages/100J/HBY100-J.vue b/pages/100J/HBY100-J.vue index 33e5be1..97bac15 100644 --- a/pages/100J/HBY100-J.vue +++ b/pages/100J/HBY100-J.vue @@ -736,8 +736,11 @@ } if (this.formData.bleStatu === true) { this.formData.bleStatu = 'dicconnect'; - bleTool.disconnectDevice(f.deviceId).finally(r => { + bleTool.disconnectDevice(f.deviceId).finally(() => { this.formData.bleStatu = false; + if (this.deviceInfo && this.deviceInfo.deviceId) { + updateBleStatus(false, '', this.deviceInfo.deviceId); + } }); return; } @@ -1182,6 +1185,9 @@ bleTool.StopSearch(); bleTool.removeDeviceFound('HBY100J_SCAN'); console.log('100J 蓝牙扫描超时,将使用4G'); + that.formData.bleStatu = false; + const devId = that.deviceInfo && that.deviceInfo.deviceId; + if (devId) updateBleStatus(false, '', devId); }, timeout); bleTool.addDeviceFound((res) => { @@ -1219,6 +1225,9 @@ clearTimeout(timer); bleTool.removeDeviceFound('HBY100J_SCAN'); console.log('100J 蓝牙扫描启动失败,将使用4G', err); + that.formData.bleStatu = 'err'; + const devId = that.deviceInfo && that.deviceInfo.deviceId; + if (devId) updateBleStatus(false, '', devId); } }); },