# 维修保养系统 - 完整功能指南 🔧

## 🎯 功能概述

**维修保养系统**是农资农具管理的核心维护模块，提供保养计划管理、维修工单系统、历史档案查询和成本分析功能，实现完整的维修保养闭环管理。

### ✅ 核心特性

1. **保养计划管理** - 按时间或工作量自动触发提醒
2. **维修工单系统** - 完整记录故障描述、耗材、费用、人员、时间
3. **历史档案查询** - 支持多维度筛选和查询
4. **成本趋势分析** - 统计分析维修成本和效率
5. **功能闭环** - 计划→提醒→工单→执行→验收→归档→分析

---

## 📋 页面布局

### 整体结构

```
┌──────────────────────────────────────────────────────────┐
│ ℹ️ 功能说明卡片（橙色）                                  │
├──────────────────────────────────────────────────────────┤
│ 📊 维修保养概览（4个统计卡片）                            │
│ [逾期保养] [即将到期] [维修中] [本月完成]                │
├──────────────────────────────────────────────────────────┤
│ 🚀 快捷操作（4个按钮）                                    │
│ [创建维修工单] [新建保养计划] [批量导出] [下载报表]     │
├──────────────────────────────────────────────────────────┤
│ 📅 保养计划管理表格（11列）                               │
│ 编号 | 名称 | 类型 | 间隔 | 上次 | 下次 | 剩余 | ...  │
├──────────────────────────────────────────────────────────┤
│ 📋 维修工单记录表格（11列）                               │
│ 工单号 | 设备 | 类型 | 故障 | 人员 | 时间 | ...         │
├──────────────────────────────────────────────────────────┤
│ 📊 维修历史档案（统计卡片）                               │
│ [总维修次数] [累计费用] [平均时长]                       │
├──────────────────────────────────────────────────────────┤
│ 📈 数据分析（2个图表）                                    │
│ [维修成本趋势] [维修类型分布]                            │
├──────────────────────────────────────────────────────────┤
│ 🎯 维修效率与质量评估（4个指标）                          │
│ [一次修复率] [平均响应] [质量评分] [费用控制]           │
├──────────────────────────────────────────────────────────┤
│ 🔄 维修保养功能闭环（6步流程）                            │
└──────────────────────────────────────────────────────────┘
```

---

## 🎨 功能模块详解

### 1. 功能说明卡片

**位置**：页面顶部  
**样式**：橙色背景，Wrench图标

**内容**：
- ✅ 保养计划管理
- ✅ 维修工单系统
- ✅ 历史档案查询
- ✅ 成本趋势分析
- ✅ 功能闭环

---

### 2. 维修保养概览

**布局**：4个渐变卡片横向排列

#### 2.1 逾期保养（红色）

**显示内容**：
- 图标：⚠️ AlertTriangle（白色，红色圆形背景）
- 数量：逾期的保养计划数量
- 标签："逾期保养"
- 提示："需立即处理"

**样式**：
- 渐变背景：`from-red-50 to-red-100`
- 边框：`border-red-200`

**数据计算**：
```typescript
maintenancePlans.filter(p => p.status === '逾期').length
```

#### 2.2 即将到期（黄色）

**显示内容**：
- 图标：🕐 Clock
- 数量：即将到期的计划数量
- 标签："即将到期"
- 提示："7天内需保养"

**样式**：
- 渐变背景：`from-yellow-50 to-yellow-100`
- 边框：`border-yellow-200`

#### 2.3 维修中（蓝色）

**显示内容**：
- 图标：🔧 Wrench
- 数量：正在维修的工单数量
- 标签："维修中"
- 提示："正在维修处理"

**样式**：
- 渐变背景：`from-blue-50 to-blue-100`
- 边框：`border-blue-200`

#### 2.4 本月完成（绿色）

**显示内容**：
- 图标：✓ CheckCircle
- 数量：本月已完成的记录数
- 标签："本月完成"
- 提示："维修保养记录"

**样式**：
- 渐变背景：`from-green-50 to-green-100`
- 边框：`border-green-200`

---

### 3. 快捷操作区

