368 lines
8.7 KiB
Markdown
368 lines
8.7 KiB
Markdown
|
|
# UI优化更新说明 (2025-01-22)
|
|||
|
|
|
|||
|
|
## ✅ 已完成的三项优化
|
|||
|
|
|
|||
|
|
### 1. 删除首页"最近12小时无异常"文案
|
|||
|
|
|
|||
|
|
**修改文件**: `pages/index/index.vue`
|
|||
|
|
|
|||
|
|
**修改内容**:
|
|||
|
|
- 删除了"最近 {{noAlarmHours}} 小时无异常"这行文案
|
|||
|
|
- 保留了"厨房当前处于安全监测状态"主文案
|
|||
|
|
- 界面更简洁清爽
|
|||
|
|
|
|||
|
|
**修改前**:
|
|||
|
|
```vue
|
|||
|
|
<view class="no-alarm-content">
|
|||
|
|
<text class="no-alarm-icon">🟢</text>
|
|||
|
|
<text class="no-alarm-text">厨房当前处于安全监测状态</text>
|
|||
|
|
<text class="no-alarm-desc">最近 {{noAlarmHours}} 小时无异常</text>
|
|||
|
|
</view>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**修改后**:
|
|||
|
|
```vue
|
|||
|
|
<view class="no-alarm-content">
|
|||
|
|
<text class="no-alarm-icon">🟢</text>
|
|||
|
|
<text class="no-alarm-text">厨房当前处于安全监测状态</text>
|
|||
|
|
</view>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 修改设置页面"Developer Options"为"Advanced setting"
|
|||
|
|
|
|||
|
|
**修改文件**: `utils/simpleI18n.js`
|
|||
|
|
|
|||
|
|
**修改内容**:
|
|||
|
|
- 中文: "开发者选项" → "高级设置"
|
|||
|
|
- 英文: "Developer Options" → "Advanced setting"
|
|||
|
|
|
|||
|
|
**修改位置**:
|
|||
|
|
```javascript
|
|||
|
|
// 中文翻译
|
|||
|
|
developerOptions: '高级设置',
|
|||
|
|
|
|||
|
|
// 英文翻译
|
|||
|
|
developerOptions: 'Advanced setting',
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**影响页面**:
|
|||
|
|
- `pages/kitchen/settings.vue` - 设置页面标题和卡片标题
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 报警历史添加解除状态信息 ⭐
|
|||
|
|
|
|||
|
|
**修改文件**: `pages/kitchen/history.vue`
|
|||
|
|
|
|||
|
|
**新增功能**:
|
|||
|
|
在报警历史卡片中添加解除状态显示,包括:
|
|||
|
|
- ✅ 是否已解除(自动/用户处理)
|
|||
|
|
- ⏰ 解除时间
|
|||
|
|
- 🎨 绿色背景样式
|
|||
|
|
|
|||
|
|
#### 3.1 UI显示效果
|
|||
|
|
|
|||
|
|
**示例**:
|
|||
|
|
```
|
|||
|
|
无人值守风险
|
|||
|
|
热源持续升温,厨房无人5分钟
|
|||
|
|
热点区域: 厨房区域
|
|||
|
|
✅ 已于 21:38 自动解除
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.2 数据结构扩展
|
|||
|
|
|
|||
|
|
在报警对象中新增三个字段:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
{
|
|||
|
|
id: "alarm_001",
|
|||
|
|
title: "无人值守风险",
|
|||
|
|
desc: "热源持续升温,厨房无人5分钟",
|
|||
|
|
temp: 45.2,
|
|||
|
|
time: "21:30",
|
|||
|
|
location: "厨房区域",
|
|||
|
|
|
|||
|
|
// 新增字段
|
|||
|
|
resolved: true, // 是否已解除
|
|||
|
|
resolvedTime: "21:38", // 解除时间 (HH:MM)
|
|||
|
|
resolvedType: "auto" // 解除类型: "auto"(自动) 或 "manual"(用户处理)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3.3 数据源兼容性
|
|||
|
|
|
|||
|
|
支持多种数据源字段格式:
|
|||
|
|
|
|||
|
|
**解除状态判断**:
|
|||
|
|
- `alarm.resolved` (布尔值)
|
|||
|
|
- `alarm.resolvedAt` (时间戳)
|
|||
|
|
- `alarm.resolved_at` (时间戳)
|
|||
|
|
|
|||
|
|
**解除时间解析**:
|
|||
|
|
- `alarm.resolvedAt` (优先)
|
|||
|
|
- `alarm.resolved_at`
|
|||
|
|
- `alarm.resolvedTimestamp`
|
|||
|
|
|
|||
|
|
**解除类型判断**:
|
|||
|
|
- `alarm.resolvedType` / `alarm.resolved_type` (直接使用)
|
|||
|
|
- `alarm.resolvedBy` / `alarm.resolved_by` (system → auto, 其他 → manual)
|
|||
|
|
|
|||
|
|
#### 3.4 样式设计
|
|||
|
|
|
|||
|
|
```css
|
|||
|
|
.alarm-resolved {
|
|||
|
|
margin-top: 12rpx;
|
|||
|
|
padding: 8rpx 12rpx;
|
|||
|
|
background: rgba(39, 174, 96, 0.1); /* 绿色半透明背景 */
|
|||
|
|
border-radius: 6rpx;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
gap: 8rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.resolved-icon {
|
|||
|
|
font-size: 24rpx; /* ✅ 图标 */
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.resolved-text {
|
|||
|
|
font-size: 22rpx;
|
|||
|
|
color: #27AE60; /* 绿色文字 */
|
|||
|
|
font-weight: 500;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 数据流程说明
|
|||
|
|
|
|||
|
|
### ESP32端需要提供的数据
|
|||
|
|
|
|||
|
|
如果ESP32端要支持解除状态显示,需要在报警历史API中返回以下字段:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"alarms": [
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"title": "无人值守风险",
|
|||
|
|
"desc": "热源持续升温,厨房无人5分钟",
|
|||
|
|
"temp": 45.2,
|
|||
|
|
"timestamp": 1737548400000,
|
|||
|
|
"location": "厨房区域",
|
|||
|
|
|
|||
|
|
// 新增字段(可选)
|
|||
|
|
"resolved": true,
|
|||
|
|
"resolvedAt": 1737548880000, // 解除时间戳(毫秒)
|
|||
|
|
"resolvedType": "auto", // "auto" 或 "manual"
|
|||
|
|
"resolvedBy": "system" // 或者用这个字段,system会被转为auto
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 云端API需要提供的数据
|
|||
|
|
|
|||
|
|
云端报警查询接口也应该返回类似字段:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": [
|
|||
|
|
{
|
|||
|
|
"id": "alarm_001",
|
|||
|
|
"title": "无人值守风险",
|
|||
|
|
"message": "热源持续升温,厨房无人5分钟",
|
|||
|
|
"temp": 45.2,
|
|||
|
|
"occurredAt": "2025-01-22T21:30:00Z",
|
|||
|
|
"alarmType": "UNATTENDED",
|
|||
|
|
"level": "warning",
|
|||
|
|
"isRead": false,
|
|||
|
|
|
|||
|
|
// 新增字段(可选)
|
|||
|
|
"resolved": true,
|
|||
|
|
"resolvedAt": "2025-01-22T21:38:00Z",
|
|||
|
|
"resolvedType": "auto",
|
|||
|
|
"resolvedBy": "system"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 UI效果预览
|
|||
|
|
|
|||
|
|
### 首页优化
|
|||
|
|
|
|||
|
|
**优化前**:
|
|||
|
|
```
|
|||
|
|
🟢
|
|||
|
|
厨房当前处于安全监测状态
|
|||
|
|
最近 12 小时无异常
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**优化后**:
|
|||
|
|
```
|
|||
|
|
🟢
|
|||
|
|
厨房当前处于安全监测状态
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 设置页面优化
|
|||
|
|
|
|||
|
|
**优化前**:
|
|||
|
|
```
|
|||
|
|
🐛 开发者选项
|
|||
|
|
Developer Options
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**优化后**:
|
|||
|
|
```
|
|||
|
|
🐛 高级设置
|
|||
|
|
Advanced setting
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 报警历史优化
|
|||
|
|
|
|||
|
|
**未解除的报警**:
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────┐
|
|||
|
|
│ 🔥 高温危险 45.2°C │
|
|||
|
|
│ 21:30 │
|
|||
|
|
│ │
|
|||
|
|
│ 热源持续升温,温度超过阈值 │
|
|||
|
|
│ 热点区域: 厨房区域 │
|
|||
|
|
│ │
|
|||
|
|
│ [标记已读] [删除] │
|
|||
|
|
└─────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**已解除的报警**:
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────┐
|
|||
|
|
│ 👤 无人值守风险 45.2°C │
|
|||
|
|
│ 21:30 │
|
|||
|
|
│ │
|
|||
|
|
│ 热源持续升温,厨房无人5分钟 │
|
|||
|
|
│ 热点区域: 厨房区域 │
|
|||
|
|
│ ┌─────────────────────────┐ │
|
|||
|
|
│ │ ✅ 已于 21:38 自动解除 │ │
|
|||
|
|
│ └─────────────────────────┘ │
|
|||
|
|
│ │
|
|||
|
|
│ [标记已读] [删除] │
|
|||
|
|
└─────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 后续扩展建议
|
|||
|
|
|
|||
|
|
### 1. ESP32端实现建议
|
|||
|
|
|
|||
|
|
在ESP32的报警管理模块中添加解除逻辑:
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
// AlarmManager.cpp
|
|||
|
|
struct AlarmRecord {
|
|||
|
|
int id;
|
|||
|
|
String title;
|
|||
|
|
String desc;
|
|||
|
|
float temp;
|
|||
|
|
unsigned long timestamp;
|
|||
|
|
String location;
|
|||
|
|
|
|||
|
|
// 新增字段
|
|||
|
|
bool resolved;
|
|||
|
|
unsigned long resolvedAt;
|
|||
|
|
String resolvedType; // "auto" or "manual"
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 自动解除逻辑(温度恢复正常)
|
|||
|
|
void checkAndAutoResolveAlarms() {
|
|||
|
|
for (auto& alarm : alarmHistory) {
|
|||
|
|
if (!alarm.resolved && currentTemp < SAFE_TEMP) {
|
|||
|
|
alarm.resolved = true;
|
|||
|
|
alarm.resolvedAt = millis();
|
|||
|
|
alarm.resolvedType = "auto";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 用户手动解除
|
|||
|
|
void manualResolveAlarm(int alarmId) {
|
|||
|
|
for (auto& alarm : alarmHistory) {
|
|||
|
|
if (alarm.id == alarmId) {
|
|||
|
|
alarm.resolved = true;
|
|||
|
|
alarm.resolvedAt = millis();
|
|||
|
|
alarm.resolvedType = "manual";
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 云端API扩展建议
|
|||
|
|
|
|||
|
|
在云端报警记录表中添加字段:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
ALTER TABLE alarm_records
|
|||
|
|
ADD COLUMN resolved BOOLEAN DEFAULT FALSE,
|
|||
|
|
ADD COLUMN resolved_at TIMESTAMP NULL,
|
|||
|
|
ADD COLUMN resolved_type VARCHAR(20) NULL,
|
|||
|
|
ADD COLUMN resolved_by VARCHAR(50) NULL;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 更多解除类型
|
|||
|
|
|
|||
|
|
可以扩展更多解除类型:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
const resolvedTypes = {
|
|||
|
|
'auto': '自动解除', // 温度恢复正常
|
|||
|
|
'manual': '用户处理', // 用户手动标记
|
|||
|
|
'timeout': '超时解除', // 报警超时自动解除
|
|||
|
|
'system': '系统解除', // 系统检测到安全
|
|||
|
|
'confirmed': '已确认处理' // 用户确认已处理
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 测试建议
|
|||
|
|
|
|||
|
|
### 1. 首页测试
|
|||
|
|
- ✅ 检查无报警时只显示"厨房当前处于安全监测状态"
|
|||
|
|
- ✅ 确认不再显示"最近XX小时无异常"
|
|||
|
|
|
|||
|
|
### 2. 设置页面测试
|
|||
|
|
- ✅ 中文环境下显示"高级设置"
|
|||
|
|
- ✅ 英文环境下显示"Advanced setting"
|
|||
|
|
|
|||
|
|
### 3. 报警历史测试
|
|||
|
|
- ✅ 未解除的报警不显示解除状态
|
|||
|
|
- ✅ 已解除的报警显示绿色解除状态条
|
|||
|
|
- ✅ 自动解除显示"自动解除"
|
|||
|
|
- ✅ 用户处理显示"用户处理"
|
|||
|
|
- ✅ 解除时间格式正确(HH:MM)
|
|||
|
|
|
|||
|
|
### 4. 数据兼容性测试
|
|||
|
|
- ✅ ESP32本地数据正常显示
|
|||
|
|
- ✅ 云端数据正常显示
|
|||
|
|
- ✅ 缺少解除字段时不报错
|
|||
|
|
- ✅ 各种时间格式都能正确解析
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
本次优化主要聚焦于UI细节和用户体验:
|
|||
|
|
|
|||
|
|
1. **简化信息** - 删除冗余的时间提示
|
|||
|
|
2. **专业化命名** - 将"开发者选项"改为更合适的"高级设置"
|
|||
|
|
3. **增强信息** - 添加报警解除状态,让用户了解报警的完整生命周期
|
|||
|
|
|
|||
|
|
所有修改都保持了向后兼容性,不会影响现有功能。
|