diff --git a/miniprogram/pages/equipment/equipment.ts b/miniprogram/pages/equipment/equipment.ts index 3d54230..bc61699 100644 --- a/miniprogram/pages/equipment/equipment.ts +++ b/miniprogram/pages/equipment/equipment.ts @@ -53,6 +53,7 @@ interface DeviceItem { let unsubDevicesList: (() => void) | null = null let unsubConnect: (() => void) | null = null let unsubDisconnected: (() => void) | null = null +let unsubDeviceConnect: (() => void) | null = null let scanTimer: number | null = null Page({ @@ -68,18 +69,23 @@ Page({ this.setData({ operationsEngineer: getApp().globalData.operationsEngineer ?? false }) this.loadDevices() this._subscribeDisconnected() + this._subscribeDeviceConnect() }, onHide() { leFuService.stopScan() unsubDisconnected?.() unsubDisconnected = null + unsubDeviceConnect?.() + unsubDeviceConnect = null }, onUnload() { leFuService.stopScan() unsubDisconnected?.() unsubDisconnected = null + unsubDeviceConnect?.() + unsubDeviceConnect = null unsubDevicesList?.() unsubDevicesList = null unsubConnect?.() @@ -97,6 +103,17 @@ Page({ }) }, + /** 订阅连接成功事件:回前台自动重连等场景下,同步页面状态为已连接 */ + _subscribeDeviceConnect() { + unsubDeviceConnect?.() + unsubDeviceConnect = leFuService.onDeviceConnect(() => { + const deviceId = leFuService.lastRawDevice?.deviceId ?? '' + if (deviceId) { + this._updateStatus(deviceId, true) + } + }) + }, + /** 拉取体重设备列表 */ async loadDevices() { const raw = wx.getStorageSync('userInfo') as UserInfo | null @@ -203,7 +220,6 @@ Page({ unsubConnect = null wx.hideLoading() wx.setStorageSync('connectDeviceInfo', matched.raw) - this._updateStatus(targetDeviceId, true) }) }) leFuService.startScan()