Selaa lähdekoodia

fix(cockpit): 图例在线数改为按台账状态显式入桶

此前在线数用「设备总数 - 离线数」倒推,任何没有状态或状态认不出的设备都会被算成在线,
把「未知」冒充成「在线」,与图例按标签入桶的口径不符。

- 只有 ONLINE 进在线桶、OFFLINE 进离线桶
- 其余状态单列 UNKNOWN_STATE,既不并入在线也不并入离线
ChenJZ 2 päivää sitten
vanhempi
commit
45cf2397b1
1 muutettua tiedostoa jossa 14 lisäystä ja 2 poistoa
  1. 14 2
      src/modules/cockpit/stores/deviceStatusStore.js

+ 14 - 2
src/modules/cockpit/stores/deviceStatusStore.js

@@ -120,7 +120,17 @@ export const useDeviceStatusStore = defineStore('deviceStatusStore', () => {
                 tags: Object.keys(tagSets).filter((key) => tagSets[key].has(code)),
             })
         }
-        const offline = devices.filter((device) => String((device && device.status) || '').toUpperCase() === 'OFFLINE').length
+        // 在线/离线按台账状态**显式入桶**,不用「总数-离线」倒推:那样任何没有状态
+        // (UNKNOWN/空)的设备都会被算成在线,把「不知道」冒充成「在线」。
+        let online = 0
+        let offline = 0
+        let unknownState = 0
+        for (const device of devices) {
+            const state = String((device && device.status) || '').toUpperCase()
+            if (state === 'ONLINE') online += 1
+            else if (state === 'OFFLINE') offline += 1
+            else unknownState += 1
+        }
         return {
             available: true,
             total: devices.length,
@@ -130,8 +140,10 @@ export const useDeviceStatusStore = defineStore('deviceStatusStore', () => {
                 ALARM: tagSets.ALARM.size,
                 WARNING: tagSets.WARNING.size,
                 WORK_ORDER: tagSets.WORK_ORDER.size,
-                NORMAL: devices.length - offline,
+                NORMAL: online,
                 OFFLINE: offline,
+                // 台账没给状态(或给了认不出的值)的台数:不并入在线,也不并入离线。
+                UNKNOWN_STATE: unknownState,
                 UNASSOCIATED: tagSets.UNASSOCIATED.size,
             },
         }