蓝牙调试页面初步完成

This commit is contained in:
2026-01-16 12:00:49 +08:00
parent d9f8358191
commit bbc4f205a3
60 changed files with 2201 additions and 51331 deletions

View File

@@ -62,6 +62,10 @@ Page({
bdHosts: [],
address: "",
UpgradeType:"",
checkedCount: 0,
totalCount: 0,
successCount: 0,
failCount: 0,
},
/**
@@ -145,13 +149,33 @@ Page({
upgrader.on('progress', p => {
console.log(p)
this.setData({ CurrentUpgradeDevStart: p }) // 实时刷新 UI
console.log('upgrader progress:', p)
try {
// 支持数字或对象 {percent:xx} 或字符串数字
let prog = p && typeof p === 'object' && p.percent != null ? p.percent : (typeof p === 'number' ? p : (typeof p === 'string' && !isNaN(Number(p)) ? Number(p) : p));
const cur = this.data.CurrentUpgradeDev;
if (cur && this.data.devlist && Array.isArray(this.data.devlist)) {
const devlist = this.data.devlist.slice();
const idx = devlist.findIndex(d => String(d.RoomNumber) === String(cur) || String(d.ID) === String(cur));
if (idx >= 0) {
devlist[idx].UpgradeProgress = prog;
if (!devlist[idx].UpgradeStatus || devlist[idx].UpgradeStatus === 0) devlist[idx].UpgradeStatus = 1; // 进行中
this.setData({ devlist });
}
}
this.setData({ CurrentUpgradeDevStart: p });
} catch (e) {
console.log(e)
this.setData({ CurrentUpgradeDevStart: p });
}
})
upgrader.on('error', e => {
wx.showToast({ title: '升级失败', icon: 'none' })
})
// 初始化计数
try { this.updateCounts && this.updateCounts(); } catch (e) { console.log('init counts error', e); }
},
/**
@@ -575,6 +599,7 @@ Page({
for (let i = 0; i < this.data.devlist.length; i++) {
devlist[i].UpgradeStatus = 0
devlist[i].UpgradeProgress = "";
if (devlist[i].checkbox) { //勾选
if (devlist[i].Status) { //离在线
@@ -617,31 +642,64 @@ Page({
upgradefileName: filename,
hotelid:HotelId
})
.then(res => {
_this.setData({
UpgradeCount:_this.data.UpgradeCount+1, //升级计数
})
console.log('升级完成', res)
.then(res => {
// 标记对应设备为已完成,并更新进度,取消勾选
try {
const devlist = _this.data.devlist.slice();
const idx = devlist.findIndex(d => String(d.ID) === String(element.ID) || String(d.RoomNumber) === String(element.RoomNumber));
if (idx >= 0) {
devlist[idx].UpgradeProgress = 100;
devlist[idx].UpgradeStatus = 2; // 完成
devlist[idx].checkbox = false;
_this.setData({ devlist, UpgradeCount: _this.data.UpgradeCount + 1 }, () => { _this.updateCounts && _this.updateCounts(); });
} else {
_this.setData({ UpgradeCount: _this.data.UpgradeCount + 1 }, () => { _this.updateCounts && _this.updateCounts(); });
}
} catch (err) {
console.log('update dev progress error', err);
_this.setData({ UpgradeCount: _this.data.UpgradeCount + 1 });
}
console.log('升级完成', res)
})
.catch(err =>{
// 标记对应设备为失败,取消勾选,并继续下一个
try {
const devlist = _this.data.devlist.slice();
const idx = devlist.findIndex(d => String(d.ID) === String(element.ID) || String(d.RoomNumber) === String(element.RoomNumber));
if (idx >= 0) {
devlist[idx].UpgradeProgress = "";
devlist[idx].UpgradeStatus = 3; // 失败
// 保持勾选状态(不取消),以便用户查看/重试
_this.setData({ devlist }, () => { _this.updateCounts && _this.updateCounts(); });
}
} catch (err2) {
console.log('update dev fail state error', err2);
}
console.log('升级失败', err)
});
}catch (error) {
_this.setData({
//升级计数
CurrentUpgradeDev:element.RoomNumber, //当前升级设备
CurrentUpgradeDevStart:errstr+',服务器响应异常',//当前升级设备状态
Completed:false
})
//this.DisplayPrompt(errstr+',服务器响应异常',1000)
return
// 如果 startUpgrade 抛出异常,标记该设备为失败并继续下一个
try {
const devlist2 = _this.data.devlist.slice();
const idx2 = devlist2.findIndex(d => String(d.ID) === String(element.ID) || String(d.RoomNumber) === String(element.RoomNumber));
if (idx2 >= 0) {
devlist2[idx2].UpgradeProgress = "";
devlist2[idx2].UpgradeStatus = 3; // 失败
// 保持勾选状态(不取消),以便用户查看/重试
_this.setData({ devlist: devlist2 }, () => { _this.updateCounts && _this.updateCounts(); });
}
} catch (err2) {
console.log('handle thrown upgrade error', err2);
}
console.log('升级异常', error);
// 不 return继续下一个设备
}
}
this.DisplayPrompt2("升级完成!", 1000)
// 所有设备处理完毕,取消批量升级标记
_this.setData({ Completed:false });
},
DisplayPrompt2(tipstr, showtime)
@@ -665,7 +723,7 @@ Page({
this.setData({
devlist:devlist,
Allcheckbox:values
});
}, () => { this.updateCounts && this.updateCounts(); });
},
checkboxSub(e){
let devlist =this.data.devlist
@@ -691,7 +749,7 @@ Page({
devlist:devlist,
Allcheckbox:values,
checksun:checksun
});
}, () => { this.updateCounts && this.updateCounts(); });
},
SearchForHotels(e){
//debugger
@@ -889,6 +947,7 @@ Page({
devlist[nindex].show=1
devlist[nindex].checkbox=0
devlist[nindex].UpgradeStatus=0
devlist[nindex].UpgradeProgress = "";
devlist[nindex].Model =_this.removeNullCharsAndInvisibleChars(devlist[nindex].Model)
}
}
@@ -926,7 +985,7 @@ if (Nres.Status==200) {
Pfilename:Pfilename,
Gfilename:Gfilename,
Upgradenode:Upgradenode
});
}, () => { this.updateCounts && this.updateCounts(); });
console.log(devlist)
} catch (err) {
console.log('GetRoomTypeNode error', err);
@@ -941,6 +1000,18 @@ if (Nres.Status==200) {
}
},
updateCounts() {
try {
const devlist = Array.isArray(this.data.devlist) ? this.data.devlist : [];
const total = devlist.length;
const checked = devlist.filter(d => d && d.checkbox).length;
const success = devlist.filter(d => d && Number(d.UpgradeStatus) === 2).length;
const fail = devlist.filter(d => d && Number(d.UpgradeStatus) === 3).length;
this.setData({ checkedCount: checked, totalCount: total, successCount: success, failCount: fail });
} catch (e) {
console.log('updateCounts error', e);
}
},
tabSelect(e) {
this.setData({
TabCur: e.currentTarget.dataset.id,