/** 展示用设备项 */ interface DeviceItem { name: string connected: boolean } /** 页面状态 */ type DeviceStatus = 'idle' | 'searching' | 'found' | 'empty' /** 假设备数据 */ const MOCK_DEVICES: DeviceItem[] = [ { name: '乐福体脂秤 Pro', connected: false }, { name: '乐福体脂秤 Air', connected: false }, { name: '乐福体脂秤 Mini', connected: false }, ] /** 扫描定时器 */ let _searchTimer: number | null = null Page({ data: { status: 'idle' as DeviceStatus, deviceList: [] as DeviceItem[], }, onHide() { this._clearSearchTimer() }, onUnload() { this._clearSearchTimer() }, _clearSearchTimer() { if (_searchTimer !== null) { clearTimeout(_searchTimer) _searchTimer = null } }, /** 点击「开始搜索 / 重新搜索」:模拟扫描 */ onStartSearch() { this._clearSearchTimer() this.setData({ status: 'searching', deviceList: [] }) _searchTimer = setTimeout(() => { this.setData({ status: 'found', deviceList: MOCK_DEVICES.map(item => ({ ...item })), }) }, 1500) }, /** 点击整张卡片:已连接 → 跳转配网页;未连接 → 走连接流程 */ onTapCard(e: WechatMiniprogram.TouchEvent) { const connected = e.currentTarget.dataset.connected as boolean if (connected) { wx.navigateTo({ url: '/pages/connectedWifi/connectedWifi' }) return } this.onConnect(e) }, /** 模拟连接指定设备 */ onConnect(e: WechatMiniprogram.TouchEvent) { const index = e.currentTarget.dataset.index as number const list = this.data.deviceList.map((item, i) => ({ ...item, connected: i === index, })) this.setData({ deviceList: list }) }, /** 断开当前连接 */ onDisconnect() { const list = this.data.deviceList.map(item => ({ ...item, connected: false })) this.setData({ deviceList: list }) }, /** 查看帮助 */ onOpenHelp() { wx.showToast({ title: '请确保设备已开机且在附近', icon: 'none' }) }, })