fix: 前端继电器显示同步为新格式 + 更新子模块

与后端 decode_relay_info 保持一致:bit 0/1 始终显示 有/无,不再用缩写 MAP
This commit is contained in:
wangfq
2026-06-10 16:25:38 +08:00
parent 67da0c9368
commit a26d8807cb
3 changed files with 34 additions and 36 deletions

View File

@@ -16,25 +16,25 @@ const VIEWS = {
{ key: 'fault_info', title: '故障信息', render: r => r.data_source === 'B4' ? '-' : `<span style="display:inline-block;max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" title="${escHtml(r.fault_info || '')}">${escHtml(r.fault_info || '-')}</span>` }, { key: 'fault_info', title: '故障信息', render: r => r.data_source === 'B4' ? '-' : `<span style="display:inline-block;max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" title="${escHtml(r.fault_info || '')}">${escHtml(r.fault_info || '-')}</span>` },
{ key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) }, { key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) },
{ key: 'ppvalue', title: '峰峰值(V)', render: r => r.data_source === 'B4' ? '-' : (r.ppvalue != null ? r.ppvalue.toFixed(2) : '-') }, { key: 'ppvalue', title: '峰峰值(V)', render: r => r.data_source === 'B4' ? '-' : (r.ppvalue != null ? r.ppvalue.toFixed(2) : '-') },
{ key: 'idle_freq', title: '开始频率', render: r => r.data_source === 'B4' ? '-' : (r.idle_freq || '-') }, { key: 'idle_freq', title: '开始频率(Hz)', render: r => r.data_source === 'B4' ? '-' : (r.idle_freq || '-') },
{ key: 'enter_freq', title: '进入频率', render: r => r.data_source === 'B4' ? '-' : (r.enter_freq || '-') }, { key: 'enter_freq', title: '进入频率(Hz)', render: r => r.data_source === 'B4' ? '-' : (r.enter_freq || '-') },
{ key: 'exit_freq', title: '离开频率', render: r => r.data_source === 'B4' ? '-' : (r.exit_freq || '-') }, { key: 'exit_freq', title: '离开频率(Hz)', render: r => r.data_source === 'B4' ? '-' : (r.exit_freq || '-') },
{ key: 'enter_dist', title: '进入高度/距离', render: r => { { key: 'enter_dist', title: '触发距离(mm)', render: r => {
const v = r.data_source === 'B4' ? r.b4_enter_dist : r.enter_dist; const v = r.data_source === 'B4' ? r.b4_enter_dist : r.enter_dist;
return v != null ? v + ' mm' : '-'; return v != null ? v + ' ' : '-';
}}, }},
{ key: 'exit_dist', title: '离开高度/距离', render: r => { { key: 'exit_dist', title: '释放距离(mm)', render: r => {
const v = r.data_source === 'B4' ? r.b4_leave_dist : r.exit_dist; const v = r.data_source === 'B4' ? r.b4_leave_dist : r.exit_dist;
return v != null ? v + ' mm' : '-'; return v != null ? v + ' ' : '-';
}}, }},
{ key: 'enter_speed', title: '进入速度', render: r => r.data_source === 'B4' ? '-' : toSpeed(r.enter_speed) }, { key: 'enter_speed', title: '进入速度(dm/s)', render: r => r.data_source === 'B4' ? '-' : toSpeed(r.enter_speed) },
{ key: 'exit_speed', title: '离开速度', render: r => r.data_source === 'B4' ? '-' : toSpeed(r.exit_speed) }, { key: 'exit_speed', title: '离开速度(dm/s)', render: r => r.data_source === 'B4' ? '-' : toSpeed(r.exit_speed) },
{ key: 'remain_count', title: '剩余次数', render: r => r.data_source === 'B2' ? '-' : (r.remain_count ?? '-') }, { key: 'remain_count', title: '剩余次数', render: r => r.data_source === 'B2' ? '-' : (r.remain_count ?? '-') },
{ key: 'work_freq', title: '工作频率(Hz)', render: r => r.data_source === 'B2' ? '-' : (r.work_freq ?? '-') }, { key: 'work_freq', title: '工作频率(Hz)', render: r => r.data_source === 'B2' ? '-' : (r.work_freq ?? '-') },
{ key: 'curr_dist', title: '当前距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.curr_dist != null ? r.curr_dist + ' mm' : '-') }, { key: 'curr_dist', title: '当前距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.curr_dist != null ? r.curr_dist + ' ' : '-') },
{ key: 'speed', title: '速度(dm/s)', render: r => r.data_source === 'B2' ? '-' : (r.speed ?? '-') }, { key: 'speed', title: '速度(dm/s)', render: r => r.data_source === 'B2' ? '-' : (r.speed ?? '-') },
{ key: 'near_dist', title: '最近距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.near_dist != null ? r.near_dist + ' mm' : '-') }, { key: 'near_dist', title: '最近距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.near_dist != null ? r.near_dist + ' ' : '-') },
{ key: 'far_dist', title: '最远距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.far_dist != null ? r.far_dist + ' mm' : '-') }, { key: 'far_dist', title: '最远距离(mm)', render: r => r.data_source === 'B2' ? '-' : (r.far_dist != null ? r.far_dist + ' ' : '-') },
{ key: 'env', title: '测试环境', render: r => envLabel(r) }, { key: 'env', title: '测试环境', render: r => envLabel(r) },
{ key: 'create_time', title: '时间', render: r => fmtTime(r.create_time) }, { key: 'create_time', title: '时间', render: r => fmtTime(r.create_time) },
], ],
@@ -51,11 +51,11 @@ const VIEWS = {
{ key: 'fault_info', title: '故障信息', render: r => `<span style="display:inline-block;max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" title="${escHtml(r.fault_info || '')}">${escHtml(r.fault_info || '-')}</span>` }, { key: 'fault_info', title: '故障信息', render: r => `<span style="display:inline-block;max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;" title="${escHtml(r.fault_info || '')}">${escHtml(r.fault_info || '-')}</span>` },
{ key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) }, { key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) },
{ key: 'ppvalue', title: '峰峰值(V)', render: r => r.ppvalue?.toFixed(2) || '-' }, { key: 'ppvalue', title: '峰峰值(V)', render: r => r.ppvalue?.toFixed(2) || '-' },
{ key: 'idle_freq', title: '开始频率' }, { key: 'idle_freq', title: '开始频率(Hz)' },
{ key: 'enter_freq', title: '进入频率' }, { key: 'enter_freq', title: '进入频率(Hz)' },
{ key: 'exit_freq', title: '离开频率' }, { key: 'exit_freq', title: '离开频率(Hz)' },
{ key: 'enter_dist', title: '进入距离' }, { key: 'enter_dist', title: '触发距离(mm)' },
{ key: 'exit_dist', title: '离开距离' }, { key: 'exit_dist', title: '释放距离(mm)' },
{ key: 'enter_speed', title: '进入速度', render: r => toSpeed(r.enter_speed) }, { key: 'enter_speed', title: '进入速度', render: r => toSpeed(r.enter_speed) },
{ key: 'exit_speed', title: '离开速度', render: r => toSpeed(r.exit_speed) }, { key: 'exit_speed', title: '离开速度', render: r => toSpeed(r.exit_speed) },
{ key: 'env', title: '测试环境', render: r => envLabel(r) }, { key: 'env', title: '测试环境', render: r => envLabel(r) },
@@ -74,8 +74,8 @@ const VIEWS = {
{ key: 'speed', title: '速度(dm/s)' }, { key: 'speed', title: '速度(dm/s)' },
{ key: 'near_dist', title: '最近距离(mm)' }, { key: 'near_dist', title: '最近距离(mm)' },
{ key: 'far_dist', title: '最远距离(mm)' }, { key: 'far_dist', title: '最远距离(mm)' },
{ key: 'b4_enter_dist', title: '进入高度(mm)' }, { key: 'b4_enter_dist', title: '触发距离(mm)' },
{ key: 'b4_leave_dist', title: '离开高度(mm)' }, { key: 'b4_leave_dist', title: '释放高度(mm)' },
{ key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) }, { key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) },
{ key: 'env', title: '测试环境', render: r => envLabel(r) }, { key: 'env', title: '测试环境', render: r => envLabel(r) },
{ key: 'create_time', title: '时间', render: r => fmtTime(r.create_time) }, { key: 'create_time', title: '时间', render: r => fmtTime(r.create_time) },
@@ -110,15 +110,16 @@ function fmtTime(v) {
return `${y}-${m}-${d2} ${h}:${min}:${s}`; return `${y}-${m}-${d2} ${h}:${min}:${s}`;
} }
const RELAY_MAP = {
0: '无输出',
1: '存在信号',
2: '脉冲信号',
3: '存在信号; 脉冲信号',
};
function decodeRelay(v) { function decodeRelay(v) {
if (v === null || v === undefined || v === '') return '-'; if (v === null || v === undefined || v === '') return '-';
return RELAY_MAP[parseInt(v)] || `0x${parseInt(v).toString(16).toUpperCase().padStart(2, '0')}`; return decodeRelayCode(parseInt(v));
}
/** 将 relay_code 原始值解码为可读字符串:
* bit 0 → 存在继电器bit 1 → 脉冲继电器 */
function decodeRelayCode(code) {
const exist = (code & 0x01) ? "存在继电器有输出" : "存在继电器无输出";
const pulse = (code & 0x02) ? "脉冲继电器有输出" : "脉冲继电器无输出";
return `${exist}${pulse}`;
} }
function escHtml(s) { function escHtml(s) {
@@ -296,7 +297,7 @@ function buildRelaySeries(records) {
// tooltip 中显示解码后的文本 // tooltip 中显示解码后的文本
tooltip: { tooltip: {
valueFormatter: function (value) { valueFormatter: function (value) {
return RELAY_MAP[value] || `未知(${value})`; return decodeRelayCode(value);
} }
}, },
}; };
@@ -427,7 +428,7 @@ async function loadChart() {
offset: 160, offset: 160,
axisLabel: { axisLabel: {
formatter: function (v) { formatter: function (v) {
return RELAY_MAP[v] || ''; return decodeRelayCode(v);
}, },
fontSize: 10, fontSize: 10,
}}, }},

View File

@@ -388,15 +388,12 @@ function fmtTime(v) {
return `${y}-${m}-${d2} ${h}:${min}:${s}`; return `${y}-${m}-${d2} ${h}:${min}:${s}`;
} }
const RELAY_MAP = {
0: '无输出',
1: '存在信号',
2: '脉冲信号',
3: '存在信号; 脉冲信号',
};
function decodeRelay(v) { function decodeRelay(v) {
if (v === null || v === undefined || v === '') return '-'; if (v === null || v === undefined || v === '') return '-';
return RELAY_MAP[parseInt(v)] || `0x${parseInt(v).toString(16).toUpperCase().padStart(2, '0')}`; const code = parseInt(v);
const exist = (code & 0x01) ? "存在继电器有输出" : "存在继电器无输出";
const pulse = (code & 0x02) ? "脉冲继电器有输出" : "脉冲继电器无输出";
return `${exist}${pulse}`;
} }
// ─── 显示最新结果 ────────────────────────────── // ─── 显示最新结果 ──────────────────────────────