fix: 全选勾选不显示(renderDevices 签名缺选中状态导致防抖跳过渲染)+ 亮屏/息屏支持勾选设备(未勾选则全部在线,离线自动过滤)

This commit is contained in:
2026-08-19 13:57:07 +08:00
parent 6f6093842c
commit 2d1b10c7f3
2 changed files with 17 additions and 5 deletions
+8 -3
View File
@@ -94,9 +94,13 @@ async function stopLocate(serial){
}
// 批量亮屏/息屏所有在线设备(息屏会中断运行中任务,前端已确认)
// 亮屏/息屏:优先作用于勾选设备;未勾选则作用于全部在线设备
async function screenAllDevices(mode){
if(mode==='off'&&!confirm('确定让所有在线设备息屏?\n\n运行中的任务会因屏幕熄灭而中断,请谨慎操作。'))return;
const r=await apiPost('/api/device/screen_all',{mode:mode});
const label=(mode==='on'?'亮屏':'息屏');
const selected=Array.from(_selectedSerials);
const target=selected.length?('选中设备 '+selected.length+' 台'):'全部在线设备';
if(!confirm(label+':将作用于'+target+'。\n\n'+(mode==='off'?'息屏会中断运行中的任务(u2 无法操作),':'')+'确认继续吗?'))return;
const r=await apiPost('/api/device/screen_all',{mode:mode,serials:selected.length?selected:undefined});
if(!r)return;
if(r.ok)showToast((mode==='off'?'已息屏':'已亮屏')+' '+r.success+'/'+r.total+' 台设备','success');
else showToast(r.error||'操作失败','error');
@@ -298,7 +302,8 @@ function renderDevices(){
// 5秒自动刷新时若设备数据/分页/搜索/排序/定位状态都没变化,跳过整表重渲染(避免DOM抖动)
const _st=_lp('devices');
const _sig=JSON.stringify({d:_statusData.devices,p:_st.page,k:_st.kw,s:_st.sort,
l:[..._locatingSerials].sort().join(',')});
l:[..._locatingSerials].sort().join(','),
sel:[..._selectedSerials].sort().join(',')});
if(_sig===_devicesSig)return;
_devicesSig=_sig;
// 排序由 applyListPager 统一处理(sortValue + _lpSort)