fix: relay_out 调整仅改后端格式化,前端直接显示 DB relay_out 字段

- relay_code 保持原始 int 值不变
- decode_relay_info 输出新格式: '存在继电器有输出,脉冲继电器无输出'
- 前端不再 JS 端重新解码 relay_code,直接显示 DB 中的 relay_out 字段
- 保留 RELAY_MAP/decodeRelay 作为降级方案(relay_out 为空时用)
This commit is contained in:
wangfq
2026-06-10 16:28:30 +08:00
parent a26d8807cb
commit 2458127cfb
2 changed files with 21 additions and 19 deletions

View File

@@ -14,7 +14,7 @@ const VIEWS = {
{ key: 'test_mode', title: '测试模式', render: r => r.test_mode === 1 ? '波动' : '灵敏度' },
{ key: 'iffinish', title: '完成', render: r => r.data_source === 'B4' ? '-' : (r.iffinish === '1' ? '是' : '否') },
{ 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: '继电器' },
{ key: 'ppvalue', title: '峰峰值(V)', render: r => r.data_source === 'B4' ? '-' : (r.ppvalue != null ? r.ppvalue.toFixed(2) : '-') },
{ key: 'idle_freq', title: '开始频率(Hz)', render: r => r.data_source === 'B4' ? '-' : (r.idle_freq || '-') },
{ key: 'enter_freq', title: '进入频率(Hz)', render: r => r.data_source === 'B4' ? '-' : (r.enter_freq || '-') },
@@ -49,7 +49,7 @@ const VIEWS = {
{ key: 'test_mode', title: '测试模式', render: r => r.test_mode === 1 ? '波动' : '灵敏度' },
{ key: 'iffinish', title: '完成', render: r => r.iffinish === '1' ? '是' : '否' },
{ 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: '继电器' },
{ key: 'ppvalue', title: '峰峰值(V)', render: r => r.ppvalue?.toFixed(2) || '-' },
{ key: 'idle_freq', title: '开始频率(Hz)' },
{ key: 'enter_freq', title: '进入频率(Hz)' },
@@ -76,7 +76,7 @@ const VIEWS = {
{ key: 'far_dist', title: '最远距离(mm)' },
{ key: 'b4_enter_dist', title: '触发距离(mm)' },
{ key: 'b4_leave_dist', title: '释放高度(mm)' },
{ key: 'relay_out', title: '继电器', render: r => decodeRelay(r.relay_code) },
{ key: 'relay_out', title: '继电器' },
{ key: 'env', title: '测试环境', render: r => envLabel(r) },
{ key: 'create_time', title: '时间', render: r => fmtTime(r.create_time) },
],
@@ -110,16 +110,15 @@ function fmtTime(v) {
return `${y}-${m}-${d2} ${h}:${min}:${s}`;
}
const RELAY_MAP = {
0: '无输出',
1: '存在信号',
2: '脉冲信号',
3: '存在信号; 脉冲信号',
};
function decodeRelay(v) {
if (v === null || v === undefined || v === '') return '-';
return decodeRelayCode(parseInt(v));
}
/** 将 relay_code 原始值解码为可读字符串:
* bit 0 → 存在继电器bit 1 → 脉冲继电器 */
function decodeRelayCode(code) {
const exist = (code & 0x01) ? "存在继电器有输出" : "存在继电器无输出";
const pulse = (code & 0x02) ? "脉冲继电器有输出" : "脉冲继电器无输出";
return `${exist}${pulse}`;
return RELAY_MAP[parseInt(v)] || `0x${parseInt(v).toString(16).toUpperCase().padStart(2, '0')}`;
}
function escHtml(s) {
@@ -297,7 +296,7 @@ function buildRelaySeries(records) {
// tooltip 中显示解码后的文本
tooltip: {
valueFormatter: function (value) {
return decodeRelayCode(value);
return RELAY_MAP[value] || `未知(${value})`;
}
},
};
@@ -428,7 +427,7 @@ async function loadChart() {
offset: 160,
axisLabel: {
formatter: function (v) {
return decodeRelayCode(v);
return RELAY_MAP[v] || '';
},
fontSize: 10,
}},

View File

@@ -388,12 +388,15 @@ function fmtTime(v) {
return `${y}-${m}-${d2} ${h}:${min}:${s}`;
}
const RELAY_MAP = {
0: '无输出',
1: '存在信号',
2: '脉冲信号',
3: '存在信号; 脉冲信号',
};
function decodeRelay(v) {
if (v === null || v === undefined || v === '') return '-';
const code = parseInt(v);
const exist = (code & 0x01) ? "存在继电器有输出" : "存在继电器无输出";
const pulse = (code & 0x02) ? "脉冲继电器有输出" : "脉冲继电器无输出";
return `${exist}${pulse}`;
return RELAY_MAP[parseInt(v)] || `0x${parseInt(v).toString(16).toUpperCase().padStart(2, '0')}`;
}
// ─── 显示最新结果 ──────────────────────────────
@@ -413,7 +416,7 @@ function renderLatest(data) {
<p>离开速度:${toSpeed(data.exit_speed)} m/s</p>
<p>是否完成:${data.iffinish === '1' ? '是' : '否'}</p>
<p>故障信息:${data.fault_info || '无'}</p>
<p>继电器:${decodeRelay(data.relay_code)}</p>
<p>继电器:${data.relay_out || decodeRelay(data.relay_code)}</p>
<p>时间:${fmtTime(data.create_time)}</p>
`;
}
@@ -454,7 +457,7 @@ function renderLatestWave(data) {
<p>最远距离:${data.far_dist || '-'} mm</p>
<p>进入高度 (B4)${data.b4_enter_dist || '-'} mm</p>
<p>离开高度 (B4)${data.b4_leave_dist || '-'} mm</p>
<p>继电器:${decodeRelay(data.relay_code)}</p>
<p>继电器:${data.relay_out || decodeRelay(data.relay_code)}</p>
<p>时间:${fmtTime(data.create_time)}</p>
`;
}