91 lines
3.2 KiB
Plaintext
91 lines
3.2 KiB
Plaintext
<!-- 设备详情页 -->
|
|
<view class="container">
|
|
<!-- 设备信息 -->
|
|
<view class="device-info card">
|
|
<view class="info-row">
|
|
<text class="info-label">设备名称</text>
|
|
<text class="info-value">{{device.name || '-'}}</text>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">设备编号</text>
|
|
<text class="info-value">{{device.serialNumber || '-'}}</text>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">产品ID</text>
|
|
<text class="info-value">{{device.productId || '-'}}</text>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">BLE 地址</text>
|
|
<text class="info-value">{{device.deviceId || '-'}}</text>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">BLE 状态</text>
|
|
<view class="status-tag {{bleConnected ? 'online' : 'offline'}}">
|
|
{{bleConnected ? '已连接' : '未连接'}}
|
|
</view>
|
|
</view>
|
|
<view class="info-row">
|
|
<text class="info-label">MQTT 状态</text>
|
|
<view class="status-tag {{mqttConnected ? 'online' : 'offline'}}">
|
|
{{mqttConnected ? '已连接' : '未连接'}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 实时数据 -->
|
|
<view class="data-section">
|
|
<view class="section-header">
|
|
<text class="section-title">实时数据</text>
|
|
<text class="clear-btn" bindtap="handleClearData">清空</text>
|
|
</view>
|
|
|
|
<view class="data-list card" wx:if="{{dataList.length > 0}}">
|
|
<view class="data-item" wx:for="{{dataList}}" wx:key="id">
|
|
<view class="data-time">{{item.time}}</view>
|
|
<view class="data-hex">{{item.hex}}</view>
|
|
<view class="data-action" wx:if="{{item.uploaded}}">
|
|
<text class="uploaded">已上报</text>
|
|
</view>
|
|
<view class="data-action" wx:else>
|
|
<text class="upload-btn" bindtap="handleUploadSingle" data-index="{{index}}">上报</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="empty" wx:else>
|
|
<text class="empty-text">暂无数据</text>
|
|
<text class="empty-hint">连接 BLE 设备后,数据将在此显示</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 统计信息 -->
|
|
<view class="stats-section card">
|
|
<view class="stat-item">
|
|
<text class="stat-value">{{stats.received}}</text>
|
|
<text class="stat-label">接收数据</text>
|
|
</view>
|
|
<view class="stat-item">
|
|
<text class="stat-value">{{stats.uploaded}}</text>
|
|
<text class="stat-label">已上报</text>
|
|
</view>
|
|
<view class="stat-item">
|
|
<text class="stat-value">{{stats.failed}}</text>
|
|
<text class="stat-label">失败</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 操作按钮 -->
|
|
<view class="action-group">
|
|
<button class="btn-connect" bindtap="handleConnect" loading="{{connecting}}" disabled="{{connecting}}">
|
|
{{bleConnected ? '断开 BLE' : '连接 BLE'}}
|
|
</button>
|
|
|
|
<button class="btn-mqtt" bindtap="handleMqttConnect" loading="{{mqttConnecting}}" disabled="{{mqttConnecting}}">
|
|
{{mqttConnected ? '断开 MQTT' : '连接 MQTT'}}
|
|
</button>
|
|
|
|
<button class="btn-upload" bindtap="handleUploadAll" disabled="{{!mqttConnected || dataList.length === 0}}">
|
|
全部上报
|
|
</button>
|
|
</view>
|
|
</view> |