feat: 添加设备列表排序功能,支持房号、配置版本和固件版本排序

This commit is contained in:
2026-04-08 15:42:04 +08:00
parent c03f7b47d0
commit 2580cd86e9
4 changed files with 150 additions and 14 deletions

View File

@@ -54,6 +54,9 @@ Page({
CurrentUpgradeDev:'', //当前升级设备
CurrentUpgradeDevStart:'',//当前升级设备状态
UpgradeAllCount:0,
RoomNumberSort: false,
ConfigVersionSort: false,
FirmwareVersionSort: false,
//MAC绑定相关
selHosts: null,
code: null,
@@ -951,6 +954,7 @@ Page({
devlist[nindex].UpgradeProgress = "";
devlist[nindex].Model =_this.removeNullCharsAndInvisibleChars(devlist[nindex].Model)
}
devlist = this.applyDevlistSort(devlist)
}
const Nres = await GetRoomType({
HotelID:app.globalData.HotelId
@@ -1001,6 +1005,133 @@ if (Nres.Status==200) {
}
},
sortDevlistByRoomNumber(devlist) {
if (!Array.isArray(devlist)) {
return []
}
return devlist.slice().sort((left, right) => {
const leftRoom = String(left && left.RoomNumber != null ? left.RoomNumber : '')
const rightRoom = String(right && right.RoomNumber != null ? right.RoomNumber : '')
const leftNumber = Number(leftRoom)
const rightNumber = Number(rightRoom)
const leftIsNumber = Number.isFinite(leftNumber)
const rightIsNumber = Number.isFinite(rightNumber)
if (leftIsNumber && rightIsNumber) {
return leftNumber - rightNumber
}
return leftRoom.localeCompare(rightRoom, 'zh-Hans-CN', { numeric: true, sensitivity: 'base' })
})
},
sortDevlistByConfigVersion(devlist) {
if (!Array.isArray(devlist)) {
return []
}
return devlist.slice().sort((left, right) => {
const leftConfig = String(left && left.ConfigVersion != null ? left.ConfigVersion : '')
const rightConfig = String(right && right.ConfigVersion != null ? right.ConfigVersion : '')
const leftPrefix = leftConfig.split('_')[0]
const rightPrefix = rightConfig.split('_')[0]
const leftNumber = Number(leftPrefix)
const rightNumber = Number(rightPrefix)
const leftIsNumber = Number.isFinite(leftNumber)
const rightIsNumber = Number.isFinite(rightNumber)
if (leftIsNumber && rightIsNumber) {
return leftNumber - rightNumber
}
if (leftIsNumber) {
return -1
}
if (rightIsNumber) {
return 1
}
return leftPrefix.localeCompare(rightPrefix, 'zh-Hans-CN', { numeric: true, sensitivity: 'base' })
})
},
sortDevlistByFirmwareVersion(devlist) {
if (!Array.isArray(devlist)) {
return []
}
return devlist.slice().sort((left, right) => {
const leftName = String(left && (left.VersionName || left.Version || left.Gfilename || left.FirmwareName) != null ? (left.VersionName || left.Version || left.Gfilename || left.FirmwareName) : '')
const rightName = String(right && (right.VersionName || right.Version || right.Gfilename || right.FirmwareName) != null ? (right.VersionName || right.Version || right.Gfilename || right.FirmwareName) : '')
const leftParts = leftName.split('_')
const rightParts = rightName.split('_')
const leftKey = leftParts.length >= 3 ? leftParts[2] : ''
const rightKey = rightParts.length >= 3 ? rightParts[2] : ''
const leftNumber = Number(leftKey)
const rightNumber = Number(rightKey)
const leftIsNumber = Number.isFinite(leftNumber)
const rightIsNumber = Number.isFinite(rightNumber)
if (leftIsNumber && rightIsNumber) {
return leftNumber - rightNumber
}
if (leftIsNumber) {
return -1
}
if (rightIsNumber) {
return 1
}
return String(leftKey).localeCompare(String(rightKey), 'zh-Hans-CN', { numeric: true, sensitivity: 'base' })
})
},
applyDevlistSort(devlist) {
if (this.data.RoomNumberSort) {
return this.sortDevlistByRoomNumber(devlist)
}
if (this.data.ConfigVersionSort) {
return this.sortDevlistByConfigVersion(devlist)
}
if (this.data.FirmwareVersionSort) {
return this.sortDevlistByFirmwareVersion(devlist)
}
return Array.isArray(devlist) ? devlist.slice() : []
},
RoomNumberSortTap() {
const devlist = this.sortDevlistByRoomNumber(this.data.devlist)
this.setData({
RoomNumberSort: true,
ConfigVersionSort: false,
FirmwareVersionSort: false,
devlist
}, () => { this.updateCounts && this.updateCounts(); })
},
ConfigVersionSortTap() {
const devlist = this.sortDevlistByConfigVersion(this.data.devlist)
this.setData({
RoomNumberSort: false,
ConfigVersionSort: true,
FirmwareVersionSort: false,
devlist
}, () => { this.updateCounts && this.updateCounts(); })
},
FirmwareVersionSortTap() {
const devlist = this.sortDevlistByFirmwareVersion(this.data.devlist)
this.setData({
RoomNumberSort: false,
ConfigVersionSort: false,
FirmwareVersionSort: true,
devlist
}, () => { this.updateCounts && this.updateCounts(); })
},
updateCounts() {
try {
const devlist = Array.isArray(this.data.devlist) ? this.data.devlist : [];