45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
/**
|
||
* 设备详情接口字段 onlineStatus:
|
||
* - 0(或字符串 '0')→ 离线,显示顶部离线横幅
|
||
* - 1(或字符串 '1')→ 在线,不显示横幅
|
||
* - 未返回 / 无法解析 → 不显示横幅
|
||
*
|
||
* 数据来源:xqobj / sbobj;若根级无 onlineStatus,再读 iotOnlineData.onlineStatus
|
||
*/
|
||
function pickDeviceRecord(vm) {
|
||
if (vm.xqobj && typeof vm.xqobj === 'object' && Object.keys(vm.xqobj).length) {
|
||
return vm.xqobj
|
||
}
|
||
if (vm.sbobj && typeof vm.sbobj === 'object' && Object.keys(vm.sbobj).length) {
|
||
return vm.sbobj
|
||
}
|
||
return null
|
||
}
|
||
|
||
function normalizeOnlineStatus(raw) {
|
||
if (raw === undefined || raw === null || raw === '') return null
|
||
const n = Number(raw)
|
||
if (Number.isNaN(n)) return null
|
||
return n
|
||
}
|
||
|
||
export default {
|
||
computed: {
|
||
isDeviceOffline() {
|
||
const d = pickDeviceRecord(this)
|
||
if (!d) return false
|
||
let s = d.onlineStatus
|
||
if ((s === undefined || s === null || s === '') && d.iotOnlineData) {
|
||
s = d.iotOnlineData.onlineStatus
|
||
}
|
||
const n = normalizeOnlineStatus(s)
|
||
if (n === null) return false
|
||
return n === 0
|
||
},
|
||
/** 自定义导航 + 固定离线条时,给占位 view 增加的高度 (rpx) */
|
||
offlineBannerExtraRpx() {
|
||
return this.isDeviceOffline ? 56 : 0
|
||
},
|
||
},
|
||
}
|