# 农资档案管理完整功能指南

## 📋 功能概述

农资档案管理系统实现了对种子、化肥、农药三类农资的全生命周期管理，包括完整的CRUD操作、自动预警系统、特殊管理规则等。

## ✨ 核心功能

### 1. 农资分类管理

支持三大类农资：
- **种子**（SEED）：编码前缀 `SEED-YYYY-XXX`
- **化肥**（FERT）：编码前缀 `FERT-YYYY-XXX`
- **农药**（PEST）：编码前缀 `PEST-YYYY-XXX`

### 2. 唯一编码系统

**自动生成规则：**
- 格式：`类型前缀-年份-流水号`
- 示例：`SEED-2024-001`, `FERT-2024-002`, `PEST-2024-003`
- 流水号：3位数字，按类型独立递增
- 自动生成：创建时系统自动生成，无需手动输入

### 3. 基础信息管理

**所有农资通用属性：**
- ✅ 唯一编码（自动生成）
- ✅ 农资名称 *（必填）
- ✅ 农资类型 *（必填）
- ✅ 规格 *（必填）：如 25kg/袋
- ⭕ 型号：如 NPK 15-15-15
- ✅ 单位 *（必填）：袋、瓶、箱等
- ✅ 供应商 *（必填）：从供应商库选择
- ⭕ 生产厂家
- ✅ 生产日期 *（必填）
- ✅ 有效期至 *（必填）
- ✅ 当前库存 *（必填）
- ✅ 安全库存 *（必填）
- ✅ 采购单价 *（必填）
- ⭕ 备注

### 4. 农药特殊管理 ⚠️

**农药类型强制录入字段：**
- ✅ **登记证号** *（必填）：如 PD20210123
- ✅ **毒性等级** *（必填）：
  - 低毒（绿色标识）
  - 中毒（黄色标识）
  - 高毒（橙色标识）
  - 剧毒（红色标识）
- ✅ **安全间隔期** *（必填）：单位为天
  - 说明：最后一次施药至收获农作物之间的天数

**验证规则：**
- 选择"农药"类型后，农药特殊信息区域自动显示
- 保存时强制验证这三个字段
- 未填写完整时无法保存

### 5. 临期预警系统 📅

**自动计算规则：**

| 剩余天数 | 预警级别 | 显示颜色 | 状态标签 |
|---------|---------|---------|---------|
| > 90天 | 正常 | 灰色背景 | 正常 |
| 31-90天 | 临期预警 | 黄色背景 | 临期预警 |
| 1-30天 | 严重预警 | 红色背景 | 临期预警 |
| ≤ 0天 | 已过期 | 深红背景 | 已过期 |

**预警显示位置：**
1. 列表视图：有效期卡片背景色变化
2. 列表视图：显示"还剩X天"提示
3. 状态标签：显示预警状态
4. 详情对话框：高亮显示有效期信息

**计算逻辑：**
```typescript
const today = new Date();
const expiry = new Date(expiryDate);
const daysLeft = Math.floor((expiry.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));

// 提前3个月（90天）标黄
if (daysLeft <= 90 && daysLeft > 30) {
  backgroundColor = 'yellow';
}

// 提前1个月（30天）标红
if (daysLeft <= 30 && daysLeft >= 0) {
  backgroundColor = 'red';
}
```

### 6. 库存预警系统 📦

**预警规则：**
- 当前库存 < 安全库存 → 触发库存预警
- 显示橙色"库存预警"标签
- 统计卡片显示预警数量

**优先级：**
- 临期预警 > 库存预警
- 同时触发时，优先显示临期预警状态

**库存状态计算：**
```typescript
const calculateMaterialStatus = (material) => {
  // 1. 检查是否过期
  if (daysLeft < 0) return '已过期';
  
  // 2. 检查临期（优先级高）
  if (daysLeft <= 30 || daysLeft <= 90) return '临期预警';
  
  // 3. 检查库存
  if (currentStock < safeStock) return '库存预警';
  
  // 4. 正常
  return '正常';
};
```

### 7. 完整CRUD功能

#### 新增农资 ➕
1. 点击"新增农资"按钮
2. 填写表单（必填项标*）
3. 农药类型自动显示特殊字段
4. 系统自动生成唯一编码
5. 系统自动计算状态（正常/预警/过期）
6. 保存成功后列表自动更新

#### 查看详情 👁️
1. 点击"眼睛"图标
2. 弹出详情对话框
3. 分区显示：
   - 基本信息卡片
   - 供应信息卡片
   - 库存信息卡片
   - 日期信息卡片
   - 农药特殊信息卡片（仅农药）
   - 备注信息
