生产管理系统前端 - 更新瓦力提交的产品原型到参考目录
This commit is contained in:
555
src/LOAD_DEVICE_LIBRARY_NEW.md
Normal file
555
src/LOAD_DEVICE_LIBRARY_NEW.md
Normal file
@@ -0,0 +1,555 @@
|
||||
# 🎉 新增"负载设备"功能 - 设备库管理
|
||||
|
||||
## 📅 创建时间
|
||||
2025-10-16
|
||||
|
||||
## 🎯 功能背景
|
||||
|
||||
### 原架构的问题
|
||||
|
||||
**之前的流程** ❌:
|
||||
```
|
||||
1. 负载类型 → 定义设备类别
|
||||
2. 负载参数 → 定义参数模板
|
||||
3. 负载管理 → 挂载时创建设备
|
||||
```
|
||||
|
||||
**问题**:
|
||||
- ❌ 挂载时创建设备,设备没有独立生命周期
|
||||
- ❌ 设备无法在不同农机间流转
|
||||
- ❌ 无法管理设备库存状态
|
||||
- ❌ 设备参数每次挂载都要重新配置
|
||||
|
||||
### 新架构的改进
|
||||
|
||||
**正确的流程** ✅:
|
||||
```
|
||||
1. 负载类型 → 定义设备类别(如摄像头、北斗终端)
|
||||
↓
|
||||
2. 负载参数 → 为类别定义参数模板(IP地址、端口等)
|
||||
↓
|
||||
3. 负载设备(新增!)→ 在设备库中添加设备实例
|
||||
- 摄像头-001、摄像头-002
|
||||
- 根据参数模板配置设备参数
|
||||
- 管理设备状态:待挂载、已挂载、维护中
|
||||
↓
|
||||
4. 负载管理 → 从设备库选择设备挂载到农机
|
||||
- 不创建新设备
|
||||
- 选择现有设备
|
||||
- 建立挂载关系
|
||||
```
|
||||
|
||||
**优点**:
|
||||
- ✅ 设备有独立的生命周期管理
|
||||
- ✅ 设备可以在不同农机间流转
|
||||
- ✅ 统一管理设备库存和状态
|
||||
- ✅ 设备参数一次配置,多次使用
|
||||
|
||||
## ✨ 新增功能
|
||||
|
||||
### 1. 负载设备管理(设备库)⭐
|
||||
|
||||
**位置**: 负载管理 > 负载设备
|
||||
|
||||
**功能**:
|
||||
- 管理所有设备实例
|
||||
- 每个设备有唯一序列号
|
||||
- 设备参数一次配置,长期使用
|
||||
- 设备状态跟踪
|
||||
|
||||
**界面**:
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 负载设备 [+ 添加设备]│
|
||||
│ 管理设备库中的所有设备实例 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 设备名称 │ 类型 │ 类别 │ 序列号 │ 状态 │ 挂载位置 │ 操作 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 摄像头-001│摄像头│摄像 │CAM-001│待挂载│ - │✏️ 🗑️ │
|
||||
│ 摄像头-002│摄像头│摄像 │CAM-002│已挂载│拖拉机-01│✏️ 🗑️ │
|
||||
│ 北斗-001 │北斗 │北斗 │BD-001 │待挂载│ - │✏️ 🗑️ │
|
||||
│ 油耗-001 │油耗 │油耗 │FUEL-01│维护中│ - │✏️ 🗑️ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2. 设备状态管理 ⭐
|
||||
|
||||
**支持的设备状态**:
|
||||
|
||||
| 状态 | 说明 | 颜色 | 可操作 |
|
||||
|------|------|------|--------|
|
||||
| **待挂载** (available) | 设备可用,等待挂载 | 绿色 | 可挂载、编辑、删除 |
|
||||
| **已挂载** (mounted) | 设备正在使用 | 蓝色 | 可拆卸 |
|
||||
| **维护中** (maintenance) | 设备维修保养 | 黄色 | 可编辑 |
|
||||
| **已损坏** (damaged) | 设备损坏不可用 | 红色 | 可编辑、删除 |
|
||||
| **已退役** (retired) | 设备报废退役 | 灰色 | 可删除 |
|
||||
|
||||
**状态流转**:
|
||||
```
|
||||
待挂载 → 已挂载 → 待挂载(拆卸后)
|
||||
↓ ↓
|
||||
维护中 维护中
|
||||
↓ ↓
|
||||
已损坏 已损坏
|
||||
↓ ↓
|
||||
已退役 已退役
|
||||
```
|
||||
|
||||
### 3. 设备信息管理 ⭐
|
||||
|
||||
**基本信息**:
|
||||
- ✅ 设备类型(选择已定义的类型)
|
||||
- ✅ 设备名称
|
||||
- ✅ 序列号(唯一标识)
|
||||
- ✅ 采购日期
|
||||
- ✅ 保修期限
|
||||
- ✅ 设备状态
|
||||
- ✅ 备注
|
||||
|
||||
**设备参数**:
|
||||
- ✅ 根据设备类型的参数模板自动生成配置表单
|
||||
- ✅ 参数一次配置,长期使用
|
||||
- ✅ 挂载时不需要重新配置
|
||||
|
||||
**关联信息**:
|
||||
- ✅ 当前挂载的农机(如果已挂载)
|
||||
- ✅ 创建人和创建时间
|
||||
- ✅ 更新时间
|
||||
|
||||
## 📊 新的4个Tab布局
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 农机负载管理 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ [负载类型] [负载参数] [负载设备] [负载管理] │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Tab 1: 负载类型
|
||||
|
||||
**功能**: 定义设备类别
|
||||
|
||||
**示例数据**:
|
||||
- 高清摄像头(摄像头类别)
|
||||
- 北斗终端(北斗终端类别)
|
||||
- 油耗传感器(油耗传感器类别)
|
||||
|
||||
### Tab 2: 负载参数
|
||||
|
||||
**功能**: 为设备类别定义参数模板
|
||||
|
||||
**示例**:
|
||||
- 摄像头参数模板:IP地址、端口、通道号、分辨率、帧率
|
||||
- 北斗终端参数模板:上报间隔、精度模式、数据格式
|
||||
- 油耗传感器参数模板:采集频率、上传频率、报警阈值
|
||||
|
||||
### Tab 3: 负载设备(新增!)⭐
|
||||
|
||||
**功能**: 管理设备库中的设备实例
|
||||
|
||||
**示例数据**:
|
||||
- 摄像头-001:序列号 CAM-001,状态:待挂载
|
||||
- 摄像头-002:序列号 CAM-002,状态:已挂载(拖拉机-01)
|
||||
- 北斗-001:序列号 BD-001,状态:待挂载
|
||||
|
||||
### Tab 4: 负载管理
|
||||
|
||||
**功能**: 挂载/拆卸设备
|
||||
|
||||
**流程**:
|
||||
1. 选择农机
|
||||
2. 选择设备(从设备库选择"待挂载"状态的设备)
|
||||
3. 挂载
|
||||
4. 设备状态变为"已挂载"
|
||||
|
||||
## 🔄 完整工作流程
|
||||
|
||||
### 流程1: 添加新设备到设备库
|
||||
|
||||
```
|
||||
1. 进入"负载设备"Tab
|
||||
↓
|
||||
2. 点击"添加设备"
|
||||
↓
|
||||
3. 填写设备信息:
|
||||
┌──────────────────────────────┐
|
||||
│ 设备类型: [▼ 高清摄像头] │
|
||||
│ 设备名称: [摄像头-001] │
|
||||
│ 序列号: [CAM-001] │
|
||||
│ 采购日期: [2024-01-15] │
|
||||
│ 保修期限: [2025-01-15] │
|
||||
│ │
|
||||
│ === 设备参数配置 === │
|
||||
│ IP地址 *: [192.168.1.100] │
|
||||
│ 端口 *: [554] │
|
||||
│ 通道号 *: [1] │
|
||||
│ 分辨率: [▼ 1080P] │
|
||||
│ 帧率: [25] fps │
|
||||
│ 夜视功能: [▼ 是] │
|
||||
│ │
|
||||
│ [取消] [添加] │
|
||||
└──────────────────────────────┘
|
||||
↓
|
||||
4. 点击"添加"
|
||||
↓
|
||||
5. ✅ 设备添加到设备库
|
||||
- 状态: 待挂载
|
||||
- 参数已配置
|
||||
```
|
||||
|
||||
### 流程2: 从设备库挂载设备
|
||||
|
||||
```
|
||||
1. 进入"负载管理"Tab
|
||||
↓
|
||||
2. 选择农机(如:拖拉机-01)
|
||||
↓
|
||||
3. 点击"挂载设备"
|
||||
↓
|
||||
4. 从设备库选择设备:
|
||||
┌──────────────────────────────┐
|
||||
│ 选择设备 * │
|
||||
│ [▼ 摄像头-001 (CAM-001)] │ ← 只显示"待挂载"状态的设备
|
||||
│ │
|
||||
│ 设备类型: 高清摄像头 │
|
||||
│ 设备状态: 待挂载 │
|
||||
│ │
|
||||
│ 挂载位置: │
|
||||
│ [前方 ] │
|
||||
│ │
|
||||
│ 备注: │
|
||||
│ [ ] │
|
||||
│ │
|
||||
│ [取消] [挂载] │
|
||||
└──────────────────────────────┘
|
||||
↓
|
||||
5. 点击"挂载"
|
||||
↓
|
||||
6. ✅ 挂载成功
|
||||
- 设备状态: 待挂载 → 已挂载
|
||||
- 当前挂载位置: 拖拉机-01
|
||||
- 创建挂载记录
|
||||
```
|
||||
|
||||
### 流程3: 拆卸设备
|
||||
|
||||
```
|
||||
1. 在"负载管理"中选择已挂载的设备
|
||||
↓
|
||||
2. 点击"拆卸"
|
||||
↓
|
||||
3. 填写拆卸信息:
|
||||
┌──────────────────────────────┐
|
||||
│ 确认拆卸设备 │
|
||||
│ │
|
||||
│ 设备: 摄像头-001 │
|
||||
│ 农机: 拖拉机-01 │
|
||||
│ │
|
||||
│ 拆卸原因: │
|
||||
│ [设备维护 ] │
|
||||
│ │
|
||||
│ 拆卸后状态: │
|
||||
│ [▼ 待挂载] │
|
||||
│ │
|
||||
│ [取消] [确认拆卸] │
|
||||
└──────────────────────────────┘
|
||||
↓
|
||||
4. 点击"确认拆卸"
|
||||
↓
|
||||
5. ✅ 拆卸成功
|
||||
- 设备状态: 已挂载 → 待挂载(或维护中)
|
||||
- 当前挂载位置: 清空
|
||||
- 更新挂载记录
|
||||
```
|
||||
|
||||
### 流程4: 设备流转
|
||||
|
||||
```
|
||||
场景: 摄像头-001 从拖拉机-01 转移到拖拉机-02
|
||||
|
||||
1. 在拖拉机-01上拆卸摄像头-001
|
||||
↓
|
||||
设备状态: 已挂载 → 待挂载
|
||||
↓
|
||||
2. 在拖拉机-02上挂载摄像头-001
|
||||
↓
|
||||
设备状态: 待挂载 → 已挂载
|
||||
当前挂载位置: 拖拉机-02
|
||||
↓
|
||||
3. ✅ 设备完成流转
|
||||
- 设备参数保持不变
|
||||
- 挂载历史记录完整
|
||||
```
|
||||
|
||||
## 📋 数据结构
|
||||
|
||||
### DeviceInstance(设备实例)
|
||||
|
||||
```typescript
|
||||
interface DeviceInstance {
|
||||
id: string;
|
||||
deviceTypeId: string; // 设备类型ID
|
||||
|
||||
// 设备信息
|
||||
deviceName: string; // 设备名称
|
||||
serialNumber: string; // 序列号(唯一)
|
||||
purchaseDate?: string; // 采购日期
|
||||
warrantyExpiry?: string; // 保修期限
|
||||
|
||||
// 设备参数(根据设备类型的参数模板配置)
|
||||
parameters: Record<string, any>;
|
||||
|
||||
// 设备状态
|
||||
status: 'available' | 'mounted' | 'maintenance' | 'damaged' | 'retired';
|
||||
currentMachineryId?: string; // 当前挂载的农机ID
|
||||
|
||||
// 其他
|
||||
remarks?: string;
|
||||
createdBy: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
```
|
||||
|
||||
### MountRecord(挂载记录)
|
||||
|
||||
```typescript
|
||||
interface MountRecord {
|
||||
id: string;
|
||||
machineryId: string; // 农机ID
|
||||
deviceId: string; // 设备实例ID
|
||||
|
||||
// 挂载信息
|
||||
mountedAt: string; // 挂载时间
|
||||
unmountedAt?: string; // 拆卸时间
|
||||
status: 'mounted' | 'unmounted';
|
||||
|
||||
// 备注
|
||||
mountRemarks?: string; // 挂载备注
|
||||
unmountRemarks?: string; // 拆卸备注
|
||||
|
||||
// 操作记录
|
||||
mountedBy: string;
|
||||
unmountedBy?: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
```
|
||||
|
||||
## 💾 数据存储
|
||||
|
||||
### LocalStorage Keys
|
||||
|
||||
**新增**:
|
||||
```typescript
|
||||
'smart_agriculture_device_library' // 设备库
|
||||
'smart_agriculture_mount_records' // 挂载记录
|
||||
```
|
||||
|
||||
**已有**:
|
||||
```typescript
|
||||
'smart_agriculture_device_types' // 设备类型
|
||||
'smart_agriculture_mounted_devices' // 挂载设备(逐步迁移)
|
||||
```
|
||||
|
||||
## 🎨 界面特性
|
||||
|
||||
### 1. 设备状态彩色徽章
|
||||
|
||||
```
|
||||
[待挂载] ← 绿色
|
||||
[已挂载] ← 蓝色
|
||||
[维护中] ← 黄色
|
||||
[已损坏] ← 红色
|
||||
[已退役] ← 灰色
|
||||
```
|
||||
|
||||
### 2. 设备类别徽章
|
||||
|
||||
```
|
||||
[摄像头] ← 蓝色
|
||||
[北斗终端] ← 绿色
|
||||
[油耗传感器] ← 橙色
|
||||
```
|
||||
|
||||
### 3. 序列号显示
|
||||
|
||||
```
|
||||
CAM-001 ← 代码块样式
|
||||
BD-001
|
||||
FUEL-01
|
||||
```
|
||||
|
||||
### 4. 操作按钮状态
|
||||
|
||||
```
|
||||
状态: 待挂载
|
||||
✅ 可编辑
|
||||
✅ 可删除
|
||||
✅ 可挂载
|
||||
|
||||
状态: 已挂载
|
||||
✅ 可编辑
|
||||
❌ 不可删除(需先拆卸)
|
||||
✅ 可拆卸
|
||||
|
||||
状态: 维护中/已损坏
|
||||
✅ 可编辑
|
||||
✅ 可删除
|
||||
❌ 不可挂载
|
||||
```
|
||||
|
||||
## 💡 使用说明
|
||||
|
||||
### 1. 设备命名规范
|
||||
|
||||
**建议格式**: `设备类型-编号`
|
||||
|
||||
```
|
||||
✅ 好的命名:
|
||||
- 摄像头-001
|
||||
- 摄像头-002
|
||||
- 北斗-001
|
||||
- 油耗-001
|
||||
|
||||
❌ 不好的命名:
|
||||
- 设备1
|
||||
- 新设备
|
||||
- test
|
||||
```
|
||||
|
||||
### 2. 序列号规范
|
||||
|
||||
**建议格式**: `类型缩写-编号`
|
||||
|
||||
```
|
||||
✅ 好的序列号:
|
||||
- CAM-001
|
||||
- CAM-002
|
||||
- BD-001
|
||||
- FUEL-001
|
||||
|
||||
❌ 不好的序列号:
|
||||
- 001
|
||||
- ABC
|
||||
- 序列号1
|
||||
```
|
||||
|
||||
### 3. 设备参数配置
|
||||
|
||||
**最佳实践**:
|
||||
- ✅ 设备添加到设备库时,一次性配置好所有参数
|
||||
- ✅ 参数配置后长期使用,不随挂载改变
|
||||
- ✅ 如需修改参数,在设备库中编辑设备
|
||||
- ✅ 相同类型的设备可以有不同的参数配置
|
||||
|
||||
**示例**:
|
||||
```
|
||||
摄像头-001:
|
||||
IP: 192.168.1.100
|
||||
端口: 554
|
||||
通道: 1
|
||||
|
||||
摄像头-002:
|
||||
IP: 192.168.1.101 ← 不同的IP
|
||||
端口: 554
|
||||
通道: 2 ← 不同的通道
|
||||
```
|
||||
|
||||
### 4. 设备状态管理
|
||||
|
||||
**状态变更时机**:
|
||||
|
||||
| 操作 | 状态变更 |
|
||||
|------|---------|
|
||||
| 添加设备 | → 待挂载 |
|
||||
| 挂载设备 | 待挂载 → 已挂载 |
|
||||
| 拆卸设备 | 已挂载 → 待挂载 |
|
||||
| 送修设备 | 任意 → 维护中 |
|
||||
| 维修完成 | 维护中 → 待挂载 |
|
||||
| 设备损坏 | 任意 → 已损坏 |
|
||||
| 设备报废 | 任意 → 已退役 |
|
||||
|
||||
## 🔗 模块关系图
|
||||
|
||||
```
|
||||
┌─────────────┐
|
||||
│ 负载类型 │ 定义设备类别
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 负载参数 │ 为类别定义参数模板
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 负载设备 │ 添加设备实例,配置参数
|
||||
│ (新增!) │ 管理设备状态
|
||||
└──────┬──────┘
|
||||
↓
|
||||
┌─────────────┐
|
||||
│ 负载管理 │ 从设备库选择设备挂载
|
||||
│ │ 建立挂载关系
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
## 📁 新增文件
|
||||
|
||||
```
|
||||
components/machinery/load/
|
||||
└── LoadDeviceLibrary.tsx # 负载设备管理(设备库)
|
||||
|
||||
types/
|
||||
└── equipment.ts # 更新数据类型
|
||||
├── DeviceInstance # 设备实例
|
||||
└── MountRecord # 挂载记录
|
||||
```
|
||||
|
||||
## 🎯 功能对比
|
||||
|
||||
### 旧架构 vs 新架构
|
||||
|
||||
| 特性 | 旧架构 | 新架构 |
|
||||
|------|--------|--------|
|
||||
| **设备管理** | 挂载时创建 | 设备库统一管理 ✅ |
|
||||
| **设备生命周期** | 无独立生命周期 | 完整生命周期管理 ✅ |
|
||||
| **设备参数** | 每次挂载配置 | 一次配置,长期使用 ✅ |
|
||||
| **设备流转** | 不支持 | 支持设备流转 ✅ |
|
||||
| **设备状态** | 只有挂载/拆卸 | 5种状态管理 ✅ |
|
||||
| **设备库存** | 不支持 | 支持库存管理 ✅ |
|
||||
| **设备追踪** | 困难 | 完整追踪 ✅ |
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
### 核心改进
|
||||
|
||||
1. ✅ **新增"负载设备"Tab** - 设备库统一管理
|
||||
2. ✅ **设备独立生命周期** - 不依赖挂载状态
|
||||
3. ✅ **5种设备状态** - 完整的状态管理
|
||||
4. ✅ **设备参数持久化** - 一次配置,多次使用
|
||||
5. ✅ **设备流转支持** - 可在不同农机间流转
|
||||
6. ✅ **完整的追溯性** - 挂载历史记录
|
||||
|
||||
### Tab导航顺序
|
||||
|
||||
```
|
||||
1. 负载类型 → 定义类别
|
||||
2. 负载参数 → 定义模板
|
||||
3. 负载设备 ⭐ → 添加设备(新增!)
|
||||
4. 负载管理 → 挂载设备
|
||||
```
|
||||
|
||||
### 数据流向
|
||||
|
||||
```
|
||||
设备类型 → 参数模板 → 设备实例 → 挂载关系
|
||||
|
||||
清晰的数据层次结构!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**创建完成**: 2025-10-16
|
||||
**新增文件**: `/components/machinery/load/LoadDeviceLibrary.tsx`
|
||||
**更新文件**: `/types/equipment.ts`, `/components/machinery/LoadManagement.tsx`
|
||||
**功能状态**: ✅ 已完成
|
||||
Reference in New Issue
Block a user