- HTML: 日期范围旁加 time input (step=1s),标签改为'时间范围' - JS: 新增 getDatetime() 合并日期+时间,统一查/导出/图表/删除 - 后端: date 参数智能判断,纯日期自动补 23:59:59,带时间原样使用
96 lines
3.0 KiB
HTML
96 lines
3.0 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}测试信息 - EDC 工装管理系统{% endblock %}
|
|
|
|
{% block content %}
|
|
<h2>测试信息</h2>
|
|
|
|
<div class="view-tabs">
|
|
<button id="tab-all" class="tab-btn active" onclick="switchView('all')">全部数据</button>
|
|
<button id="tab-b2" class="tab-btn" onclick="switchView('b2')">灵敏度测试 (0xB2)</button>
|
|
<button id="tab-b4" class="tab-btn" onclick="switchView('b4')">波动测试 (0xB4)</button>
|
|
</div>
|
|
|
|
<div class="search-bar">
|
|
<label>
|
|
设备编码:
|
|
<input type="text" id="search-serial" placeholder="输入设备编码搜索...">
|
|
</label>
|
|
<label>
|
|
时间范围:
|
|
<input type="date" id="search-date-from">
|
|
<input type="time" id="search-time-from" step="1" style="width:110px;" title="起始时间(时:分:秒)">
|
|
至
|
|
<input type="date" id="search-date-to">
|
|
<input type="time" id="search-time-to" step="1" style="width:110px;" title="截止时间(时:分:秒)">
|
|
</label>
|
|
<button onclick="searchData(1)" class="btn-search">搜索</button>
|
|
<button onclick="exportCSV()" class="btn-export">导出 CSV</button>
|
|
<label style="margin-left:16px;">
|
|
每页:
|
|
<select id="per-page" onchange="searchData(1)" style="width:70px;">
|
|
<option value="20">20</option>
|
|
<option value="50">50</option>
|
|
<option value="100">100</option>
|
|
</select>
|
|
</label>
|
|
<button id="btn-chart" class="btn-chart" onclick="toggleChart()">📈 图表</button>
|
|
{% if current_user.role == 'admin' %}
|
|
<button id="btn-delete" class="btn-delete" onclick="confirmDelete()">🗑 删除</button>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<div id="chart-container" style="display:none; width:100%; height:500px; margin-bottom:16px;"></div>
|
|
|
|
<table id="test-data-table">
|
|
<thead></thead>
|
|
<tbody></tbody>
|
|
</table>
|
|
|
|
<div class="pagination" id="pagination"></div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<style>
|
|
.view-tabs { margin-bottom: 16px; display: flex; gap: 8px; }
|
|
.tab-btn {
|
|
padding: 8px 20px;
|
|
border: 1px solid #ccc;
|
|
background: #f5f5f5;
|
|
cursor: pointer;
|
|
border-radius: 4px 4px 0 0;
|
|
font-size: 14px;
|
|
transition: all .2s;
|
|
}
|
|
.tab-btn.active {
|
|
background: #2c3e50;
|
|
color: #fff;
|
|
border-color: #2c3e50;
|
|
}
|
|
.tab-btn:hover:not(.active) { background: #e0e0e0; }
|
|
.btn-chart {
|
|
margin-left: 16px;
|
|
padding: 6px 14px;
|
|
border: 1px solid #27ae60;
|
|
background: #fff;
|
|
color: #27ae60;
|
|
cursor: pointer;
|
|
border-radius: 4px;
|
|
font-size: 13px;
|
|
}
|
|
.btn-chart.active { background: #27ae60; color: #fff; }
|
|
.btn-delete {
|
|
margin-left: 8px;
|
|
padding: 6px 14px;
|
|
border: 1px solid #e74c3c;
|
|
background: #fff;
|
|
color: #e74c3c;
|
|
cursor: pointer;
|
|
border-radius: 4px;
|
|
font-size: 13px;
|
|
}
|
|
.btn-delete:hover { background: #e74c3c; color: #fff; }
|
|
</style>
|
|
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script>
|
|
<script src="{{ url_for('static', filename='js/test_data.js') }}"></script>
|
|
{% endblock %}
|