feat(device): 新增搜索设备与 WiFi 配网页面,暂用假数据填充
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
3c62c31b5d
commit
7105363e13
@@ -0,0 +1,83 @@
|
||||
/** 展示用设备项 */
|
||||
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' })
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user