update:优化ota

This commit is contained in:
2026-09-24 15:16:14 +08:00
parent f8bf9fdb63
commit f4b37fba00
6 changed files with 200 additions and 303 deletions
+17 -3
View File
@@ -13,6 +13,15 @@ const phaseTextMap = {
installing: "正在安装固件",
};
// 设备详情中的 latestVersion 是升级目标,version 是当前固件版本。
export const getOtaInfoFromDetail = (detail) => ({
versionNumber: String(detail?.latestVersion ?? "").trim(),
currentVersion: String(detail?.version ?? "").trim(),
versionInfo: String(detail?.versionInfo ?? "").trim(),
needUpdate: detail?.needUpdate === true || Number(detail?.needUpdate) === 1,
forceUpdate: detail?.forceUpdate === true || Number(detail?.forceUpdate) === 1,
});
// OTA 状态由首页、WiFi 设置页和我的设备页共享,页面切换后仍可继续接收进度。
const updating = ref(false);
const progress = ref(0);
@@ -115,6 +124,7 @@ function handleSocketMessage(message) {
} else if (!isCurrentVersionMessage(message.data)) {
return;
}
if (!targetVersion && messageVersion) targetVersion = messageVersion;
const nextProgress = Math.min(
100,
@@ -138,6 +148,7 @@ function handleSocketMessage(message) {
} else if (!isCurrentVersionMessage(message.data)) {
return;
}
if (!targetVersion && messageVersion) targetVersion = messageVersion;
if (message.data?.status === "success") {
finishUpdate("success");
@@ -160,16 +171,20 @@ export const useOtaUpdate = () => {
const startUpdate = async ({
versionNumber,
resourceUrl,
wifiSsid = "",
wifiPassword = "",
onSuccess,
}) => {
if (updating.value) return false;
const nextVersion = String(versionNumber || "").trim();
if (!nextVersion) {
uni.showToast({ title: "缺少固件目标版本", icon: "none" });
return false;
}
updateRunId += 1;
const runId = updateRunId;
targetVersion = String(versionNumber || "");
targetVersion = nextVersion;
lastFinishedVersion = "";
successCallback = onSuccess || null;
resultVisible.value = false;
@@ -188,7 +203,6 @@ export const useOtaUpdate = () => {
versionNumber: targetVersion,
wifiSsid,
wifiPassword,
resourceUrl,
});
if (runId !== updateRunId || !updating.value) return false;
if (!updateResult?.taskId) {