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

@@ -144,6 +144,7 @@ if (Nres.Status==200) {
break break
} }
} }
console.log("roomtypeInfoNodeinfo") console.log("roomtypeInfoNodeinfo")
console.log(this.data.roomtypeInfoNodeinfo) console.log(this.data.roomtypeInfoNodeinfo)
this.LoopDebugging(null) this.LoopDebugging(null)
@@ -394,7 +395,7 @@ if (Nres.Status==200) {
if ( element2[0] == addrtype[0][0]) { if ( element2[0] == addrtype[0][0]) {
li= myMap[index2][1] li= myMap[index2][1]
li.push([element.ModalAddress,element.Name,addrtype[0][1]]) li.push([element.ModalAddress,element.Name,addrtype[0][1],element.addrindex])
myMap[index2][1]=li myMap[index2][1]=li
addrtypelist=false addrtypelist=false
break break
@@ -403,7 +404,7 @@ if (Nres.Status==200) {
if (addrtypelist) { if (addrtypelist) {
li=[] li=[]
li.push([element.ModalAddress,element.Name,addrtype[0][1]]) li.push([element.ModalAddress,element.Name,addrtype[0][1],element.addrindex])
myMap.push([addrtype[0][0],li]) myMap.push([addrtype[0][0],li])
} }
@@ -412,6 +413,7 @@ if (Nres.Status==200) {
roomtypeInfoNodeinfo=myMap.sort((a, b) => a[0] - b[0]) roomtypeInfoNodeinfo=myMap.sort((a, b) => a[0] - b[0])
//获取房间在线状态 roomstart //获取房间在线状态 roomstart
console.log(roomtypeInfoNodeinfo) console.log(roomtypeInfoNodeinfo)
@@ -421,6 +423,7 @@ if (Nres.Status==200) {
this.setData({ this.setData({
roomtypeInfoNodeinfo:roomtypeInfoNodeinfo roomtypeInfoNodeinfo:roomtypeInfoNodeinfo
}) })
console.log(this.data.roomtypeInfoNode) console.log(this.data.roomtypeInfoNode)
}, },
GetloopType(loopaddr){ GetloopType(loopaddr){
@@ -503,6 +506,7 @@ if (Nres.Status==200) {
let iset = await this.ControlStatusMainCircuit(id, narry, devarr) let iset = await this.ControlStatusMainCircuit(id, narry, devarr)
if (iset) { if (iset) {
roomtypeInfoNodeinfo[index][1][nindex][2] = narry roomtypeInfoNodeinfo[index][1][nindex][2] = narry
this.setData({ this.setData({
roomtypeInfoNodeinfo: roomtypeInfoNodeinfo roomtypeInfoNodeinfo: roomtypeInfoNodeinfo
}) })

View File

@@ -75,7 +75,7 @@
<view class="bg-white "> <view class="bg-white ">
<!-- <view style="text-align: left;font-weight: bold">播放测试:</view> --> <!-- <view style="text-align: left;font-weight: bold">播放测试:</view> -->
<!-- <view style="text-align: left;font-weight: bold">播放测试:</view> --> <view style="text-align: left;font-weight: bold; color: blue;">播放测试:</view>
<view class="Ncu-bar bg-white flex"> <view class="Ncu-bar bg-white flex">
<button bindtap="GetshowinfoClick" class="cu-btn round1 ulg margin-5" style="font-weight: bold;">播放欢迎词</button> <button bindtap="GetshowinfoClick" class="cu-btn round1 ulg margin-5" style="font-weight: bold;">播放欢迎词</button>
<!-- <view style="text-align: left;font-weight: bold" class=" margin-xs radius ">音量:</view> --> <!-- <view style="text-align: left;font-weight: bold" class=" margin-xs radius ">音量:</view> -->
@@ -91,7 +91,7 @@
<view class="bg-white " wx:for="{{roomtypeInfoNodeinfo}}" wx:for-item="row" wx:for-index="rowIndex"> <view class="bg-white " wx:for="{{roomtypeInfoNodeinfo}}" wx:for-item="row" wx:for-index="rowIndex">
<view class=" bg-white " wx:if="{{row[0]===1}}" > <view class=" bg-white " wx:if="{{row[0]===1}}" >
<!-- <view style="text-align: left;font-weight: bold">设置设备开关状态:</view> --> <view style="text-align: left;font-weight: bold; color: blue;">设置设备开关状态:</view>
<view class="Ncu-bar bg-white flex-sub" wx:for="{{row[1].length/4 }}" wx:for-index="colIndex" > <view class="Ncu-bar bg-white flex-sub" wx:for="{{row[1].length/4 }}" wx:for-index="colIndex" >
<view class="Ncu-bar bg-white" wx:if="{{colIndex*4<row[1].length}}"> <view class="Ncu-bar bg-white" wx:if="{{colIndex*4<row[1].length}}">
<button id="1" class="cu-btn round1 margin-3 vlg" data-value="1" data-index="{{row[1][colIndex*4][0]}}" bindtap="SetDeviceSwitchStatus" wx:if="{{colIndex*4<row[1].length}}" style="background-color: {{row[1][colIndex*4][2][0][2]===0 ? '#E6E6E6 ':'#39b54a'}};" >{{row[1][colIndex*4][3]}}_{{row[1][colIndex*4][1]}}</button> <button id="1" class="cu-btn round1 margin-3 vlg" data-value="1" data-index="{{row[1][colIndex*4][0]}}" bindtap="SetDeviceSwitchStatus" wx:if="{{colIndex*4<row[1].length}}" style="background-color: {{row[1][colIndex*4][2][0][2]===0 ? '#E6E6E6 ':'#39b54a'}};" >{{row[1][colIndex*4][3]}}_{{row[1][colIndex*4][1]}}</button>
@@ -106,7 +106,7 @@
</view> </view>
<view class="bg-white" wx:if="{{row[0]===23}}"> <view class="bg-white" wx:if="{{row[0]===23}}">
<!-- <view style="text-align: left;font-weight: bold">设置调光亮度:</view> --> <view style="text-align: left;font-weight: bold; color: blue">设置调光亮度:</view>
<view class="bg-white" wx:for="{{row[1].length}}" wx:for-index="DimIndex" > <view class="bg-white" wx:for="{{row[1].length}}" wx:for-index="DimIndex" >
<view class="Ncu-bar bg-white"> <view class="Ncu-bar bg-white">
<view class="flex-twice">{{row[1][DimIndex][3]}}_{{row[1][DimIndex][1]}}</view> <view class="flex-twice">{{row[1][DimIndex][3]}}_{{row[1][DimIndex][1]}}</view>
@@ -117,7 +117,7 @@
<view class="ControlLine"></view> <view class="ControlLine"></view>
</view> </view>
<view class="bg-white" wx:if="{{row[0]===52}}"> <view class="bg-white" wx:if="{{row[0]===52}}">
<!-- <view style="text-align: left;font-weight: bold">色温控制:</view> --> <view style="text-align: left;font-weight: bold; color: blue">色温控制:</view>
<view class="Ncu-bar bg-white"> <view class="Ncu-bar bg-white">
<view class="action margin-0 flex-twice text-green " >开关</view> <view class="action margin-0 flex-twice text-green " >开关</view>
<view class="action margin-0 flex-xis text-green solid-left" >色温</view> <view class="action margin-0 flex-xis text-green solid-left" >色温</view>
@@ -165,7 +165,7 @@
<view class="ControlLine"></view> <view class="ControlLine"></view>
</view> </view>
<view class="bg-white" wx:if="{{row[0]===5}}"> <view class="bg-white" wx:if="{{row[0]===5}}">
<!-- <view style="text-align: left;font-weight: bold">设置设备开停关状态:</view> --> <view style="text-align: left;font-weight: bold; color: blue">设置设备开停关状态:</view>
<view class="bg-white" wx:for="{{row[1].length}}" wx:for-index="coloIndex"> <view class="bg-white" wx:for="{{row[1].length}}" wx:for-index="coloIndex">
<view class="Ncu-bar bg-white"> <view class="Ncu-bar bg-white">
@@ -184,7 +184,7 @@
<view class="ControlLine"></view> <view class="ControlLine"></view>
</view> </view>
<view class="bg-white" wx:if="{{row[0]===7}}"> <view class="bg-white" wx:if="{{row[0]===7}}">
<!-- <view style="text-align: left;font-weight: bold">设置温控设备状态:</view> --> <view style="text-align: left;font-weight: bold; color: blue">设置温控设备状态:</view>
<view class=" bg-white" wx:for="{{row[1].length}}" wx:for-index="coloIndex"> <view class=" bg-white" wx:for="{{row[1].length}}" wx:for-index="coloIndex">
<view class="Ncu-bar bg-white"> <view class="Ncu-bar bg-white">

View File

@@ -54,6 +54,9 @@ Page({
CurrentUpgradeDev:'', //当前升级设备 CurrentUpgradeDev:'', //当前升级设备
CurrentUpgradeDevStart:'',//当前升级设备状态 CurrentUpgradeDevStart:'',//当前升级设备状态
UpgradeAllCount:0, UpgradeAllCount:0,
RoomNumberSort: false,
ConfigVersionSort: false,
FirmwareVersionSort: false,
//MAC绑定相关 //MAC绑定相关
selHosts: null, selHosts: null,
code: null, code: null,
@@ -951,6 +954,7 @@ Page({
devlist[nindex].UpgradeProgress = ""; devlist[nindex].UpgradeProgress = "";
devlist[nindex].Model =_this.removeNullCharsAndInvisibleChars(devlist[nindex].Model) devlist[nindex].Model =_this.removeNullCharsAndInvisibleChars(devlist[nindex].Model)
} }
devlist = this.applyDevlistSort(devlist)
} }
const Nres = await GetRoomType({ const Nres = await GetRoomType({
HotelID:app.globalData.HotelId 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() { updateCounts() {
try { try {
const devlist = Array.isArray(this.data.devlist) ? this.data.devlist : []; const devlist = Array.isArray(this.data.devlist) ? this.data.devlist : [];

View File

@@ -56,6 +56,7 @@ bindtouchend="handleTouchEnd" style="margin-bottom: 30rpx;">
<view style="font-size: 32rpx;justify-content:start" >{{item.RoomNumber}}</view> <view style="font-size: 32rpx;justify-content:start" >{{item.RoomNumber}}</view>
<view style="font-size: 20rpx;justify-content:start; color: {{(!item.MAC && item.Status !== 1) ? '#FF3B30' : '#666666'}};" > <view style="font-size: 20rpx;justify-content:start; color: {{(!item.MAC && item.Status !== 1) ? '#FF3B30' : '#666666'}};" >
{{item.MAC || (item.Status !== 1 ? '点击扫码绑定主机' : '')}} {{item.MAC || (item.Status !== 1 ? '点击扫码绑定主机' : '')}}
<br/>长按输入MAC地址绑定主机
</view> </view>
<!-- 升级进度显示(若当前正在升级此房间) --> <!-- 升级进度显示(若当前正在升级此房间) -->
<view wx:if="{{CurrentUpgradeDev == item.RoomNumber}}" class="upgrade-badge">升级: {{CurrentUpgradeDevStart}}</view> <view wx:if="{{CurrentUpgradeDev == item.RoomNumber}}" class="upgrade-badge">升级: {{CurrentUpgradeDevStart}}</view>
@@ -123,16 +124,16 @@ bindtouchend="handleTouchEnd" style="margin-bottom: 30rpx;">
<!-- 排序卡片 --> <!-- 排序卡片 -->
<view class=" flex align-center " style="height: 40rpx;background: aquamarine; justify-content:flex-end; padding-right:12rpx;" > <view class=" flex align-center " style="height: 40rpx;background: aquamarine; justify-content:flex-end; padding-right:12rpx;" >
<view style="display:flex; align-items:center; margin-left:12rpx;"> <view style="display:flex; align-items:center; margin-left:12rpx;" bindtap="RoomNumberSortTap">
<checkbox checked="{{Allcheckbox}}"></checkbox> <checkbox checked="{{RoomNumberSort}}"></checkbox>
<text style="margin-left:6rpx;">房号排序</text> <text style="margin-left:6rpx;">房号排序</text>
</view> </view>
<view style="display:flex; align-items:center; margin-left:12rpx;"> <view style="display:flex; align-items:center; margin-left:12rpx;" bindtap="FirmwareVersionSortTap">
<checkbox checked="{{Allcheckbox}}"></checkbox> <checkbox checked="{{FirmwareVersionSort}}"></checkbox>
<text style="margin-left:6rpx;">固件版本排序</text> <text style="margin-left:6rpx;">固件版本排序</text>
</view> </view>
<view style="display:flex; align-items:center; margin-left:12rpx;"> <view style="display:flex; align-items:center; margin-left:12rpx;" bindtap="ConfigVersionSortTap">
<checkbox checked="{{Allcheckbox}}"></checkbox> <checkbox checked="{{ConfigVersionSort}}"></checkbox>
<text style="margin-left:6rpx;">配置版本排序</text> <text style="margin-left:6rpx;">配置版本排序</text>
</view> </view>