119 lines
4.1 KiB
Markdown
119 lines
4.1 KiB
Markdown
|
|
# 任务008:H5用户端
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
实现H5用户端,底部导航(首页/设备/我的),扫码进入设备详情,充电控制。
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
- React + TypeScript(复用前端项目)
|
|||
|
|
- 移动端适配(viewport + rem/vw)
|
|||
|
|
- Arco Design Mobile(或自定义移动端组件)
|
|||
|
|
|
|||
|
|
## 路由结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/pms # H5首页(Dashboard)
|
|||
|
|
/pms/devices # 设备列表
|
|||
|
|
/pms/devices/:id # 设备详情(柜子视图)
|
|||
|
|
/pms/me # 我的
|
|||
|
|
/pms/login # 登录
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**扫码入口:** `/pms/{abstract_id}` 直接跳到设备详情
|
|||
|
|
|
|||
|
|
## 页面设计
|
|||
|
|
|
|||
|
|
### 底部导航
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────────┐
|
|||
|
|
│ │
|
|||
|
|
│ 页面内容 │
|
|||
|
|
│ │
|
|||
|
|
─────────────────┤
|
|||
|
|
│ 首页 | 设备 | 我的 │
|
|||
|
|
└─────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 首页(Dashboard)
|
|||
|
|
|
|||
|
|
**数据卡片:**
|
|||
|
|
```
|
|||
|
|
┌─────┐ ┌───── ┌─────┐ ┌─────
|
|||
|
|
│在线 │ │充电中│ │空闲 │ │故障 │
|
|||
|
|
│ 125 │ │ 45 │ │ 82 │ │ 3 │
|
|||
|
|
│柜子 │ │柜子 │ │通道 │ │通道 │
|
|||
|
|
└───── └───── └───── └─────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**今日统计:**
|
|||
|
|
- 充电次数:423次
|
|||
|
|
- 充电时长:628小时
|
|||
|
|
- 总能耗:3,750 kWh
|
|||
|
|
|
|||
|
|
**告警通知:**
|
|||
|
|
- ⚠ 项目A-柜子3 通道12 过温
|
|||
|
|
- ⚠ 项目B-柜子7 离线
|
|||
|
|
|
|||
|
|
**项目列表:**
|
|||
|
|
- 项目A | 3柜 | 充电28 空闲10 故障2
|
|||
|
|
- 项目B | 2柜 | 充电17 空闲15 故障0
|
|||
|
|
|
|||
|
|
### 设备页
|
|||
|
|
|
|||
|
|
**项目列表 → 设备列表 → 设备详情**
|
|||
|
|
|
|||
|
|
**设备详情(柜子视图):**
|
|||
|
|
```
|
|||
|
|
┌──────────────────────────────────────────────┐
|
|||
|
|
│ 柜子ID: 10-00000000 状态: 在线 │
|
|||
|
|
├──────────────────────────────────────────────┤
|
|||
|
|
│ 仓板1 (ID:1) │
|
|||
|
|
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐│
|
|||
|
|
│ │通道1 │ │通道2 │ │通道3 │ │通道4 │ │通道5 │ │通道6 ││
|
|||
|
|
│ │状态 │ │状态 │ │状态 │ │状态 │ │状态 │ │状态 ││
|
|||
|
|
│ │电压 │ │电压 │ │电压 │ │电压 │ │电压 │ │电压 ││
|
|||
|
|
│ │电流 │ │电流 │ │电流 │ │电流 │ │电流 │ │电流 ││
|
|||
|
|
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘│
|
|||
|
|
──────────────────────────────────────────────┤
|
|||
|
|
│ 仓板2 (ID:2) ... │
|
|||
|
|
└──────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**通道详情页:**
|
|||
|
|
- 实时状态(SOC、SOH)
|
|||
|
|
- 电气参数(电压、电流、功率、能耗)
|
|||
|
|
- BMS数据(单体电压、温度、告警)
|
|||
|
|
- 充电曲线
|
|||
|
|
- 操作按钮(停止充电、开门)— 需确认弹窗
|
|||
|
|
|
|||
|
|
### 我的页
|
|||
|
|
|
|||
|
|
- 个人信息(姓名、手机号)
|
|||
|
|
- 修改密码
|
|||
|
|
- 退出登录
|
|||
|
|
|
|||
|
|
## API接口
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /api/h5/dashboard # 首页数据
|
|||
|
|
GET /api/h5/projects # 项目列表
|
|||
|
|
GET /api/h5/cabinets # 设备列表(按项目)
|
|||
|
|
GET /api/h5/cabinets/:id # 设备详情
|
|||
|
|
GET /api/h5/compartments/:id # 通道详情
|
|||
|
|
POST /api/h5/charge/start # 开始充电
|
|||
|
|
POST /api/h5/charge/stop # 停止充电
|
|||
|
|
POST /api/h5/door/open # 开门
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 质量约束
|
|||
|
|
|
|||
|
|
1. 完成代码后执行 `tsc --noEmit`,零报错零警告
|
|||
|
|
2. 分层拆分,单函数≤80行,命名语义化,完整注释
|
|||
|
|
3. 所有外部IO/网络请求异常捕获
|
|||
|
|
4. 分支逻辑全覆盖,不遗漏兜底分支
|
|||
|
|
5. 常量抽离,不使用废弃API
|
|||
|
|
6. React函数组件+Hooks
|
|||
|
|
7. 移动端适配,触摸友好
|