feat: 添加设备列表排序功能,支持房号、配置版本和固件版本排序
This commit is contained in:
@@ -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 : [];
|
||||
|
||||
Reference in New Issue
Block a user