[AI Generated]: chore(*): 统一页面后缀为TS+LESS并清理searchDevice页
This commit is contained in:
@@ -1,9 +1,8 @@
|
|||||||
{
|
{
|
||||||
"pages": [
|
"pages": [
|
||||||
"pages/connectedWifi/connectedWifi",
|
|
||||||
"pages/login/login",
|
"pages/login/login",
|
||||||
"pages/searchDevice/searchDevice",
|
|
||||||
"pages/connectedDevice/connectedDevice",
|
"pages/connectedDevice/connectedDevice",
|
||||||
|
"pages/connectedWifi/connectedWifi",
|
||||||
"pages/supplementPersonal/supplementPersonal",
|
"pages/supplementPersonal/supplementPersonal",
|
||||||
"pages/home/home",
|
"pages/home/home",
|
||||||
"pages/equipment/equipment",
|
"pages/equipment/equipment",
|
||||||
|
|||||||
+21
-3
@@ -1,3 +1,18 @@
|
|||||||
|
/** 设备项模型 */
|
||||||
|
interface DeviceItem {
|
||||||
|
/** 设备唯一 id */
|
||||||
|
id: string
|
||||||
|
/** 设备名称 */
|
||||||
|
name: string
|
||||||
|
/** 设备图标 */
|
||||||
|
icon: string
|
||||||
|
/** 是否已连接 */
|
||||||
|
connected: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 页面状态 */
|
||||||
|
type DeviceStatus = 'idle' | 'searching' | 'found' | 'empty'
|
||||||
|
|
||||||
// 是否 mock 能搜索到设备,false 则走空状态
|
// 是否 mock 能搜索到设备,false 则走空状态
|
||||||
const MOCK_HAS_DEVICES = true
|
const MOCK_HAS_DEVICES = true
|
||||||
|
|
||||||
@@ -5,6 +20,9 @@ const MOCK_HAS_DEVICES = true
|
|||||||
const MOCK_SEARCH_DURATION = 2000
|
const MOCK_SEARCH_DURATION = 2000
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
/* 搜索定时器引用,onUnload 时清理 */
|
||||||
|
_searchTimer: null as number | null,
|
||||||
|
|
||||||
data: {
|
data: {
|
||||||
/**
|
/**
|
||||||
* 页面状态
|
* 页面状态
|
||||||
@@ -13,10 +31,10 @@ Page({
|
|||||||
* - found: 搜索完成且有设备
|
* - found: 搜索完成且有设备
|
||||||
* - empty: 搜索完成但无设备
|
* - empty: 搜索完成但无设备
|
||||||
*/
|
*/
|
||||||
status: 'idle',
|
status: 'idle' as DeviceStatus,
|
||||||
|
|
||||||
/* 设备列表(包含已连接和未连接,每项含 connected: boolean) */
|
/* 设备列表(包含已连接和未连接,每项含 connected: boolean) */
|
||||||
deviceList: [],
|
deviceList: [] as DeviceItem[],
|
||||||
},
|
},
|
||||||
|
|
||||||
onLoad() {
|
onLoad() {
|
||||||
@@ -56,7 +74,7 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
/* 连接某台设备:同时只能一台已连接,自动断开其他设备 */
|
/* 连接某台设备:同时只能一台已连接,自动断开其他设备 */
|
||||||
onConnect(e) {
|
onConnect(e: WechatMiniprogram.TouchEvent) {
|
||||||
const { id } = e.currentTarget.dataset
|
const { id } = e.currentTarget.dataset
|
||||||
const deviceList = this.data.deviceList.map(item => ({
|
const deviceList = this.data.deviceList.map(item => ({
|
||||||
...item,
|
...item,
|
||||||
+39
-7
@@ -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 则走空状态
|
// 是否 mock 能搜索到 WiFi,false 则走空状态
|
||||||
const MOCK_HAS_WIFI = true
|
const MOCK_HAS_WIFI = true
|
||||||
|
|
||||||
@@ -5,6 +34,9 @@ const MOCK_HAS_WIFI = true
|
|||||||
const MOCK_SEARCH_DURATION = 600
|
const MOCK_SEARCH_DURATION = 600
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
/* 搜索定时器引用,onUnload 时清理 */
|
||||||
|
_searchTimer: null as number | null,
|
||||||
|
|
||||||
data: {
|
data: {
|
||||||
/**
|
/**
|
||||||
* 页面状态
|
* 页面状态
|
||||||
@@ -14,16 +46,16 @@ Page({
|
|||||||
* - empty: 搜索完成但无 WiFi
|
* - empty: 搜索完成但无 WiFi
|
||||||
* - password: 从列表选中某项后进入密码输入态
|
* - password: 从列表选中某项后进入密码输入态
|
||||||
*/
|
*/
|
||||||
status: 'idle',
|
status: 'idle' as WifiStatus,
|
||||||
|
|
||||||
/* 当前已连接的设备(从上一页带过来的固定卡片信息) */
|
/* 当前已连接的设备(从上一页带过来的固定卡片信息) */
|
||||||
currentDevice: {
|
currentDevice: {
|
||||||
id: 'mock-device',
|
id: 'mock-device',
|
||||||
name: '智能体重秤 Pro',
|
name: '智能体重秤 Pro',
|
||||||
},
|
} as CurrentDevice,
|
||||||
|
|
||||||
/* WiFi 列表(connected: true 表示已通过本页配网成功的网络) */
|
/* WiFi 列表(connected: true 表示已通过本页配网成功的网络) */
|
||||||
wifiList: [],
|
wifiList: [] as WifiItem[],
|
||||||
|
|
||||||
/* 是否已有任一 WiFi 配网成功,决定底部「确认」按钮是否可点击 */
|
/* 是否已有任一 WiFi 配网成功,决定底部「确认」按钮是否可点击 */
|
||||||
hasConnected: false,
|
hasConnected: false,
|
||||||
@@ -32,7 +64,7 @@ Page({
|
|||||||
selectedWifi: {
|
selectedWifi: {
|
||||||
id: '',
|
id: '',
|
||||||
name: '',
|
name: '',
|
||||||
},
|
} as SelectedWifi,
|
||||||
|
|
||||||
/* 密码输入框值 */
|
/* 密码输入框值 */
|
||||||
selectWifiPWD: '',
|
selectWifiPWD: '',
|
||||||
@@ -82,8 +114,8 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
/* 点击某个 WiFi 项 → 进密码态 */
|
/* 点击某个 WiFi 项 → 进密码态 */
|
||||||
onTapWifi(e) {
|
onTapWifi(e: WechatMiniprogram.TouchEvent) {
|
||||||
const id = e.currentTarget.dataset.id
|
const id = e.currentTarget.dataset.id as string
|
||||||
const target = this.data.wifiList.find(item => item.id === id)
|
const target = this.data.wifiList.find(item => item.id === id)
|
||||||
if (!target) return
|
if (!target) return
|
||||||
|
|
||||||
@@ -99,7 +131,7 @@ Page({
|
|||||||
},
|
},
|
||||||
|
|
||||||
/* 密码输入 */
|
/* 密码输入 */
|
||||||
passwordInput(e) {
|
passwordInput(e: WechatMiniprogram.Input) {
|
||||||
this.setData({ selectWifiPWD: e.detail.value })
|
this.setData({ selectWifiPWD: e.detail.value })
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
Page({
|
|
||||||
data: {},
|
|
||||||
onLoad() {}
|
|
||||||
})
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"usingComponents": {}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
<view class="page">searchDevice 占位</view>
|
|
||||||
+28
-7
@@ -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: '', // 性别(由身份证解析,只读)
|
gender: '', // 性别(由身份证解析,只读)
|
||||||
age: '', // 年龄(由身份证解析,只读)
|
age: '', // 年龄(由身份证解析,只读)
|
||||||
height: '' // 身高(cm)
|
height: '' // 身高(cm)
|
||||||
}
|
} as PersonalForm
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 姓名输入
|
* 姓名输入
|
||||||
*/
|
*/
|
||||||
onNameInput(e) {
|
onNameInput(e: WechatMiniprogram.Input) {
|
||||||
this.setData({
|
this.setData({
|
||||||
'form.name': e.detail.value
|
'form.name': e.detail.value
|
||||||
});
|
});
|
||||||
@@ -28,7 +50,7 @@ Page({
|
|||||||
* 身份证号输入
|
* 身份证号输入
|
||||||
* 长度满 18 位时自动解析性别与年龄,否则清空
|
* 长度满 18 位时自动解析性别与年龄,否则清空
|
||||||
*/
|
*/
|
||||||
onIdCardInput(e) {
|
onIdCardInput(e: WechatMiniprogram.Input) {
|
||||||
const idCard = (e.detail.value || '').trim().toUpperCase();
|
const idCard = (e.detail.value || '').trim().toUpperCase();
|
||||||
const parsed = this.parseIdCard(idCard);
|
const parsed = this.parseIdCard(idCard);
|
||||||
|
|
||||||
@@ -42,7 +64,7 @@ Page({
|
|||||||
/**
|
/**
|
||||||
* 身高输入
|
* 身高输入
|
||||||
*/
|
*/
|
||||||
onHeightInput(e) {
|
onHeightInput(e: WechatMiniprogram.Input) {
|
||||||
this.setData({
|
this.setData({
|
||||||
'form.height': e.detail.value
|
'form.height': e.detail.value
|
||||||
});
|
});
|
||||||
@@ -50,10 +72,9 @@ Page({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 解析身份证号,返回性别与年龄
|
* 解析身份证号,返回性别与年龄
|
||||||
* @param {string} idCard 18 位身份证号
|
* @param idCard 18 位身份证号
|
||||||
* @returns {{ gender: string, age: string }}
|
|
||||||
*/
|
*/
|
||||||
parseIdCard(idCard) {
|
parseIdCard(idCard: string): IdCardParsed {
|
||||||
// 简单校验:18 位且前 17 位为数字
|
// 简单校验:18 位且前 17 位为数字
|
||||||
const reg = /^\d{17}[\dX]$/;
|
const reg = /^\d{17}[\dX]$/;
|
||||||
if (!reg.test(idCard)) {
|
if (!reg.test(idCard)) {
|
||||||
Reference in New Issue
Block a user