# 资源分配规划功能完整实现

## 功能概述

已完成从计划制定到可执行工单的完整闭环，实现智能资源分配和自动化工单生成。

## 核心功能

### 1. 计划制定页面优化
- ✅ 移除"导入计划"和"导出计划"按钮，界面更简洁
- ✅ 移除"生成工单"按钮，在查看详情中生成
- ✅ 添加"查看详情"按钮，支持查看完整计划信息

### 2. 计划详情对话框
展示完整的计划信息：
- **基本信息**：计划名称、状态、类型、年份/季度
- **作物信息**：作物、品种、计划面积
- **计划周期**：开始日期、结束日期
- **农事活动**：完整的活动列表（类型、时间、持续时间、描述）
- **创建信息**：创建人、创建时间

操作按钮：
- **智能生成工单**：一键将计划拆解为可执行工单
- **编辑计划**：跳转到编辑界面
- **关闭**：关闭对话框

### 3. 智能工单生成系统

#### 3.1 地块联动
```typescript
// 从地块管理模块获取地块数据
const fieldsData = localStorage.getItem('smart_agriculture_fields');
const availableFields = fieldsData ? JSON.parse(fieldsData) : mockFields;

// 模拟地块数据
const mockFields = [
  { id: 'field-1', name: '东区1号地', area: 50.5 },
  { id: 'field-2', name: '西区2号地', area: 45.2 },
  { id: 'field-3', name: '南区3号地', area: 62.8 },
  { id: 'field-4', name: '北区4号地', area: 38.5 },
  { id: 'field-5', name: '中央5号地', area: 55.0 },
];
```

#### 3.2 人员联动
```typescript
// 模拟班组数据（从人员管理模块获取）
const mockTeams = [
  { team: '第一作业组', leader: '张三', specialty: ['播种', '灌溉', '采收'] },
  { team: '第二作业组', leader: '李四', specialty: ['施肥', '除草'] },
  { team: '第三作业组', leader: '王五', specialty: ['病虫害防治', '除草'] },
  { team: '第四作业组', leader: '赵六', specialty: ['播种', '施肥', '采收'] },
];

// 根据活动类型选择合适的班组
const suitableTeam = availableTeams.find(t => 
  t.specialty.includes(activity.type)
) || availableTeams[actIndex % availableTeams.length];
```

#### 3.3 自动工时计算
根据作业类型和面积自动计算预计工时：

| 作业类型 | 工时系数 | 计算公式 |
|---------|---------|---------|
| 播种 | 0.5小时/亩 | 工时 = 面积 × 0.5 |
| 施肥 | 0.3小时/亩 | 工时 = 面积 × 0.3 |
| 灌溉 | 0.15小时/亩 | 工时 = 面积 × 0.15 |
| 除草 | 0.4小时/亩 | 工时 = 面积 × 0.4 |
| 病虫害防治 | 0.25小时/亩 | 工时 = 面积 × 0.25 |
| 采收 | 0.8小时/亩 | 工时 = 面积 × 0.8 |

#### 3.4 农资用量预估
根据作业类型和面积自动计算农资用量：

**播种作业：**
```typescript
{ name: `${plan.crop}种子`, amount: assignedArea * 3.5, unit: 'kg' }
```

**施肥作业：**
```typescript
{ name: '有机肥', amount: assignedArea * 400, unit: 'kg' }
{ name: '复合肥', amount: assignedArea * 40, unit: 'kg' }
```

**病虫害防治：**
```typescript
{ name: '杀虫剂', amount: assignedArea * 0.04, unit: 'L' }
{ name: '杀菌剂', amount: assignedArea * 0.03, unit: 'L' }
```

**灌溉作业：**
```typescript
{ name: '灌溉用水', amount: assignedArea * 50, unit: '立方米' }
```

### 4. 资源分配规划界面

#### 4.1 计划选择器
- 显示所有"已发布"和"进行中"的计划
- 展示计划基本信息：作物、品种、面积、活动数量
- 一键生成工单按钮
- 防止重复生成（已生成工单的计划按钮禁用）

#### 4.2 工单统计
实时展示工单状态统计：
- 待开始工单数量
- 进行中工单数量
- 已完成工单数量
- 已延误工单数量

