# 🔄 数据重置功能使用指南
## 📅 更新时间
2025-10-16
## 🎯 问题说明
当修改了示例数据(如将第7条任务状态改为"已取消")后,如果浏览器 localStorage 中已经保存了旧数据,页面不会自动显示新的示例数据。
### 为什么看不到变化?
```typescript
// 数据加载逻辑
const tasksData = localStorage.getItem('smart_agriculture_driver_tasks');
if (tasksData) {
// ❌ 如果 localStorage 有数据,直接加载旧数据
setTasks(JSON.parse(tasksData));
} else {
// ✅ 只有 localStorage 为空时,才加载新的示例数据
setTasks(mockTasks);
}
```
**原因**:
- localStorage 保存了旧的任务数据
- 代码优先从 localStorage 加载,不会重新加载示例数据
- 需要清除 localStorage 才能看到新数据
## ✨ 解决方案
### 方案1: 使用重置按钮(推荐)⭐
我已经在驾驶员任务管理页面添加了"重置示例数据"按钮!
#### 使用步骤:
```
1️⃣ 进入"驾驶员任务管理"页面
2️⃣ 点击右上角"重置示例数据"按钮
3️⃣ 页面自动刷新,显示最新示例数据
```
#### 按钮位置:
```
┌────────────────────────────────────────────────┐
│ 驾驶员任务管理 [重置示例数据] [创建任务] │
│ 创建、分配和跟踪驾驶员作业任务 ↑ ↑ │
│ 新增按钮 原有按钮 │
└────────────────────────────────────────────────┘
```
#### 功能说明:
```typescript
const handleResetData = () => {
// 1. 清除 localStorage 中的任务数据
localStorage.removeItem('smart_agriculture_driver_tasks');
// 2. 重新加载数据(会加载最新示例数据)
loadData();
// 3. 显示成功提示
toast.success('示例数据已重置');
};
```
**效果**:
- ✅ 一键清除旧数据
- ✅ 自动加载新示例数据
- ✅ 显示成功提示
- ✅ 立即看到更新
### 方案2: 浏览器控制台
如果你想手动清除数据:
#### 步骤:
1. **打开浏览器开发者工具**
- Windows: `F12` 或 `Ctrl + Shift + I`
- Mac: `Cmd + Option + I`
2. **切换到 Console 标签**
3. **执行清除命令**
```javascript
localStorage.removeItem('smart_agriculture_driver_tasks');
```
4. **刷新页面**
- `F5` 或 `Ctrl + R`
#### 效果:
```
Before: 显示旧数据(task-7 状态为"进行中")
After: 显示新数据(task-7 状态为"已取消")
```
### 方案3: 清除所有 localStorage
**警告**: 这会清除所有保存的数据!
```javascript
// 清除所有 localStorage 数据
localStorage.clear();
```
**影响范围**:
- ❌ 任务数据
- ❌ 驾驶员数据
- ❌ 农机数据
- ❌ 地块数据
- ❌ 用户登录状态
- ❌ 所有其他保存的数据
**不推荐**,除非你想完全重置系统。
## 📊 第7条任务更新详情
### 修改内容
| 字段 | 修改前 | 修改后 |
|------|--------|--------|
| 状态 | 进行中 | **已取消** |
| 注释 | 进行中任务(有问题上报) | **已取消任务(有问题上报)** |
### 任务信息
```typescript
{
id: 'task-7',
taskNumber: 'T202510160007',
driverName: '周九',
machineryName: '约翰迪尔拖拉机',
fieldName: '南七地块',
operationType: '灌溉',
description: '滴灌作业,确保灌溉均匀',
status: '已取消', // ← 已更新
issues: [
{
type: '设备故障',
description: '滴灌管道出现破损,需要更换'
}
]
}
```
### 预期显示
重置数据后,第7条任务应该显示:
```
┌────────────────────────────────────────────────────┐
│ T202510160007 │ 周九 │ 约翰迪尔拖拉机 │ 南七地块 │
│ 灌溉 │ 10-16 06:00 │ - │ 中 🟡 │
│ 已取消 🔴 │ ⚠️ 1个待处理问题 │
└────────────────────────────────────────────────────┘
```
**状态徽章**:
```tsx
已取消
```
## 🎯 使用场景对比
### 场景1: 查看示例数据更新
**目标**: 查看第7条任务状态已改为"已取消"
**操作**:
```
1. 点击"重置示例数据"按钮
2. 查看任务列表第7条
3. 确认状态显示为"已取消" 🔴
```
**优势**:
- ✅ 快速简单
- ✅ 一键操作
- ✅ 有成功提示
- ✅ 不影响其他数据
### 场景2: 开发测试
**目标**: 反复测试功能,需要重置数据
**操作**:
```
1. 进行各种操作(创建、修改任务)
2. 想要恢复到初始状态
3. 点击"重置示例数据"
4. 数据恢复到示例状态
```
**优势**:
- ✅ 快速恢复初始状态
- ✅ 无需刷新页面
- ✅ 立即生效
- ✅ 保留其他数据
### 场景3: 演示展示
**目标**: 向他人展示系统,需要干净的示例数据
**操作**:
```
1. 演示前点击"重置示例数据"
2. 获得完整的示例数据
3. 开始演示
```
**优势**:
- ✅ 数据完整规范
- ✅ 展示效果好
- ✅ 各种状态都有
- ✅ 包含问题示例
## 📁 修改文件
### 核心文件
1. ✅ `/components/machinery/driver/DriverTask.tsx`
- 新增 `handleResetData()` 函数
- 在页面顶部添加"重置示例数据"按钮
### 代码变更
```typescript
// 新增重置函数
const handleResetData = () => {
localStorage.removeItem('smart_agriculture_driver_tasks');
loadData();
toast.success('示例数据已重置');
};
// 新增按钮
```
## 💡 最佳实践
### 1. 何时使用重置功能
**适合使用**:
- ✅ 代码更新了示例数据
- ✅ 数据测试后想恢复
- ✅ 演示前准备
- ✅ 学习系统功能
**不需要使用**:
- ❌ 正常创建/修改任务
- ❌ 日常使用系统
- ❌ 数据没有问题时
### 2. 数据安全提示
**重置功能只影响**:
- ✅ 驾驶员任务数据
- ✅ localStorage 中的任务列表
**不影响**:
- ✅ 驾驶员档案
- ✅ 农机档案
- ✅ 地块信息
- ✅ 其他系统数据
### 3. 重置后的数据
重置后会加载完整的示例数据,包含:
| 状态类型 | 数量 | 说明 |
|---------|------|------|
| 待接收 | 3条 | 展示任务分配流程 |
| 已接收 | 1条 | 展示接收状态 |
| 进行中 | 2条 | 展示执行状态 |
| 已取消 | 3条 | 展示取消场景(包含task-7)|
| 已完成 | 3条 | 展示完成记录 |
**特殊示例**:
- ✅ task-7: 已取消 + 设备故障问题
- ✅ task-11: 已取消 + 天气问题
- ✅ task-12: 已取消 + 地块问题
## 🐛 常见问题
### Q1: 点击重置按钮后没有变化?
**A**: 检查以下几点:
1. **刷新页面**
```
按 F5 或 Ctrl+R 刷新
```
2. **检查控制台**
```
打开 F12,查看是否有错误
```
3. **确认 localStorage 已清除**
```javascript
// 在控制台检查
localStorage.getItem('smart_agriculture_driver_tasks')
// 应该返回 null
```
### Q2: 重置后数据还是旧的?
**A**: 可能是缓存问题:
1. **硬刷新页面**
```
Ctrl + Shift + R (Windows)
Cmd + Shift + R (Mac)
```
2. **清除���览器缓存**
```
设置 → 隐私和安全 → 清除浏览数据
```
### Q3: 重置会丢失我创建的任务吗?
**A**: 是的!重置会清除所有任务数据。
**解决方案**:
- 重置前导出重要数据
- 或者不使用重置功能
- 手动修改需要的任务
### Q4: 能否只重置某一条数据?
**A**: 当前重置功能会清除所有任务数据。
**替代方案**:
- 在任务列表中找到 task-7
- 手动编辑状态改为"已取消"
- 或者使用浏览器开发工具手动修改 localStorage
### Q5: 其他页面有重置功能吗?
**A**: 目前只在驾驶员任务管理页面添加了重置功能。
**其他数据重置**:
```javascript
// 驾驶员数据
localStorage.removeItem('smart_agriculture_drivers');
// 农机数据
localStorage.removeItem('smart_agriculture_machinery');
// 地块数据
localStorage.removeItem('smart_agriculture_fields');
```
## ✅ 验证清单
### 功能验证
- [x] "重置示例数据"按钮正常显示
- [x] 点击按钮后清除 localStorage
- [x] 自动加载新示例数据
- [x] 显示成功提示消息
- [x] 任务列表立即更新
### 数据验证
- [x] task-7 状态显示为"已取消"
- [x] 状态徽章颜色为红色
- [x] 包含设备故障问题
- [x] 其他任务数据完整
- [x] 总共12条示例数据
### 视觉验证
- [x] 按钮位于页面右上角
- [x] 使用 outline 样式
- [x] 尺寸为 sm
- [x] 与"创建任务"按钮对齐
- [x] 间距合适
## 🎉 总结
现在你有两种方式查看第7条任务的更新:
### 推荐方式 ⭐
```
1. 进入"驾驶员任务管理"页面
2. 点击右上角"重置示例数据"按钮
3. 立即看到 task-7 状态为"已取消" 🔴
```
### 手动方式
```
1. 打开浏览器控制台 (F12)
2. 执行: localStorage.removeItem('smart_agriculture_driver_tasks')
3. 刷新页面 (F5)
```
**第7条任务更新内容**:
- ✅ 状态: 进行中 → **已取消**
- ✅ 原因: 设备故障(滴灌管道破损)
- ✅ 徽章: 🔴 红色"已取消"
- ✅ 问题: ⚠️ 1个待处理问题
现在点击"重置示例数据"按钮,就能看到更新后的第7条任务了!🎊
---
**更新人**: AI助手
**更新日期**: 2025-10-16
**版本**: v1.0
**影响范围**: 驾驶员任务管理页面