From 441baf66ad947c71a2f155bc5d3ad7afeb9b51c1 Mon Sep 17 00:00:00 2001 From: 17792275749 <812100002@qq.com> Date: Tue, 12 May 2026 09:47:40 +0800 Subject: [PATCH] =?UTF-8?q?[AI=20Generated]:=20chore(*):=20=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E9=A1=B5=E9=9D=A2=E5=90=8E=E7=BC=80=E4=B8=BATS+LESS?= =?UTF-8?q?=E5=B9=B6=E6=B8=85=E7=90=86searchDevice=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/app.json | 3 +- ...{connectedDevice.js => connectedDevice.ts} | 24 ++++++++-- .../{connectedWifi.js => connectedWifi.ts} | 46 ++++++++++++++++--- .../pages/data/{data.wxss => data.less} | 0 .../pages/home/{home.wxss => home.less} | 0 .../pages/login/{login.js => login.ts} | 0 miniprogram/pages/my/{my.wxss => my.less} | 0 .../pages/searchDevice/searchDevice.js | 4 -- .../pages/searchDevice/searchDevice.json | 3 -- .../pages/searchDevice/searchDevice.less | 0 .../pages/searchDevice/searchDevice.wxml | 1 - ...ementPersonal.js => supplementPersonal.ts} | 35 +++++++++++--- 12 files changed, 89 insertions(+), 27 deletions(-) rename miniprogram/pages/connectedDevice/{connectedDevice.js => connectedDevice.ts} (81%) rename miniprogram/pages/connectedWifi/{connectedWifi.js => connectedWifi.ts} (81%) rename miniprogram/pages/data/{data.wxss => data.less} (100%) rename miniprogram/pages/home/{home.wxss => home.less} (100%) rename miniprogram/pages/login/{login.js => login.ts} (100%) rename miniprogram/pages/my/{my.wxss => my.less} (100%) delete mode 100644 miniprogram/pages/searchDevice/searchDevice.js delete mode 100644 miniprogram/pages/searchDevice/searchDevice.json delete mode 100644 miniprogram/pages/searchDevice/searchDevice.less delete mode 100644 miniprogram/pages/searchDevice/searchDevice.wxml rename miniprogram/pages/supplementPersonal/{supplementPersonal.js => supplementPersonal.ts} (79%) diff --git a/miniprogram/app.json b/miniprogram/app.json index 342a6ac..f8e33e7 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -1,9 +1,8 @@ { "pages": [ - "pages/connectedWifi/connectedWifi", "pages/login/login", - "pages/searchDevice/searchDevice", "pages/connectedDevice/connectedDevice", + "pages/connectedWifi/connectedWifi", "pages/supplementPersonal/supplementPersonal", "pages/home/home", "pages/equipment/equipment", diff --git a/miniprogram/pages/connectedDevice/connectedDevice.js b/miniprogram/pages/connectedDevice/connectedDevice.ts similarity index 81% rename from miniprogram/pages/connectedDevice/connectedDevice.js rename to miniprogram/pages/connectedDevice/connectedDevice.ts index f5431e6..63b083e 100644 --- a/miniprogram/pages/connectedDevice/connectedDevice.js +++ b/miniprogram/pages/connectedDevice/connectedDevice.ts @@ -1,3 +1,18 @@ +/** 设备项模型 */ +interface DeviceItem { + /** 设备唯一 id */ + id: string + /** 设备名称 */ + name: string + /** 设备图标 */ + icon: string + /** 是否已连接 */ + connected: boolean +} + +/** 页面状态 */ +type DeviceStatus = 'idle' | 'searching' | 'found' | 'empty' + // 是否 mock 能搜索到设备,false 则走空状态 const MOCK_HAS_DEVICES = true @@ -5,6 +20,9 @@ const MOCK_HAS_DEVICES = true const MOCK_SEARCH_DURATION = 2000 Page({ + /* 搜索定时器引用,onUnload 时清理 */ + _searchTimer: null as number | null, + data: { /** * 页面状态 @@ -13,10 +31,10 @@ Page({ * - found: 搜索完成且有设备 * - empty: 搜索完成但无设备 */ - status: 'idle', + status: 'idle' as DeviceStatus, /* 设备列表(包含已连接和未连接,每项含 connected: boolean) */ - deviceList: [], + deviceList: [] as DeviceItem[], }, onLoad() { @@ -56,7 +74,7 @@ Page({ }, /* 连接某台设备:同时只能一台已连接,自动断开其他设备 */ - onConnect(e) { + onConnect(e: WechatMiniprogram.TouchEvent) { const { id } = e.currentTarget.dataset const deviceList = this.data.deviceList.map(item => ({ ...item, diff --git a/miniprogram/pages/connectedWifi/connectedWifi.js b/miniprogram/pages/connectedWifi/connectedWifi.ts similarity index 81% rename from miniprogram/pages/connectedWifi/connectedWifi.js rename to miniprogram/pages/connectedWifi/connectedWifi.ts index 4af47dd..63e1489 100644 --- a/miniprogram/pages/connectedWifi/connectedWifi.js +++ b/miniprogram/pages/connectedWifi/connectedWifi.ts @@ -1,3 +1,32 @@ +/** WiFi 项模型 */ +interface WifiItem { + /** WiFi 唯一 id */ + id: string + /** WiFi 名称(SSID) */ + name: string + /** 是否已通过本页配网成功 */ + connected: boolean +} + +/** 当前已连接设备(顶部卡片) */ +interface CurrentDevice { + /** 设备唯一 id */ + id: string + /** 设备名称 */ + name: string +} + +/** 密码态选中的 WiFi */ +interface SelectedWifi { + /** WiFi id,空字符串表示未选中 */ + id: string + /** WiFi 名称 */ + name: string +} + +/** 页面状态 */ +type WifiStatus = 'idle' | 'searching' | 'list' | 'empty' | 'password' + // 是否 mock 能搜索到 WiFi,false 则走空状态 const MOCK_HAS_WIFI = true @@ -5,6 +34,9 @@ const MOCK_HAS_WIFI = true const MOCK_SEARCH_DURATION = 600 Page({ + /* 搜索定时器引用,onUnload 时清理 */ + _searchTimer: null as number | null, + data: { /** * 页面状态 @@ -14,16 +46,16 @@ Page({ * - empty: 搜索完成但无 WiFi * - password: 从列表选中某项后进入密码输入态 */ - status: 'idle', + status: 'idle' as WifiStatus, /* 当前已连接的设备(从上一页带过来的固定卡片信息) */ currentDevice: { id: 'mock-device', name: '智能体重秤 Pro', - }, + } as CurrentDevice, /* WiFi 列表(connected: true 表示已通过本页配网成功的网络) */ - wifiList: [], + wifiList: [] as WifiItem[], /* 是否已有任一 WiFi 配网成功,决定底部「确认」按钮是否可点击 */ hasConnected: false, @@ -32,7 +64,7 @@ Page({ selectedWifi: { id: '', name: '', - }, + } as SelectedWifi, /* 密码输入框值 */ selectWifiPWD: '', @@ -82,8 +114,8 @@ Page({ }, /* 点击某个 WiFi 项 → 进密码态 */ - onTapWifi(e) { - const id = e.currentTarget.dataset.id + onTapWifi(e: WechatMiniprogram.TouchEvent) { + const id = e.currentTarget.dataset.id as string const target = this.data.wifiList.find(item => item.id === id) if (!target) return @@ -99,7 +131,7 @@ Page({ }, /* 密码输入 */ - passwordInput(e) { + passwordInput(e: WechatMiniprogram.Input) { this.setData({ selectWifiPWD: e.detail.value }) }, diff --git a/miniprogram/pages/data/data.wxss b/miniprogram/pages/data/data.less similarity index 100% rename from miniprogram/pages/data/data.wxss rename to miniprogram/pages/data/data.less diff --git a/miniprogram/pages/home/home.wxss b/miniprogram/pages/home/home.less similarity index 100% rename from miniprogram/pages/home/home.wxss rename to miniprogram/pages/home/home.less diff --git a/miniprogram/pages/login/login.js b/miniprogram/pages/login/login.ts similarity index 100% rename from miniprogram/pages/login/login.js rename to miniprogram/pages/login/login.ts diff --git a/miniprogram/pages/my/my.wxss b/miniprogram/pages/my/my.less similarity index 100% rename from miniprogram/pages/my/my.wxss rename to miniprogram/pages/my/my.less diff --git a/miniprogram/pages/searchDevice/searchDevice.js b/miniprogram/pages/searchDevice/searchDevice.js deleted file mode 100644 index 0217210..0000000 --- a/miniprogram/pages/searchDevice/searchDevice.js +++ /dev/null @@ -1,4 +0,0 @@ -Page({ - data: {}, - onLoad() {} -}) diff --git a/miniprogram/pages/searchDevice/searchDevice.json b/miniprogram/pages/searchDevice/searchDevice.json deleted file mode 100644 index a97367d..0000000 --- a/miniprogram/pages/searchDevice/searchDevice.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "usingComponents": {} -} diff --git a/miniprogram/pages/searchDevice/searchDevice.less b/miniprogram/pages/searchDevice/searchDevice.less deleted file mode 100644 index e69de29..0000000 diff --git a/miniprogram/pages/searchDevice/searchDevice.wxml b/miniprogram/pages/searchDevice/searchDevice.wxml deleted file mode 100644 index 9a348df..0000000 --- a/miniprogram/pages/searchDevice/searchDevice.wxml +++ /dev/null @@ -1 +0,0 @@ -searchDevice 占位 diff --git a/miniprogram/pages/supplementPersonal/supplementPersonal.js b/miniprogram/pages/supplementPersonal/supplementPersonal.ts similarity index 79% rename from miniprogram/pages/supplementPersonal/supplementPersonal.js rename to miniprogram/pages/supplementPersonal/supplementPersonal.ts index e408ecf..180efcb 100644 --- a/miniprogram/pages/supplementPersonal/supplementPersonal.js +++ b/miniprogram/pages/supplementPersonal/supplementPersonal.ts @@ -1,3 +1,25 @@ +/** 表单数据模型 */ +interface PersonalForm { + /** 姓名 */ + name: string + /** 身份证号 */ + idCard: string + /** 性别(由身份证解析,只读) */ + gender: string + /** 年龄(由身份证解析,只读) */ + age: string + /** 身高(cm) */ + height: string +} + +/** 身份证解析结果 */ +interface IdCardParsed { + /** 性别,空字符串表示解析失败 */ + gender: string + /** 年龄,空字符串表示解析失败 */ + age: string +} + /** * 完善个人信息页 * 收集姓名、身份证号、身高,并根据身份证自动解析性别与年龄 @@ -12,13 +34,13 @@ Page({ gender: '', // 性别(由身份证解析,只读) age: '', // 年龄(由身份证解析,只读) height: '' // 身高(cm) - } + } as PersonalForm }, /** * 姓名输入 */ - onNameInput(e) { + onNameInput(e: WechatMiniprogram.Input) { this.setData({ 'form.name': e.detail.value }); @@ -28,7 +50,7 @@ Page({ * 身份证号输入 * 长度满 18 位时自动解析性别与年龄,否则清空 */ - onIdCardInput(e) { + onIdCardInput(e: WechatMiniprogram.Input) { const idCard = (e.detail.value || '').trim().toUpperCase(); const parsed = this.parseIdCard(idCard); @@ -42,7 +64,7 @@ Page({ /** * 身高输入 */ - onHeightInput(e) { + onHeightInput(e: WechatMiniprogram.Input) { this.setData({ 'form.height': e.detail.value }); @@ -50,10 +72,9 @@ Page({ /** * 解析身份证号,返回性别与年龄 - * @param {string} idCard 18 位身份证号 - * @returns {{ gender: string, age: string }} + * @param idCard 18 位身份证号 */ - parseIdCard(idCard) { + parseIdCard(idCard: string): IdCardParsed { // 简单校验:18 位且前 17 位为数字 const reg = /^\d{17}[\dX]$/; if (!reg.test(idCard)) {