**布局**：4个按钮横向排列

| 按钮 | 样式 | 图标 | 功能 |
|------|------|------|------|
| 创建维修工单 | 橙色背景 | Plus | 打开工单创建对话框 |
| 新建保养计划 | 蓝色背景 | Calendar | 打开计划创建对话框 |
| 批量导出记录 | Outline | FileText | 导出维修记录 |
| 下载报表 | Outline | Download | 下载统计报表 |

---

### 4. 保养计划管理表格

#### 表格结构（11列）

| 序号 | 列名 | 宽度 | 内容 | 样式/格式 |
|------|------|------|------|----------|
| 1 | 设备编号 | w-32 | 设备唯一编号 | 蓝色字体 |
| 2 | 设备名称 | w-36 | 设备主名称 | font-medium |
| 3 | 计划类型 | w-28 | 按时间/按工作量 | Badge |
| 4 | 保养间隔 | w-36 | 间隔+单位+当前使用量 | 双行显示 |
| 5 | 上次保养 | w-32 | 日期+距今天数 | 双行显示 |
| 6 | 下次保养 | w-32 | 日期+预警提示 | 双行显示 |
| 7 | 剩余天数 | w-28 | 动态计算 | 颜色提示 |
| 8 | 计划状态 | w-28 | 3种状态 | 彩色Badge |
| 9 | 自动提醒 | w-28 | 是/否 | 图标+文字 |
| 10 | 保养内容 | w-48 | 保养项目列表 | 最多显示2项 |
| 11 | 操作 | w-36 | 操作按钮组 | Eye/Edit/Play |

#### 详细字段说明

**1. 设备编号**
- 样式：`font-medium text-blue-600`
- 示例：TOOL-2024-001

**2. 设备名称**
- 样式：`font-medium`
- 示例：拖拉机

**3. 计划类型**
- 组件：Badge
- 颜色：
  - 按时间：`border-blue-300 text-blue-600`
  - 按工作量：`border-purple-300 text-purple-600`

**4. 保养间隔**
- 显示：`每 {interval}{intervalUnit}`
- 按工作量类型：显示当前使用量
- 示例：
  ```
  每 90天
  ```
  或
  ```
  每 500小时
  当前: 580小时
  ```

**5. 上次保养**
- 第1行：日期
- 第2行：距今天数（灰色小字）
- 示例：
  ```
  2024-09-15
  37天前
  ```

**6. 下次保养**
- 第1行：日期
- 第2行：预警提示（即将到期时显示）
- 示例：
  ```
  2024-10-28
  ⚠️ 即将到期
  ```

**7. 剩余天数**
- 动态计算：`(下次保养日期 - 今天) / 天数`
- 颜色规则：
  - 负数（逾期）：红色 `text-red-600`
  - 0-7天：黄色 `text-yellow-600`
  - >7天：绿色 `text-green-600`
- 显示格式：
  - 负数：`逾期X天`
  - 0：`今天`
  - 正数：`X天`

**8. 计划状态**
- 组件：Badge
- 状态：
  - 正常：绿色
  - 即将到期：黄色
  - 逾期：红色

**9. 自动提醒**
- 已启用：
  - 图标：✓ CheckCircle（绿色）
  - 文字："已启用"
- 未启用：
  - 图标：✗ XCircle（灰色）
  - 文字："未启用"

**10. 保养内容**
- 显示前2项保养项目
- 如果超过2项，显示"+X项"
- 示例：
  ```
  • 更换机油
  • 检查刹车系统
  +2项
  ```

**11. 操作**
- 查看详情（所有）：👁️ Eye
- 编辑计划（所有）：✏️ Edit
- 执行保养（非已完成状态）：▶️ Play（绿色背景）

#### 表格顶部操作

**左侧**：
- 标题："保养计划管理"
- 图标：📅 Calendar（蓝色）

**右侧**：
- 筛选按钮
- 刷新按钮

---

### 5. 维修工单记录表格

#### 表格结构（11列）

