fix: 前端型号显示改为从 API 动态获取,修复新增加型号显示 Unknown(3)
- test_op.js: renderConfigOverview 硬编码 devTypeMap → devTypeNameCache[DevType] - test_op.js: renderLatest 增加 sub_type 回退查找,兼容旧数据 - test_op.js: 每 5 秒刷新型号名称缓存,工装页新增型号后自动同步 - test_data.js: 型号列三元硬编码 → getDevTypeName(sub_type) - 子模块 edc_server: 同步设备型号名称数据库查询
This commit is contained in:
@@ -1,5 +1,26 @@
|
||||
// 测试信息页 — 三视图 (全部 / B2 / B4)
|
||||
|
||||
// ─── 型号名称缓存 ─────────────────────────────────
|
||||
let devTypeNameCache = {};
|
||||
|
||||
async function initDevTypeNames() {
|
||||
try {
|
||||
const resp = await fetch('/api/vehicle-base-test');
|
||||
const tests = await resp.json();
|
||||
devTypeNameCache = {};
|
||||
tests.forEach(t => {
|
||||
if (t.type_num != null && t.dev_name) {
|
||||
devTypeNameCache[t.type_num] = t.dev_name;
|
||||
}
|
||||
});
|
||||
} catch (e) { console.error('加载型号名称失败:', e); }
|
||||
}
|
||||
|
||||
function getDevTypeName(subType) {
|
||||
if (subType == null || subType === 0) return '-';
|
||||
return devTypeNameCache[subType] || `Unknown(${subType})`;
|
||||
}
|
||||
|
||||
// ─── 视图定义 ───────────────────────────────────
|
||||
|
||||
const VIEWS = {
|
||||
@@ -9,7 +30,7 @@ const VIEWS = {
|
||||
cols: [
|
||||
{ key: 'id', title: 'ID' },
|
||||
{ key: 'serial', title: '设备编码' },
|
||||
{ key: 'model', title: '型号', render: r => r.sub_type === 1 ? 'PD132' : r.sub_type === 2 ? 'DLD110' : '-' },
|
||||
{ key: 'model', title: '型号', render: r => getDevTypeName(r.sub_type) },
|
||||
{ key: 'data_source', title: '来源' },
|
||||
{ key: 'test_mode', title: '测试模式', render: r => r.test_mode === 1 ? '波动' : '灵敏度' },
|
||||
{ key: 'iffinish', title: '完成', render: r => r.data_source === 'B4' ? '-' : (r.iffinish === '1' ? '是' : '否') },
|
||||
@@ -45,7 +66,7 @@ const VIEWS = {
|
||||
cols: [
|
||||
{ key: 'id', title: 'ID' },
|
||||
{ key: 'serial', title: '设备编码' },
|
||||
{ key: 'model', title: '型号', render: r => r.sub_type === 1 ? 'PD132' : r.sub_type === 2 ? 'DLD110' : '-' },
|
||||
{ key: 'model', title: '型号', render: r => getDevTypeName(r.sub_type) },
|
||||
{ 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>` },
|
||||
@@ -457,7 +478,8 @@ async function loadChart() {
|
||||
// ─── 初始加载 ────────────────────────────────────
|
||||
|
||||
renderHead();
|
||||
searchData(1);
|
||||
// 先加载型号名称再查询数据,确保型号列正确渲染
|
||||
initDevTypeNames().then(() => searchData(1));
|
||||
|
||||
// ─── 删除(admin)─────────────────────────────────
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ let autoStartTime = "";
|
||||
let localSinceStr = "";
|
||||
let currentTestMode = null; // 0=灵敏度, 1=波动, null=未加载
|
||||
let currentDeviceState = null; // 当前设备状态 (0=离线 1=在线 2=通信不良 null=未加载)
|
||||
let devTypeNameCache = {}; // type_num → dev_name 映射(从 tb_vechicle_base_test)
|
||||
|
||||
let pollInterval = null;
|
||||
let nextCmdTimer = null; // 间隔等待定时器
|
||||
@@ -273,6 +274,19 @@ async function pollProgress() {
|
||||
|
||||
// ─── 页面加载时获取初始数据 ──────────────────────
|
||||
|
||||
async function loadDeviceTypeNames() {
|
||||
try {
|
||||
const resp = await fetch(`/api/vehicle-base-test`);
|
||||
const tests = await resp.json();
|
||||
devTypeNameCache = {};
|
||||
tests.forEach(t => {
|
||||
if (t.type_num != null && t.dev_name) {
|
||||
devTypeNameCache[t.type_num] = t.dev_name;
|
||||
}
|
||||
});
|
||||
} catch (e) { console.error("加载型号名称失败:", e); }
|
||||
}
|
||||
|
||||
async function loadTestMode() {
|
||||
try {
|
||||
const resp = await fetch(`/api/fixture/param/${DNT_ID}?_=${Date.now()}`);
|
||||
@@ -315,8 +329,8 @@ function renderConfigOverview(param) {
|
||||
}
|
||||
|
||||
// 型号
|
||||
const devTypeMap = {0: '未知', 1: 'PD132', 2: 'DLD110'};
|
||||
document.getElementById("cfg-dev-type").textContent = devTypeMap[param.DevType] || `0x${(param.DevType||0).toString(16)}`;
|
||||
document.getElementById("cfg-dev-type").textContent =
|
||||
devTypeNameCache[param.DevType] || `0x${(param.DevType || 0).toString(16)}`;
|
||||
|
||||
// 距离 (DB cm → 显示 mm)
|
||||
document.getElementById("cfg-reset-dis").textContent = param.RestDis != null ? param.RestDis * 10 : '-';
|
||||
@@ -369,6 +383,7 @@ function toggleConfig() {
|
||||
}
|
||||
|
||||
async function loadInitialData() {
|
||||
await loadDeviceTypeNames();
|
||||
await loadTestMode();
|
||||
refreshDeviceStatus();
|
||||
try {
|
||||
@@ -407,8 +422,9 @@ async function refreshDeviceStatus() {
|
||||
}
|
||||
}
|
||||
|
||||
// 每 5 秒刷新设备状态 + 测试模式(工装页修改后能及时同步)
|
||||
// 每 5 秒刷新设备状态 + 测试模式 + 型号名称缓存(工装页修改后能及时同步)
|
||||
async function refreshAll() {
|
||||
await loadDeviceTypeNames();
|
||||
await loadTestMode();
|
||||
refreshDeviceStatus();
|
||||
}
|
||||
@@ -475,8 +491,13 @@ function fmtRelay(s) {
|
||||
|
||||
function renderLatest(data) {
|
||||
const div = document.getElementById("latest-result");
|
||||
// 优先使用 str_type,为空时从缓存查找
|
||||
let typeName = data.str_type;
|
||||
if (!typeName && data.sub_type != null) {
|
||||
typeName = devTypeNameCache[data.sub_type] || `Unknown(${data.sub_type})`;
|
||||
}
|
||||
div.innerHTML = `
|
||||
<p>设备型号:<strong>${data.str_type || '-'}</strong></p>
|
||||
<p>设备型号:<strong>${typeName || '-'}</strong></p>
|
||||
<p>测试模式:<strong>${data.test_mode === 1 ? '波动测试' : '灵敏度测试'}</strong></p>
|
||||
<p>峰峰值:${data.ppvalue?.toFixed(2) || '-'} V</p>
|
||||
<p>开始工作频率:${data.idle_freq || '-'} Hz</p>
|
||||
|
||||
Submodule edc_server updated: 3580f89552...6e13990386
Reference in New Issue
Block a user