- edc_server/models.py: tb_state_tst DDL增加test_mode/data_source + B4字段 + ALTER TABLE自动迁移 + insert_test_result扩展 + insert_wave_data - edc_server/handlers.py: 0xB2处理传test_mode、0xB4处理调用insert_wave_data存库 - edc-web/models.py: 新增get_latest_wave_data/get_wave_records + test_mode筛选 - edc-web/routes: test_op返回wave数据、test_data支持test_mode筛选 - 前端: test_op页面增加波动数据显示区+测试模式列 test_data页面增加test_mode下拉筛选+B4字段列+CSV导出适配
91 lines
4.1 KiB
HTML
91 lines
4.1 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}测试操作 - {{ device.serial }} - EDC 工装管理系统{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="test-page">
|
|
<div class="test-header">
|
|
<a href="/">← 返回设备列表</a>
|
|
<h2>测试操作 — {{ device.serial }} ({{ device.name or '未命名' }})</h2>
|
|
</div>
|
|
|
|
<div class="test-layout">
|
|
<!-- 左侧:测试操作区 -->
|
|
<div class="test-control">
|
|
<h3>手动指令</h3>
|
|
<div class="cmd-buttons">
|
|
<button onclick="sendCmd('B0')" class="btn-cmd">开始测试 (0xB0)</button>
|
|
<button onclick="sendCmd('B1')" class="btn-cmd">测试复原 (0xB1)</button>
|
|
<button onclick="sendCmd('BA')" class="btn-cmd">电机前进 (0xBA)</button>
|
|
<button onclick="sendCmd('BB')" class="btn-cmd">电机后退 (0xBB)</button>
|
|
<button onclick="sendCmd('BC')" class="btn-cmd">电机停止 (0xBC)</button>
|
|
</div>
|
|
|
|
<h3>自动化测试</h3>
|
|
<div class="automation">
|
|
<label>
|
|
测试次数:
|
|
<input type="number" id="test-count" value="10" min="1" max="9999">
|
|
</label>
|
|
<button id="btn-auto" class="btn-start" onclick="toggleAuto()">开始</button>
|
|
<div class="progress-container">
|
|
<div class="progress-bar" id="progress-bar"></div>
|
|
<div class="progress-text" id="progress-text">等待开始...</div>
|
|
</div>
|
|
<div class="stats" id="stats">
|
|
<span>完成:<strong id="stat-done">0</strong></span>
|
|
<span>失败:<strong id="stat-failed">0</strong></span>
|
|
<span>剩余:<strong id="stat-remaining">0</strong></span>
|
|
</div>
|
|
<div class="auto-time" id="auto-time" style="display:none;margin-top:8px;font-size:12px;color:#888;">
|
|
开始:<span id="time-start">-</span> 结束:<span id="time-end">-</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 右侧:测试信息显示区 -->
|
|
<div class="test-info">
|
|
<h3>当前测试数据</h3>
|
|
<div id="latest-result">
|
|
<p class="placeholder">等待设备上报...</p>
|
|
</div>
|
|
|
|
<h3>波动测试数据</h3>
|
|
<div id="latest-wave">
|
|
<p class="placeholder">暂无波动数据...</p>
|
|
</div>
|
|
|
|
<h3>自动化平均值</h3>
|
|
<table id="avg-table">
|
|
<tr><td>平均峰峰值</td><td id="avg-ppvalue">-</td><td>V</td></tr>
|
|
<tr><td>平均开始工作频率</td><td id="avg-idle-freq">-</td><td>Hz</td></tr>
|
|
<tr><td>平均进入工作频率</td><td id="avg-enter-freq">-</td><td>Hz</td></tr>
|
|
<tr><td>平均进入距离</td><td id="avg-enter-dist">-</td><td>mm</td></tr>
|
|
<tr><td>平均离开距离</td><td id="avg-exit-dist">-</td><td>mm</td></tr>
|
|
<tr><td>平均进入速度</td><td id="avg-enter-speed">-</td><td>m/s</td></tr>
|
|
<tr><td>平均离开速度</td><td id="avg-exit-speed">-</td><td>m/s</td></tr>
|
|
</table>
|
|
|
|
<h3 style="margin-top:20px;">本轮测试明细</h3>
|
|
<div id="records-container" style="max-height:400px;overflow-y:auto;">
|
|
<table id="records-table" style="font-size:11px;">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th><th>串口状态</th><th>模式</th><th>峰峰值(V)</th><th>开始频率</th><th>进入距离</th><th>离开距离</th><th>速度(m/s)</th><th>时间</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody></tbody>
|
|
</table>
|
|
<p id="records-empty" class="placeholder">暂无记录</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script>
|
|
const DNT_ID = {{ device.id }};
|
|
</script>
|
|
<script src="{{ url_for('static', filename='js/test_op.js') }}"></script>
|
|
{% endblock %}
|