Workbench 模块重构总结

完成时间

2026年2月12日

重构内容

1. 文件重命名(添加 LS 前缀)

所有新增的文件都已添加 LS 前缀,符合项目命名规范:

视图控制器文件

  • VehicleManagementViewController.swift → LSVehicleManagementViewController.swift
  • VehicleDetailViewController.swift → LSVehicleDetailViewController.swift
  • StationMapViewController.swift → LSStationMapViewController.swift
  • TrainingViewController.swift → LSTrainingViewController.swift
  • ExamViewController.swift → LSExamViewController.swift
  • AccidentReportViewController.swift → LSAccidentReportViewController.swift

2. 类名更新(添加 LS 前缀)

所有类定义都已更新为带 LS 前缀:

视图控制器类

  • VehicleManagementViewController → LSVehicleManagementViewController
  • VehicleDetailViewController → LSVehicleDetailViewController
  • StationMapViewController → LSStationMapViewController
  • TrainingViewController → LSTrainingViewController
  • ExamViewController → LSExamViewController
  • AccidentReportViewController → LSAccidentReportViewController

自定义视图类(在 LSWorkbenchViewController.swift 中)

  • ReportCardView → LSReportCardView
  • VehicleManagementView → LSVehicleManagementView
  • StationMapView → LSStationMapView

Cell 类

  • VehicleManagementCell → LSVehicleManagementCell

3. 路由系统重构

迁移到 TheRouter 框架

  • ✅ 删除了自定义的 LSRouter.swift
  • ✅ 使用项目标准的 TheRouter 框架
  • ✅ 在 WorkbenchRouter.swift 中注册所有工作台路由
  • ✅ 提供便捷的静态方法进行页面跳转

路由注册

所有工作台相关路由都在 WorkbenchRouter.registerWorkbenchRouter() 中注册:

路由路径 页面 便捷方法
app://WorkbenchRouter/vehicleManagement LSVehicleManagementViewController WorkbenchRouter.openVehicleManagement()
app://WorkbenchRouter/vehicleDetail LSVehicleDetailViewController WorkbenchRouter.openVehicleDetail(vehicleId:)
app://WorkbenchRouter/stationMap LSStationMapViewController WorkbenchRouter.openStationMap()
app://WorkbenchRouter/training LSTrainingViewController WorkbenchRouter.openTraining()
app://WorkbenchRouter/exam LSExamViewController WorkbenchRouter.openExam()
app://WorkbenchRouter/accidentReport LSAccidentReportViewController WorkbenchRouter.openAccidentReport()

路由使用示例

// 跳转到车辆管理
WorkbenchRouter.openVehicleManagement()

// 跳转到车辆详情(带参数)
WorkbenchRouter.openVehicleDetail(vehicleId: "NO.0088")

参数接收

所有 ViewController 都实现了 TheRouterable 协议来接收路由参数:

@objcMembers
class LSVehicleDetailViewController: LSBaseViewController, TheRouterable {
    
    static var patternString: [String] {
        [WorkbenchRouter.Path.vehicleDetail]
    }
    
    var vehicleId: String?  // TheRouter 会自动注入参数
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 直接使用 vehicleId,无需手动获取
    }
}

TheRouter 会自动将 userInfo 中的参数注入到对应的属性中。

4. 目录结构

所有 Workbench 相关代码都位于正确的目录下:

LSCarHome/LSCarHome/
├── Core/
│   └── Router/
│       ├── AppRouter.swift
│       ├── WorkbenchRouter.swift      # 工作台路由(新增)
│       ├── UserRouter.swift
│       ├── TaskCenterRouter.swift
│       └── RouterGuide.md             # 路由使用指南(新增)
└── Modules/
    └── Workbench/
        ├── Controllers/
        │   └── LSWorkbenchViewController.swift
        ├── Models/
        │   └── WorkbenchModel.swift
        ├── ViewModels/
        │   └── WorkbenchViewModel.swift
        └── Views/
            ├── Accident/
            │   └── LSAccidentReportViewController.swift
            ├── Exam/
            │   └── LSExamViewController.swift
            ├── Station/
            │   └── LSStationMapViewController.swift
            ├── Training/
            │   └── LSTrainingViewController.swift
            ├── VehicleManagement/
            │   ├── LSVehicleManagementViewController.swift
            │   └── LSVehicleDetailViewController.swift
            ├── LSCarStatusView.swift
            ├── LSCustomPercentView.swift
            ├── LSExamView.swift
            ├── LSMapView.swift
            ├── LSTrainingView.swift
            └── LSVehicleCardView.swift

5. 代码验证

✅ 所有文件编译通过,无语法错误
✅ 所有类名引用已更新
✅ 路由系统已迁移到 TheRouter
✅ 路由跳转功能正常
✅ 参数传递功能正常
✅ 符合项目命名规范

6. 已实现的功能

  • ✅ 工作台页面 -> 车辆管理更多按钮 -> 车辆管理列表页
  • ✅ 车辆管理列表 -> 点击车辆卡片 -> 车辆详情页
  • ✅ 车辆详情页接收 vehicleId 参数

注意事项

  1. 所有新增的类和文件都必须添加 LS 前缀
  2. Workbench 模块的所有代码都应该在 Modules/Workbench 目录下
  3. 路由相关代码位于 Core/Router 目录下
  4. 使用 LSBaseViewController 作为所有 ViewController 的基类
  5. 使用 TheRouter 框架进行页面跳转
  6. 路由路径格式:app://ModuleRouter/pageName
  7. 使用便捷方法进行跳转,代码更清晰易维护

下一步工作

  • ⏳ 实现站点地图页面的跳转
  • ⏳ 实现培训课程页面的跳转
  • ⏳ 实现考试考核页面的跳转
  • ⏳ 实现事故上报页面的跳转