fix: 全选勾选不显示(renderDevices 签名缺选中状态导致防抖跳过渲染)+ 亮屏/息屏支持勾选设备(未勾选则全部在线,离线自动过滤)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user