| 序号 | 列名 | 宽度 | 内容 | 样式/格式 |
|------|------|------|------|----------|
| 1 | 工单号 | w-32 | 工单唯一编号 | 橙色字体 |
| 2 | 设备信息 | w-36 | 名称+编号 | 双行显示 |
| 3 | 维修类型 | w-28 | 3种类型 | 彩色Badge |
| 4 | 故障描述 | w-48 | 描述+故障等级 | 双行显示 |
| 5 | 维修人员 | w-28 | 姓名+电话 | 双行显示 |
| 6 | 维修时间 | w-48 | 开始+结束时间 | 双行显示 |
| 7 | 耗时 | w-24 | 小时数 | Timer图标 |
| 8 | 费用明细 | w-48 | 配件+人工 | 多行显示 |
| 9 | 总费用 | w-28 | 金额+结算状态 | 橙色字体 |
| 10 | 工单状态 | w-28 | 3种状态 | 彩色Badge |
| 11 | 操作 | w-36 | 操作按钮组 | Eye/Check/Print |

#### 详细字段说明

**1. 工单号**
- 样式：`font-medium text-orange-600`
- 格式：WO + 日期 + 序号
- 示例：WO202410150001

**2. 设备信息**
- 第1行：设备名称（font-medium）
- 第2行：设备编号（灰色小字）
- 示例：
  ```
  收割机
  TOOL-2024-003
  ```

**3. 维修类型**
- 组件：Badge
- 颜色：
  - 紧急维修：`border-red-300 text-red-600`
  - 定期保养：`border-blue-300 text-blue-600`
  - 预防性维修：`border-yellow-300 text-yellow-600`

**4. 故障描述**
- 第1行：描述文本（最多显示2行）
- 第2行：故障等级Badge（如有）
- 等级：轻微、一般、严重

**5. 维修人员**
- 第1行：👤 User图标 + 姓名
- 第2行：电话号码（小字）
- 示例：
  ```
  👤 李维修
  13800138001
  ```

**6. 维修时间**
- 第1行：🕐 Clock图标 + 开始时间
- 第2行：
  - 已结束：✓ CheckCircle + 结束时间
  - 进行中：黄色"维修中..."

**7. 耗时**
- 图标：⏱️ Timer（蓝色）
- 格式：Xh
- 示例：14h

**8. 费用明细**
- 标题："配件费用:"
- 配件列表（显示前2项）
  - 格式：• 名称 xN: ¥XX
- 如果超过2项："+X项配件"
- 底部：人工费（分隔线）
- 示例：
  ```
  配件费用:
  • 液压密封圈套装 x1: ¥350
  • 液压油 x20: ¥600
  +1项配件
  ────────────
  人工费: ¥1400
  ```

**9. 总费用**
- 第1行：金额（橙色，大字号）
- 第2行：结算状态（小字）
- 示例：
  ```
  ¥2,430
  未结算
  ```

**10. 工单状态**
- 组件：Badge
- 颜色：
  - 待处理：黄色 `bg-yellow-100 text-yellow-700`
  - 进行中：蓝色 `bg-blue-100 text-blue-700`
  - 已完成：绿色 `bg-green-100 text-green-700`

**11. 操作**
- 查看详情（所有）：👁️ Eye
- 完成工单（进行中）：✓ CheckCircle（绿色背景）
- 打印工单（已完成）：🖨️ Printer

#### 表格顶部筛选

**筛选按钮**：
- 全部工单
- 待处理 (X)
- 进行中 (X)
- 已完成 (X)

每个按钮显示对应状态的工单数量。

---

### 6. 维修历史档案

**布局**：紫色到蓝色渐变背景卡片

**包含3个统计指标**：

#### 6.1 总维修次数
- 背景：白色卡片，紫色边框
- 数值：总记录数
- 对比：较上月 +X%（绿色）

#### 6.2 累计维修费用
- 背景：白色卡片，橙色边框
- 数值：所有工单总费用
- 说明："本月支出"

#### 6.3 平均维修时长
- 背景：白色卡片，蓝色边框
- 数值：平均耗时
- 对比：较上月 -X%（绿色）

**操作按钮**：
- "高级查询"（紫色描边）

---

### 7. 数据分析

#### 7.1 维修成本趋势分析

