feat(device): 新增搜索设备与 WiFi 配网页面,暂用假数据填充

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
17792275749
2026-08-17 18:19:38 +08:00
co-authored by Claude Sonnet 4.6
parent 3c62c31b5d
commit 7105363e13
15 changed files with 1096 additions and 3 deletions
@@ -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' })
},
})