|
|
@@ -98,10 +98,10 @@ export const EVENT_TYPE_TEXT = {
|
|
|
'WARN-WATER-LEVEL': '水位预警',
|
|
|
// 污水水质(WarningCodeEnum)
|
|
|
'WARN-SUSPENDED-SOLIDS': '悬浮物预警',
|
|
|
- 'WARN-COD': 'COD预警',
|
|
|
+ 'WARN-COD': '化学需氧量(COD)预警',
|
|
|
'WARN-AMMONIA-NITROGEN': '氨氮预警',
|
|
|
'WARN-CONDUCTIVITY': '电导率预警',
|
|
|
- 'WARN-PH': 'PH预警',
|
|
|
+ 'WARN-PH': '酸碱度(pH)预警',
|
|
|
// 可燃气体
|
|
|
'WARN-GAS-CONCENTRATION': '可燃气体浓度预警',
|
|
|
// 后端枚举自己拼错了(`TEMPERATRUE`),键照抄它的拼法,不然真实数据认不出
|
|
|
@@ -119,10 +119,10 @@ export const EVENT_TYPE_TEXT = {
|
|
|
'WARN_FLOW_SPEED': '流速预警',
|
|
|
'WARN_WATER_LEVEL': '水位预警',
|
|
|
'WARN_SUSPENDED_SOLIDS': '悬浮物预警',
|
|
|
- 'WARN_COD': 'COD预警',
|
|
|
+ 'WARN_COD': '化学需氧量(COD)预警',
|
|
|
'WARN_AMMONIA_NITROGEN': '氨氮预警',
|
|
|
'WARN_CONDUCTIVITY': '电导率预警',
|
|
|
- 'WARN_PH': 'PH预警',
|
|
|
+ 'WARN_PH': '酸碱度(pH)预警',
|
|
|
// 后端给「事件类型缺失」的显式兜底桶
|
|
|
UNKNOWN_EVENT_TYPE: '未知事件类型',
|
|
|
}
|
|
|
@@ -186,9 +186,9 @@ export function localizeCodeText(code, label, ...dictionaries) {
|
|
|
const hit = rawCode && dictionary && dictionary[rawCode]
|
|
|
if (hit) return hit
|
|
|
}
|
|
|
- const human = humanLabel(label)
|
|
|
+ const human = humanLabel(label) || humanLabel(rawCode)
|
|
|
if (human) return human
|
|
|
- return rawCode || (typeof label === 'string' ? label.trim() : '')
|
|
|
+ return rawCode || label ? '未知' : ''
|
|
|
}
|
|
|
|
|
|
/** 事件类型码 → 中文(真实码优先,其次契约样例码;都认不出见 `localizeCodeText` 第 3 条)。 */
|
|
|
@@ -285,7 +285,7 @@ export function isTerminalEventStatus(status) {
|
|
|
export function eventStatusText(status) {
|
|
|
const value = typeof status === 'string' ? status.trim() : ''
|
|
|
if (!value) return ''
|
|
|
- return EVENT_STATUS_TEXT[value] || value
|
|
|
+ return Object.hasOwn(EVENT_STATUS_TEXT, value.toUpperCase()) ? EVENT_STATUS_TEXT[value.toUpperCase()] : humanLabel(value) || '状态未知'
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -324,7 +324,7 @@ export function toEventItem(raw) {
|
|
|
// 注意报警的 eventNo 是**主键 UUID**,上屏必须用 eventCode(业务编号 alarmNo)
|
|
|
// —— 维护者 2026-10-29:「报警详情的事件编码应该用 code 而非 id」。
|
|
|
code: reader.str('eventNo'),
|
|
|
- codeText: reader.optionalStr('eventCode') || reader.str('eventNo'),
|
|
|
+ codeText: reader.optionalStr('code') || reader.optionalStr('eventCode'),
|
|
|
name: reader.optionalStr('eventName'),
|
|
|
type: reader.optionalStr('eventType'),
|
|
|
level: reader.optionalNum('level'),
|
|
|
@@ -497,11 +497,11 @@ export function eventRowView(eventItem) {
|
|
|
// 切换后的字段标签(预警/报警各自一套,来自切换视图 —— 与状态标签同步变化)。
|
|
|
// `code` 是内部键(取数用);`codeText` 是上屏的业务编号(报警为 alarmNo)。
|
|
|
code: item.code,
|
|
|
- codeText: item.codeText || item.code || '',
|
|
|
+ codeText: item.codeText || '编码未提供',
|
|
|
identityCode: item.code || '',
|
|
|
identityFamily: String(item.family || '').toUpperCase(),
|
|
|
identityReason: item.code ? '' : '缺少事件编号,无法展开',
|
|
|
- name: item.name || item.code || DETAIL_PLACEHOLDER,
|
|
|
+ name: item.name || item.codeText || '事件名称未提供',
|
|
|
type: item.type || '',
|
|
|
level: { tone: tag.tone, label: tag.label },
|
|
|
statusText: eventStatusText(item.status),
|
|
|
@@ -612,7 +612,6 @@ export function prepareCurrentEventItems(domain, eventsSection, warningType = ''
|
|
|
* 后端 `/events/current` 不收 type 参数,且当前列表本身只含"可解析设备"的子集 ——
|
|
|
* 所以这里必须给出**覆盖范围**(`filterView`),不能声称筛选完整。
|
|
|
* @param {object} [prepared] 同一 domain/事件分区/有效类型码的准备结果,调用方保证成员变化时重算
|
|
|
- * @param {object} [prepared] 同输入的prepareCurrentEventItems结果;调用方负责深依赖失效,不可跨批复用。
|
|
|
*/
|
|
|
export function currentEventsView(domain, eventsSection, options = {}, prepared) {
|
|
|
const current = domain || null
|