fix:wifi页面wifi列表新增刷新功能

This commit is contained in:
2026-06-02 15:30:31 +08:00
parent 32c37e283f
commit 73a41ab897

View File

@@ -26,6 +26,8 @@ const connectError = ref("");
const keyboardHeight = ref(0);
// 控制密码输入框是否显示明文
const showPassword = ref(false);
// 刷新防抖标志:扫描进行中为 true禁止重复点击扫描结束成功/失败)后重置为 false。
const isRefreshing = ref(false);
const progress = ref(0);
let progressTimer = null;
@@ -56,12 +58,13 @@ const showWifiPermissionDeniedModal = () => {
});
};
// 将 iOS 当前手机连接的 WiFi 写入候选列表,供用户继续填写设备连接密码。
// 将 iOS 当前手机连接的 WiFi 写入候选列表,供用户继续填写设备连接密码;扫描结束后重置刷新防抖标志
const applyIOSConnectedWifi = (wifi) => {
const ssid = wifi?.SSID;
if (!ssid) {
wifiList.value = [];
currentState.value = STATES.LIST;
isRefreshing.value = false;
return;
}
@@ -74,6 +77,7 @@ const applyIOSConnectedWifi = (wifi) => {
},
];
currentState.value = STATES.LIST;
isRefreshing.value = false;
};
// 获取 iOS 当前手机连接的 WiFi并把它作为可选网络展示。
@@ -91,6 +95,7 @@ const syncIOSConnectedWifi = () => {
});
wifiList.value = [];
currentState.value = STATES.LIST;
isRefreshing.value = false;
},
});
};
@@ -110,12 +115,16 @@ const startIOSScanning = () => {
});
if (err.errCode === 12005) showWifiBanner.value = true;
currentState.value = STATES.LIST;
isRefreshing.value = false;
},
});
};
// 启动小程序 WiFi 能力并按平台获取可用网络。
// 启动小程序 WiFi 能力并按平台获取可用网络;也作为刷新按钮的点击处理器,重新获取最新 WiFi 列表
// 扫描进行中时防抖:若上次扫描尚未完成则直接 return避免重复触发导致弹窗异常。
const startScanning = () => {
if (isRefreshing.value) return;
isRefreshing.value = true;
currentState.value = STATES.SCANNING;
wifiList.value = [];
showWifiBanner.value = false;
@@ -141,6 +150,7 @@ const startScanning = () => {
});
if (isWifiPermissionDenied(err)) showWifiPermissionDeniedModal();
if (err.errCode === 12005) showWifiBanner.value = true;
isRefreshing.value = false;
},
});
},
@@ -152,6 +162,7 @@ const startScanning = () => {
});
if (isWifiPermissionDenied(err)) showWifiPermissionDeniedModal();
if (err.errCode === 12005) showWifiBanner.value = true;
isRefreshing.value = false;
},
});
@@ -164,6 +175,7 @@ const startScanning = () => {
}
wifiList.value = realWifiList;
currentState.value = STATES.LIST;
isRefreshing.value = false;
});
};
@@ -372,10 +384,10 @@ onUnmounted(() => {
<view class="section-label-row">
<text class="section-label">网络</text>
<image
v-if="currentState === 'SCANNING'"
src="../static/sicon/refresh.png"
mode="aspectFit"
style="width: 34rpx; height: 34rpx; margin-left: 8rpx; opacity: 0.7;"
:style="{ width: '34rpx', height: '34rpx', marginLeft: '8rpx', opacity: isRefreshing ? 0.3 : 0.7 }"
@click="startScanning"
/>
</view>