From 943d98dd40a09124497d7948cc815e2623e5e1e1 Mon Sep 17 00:00:00 2001 From: fengerli <528575642@qq.com> Date: Fri, 6 Feb 2026 13:44:35 +0800 Subject: [PATCH] 1 --- pages/100J/audioManager/AudioList.vue | 72 +++++++++++++-------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/pages/100J/audioManager/AudioList.vue b/pages/100J/audioManager/AudioList.vue index 40d2c38..0ddca29 100644 --- a/pages/100J/audioManager/AudioList.vue +++ b/pages/100J/audioManager/AudioList.vue @@ -85,8 +85,7 @@ - + @@ -207,7 +206,7 @@ }, updateProgress: 0, // 升级进度,0-100 isUpdating: false, // 是否正在升级(控制进度条显示/隐藏) - upgradeTimer: null // 升级超时定时器,初始为null + mqttSubscribeSuccess: false // MQTT订阅是否成功 } }, onLoad() { @@ -488,26 +487,28 @@ // 解析MQTT返回的payload const payloadObj = typeof payload === 'string' ? JSON.parse( payload) : payload; - // 取出进度值 - const progress = payloadObj.data.progress; + // 取出进度值(用可选链避免字段不存在报错) + const progress = payloadObj.data?.progress; if (progress !== undefined && !isNaN(progress) && progress >= 0 && progress <= 100) { this.updateProgress = progress; console.log('当前升级进度:', progress + '%'); - // 进度到100%时 + // 进度到100%时,触发升级完成逻辑 if (progress === 100) { clearTimeout(this.upgradeTimer); uni.showToast({ - title: '更新完成!', + title: '升级完成!', icon: 'success', duration: 2000 }); this.isUpdating = false; - item.useStatus = 1 + setTimeout(() => { + uni.navigateBack(); + }, 1500); } } } catch (e) { - clearTimeout(this.upgradeTimer); + clearTimeout(this.upgradeTimer); console.error('解析MQTT payload失败:', e); } }) @@ -521,20 +522,22 @@ } }) - this.upgradeTimer = setTimeout(() => { - // 超时后 - uni.showToast({ - title: '响应超时', - icon: 'none', - duration: 2000 - }); - this.isUpdating = false; // 关闭进度条 - this.updateProgress = 0; - //this.mqttClient.unsubscribe(statusTopic); - }, 20000); //20s超时 + this.upgradeTimer = setTimeout(() => { + // 超时后执行:隐藏进度条+提示超时+重置进度 + uni.showToast({ + title: '升级进度同步超时', + icon: 'none', + duration: 2000 + }); + this.isUpdating = false; // 关闭进度条 + this.updateProgress = 0; // 重置进度值 + // 可选:如果需要取消MQTT订阅,加这行(根据需求选择) + // this.mqttClient.unsubscribe(statusTopic); + }, 6000); // 6000ms = 6秒,时间可直接修改 }, closePop: function() { this.Status.Pop.showPop = false; + if (this.Status.Pop.cancelCallback) { this.Status.Pop.cancelCallback(); } @@ -636,21 +639,18 @@ } -