**图表类型**：AreaChart（面积图）  
**图表库**：Recharts

**数据结构**：
```typescript
const maintenanceCostData = [
  { month: '4月', cost: 3200 },
  { month: '5月', cost: 2800 },
  { month: '6月', cost: 4100 },
  { month: '7月', cost: 3690 },
  { month: '8月', cost: 2500 },
  { month: '9月', cost: 3430 },
  { month: '10月', cost: 4120 },
];
```

**配置**：
- X轴：月份
- Y轴：成本（¥）
- 颜色：橙色 `stroke="#f59e0b" fill="#fed7aa"`

#### 7.2 维修类型分布

**图表类型**：PieChart（饼图）

**数据**：
```typescript
[
  { name: '紧急维修', value: 2, color: '#ef4444' },
  { name: '定期保养', value: 3, color: '#3b82f6' },
  { name: '预防性维修', value: 2, color: '#10b981' },
]
```

---

### 8. 维修效率与质量评估

**布局**：4个评估卡片横向排列

#### 8.1 一次修复率（绿色）

**显示内容**：
- 图标：✓ CheckCircle
- 标题："一次修复率"
- 数值：92%
- 进度条：Progress组件
- 目标："目标: ≥90%"

#### 8.2 平均响应时间（蓝色）

**显示内容**：
- 图标：🕐 Clock
- 标题："平均响应时间"
- 数值：2.5h
- 进度条：75%
- 目标："目标: ≤3h"

#### 8.3 维修质量评分（紫色）

**显示内容**：
- 图标：⭐ Star
- 标题："维修质量评分"
- 数值：4.8
- 进度条：96%
- 目标："满分: 5.0"

#### 8.4 费用控制率（橙色）

**显示内容**：
- 图标：💰 DollarSign
- 标题："费用控制率"
- 数值：88%
- 进度条：88%
- 目标："预算内完成"

---

### 9. 维修保养功能闭环

**布局**：绿色到蓝色渐变背景卡片

**6步流程**：

```
1️⃣ 创建保养计划 → 2️⃣ 自动提醒 → 3️⃣ 创建工单 → 
4️⃣ 执行维修 → 5️⃣ 验收归档 → 6️⃣ 数据分析
```

**每个步骤**：
- 编号：彩色圆形背景，白色数字
- 步骤名称
- 箭头连接

**底部说明**：
- **计划阶段**（蓝色）：设定按时间或工作量的保养周期
- **执行阶段**（橙色）：记录故障、耗材、费用、人员
- **归档阶段**（绿色）：完整历史档案，支持查询分析

---

## 🔄 功能闭环说明

### 完整流程

```
1. 创建保养计划
   ├─ 选择设备
   ├─ 设定计划类型（按时间/按工作量）
   ├─ 设定保养间隔
   ├─ 配置自动提醒
   └─ 填写保养内容
   │
   ↓
2. 自动提醒
   ├─ 系统监控计划状态
   ├─ 到期前7天提醒
   ├─ 逾期标红预警
   └─ 生成待办任务
   │
   ↓
3. 创建维修工单
   ├─ 选择设备
   ├─ 填写故障描述
   ├─ 选择维修类型
   ├─ 设定故障等级
   ├─ 指定维修人员
   └─ 记录开始时间
   │
   ↓
4. 执行维修
   ├─ 维修人员接单
   ├─ 记录使用的配件
   ├─ 填写配件数量和费用
   ├─ 记录人工费用
   └─ 跟踪维修进度
   │
   ↓
5. 验收归档
   ├─ 记录结束时间
   ├─ 计算总耗时
   ├─ 汇总总费用
   ├─ 更新工单状态
   └─ 归档到历史记录
   │
   ↓
6. 数据分析
   ├─ 成本趋势分析
   ├─ 维修类型分布
   ├─ 效率质量评估
   ├─ 生成优化建议
   └─ 回到1（持续改进）
```

---

## 📊 数据统计

### 示例数据

#### 保养计划（3条）

