Files
smart-crop-ui/src/ALERT_DIALOG_UPDATE_SUMMARY.md

6.1 KiB
Raw Blame History

删除确认弹窗更新总结

已完成更新的文件共6个

1. /components/machinery/driver/DriverList.tsx

  • 修改内容: 驾驶员列表删除确认
  • 状态: 完成
  • 更改: 将 confirm() 替换为 AlertDialog 组件

2. /components/machinery/MachineryList.tsx

  • 修改内容: 农机列表删除确认
  • 状态: 完成
  • 更改: 将 confirm() 替换为 AlertDialog 组件

3. /components/machinery/TagManagement.tsx

  • 修改内容: 标签管理删除确认
  • 状态: 完成
  • 更改: 将 confirm() 替换为 AlertDialog 组件

4. /components/field/FieldList.tsx

  • 修改内容: 地块列表删除确认
  • 状态: 完成
  • 更改: 将 confirm() 替换为 AlertDialog 组件

5. /components/machinery/driver/DriverTask.tsx 🆕

  • 修改内容: 驾驶员任务管理操作确认(接收/取消/完成/终止)
  • 状态: 完成
  • 更改:
    • 接收任务:从无确认 → AlertDialog 确认(绿色)
    • 取消任务:从 confirm() → AlertDialog 确认(红色)
    • 完成任务:从无确认 → AlertDialog 确认(紫色)
    • 终止任务:从无确认 → AlertDialog 确认(橙色)🆕
    • 新增"已终止"任务状态 🆕
    • 添加任务列表分页功能 🆕
  • 详细说明: /TASK_ALERT_DIALOG_UPDATE.md/TASK_TERMINATE_UPDATE.md

⚠️ 待更新的文件共11个

由于文件数量较多,建议分批处理。以下是剩余需要更新的文件列表:

农机管理模块5个

  1. /components/machinery/scheduling/TaskAssignment.tsx

    • 行号: 132
    • 内容: if (confirm('确定要删除此任务吗?'))
  2. /components/machinery/security/GeoFence.tsx

    • 行号: 136
    • 内容: if (confirm('确定要删除此围栏吗?'))
  3. /components/machinery/load/LoadDevice.tsx

    • 行号: 267
    • 内容: if (confirm('确定要拆卸此设备吗?'))
  4. /components/machinery/load/LoadType.tsx

    • 行号: 257
    • 内容: if (confirm('确定要删除此设备类型吗?'))
  5. /components/machinery/MaintenanceRecords.tsx

    • 行号: 115
    • 内容: if (confirm('确定要删除这条维护记录吗?'))
  6. /components/machinery/ChangeHistoryExamples.tsx

    • 行号: 48
    • 内容: if (confirm('确定要清除所有变更历史示例数据吗?'))

配置管理模块6个

  1. /components/config/MenuManagement.tsx

    • 行号: 414
    • 内容: if (!confirm(\确定要删除菜单"${menu.name}"吗?`))`
  2. /components/config/RoleManagement.tsx

    • 行号: 494
    • 内容: if (!confirm('确定要删除该角色吗?'))
  3. /components/config/EmployeeManagement.tsx

    • 行号: 184, 205
    • 内容:
      • if (!confirm('确定要删除该员工吗?'))
      • if (!confirm(\确定要重置 ${employee.name} 的密码吗?`))`
  4. /components/config/UserManagement.tsx

    • 行号: 189, 210
    • 内容:
      • if (!confirm('确定要删除该用户吗?'))
      • if (!confirm(\确定要重置 ${user.name} 的密码吗?`))`
  5. /components/config/PermissionManagement.tsx

    • 行号: 337
    • 内容: if (!confirm("确定要删除该权限吗?"))
  6. /components/config/MessageSend.tsx

    • 行号: 274, 284
    • 内容:
      • if (!confirm('确定要取消该定时消息吗?'))
      • if (!confirm('确定要删除该发送记录吗?'))

📝 更新模板

每个文件需要进行以下4个步骤的修改

步骤1: 导入 AlertDialog 组件

import {
  AlertDialog,
  AlertDialogAction,
  AlertDialogCancel,
  AlertDialogContent,
  AlertDialogDescription,
  AlertDialogFooter,
  AlertDialogHeader,
  AlertDialogTitle,
} from '../ui/alert-dialog'; // 或 '../../ui/alert-dialog'

步骤2: 添加状态管理

const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
const [deletingId, setDeletingId] = useState<string>('');

const handleDeleteClick = (id: string) => {
  setDeletingId(id);
  setDeleteDialogOpen(true);
};

const confirmDelete = () => {
  // 原来的删除逻辑
  onDelete(deletingId);
  setDeleteDialogOpen(false);
  setDeletingId('');
};

步骤3: 替换 onClick 事件

// 旧代码
onClick={() => {
  if (confirm('确定要删除吗?')) {
    handleDelete(id);
  }
}}

// 新代码
onClick={() => handleDeleteClick(id)}

步骤4: 添加 AlertDialog 组件

<AlertDialog open={deleteDialogOpen} onOpenChange={setDeleteDialogOpen}>
  <AlertDialogContent>
    <AlertDialogHeader>
      <AlertDialogTitle>确认删除</AlertDialogTitle>
      <AlertDialogDescription>
        确定要删除这条记录吗?此操作无法撤销。
      </AlertDialogDescription>
    </AlertDialogHeader>
    <AlertDialogFooter>
      <AlertDialogCancel>取消</AlertDialogCancel>
      <AlertDialogAction
        className="bg-red-600 hover:bg-red-700"
        onClick={confirmDelete}
      >
        删除
      </AlertDialogAction>
    </AlertDialogFooter>
  </AlertDialogContent>
</AlertDialog>

🎯 下一步操作建议

  1. 优先级1用户交互频繁:

    • TaskAssignment.tsx
    • LoadDevice.tsx
    • MaintenanceRecords.tsx
  2. 优先级2管理功能:

    • RoleManagement.tsx
    • UserManagement.tsx
    • EmployeeManagement.tsx
  3. 优先级3其他:

    • 剩余文件

🔍 验证清单

更新完成后,请验证:

  • AlertDialog 样式显示正常
  • 取消按钮功能正常
  • 删除按钮功能正常
  • 删除操作执行成功
  • Toast 提示显示正常
  • 没有控制台错误

💡 注意事项

  1. 多操作场景: 有些文件(如 EmployeeManagement、UserManagement、MessageSend有多个 confirm 操作,需要:

    • 区分不同操作类型(删除、重置密码、取消等)
    • 可以使用不同的状态变量或操作类型标识
  2. 特殊提示语: 保持原有的个性化提示信息(如包含名称、数量等动态内容)

  3. 样式一致性: 所有删除类操作使用红色按钮(bg-red-600 hover:bg-red-700

  4. 对话框位置: AlertDialog 组件通常放在主容器的末尾return 语句的最后部分