1
0
forked from dyf/APP
This commit is contained in:
fengerli
2026-02-06 13:44:35 +08:00
parent 7d657d4429
commit 943d98dd40

View File

@ -85,8 +85,7 @@
<!-- 圆形进度条 + 全屏遮罩层升级中显示 -->
<view v-if="isUpdating" class="mask-layer">
<view class="circle-progress-box">
<progress :percent="updateProgress" activeColor="#bbe600" backgroundColor="#686767" :border-radius='22'
show-info stroke-width="15" class="custom-progress" />
<progress :percent="updateProgress" activeColor="#bbe600" backgroundColor="#686767" :border-radius='22' show-info stroke-width="15" class="custom-progress" />
</view>
</view>
</view>
@ -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 @@
}
</script>
<style lang="less">
.custom-progress {
border-radius: 10rpx;
}
.custom-progress .uni-progress-bar {
border-radius: 10rpx !important;
}
.custom-progress .uni-progress-info {
color: #BBE600;
font-size: 40rpx;
font-weight: 600;
}
<style lang="less">
.custom-progress{
border-radius: 10rpx;
}
.custom-progress .uni-progress-bar{
border-radius: 10rpx !important;
}
.custom-progress .uni-progress-info{
color: #BBE600;
font-size: 40rpx;
font-weight: 600;
}
.popup-prompt {
width: 100%;
margin-top: 40rpx;
@ -687,8 +687,6 @@
}
.li .itemMain {}
.li .item {
width: 100%;
height: 200rpx;