```typescript
[
  {
    id: 'plan-1',
    equipmentCode: 'TOOL-2024-001',
    equipmentName: '拖拉机',
    planType: '按时间',
    interval: 90,
    intervalUnit: '天',
    lastMaintenanceDate: '2024-09-15',
    nextMaintenanceDate: '2024-12-15',
    status: '正常',
    autoRemind: true,
    maintenanceItems: ['更换机油', '检查刹车系统', '清洁空滤', '润滑传动部件'],
  },
  // ...
]
```

#### 维修记录（7条）

```typescript
[
  {
    id: 'maint-1',
    workOrderNo: 'WO202410150001',
    equipmentCode: 'TOOL-2024-003',
    equipmentName: '收割机',
    maintenanceType: '紧急维修',
    description: '液压系统压力不足...',
    faultLevel: '严重',
    technician: '李维修',
    technicianPhone: '13800138001',
    startTime: '2024-10-10 09:00',
    duration: 14,
    parts: [...],
    laborCost: 1400,
    totalCost: 2430,
    paymentStatus: '未结算',
    status: '进行中',
  },
  // ...
]
```

---

## 💡 使用场景

### 场景1：定期保养管理

**需求**：设备需要定期保养，避免遗漏

**操作流程**：
1. 点击"新建保养计划"
2. 选择设备：拖拉机
3. 计划类型：按时间
4. 保养间隔：每90天
5. 开启自动提醒
6. 填写保养内容：更换机油、检查刹车系统等
7. 保存计划

**系统自动**：
- 监控到期时间
- 提前7天提醒
- 逾期标红预警
- 生成待办任务

**结果**：
- ✅ 不会遗漏保养
- ✅ 设备保持良好状态
- ✅ 延长使用寿命

---

### 场景2：紧急维修处理

**需求**：收割机突然故障，需要紧急维修

**操作流程**：
1. 点击"创建维修工单"
2. 填写信息：
   - 设备：收割机 (TOOL-2024-003)
   - 维修类型：紧急维修
   - 故障等级：严重
   - 故障描述：液压系统压力不足，出现异响
   - 维修人员：李维修 (13800138001)
   - 开始时间：2024-10-10 09:00
3. 保存工单，状态"进行中"

4. 维修过程记录：
   - 添加配件：液压密封圈套装 x1 ¥350
   - 添加配件：液压油 x20 ¥600
   - 添加配件：油管接头 x2 ¥80
   - 人工费用：¥1400
   - 总计：¥2430

5. 维修完成：
   - 记录结束时间：2024-10-12 16:00
   - 总耗时：14小时
   - 更新状态：已完成

**结果**：
- ✅ 完整记录维修过程
- ✅ 费用明细清晰
- ✅ 可追溯可查询

---

### 场景3：成本控制分析

**需求**：分析维修成本，控制支出

**操作流程**：
1. 查看"维修历史档案"
   - 总维修次数：7次
   - 累计费用：¥11,500
   - 平均时长：6.2h

2. 查看"维修成本趋势"
   - 发现10月费用较高：¥4,120
   - 对比9月：¥3,430

3. 查看"维修类型分布"
   - 紧急维修：2次（占29%）
   - 定期保养：3次（占43%）
   - 预防性维修：2次（占29%）

4. 分析问题：
   - 紧急维修比例偏高
   - 应增加预防性维修
   - 减少突发故障

5. 制定改进措施：
   - 增加巡检频次
   - 严格执行保养计划
   - 提前更换易损件

**结果**：
- ✅ 找到成本控制点
- ✅ 制定改进措施
- ✅ 降低维修支出

---

## 🎓 最佳实践

### 保养计划管理

1. **合理设定间隔**
   - 参考设备说明书
   - 结合实际使用强度
   - 不同季节不同频次

2. **完善保养内容**
   - 列出详细检查项目
   - 标注重点部位
   - 记录标准参数

3. **开启自动提醒**
   - 避免遗漏
   - 提前安排人员
   - 准备保养材料

---

### 维修工单管理

1. **及时创建工单**
   - 发现故障立即创建
   - 详细记录故障现象
   - 准确评估故障等级

2. **完整记录过程**
   - 记录每个配件
   - 准确填写数量和价格
   - 计算人工费用