4. 可直接跳转编辑

#### 编辑农资 ✏️
1. 点击"编辑"图标
2. 表单自动填充当前数据
3. 修改后点击"更新"
4. 编码不可修改（保持唯一性）
5. 类型修改后表单项自动调整

#### 删除农资 🗑️
1. 点击"删除"图标
2. 弹出确认对话框
3. 确认后从列表移除
4. 显示删除成功提示

### 8. 多维度筛选

**支持筛选项：**
1. **按农资类型：**
   - 全部类型
   - 种子
   - 化肥
   - 农药

2. **按状态：**
   - 全部状态
   - 正常
   - 临期预警
   - 库存预警
   - 已过期

**筛选逻辑：**
- 支持组合筛选（类型 + 状态）
- 实时过滤，无需刷新
- 筛选条件独立保存

### 9. 视觉标识系统

**类型颜色：**
- 🟢 种子：绿色
- 🔵 化肥：蓝色
- 🟠 农药：橙色

**状态颜色：**
- 🟢 正常：绿色背景
- 🟡 临期预警：黄色背景
- 🟠 库存预警：橙色背景
- 🔴 已过期：红色背景

**毒性等级颜色：**
- 🟢 低毒：绿色标签
- 🟡 中毒：黄色标签
- 🟠 高毒：橙色标签
- 🔴 剧毒：红色标签

### 10. 数据统计

**概览卡片：**
1. 农资总数
2. 预警项数量
3. 按类型统计（饼图）
4. 库存状况

## 📊 示例数据

系统预置6条示例数据，覆盖所有场景：

| 编码 | 名称 | 类型 | 状态 | 说明 |
|------|------|------|------|------|
| SEED-2024-001 | 优质水稻种子 | 种子 | 库存预警 | 库存低于安全值 |
| FERT-2024-002 | 复合肥 | 化肥 | 正常 | 有效期充足、库存充足 |
| PEST-2024-003 | 吡虫啉 | 农药 | 临期预警 | 有效期<90天 |
| PEST-2024-004 | 草甘膦 | 农药 | 临期预警 | 有效期<90天 |
| SEED-2024-005 | 玉米种子 | 种子 | 库存预警 | 库存不足 |
| FERT-2024-006 | 尿素 | 化肥 | 已过期 | 已过有效期 |

## 🎯 使用场景

### 场景1：农药采购入库
1. 点击"新增农资"
2. 选择类型：农药
3. 填写基础信息
4. **必须填写**登记证号、毒性等级、安全间隔期
5. 设置安全库存阈值
6. 保存后自动生成编码和计算状态

### 场景2：临期农药处理
1. 筛选：类型=农药，状态=临期预警
2. 查看临期列表
3. 查看详情，确认剩余天数
4. 根据安全间隔期安排使用计划

### 场景3：库存盘点
1. 查看"库存预警"状态的物资
2. 对比当前库存和安全库存
3. 编辑更新实际库存
4. 系统自动重新计算状态

### 场景4：过期物资清理
1. 筛选状态：已过期
2. 查看过期物资列表
3. 记录备注信息
4. 删除或标记处理

## 🔄 自动化功能

1. **自动编码生成**：按类型+年份+序号规则
2. **自动状态计算**：基于有效期和库存
3. **自动预警提示**：临期和库存双重监控
4. **自动数据验证**：必填项和农药特殊字段
5. **自动日期计算**：剩余天数实时计算

## 📝 注意事项

1. ⚠️ 农药类型必须填写特殊字段，否则无法保存
2. 📅 临期预警会在90天和30天两个节点触发
3. 📦 库存预警优先级低于临期预警
4. 🔢 编码一旦生成不可修改
5. 🗑️ 删除操作不可恢复，请谨慎操作
6. 📊 状态由系统自动计算，不可手动修改
7. 🔍 筛选条件可组合使用

## 🚀 访问路径

导航路径：**资产管理 → 基础信息 → 农资档案**

## 💡 最佳实践

1. **规范命名**：农资名称应清晰准确
2. **及时更新**：库存变动后及时更新数据
3. **定期检查**：关注临期预警和库存预警
4. **完整备注**：重要信息记录在备注字段
5. **准确录入**：农药特殊信息关系到安全，务必准确
6. **合理设置**：安全库存应根据实际需求设置

## 📞 技术支持

如遇问题，请联系系统管理员或查阅系统帮助文档。
