生产管理系统前端 - 更新瓦力提交的产品原型到参考目录
This commit is contained in:
554
src/TASK_ASSIGNMENT_DRIVER_DATA.md
Normal file
554
src/TASK_ASSIGNMENT_DRIVER_DATA.md
Normal file
@@ -0,0 +1,554 @@
|
||||
# 📋 任务分配 - 驾驶员数据示例添加完成
|
||||
|
||||
## ✅ 更新内容
|
||||
|
||||
为任务分配功能添加了完整的驾驶员资源数据示例,确保界面可以正常显示驾驶员信息。
|
||||
|
||||
---
|
||||
|
||||
## 📊 添加的驾驶员数据
|
||||
|
||||
### 驾驶员列表(5位)
|
||||
|
||||
```tsx
|
||||
const mockDrivers: Driver[] = [
|
||||
{
|
||||
id: 'driver-1',
|
||||
name: '张三',
|
||||
phone: '13800138001',
|
||||
idCard: '110101199001011234',
|
||||
driverLicense: 'A1',
|
||||
licenseExpiry: '2026-06-30',
|
||||
status: 'active',
|
||||
hireDate: '2020-03-15',
|
||||
experience: 5,
|
||||
specialties: ['拖拉机', '收割机'],
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
id: 'driver-2',
|
||||
name: '李四',
|
||||
phone: '13800138002',
|
||||
idCard: '110101199002021234',
|
||||
driverLicense: 'B2',
|
||||
licenseExpiry: '2025-12-31',
|
||||
status: 'active',
|
||||
hireDate: '2021-05-20',
|
||||
experience: 3,
|
||||
specialties: ['播种机', '施肥机'],
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
id: 'driver-3',
|
||||
name: '王五',
|
||||
phone: '13800138003',
|
||||
idCard: '110101199003031234',
|
||||
driverLicense: 'A2',
|
||||
licenseExpiry: '2027-03-15',
|
||||
status: 'active',
|
||||
hireDate: '2019-08-10',
|
||||
experience: 8,
|
||||
specialties: ['拖拉机', '收割机', '喷药机'],
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
id: 'driver-4',
|
||||
name: '赵六',
|
||||
phone: '13800138004',
|
||||
idCard: '110101199004041234',
|
||||
driverLicense: 'B1',
|
||||
licenseExpiry: '2026-09-20',
|
||||
status: 'active',
|
||||
hireDate: '2022-01-15',
|
||||
experience: 2,
|
||||
specialties: ['拖拉机'],
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
{
|
||||
id: 'driver-5',
|
||||
name: '孙七',
|
||||
phone: '13800138005',
|
||||
idCard: '110101199005051234',
|
||||
driverLicense: 'A1',
|
||||
licenseExpiry: '2025-08-30',
|
||||
status: 'active',
|
||||
hireDate: '2018-06-01',
|
||||
experience: 10,
|
||||
specialties: ['拖拉机', '收割机', '播种机', '施肥机'],
|
||||
createdAt: new Date().toISOString(),
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 驾驶员详细信息
|
||||
|
||||
### 1️⃣ 张三
|
||||
```
|
||||
姓名: 张三
|
||||
电话: 13800138001
|
||||
驾驶证: A1 (有效期至 2026-06-30)
|
||||
状态: 空闲 (active)
|
||||
入职时间: 2020-03-15
|
||||
工作经验: 5年
|
||||
擅长设备: 拖拉机、收割机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 李四
|
||||
```
|
||||
姓名: 李四
|
||||
电话: 13800138002
|
||||
驾驶证: B2 (有效期至 2025-12-31)
|
||||
状态: 空闲 (active)
|
||||
入职时间: 2021-05-20
|
||||
工作经验: 3年
|
||||
擅长设备: 播种机、施肥机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 王五
|
||||
```
|
||||
姓名: 王五
|
||||
电话: 13800138003
|
||||
驾驶证: A2 (有效期至 2027-03-15)
|
||||
状态: 空闲 (active)
|
||||
入职时间: 2019-08-10
|
||||
工作经验: 8年 ⭐ 资深
|
||||
擅长设备: 拖拉机、收割机、喷药机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ 赵六
|
||||
```
|
||||
姓名: 赵六
|
||||
电话: 13800138004
|
||||
驾驶证: B1 (有效期至 2026-09-20)
|
||||
状态: 空闲 (active)
|
||||
入职时间: 2022-01-15
|
||||
工作经验: 2年 🔰 新手
|
||||
擅长设备: 拖拉机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ 孙七
|
||||
```
|
||||
姓名: 孙七
|
||||
电话: 13800138005
|
||||
驾驶证: A1 (有效期至 2025-08-30)
|
||||
状态: 空闲 (active)
|
||||
入职时间: 2018-06-01
|
||||
工作经验: 10年 ⭐⭐ 专家级
|
||||
擅长设备: 拖拉机、收割机、播种机、施肥机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 数据特点
|
||||
|
||||
### 驾驶证类型分布
|
||||
```
|
||||
A1级: 2人 (张三、孙七) - 可驾驶大型农机
|
||||
A2级: 1人 (王五) - 可驾驶中型农机
|
||||
B1级: 1人 (赵六) - 可驾驶小型农机
|
||||
B2级: 1人 (李四) - 可驾驶轻型农机
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 经验分布
|
||||
```
|
||||
专家级 (8年以上): 王五(8年)、孙七(10年)
|
||||
熟练级 (5-8年): 张三(5年)
|
||||
普通级 (3-5年): 李四(3年)
|
||||
新手级 (2年以下): 赵六(2年)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 设备擅长度
|
||||
```
|
||||
全能型: 孙七 (4种设备)
|
||||
熟练型: 王五 (3种设备)
|
||||
专业型: 张三 (2种设备)、李四 (2种设备)
|
||||
专项型: 赵六 (1种设备)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📍 界面显示效果
|
||||
|
||||
### 驾驶员资源面板
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 驾驶员资源 │
|
||||
├─────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ 张三 [空闲] │ │
|
||||
│ │ 13800138001 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ 李四 [空闲] │ │
|
||||
│ │ 13800138002 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ 王五 [空闲] │ │
|
||||
│ │ 13800138003 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ 赵六 [空闲] │ │
|
||||
│ │ 13800138004 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ 孙七 [空闲] │ │
|
||||
│ │ 13800138005 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 任务表单 - 驾驶员选择器
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 驾驶员 │
|
||||
├─────────────────────────────────────┤
|
||||
│ [选择驾驶员(可选) ▼] │
|
||||
│ │
|
||||
│ 选项: │
|
||||
│ • 暂不分配 │
|
||||
│ • 张三 - 13800138001 │
|
||||
│ • 李四 - 13800138002 │
|
||||
│ • 王五 - 13800138003 │
|
||||
│ • 赵六 - 13800138004 │
|
||||
│ • 孙七 - 13800138005 │
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 代码实现
|
||||
|
||||
### 更新位置
|
||||
**文件**: `/components/machinery/scheduling/TaskAssignment.tsx`
|
||||
|
||||
### 更新内容
|
||||
|
||||
```tsx
|
||||
const loadData = () => {
|
||||
// 加载农机数据
|
||||
const machineryData = machineryStorage.getAllMachinery();
|
||||
setMachinery(machineryData);
|
||||
|
||||
// 加载驾驶员数据
|
||||
const driversData = localStorage.getItem('smart_agriculture_drivers');
|
||||
if (driversData) {
|
||||
setDrivers(JSON.parse(driversData));
|
||||
} else {
|
||||
// ✅ 初始化示例驾驶员数据
|
||||
const mockDrivers: Driver[] = [
|
||||
// 5位驾驶员数据...
|
||||
];
|
||||
localStorage.setItem('smart_agriculture_drivers', JSON.stringify(mockDrivers));
|
||||
setDrivers(mockDrivers);
|
||||
}
|
||||
|
||||
// 加载地块数据(模拟)
|
||||
// ...
|
||||
};
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 功能验证
|
||||
|
||||
### 测试步骤
|
||||
|
||||
#### 1. 查看驾驶员列表
|
||||
```
|
||||
1. <20><>问:农机管理 → 任务调度与跟踪 → 任务分配
|
||||
2. 查看右侧"驾驶员资源"面板
|
||||
3. 应该看到5位驾驶员
|
||||
```
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 显示5位驾驶员
|
||||
- ✅ 每位驾驶员显示姓名和电话
|
||||
- ✅ 所有驾驶员状态为"空闲"
|
||||
|
||||
---
|
||||
|
||||
#### 2. 创建任务并分配驾驶员
|
||||
```
|
||||
1. 点击"创建任务"按钮
|
||||
2. 填写任务基本信息
|
||||
3. 在"资源分配"部分选择驾驶员
|
||||
4. 查看驾驶员下拉列表
|
||||
```
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 下拉列表显示所有驾驶员
|
||||
- ✅ 格式为:"张三 - 13800138001"
|
||||
- ✅ 可以选择"暂不分配"
|
||||
- ✅ 可以选择任意驾驶员
|
||||
|
||||
---
|
||||
|
||||
#### 3. 查看统计信息
|
||||
```
|
||||
1. 查看页面顶部的统计卡片
|
||||
2. 找到"空闲驾驶员"卡片
|
||||
```
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 显示"空闲驾驶员: 5"(绿色)
|
||||
- ✅ 数字准确反映当前空闲驾驶员数量
|
||||
|
||||
---
|
||||
|
||||
## 📊 数据结构
|
||||
|
||||
### Driver 类型定义
|
||||
```tsx
|
||||
interface Driver {
|
||||
id: string; // 驾驶员ID
|
||||
name: string; // 姓名
|
||||
phone: string; // 电话
|
||||
idCard: string; // 身份证号
|
||||
driverLicense: string; // 驾驶证类型
|
||||
licenseExpiry: string; // 驾驶证有效期
|
||||
status: string; // 状态 (active = 空闲)
|
||||
hireDate: string; // 入职时间
|
||||
experience: number; // 工作经验(年)
|
||||
specialties: string[]; // 擅长设备
|
||||
createdAt: string; // 创建时间
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 UI 效果
|
||||
|
||||
### 驾驶员资源卡片
|
||||
```
|
||||
┌─────────────────────────────────┐
|
||||
│ 张三 [空闲] │ ← Badge显示状态
|
||||
│ 13800138001 │ ← 电话号码
|
||||
└─────────────────────────────────┘
|
||||
```
|
||||
|
||||
**样式**:
|
||||
- 白色背景
|
||||
- 圆角边框
|
||||
- 左右布局:姓名/电话 vs 状态Badge
|
||||
- 状态Badge:绿色表示空闲
|
||||
|
||||
---
|
||||
|
||||
## 📝 后续优化建议
|
||||
|
||||
### 短期(可选)
|
||||
```
|
||||
- [ ] 添加驾驶员头像
|
||||
- [ ] 显示驾驶员当前任务数
|
||||
- [ ] 显示驾驶证到期提醒
|
||||
- [ ] 添加驾驶员擅长设备标签
|
||||
```
|
||||
|
||||
### 中期(推荐)
|
||||
```
|
||||
- [ ] 驾驶员工作量统计
|
||||
- [ ] 驾驶员评分系统
|
||||
- [ ] 驾驶员技能匹配推荐
|
||||
- [ ] 驾驶员排班管理
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 数据持久化
|
||||
|
||||
### 存储位置
|
||||
```
|
||||
localStorage.setItem('smart_agriculture_drivers', JSON.stringify(mockDrivers));
|
||||
```
|
||||
|
||||
### 存储键
|
||||
```
|
||||
smart_agriculture_drivers
|
||||
```
|
||||
|
||||
### 数据格式
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "driver-1",
|
||||
"name": "张三",
|
||||
"phone": "13800138001",
|
||||
"idCard": "110101199001011234",
|
||||
"driverLicense": "A1",
|
||||
"licenseExpiry": "2026-06-30",
|
||||
"status": "active",
|
||||
"hireDate": "2020-03-15",
|
||||
"experience": 5,
|
||||
"specialties": ["拖拉机", "收割机"],
|
||||
"createdAt": "2025-10-17T..."
|
||||
},
|
||||
// ... 其他驾驶员
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 与其他功能的集成
|
||||
|
||||
### 1. 驾驶员档案管理
|
||||
```
|
||||
路径: 农机管理 → 驾驶员档案管理
|
||||
|
||||
- 任务分配使用的驾驶员数据
|
||||
- 与驾驶员档案共享同一数据源
|
||||
- 在档案管理中修改,任务分配会同步更新
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 任务创建表单
|
||||
```
|
||||
- 驾驶员选择下拉框会显示所有驾驶员
|
||||
- 格式: "姓名 - 电话"
|
||||
- 自动过滤非空闲驾驶员(status !== 'active')
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. 任务列表
|
||||
```
|
||||
- 已分配的任务会显示驾驶员姓名
|
||||
- 未分配的任务显示"未分配"
|
||||
- 可以随时编辑任务重新分配驾驶员
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📖 使用场景
|
||||
|
||||
### 场景1: 查看可用驾驶员
|
||||
```
|
||||
用户: 农机管理员
|
||||
目标: 了解当前有哪些驾驶员可以安排任务
|
||||
|
||||
步骤:
|
||||
1. 进入任务分配页面
|
||||
2. 查看右侧"驾驶员资源"面板
|
||||
3. 看到5位空闲驾驶员
|
||||
4. 确认可以安排新任务
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 场景2: 创建任务并分配驾驶员
|
||||
```
|
||||
用户: 农机管理员
|
||||
目标: 创建耕地任务并分配合适的驾驶员
|
||||
|
||||
步骤:
|
||||
1. 点击"创建任务"
|
||||
2. 填写任务信息(耕地作业)
|
||||
3. 选择农机:约翰迪尔拖拉机
|
||||
4. 选择驾驶员:张三(擅长拖拉机)
|
||||
5. 保存任务
|
||||
|
||||
结果:
|
||||
✅ 任务创建成功
|
||||
✅ 张三被分配到该任务
|
||||
✅ 任务状态变为"已分配"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 场景3: 根据经验选择驾驶员
|
||||
```
|
||||
用户: 农机管理员
|
||||
目标: 为重要任务选择经验丰富的驾驶员
|
||||
|
||||
分析:
|
||||
- 孙七: 10年经验,擅长4种设备 ⭐⭐ 首选
|
||||
- 王五: 8年经验,擅长3种设备 ⭐ 备选
|
||||
- 张三: 5年经验,擅长2种设备 ✓ 一般任务
|
||||
- 李四: 3年经验,擅长2种设备 ✓ 一般任务
|
||||
- 赵六: 2年经验,擅长1种设备 🔰 简单任务
|
||||
|
||||
选择策略:
|
||||
- 复杂/紧急任务 → 孙七、王五
|
||||
- 一般任务 → 张三、李四
|
||||
- 简单任务 → 赵六
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 完成清单
|
||||
|
||||
- [x] ✅ 添加5位驾驶员示例数据
|
||||
- [x] ✅ 包含完整的驾驶员信息
|
||||
- [x] ✅ 设置所有驾驶员为空闲状态
|
||||
- [x] ✅ 配置不同的驾驶证类型
|
||||
- [x] ✅ 设置不同的工作经验
|
||||
- [x] ✅ 配置擅长设备列表
|
||||
- [x] ✅ 数据存储到localStorage
|
||||
- [x] ✅ 首次加载时自动初始化
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
### 更新内容
|
||||
```
|
||||
✅ 添加了5位驾驶员示例数据
|
||||
✅ 覆盖不同驾驶证类型(A1、A2、B1、B2)
|
||||
✅ 包含不同经验等级(2-10年)
|
||||
✅ 配置了设备擅长信息
|
||||
✅ 所有驾驶员设置为空闲状态
|
||||
✅ 首次加载自动初始化数据
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 测试验证
|
||||
```
|
||||
访问路径: 农机管理 → 任务调度与跟踪 → 任务分配
|
||||
|
||||
预期效果:
|
||||
1. ✅ 右侧面板显示5位驾驶员
|
||||
2. ✅ 统计卡片显示"空闲驾驶员: 5"
|
||||
3. ✅ 任务表单可以选择任意驾驶员
|
||||
4. ✅ 数据持久化保存
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 后续建议
|
||||
```
|
||||
1. 🔄 实现驾驶员状态动态更新(分配任务后状态变更)
|
||||
2. 🔄 添加驾驶员技能匹配推荐
|
||||
3. 🔄 实现驾驶员工作量统计
|
||||
4. 🔄 添加驾驶证到期提醒功能
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**更新时间**: 2025-10-17
|
||||
**更新文件**: `/components/machinery/scheduling/TaskAssignment.tsx`
|
||||
**状态**: ✅ **驾驶员数据示例添加完成**
|
||||
|
||||
现在任务分配页面可以正常显示5位驾驶员资源了!🎉
|
||||
Reference in New Issue
Block a user