3. **规范验收流程**
   - 测试维修效果
   - 记录结束时间
   - 更新设备状态

---

### 成本控制

1. **定期分析报表**
   - 每月查看成本趋势
   - 对比预算执行情况
   - 识别异常支出

2. **优化维修策略**
   - 增加预防性维修
   - 减少紧急维修
   - 降低整体成本

3. **建立配件库**
   - 常用配件储备
   - 紧急情况快速响应
   - 批量采购降低成本

---

## ✅ 功能检查清单

### 页面显示
- [ ] 功能说明卡片正确显示
- [ ] 4个概览卡片正确显示数量
- [ ] 快捷操作4个按钮可见
- [ ] 保养计划表格11列完整
- [ ] 维修工单表格11列完整
- [ ] 历史档案3个指标正确
- [ ] 2个分析图表正常显示
- [ ] 4个效率评估卡片显示
- [ ] 功能闭环流程图显示

### 数据准确性
- [ ] 逾期保养数量统计正确
- [ ] 即将到期数量统计正确
- [ ] 维修中工单数量正确
- [ ] 本月完成数量正确
- [ ] 剩余天数计算准确
- [ ] 费用汇总计算正确
- [ ] 平均时长计算准确

### 功能交互
- [ ] "创建维修工单"按钮有效
- [ ] "新建保养计划"按钮有效
- [ ] "批量导出"按钮有效
- [ ] "下载报表"按钮有效
- [ ] 表格筛选按钮有效
- [ ] "查看详情"按钮有效
- [ ] "执行保养"按钮有效
- [ ] "完成工单"按钮有效

---

## 🔮 后续优化方向

### 短期优化（1个月）
1. 实现保养计划创建对话框
2. 实现维修工单创建对话框
3. 添加批量导出功能
4. 实现高级查询功能
5. 添加打印工单功能

### 中期优化（3个月）
1. 自动提醒功能实现
2. 短信/邮件通知
3. 移动端查看工单
4. 配件库存管理
5. 维修知识库

### 长期优化（6个月）
1. AI智能诊断
2. 预测性维护
3. AR远程指导
4. 区块链溯源
5. 大数据分析

---

## 📝 技术实现

### 数据接口

```typescript
interface MaintenancePlan {
  id: string;
  equipmentCode: string;
  equipmentName: string;
  planType: '按时间' | '按工作量';
  interval: number;
  intervalUnit: '天' | '小时';
  lastMaintenanceDate: string;
  nextMaintenanceDate: string;
  status: '正常' | '即将到期' | '逾期';
  autoRemind: boolean;
  currentUsage?: number;
  maintenanceItems?: string[];
}

interface MaintenanceRecord {
  id: string;
  workOrderNo: string;
  equipmentCode: string;
  equipmentName: string;
  maintenanceType: '定期保养' | '紧急维修' | '预防性维修';
  description: string;
  faultLevel?: '轻微' | '一般' | '严重';
  technician: string;
  technicianPhone?: string;
  startTime: string;
  endTime?: string;
  duration: number;
  parts: Array<{
    name: string;
    quantity: number;
    cost: number;
  }>;
  laborCost: number;
  totalCost: number;
  paymentStatus?: '未结算' | '已结算';
  status: '待处理' | '进行中' | '已完成';
}
```

### 关键计算

**剩余天数**：
```typescript
const daysLeft = Math.ceil(
  (new Date(plan.nextMaintenanceDate).getTime() - new Date().getTime()) 
  / (1000 * 60 * 60 * 24)
);
```

**距今天数**：
```typescript
const daysAgo = Math.ceil(
  (new Date().getTime() - new Date(plan.lastMaintenanceDate).getTime()) 
  / (1000 * 60 * 60 * 24)
);
```

**平均时长**：
```typescript
const avgDuration = maintenanceRecords.reduce((sum, r) => sum + r.duration, 0) 
  / maintenanceRecords.length;
```

---

**文档版本**: v1.0.0  
**最后更新**: 2024-10-22  
**维护人员**: 系统开发团队  
**状态**: ✅ 功能完成
