// 是否 mock 能搜索到设备,false 则走空状态 const MOCK_HAS_DEVICES = true // 模拟搜索耗时(毫秒) const MOCK_SEARCH_DURATION = 2000 Page({ data: { /** * 页面状态 * - idle: 未搜索(进入页面默认态) * - searching:搜索中 * - found: 搜索完成且有设备 * - empty: 搜索完成但无设备 */ status: 'idle', /* 设备列表(包含已连接和未连接,每项含 connected: boolean) */ deviceList: [], }, onLoad() { }, onUnload() { /* 清除搜索定时器,防止页面卸载后还触发 setData */ if (this._searchTimer) { clearTimeout(this._searchTimer) this._searchTimer = null } }, /* 开始搜索 / 重新搜索 */ onStartSearch() { this.setData({ status: 'searching', deviceList: [], }) /* 模拟搜索,后续接入蓝牙真实 API 时删除 */ this._searchTimer = setTimeout(() => { if (MOCK_HAS_DEVICES) { this.setData({ status: 'found', deviceList: [ { id: 'mock-connected', name: '智能体重秤 Pro', icon: '', connected: true }, { id: 'mock-1', name: '体重秤 Basic', icon: '', connected: false }, { id: 'mock-2', name: '体脂秤 Plus', icon: '', connected: false }, ], }) } else { this.setData({ status: 'empty' }) } }, MOCK_SEARCH_DURATION) }, /* 连接某台设备:同时只能一台已连接,自动断开其他设备 */ onConnect(e) { const { id } = e.currentTarget.dataset const deviceList = this.data.deviceList.map(item => ({ ...item, connected: item.id === id, })) this.setData({ deviceList }) /* TODO: 接入真实蓝牙连接逻辑 */ }, /* 断开当前已连接设备 */ onDisconnect() { const deviceList = this.data.deviceList.map(item => ({ ...item, connected: false, })) this.setData({ deviceList }) /* TODO: 接入真实蓝牙断开逻辑 */ }, /* 查看帮助 */ onOpenHelp() { console.log('查看帮助') /* TODO: 跳帮助页 */ }, })