#### 4.3 工单列表
每个工单卡片显示：
- **工单信息**：编号、所属计划、状态、活动类型
- **地块信息**：地块名称、作业面积
- **人员信息**：负责人、所属班组
- **时间信息**：计划日期
- **工时预估**：预计工时（及实际工时）
- **农资用量**：各类农资的用量
- **备注信息**：特殊说明

工单操作：
- **查看详情**：查看完整工单信息
- **开始执行**：将待开始工单转为进行中
- **完成工单**：将进行中工单标记为已完成

#### 4.4 资源预估详情
展示工时和农资用量的计算公式：

**工时计算公式卡片：**
- 播种工时 = 面积 × 0.5 小时/亩 × 难度系数
- 施肥工时 = 面积 × 0.3 小时/亩 × 肥料类型系数
- 灌溉工时 = 面积 × 0.15 小时/亩 × 灌溉方式系数
- 采收工时 = 面积 × 0.8 小时/亩 × 作物系数

**农资用量标准卡片：**
- 水稻种子：3-4 kg/亩
- 有机肥：300-500 kg/亩
- 复合肥：30-50 kg/亩
- 农药：0.05-0.1 L/亩

### 5. 计划进度跟踪

为每个进行中的计划显示：
- 计划基本信息
- 总体进度百分比
- 进度条可视化
- 总工单数量
- 已完成工单数量

详细的工单执行列表，按计划分组展示。

## 工作流程

```
1. 计划制定 (计划制定Tab)
   ↓
2. 查看计划详情
   ↓
3. 智能生成工单 (自动分配地块、人员、计算工时和农资)
   ↓
4. 资源分配规划 (查看和管理工单)
   ↓
5. 工单执行 (开始执行 → 完成工单)
   ↓
6. 计划进度跟踪 (监控执行情况)
```

## 技术特点

### 1. 智能分配算法
- 根据计划面积自动拆分到多个地块
- 根据活动类型匹配最合适的班组
- 考虑地块可用面积进行合理分配

### 2. 自动化计算
- 基于标准系数自动计算工时
- 根据农艺要求自动预估农资用量
- 减少人工计算错误

### 3. 模块联动
- 与地块管理模块联动获取地块数据
- 与人员管理模块联动获取班组信息
- 数据实时同步，避免信息孤岛

### 4. 完整闭环
- 从计划到工单的完整流程
- 工单状态跟踪和更新
- 进度可视化监控

## 使用指南

### 创建计划并生成工单

1. **制定计划**
   - 在"计划制定"Tab点击"新建计划"
   - 填写计划基本信息
   - 使用甘特图编排农事活动
   - 保存计划

2. **查看详情**
   - 在计划列表中点击"查看详情"
   - 查看完整的计划信息
   - 点击"智能生成工单"按钮

3. **管理工单**
   - 切换到"资源分配规划"Tab
   - 查看自动生成的工单
   - 系统已自动分配：地块、人员、工时、农资
   - 可对工单进行状态更新

4. **跟踪进度**
   - 切换到"计划进度跟踪"Tab
   - 查看各计划的执行进度
   - 监控工单完成情况

## 数据示例

### 生成的工单示例
```typescript
{
  id: 'wo-1234567890-0-0',
  planId: 'plan-1',
  planName: '2024年春季水稻种植计划',
  activityType: '播种',
  fieldId: 'field-1',
  fieldName: '东区1号地',
  assignedTo: '张三',
  teamName: '第一作业组',
  scheduledDate: '2024-03-01',
  area: 50.5,
  estimatedHours: 25,  // 50.5 × 0.5 = 25.25 ≈ 25
  estimatedMaterials: [
    { name: '水稻种子', amount: 176.8, unit: 'kg' }  // 50.5 × 3.5
  ],
  status: '待开始'
}
```

## 优化建议

### 未来可扩展功能
1. **高级分配策略**
   - 考虑地块距离优化分配
   - 考虑人员技能等级
   - 考虑设备可用性

2. **成本计算**
   - 自动计算人工成本
   - 自动计算农资成本
   - 生成成本预算报表

3. **冲突检测**
   - 检测人员时间冲突
   - 检测地块占用冲突
   - 检测设备使用冲突

4. **实时调整**
   - 支持工单的动态调整
   - 支持人员的临时替换
   - 支持地块的重新分配

## 总结

资源分配规划功能已完整实现，提供了从计划制定到工单执行的完整闭环管理。系统能够智能地将计划拆解为可执行的工单，自动分配地块、人员，并计算所需的工时和农资用量，大大提高了农事管理的效率和准确性。
