生产管理系统前端 - 更新瓦力提交的产品原型到参考目录

This commit is contained in:
2025-10-23 10:57:14 +08:00
parent 83523dad64
commit 28229ce795
354 changed files with 147599 additions and 7892 deletions

View 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`
**功能状态**: ✅ 已完成