2026-07-16-manual-entry-exit-design.md 4.8 KB

手动进出场操作页面 — 设计文档

日期:2026-07-16 | 优先级:P0-2

1. 目标

为岗亭操作员提供手动进出场操作页面,作为 RFID 自动识别的备用兜底。当 UHF 标签损坏、无标签车辆进入、或 RFID 系统故障时,操作员手动输入车牌/RFID 完成进出场。

2. 使用场景

  • 主要场景:RFID 不可用时的备用操作(低频)
  • 用户:管理员(888)、操作员(618)
  • 菜单位置:停车管理 → 进出场操作

3. 页面结构

进出场操作
├── Tab:车辆进场 | 车辆出场
│
├── 输入区
│   ├── 车牌号输入框
│   ├── RFID 标签输入框
│   └── 查询按钮
│
├── 车辆详情卡片(查询后显示)
│   ├── 车牌号、车辆类型、车主名
│   ├── 当前在场状态
│   └── 进场/出场特有信息
│
└── 操作区
    ├── 进场:停车场下拉选择 + 确认进场按钮
    └── 出场:费用信息 + 收费方式 + 确认出场按钮

4. 进场流程

输入车牌/RFID → 查询车辆
  ├─ 找到车辆 → 显示详情,检查是否已入场
  │   ├─ 已入场 → 提示"该车辆已在场内"
  │   └─ 未入场 → 选择停车场 → 确认进场
  └─ 未找到 → 提示"未找到车辆,将按临时车入场"
      └─ 选择停车场 → 确认进场

确认进场 → POST /vehicle/entry
  ├─ 成功 → 提示"入场成功",显示入场时间,清空表单
  └─ 失败 → 提示错误原因

涉及 API

接口 用途
GET /vehicle/get-by-plate?plate_number= 根据车牌查询车辆信息
GET /parking/lot/list 获取停车场下拉列表
POST /vehicle/entry 执行入场

5. 出场流程

输入车牌/RFID → 查询车辆
  ├─ 找到车辆 → 检查是否有未出场记录
  │   ├─ 无未出场记录 → 提示"该车辆不在场内"
  │   └─ 有未出场记录 → 显示计费信息
  │       ├─ 进场时间
  │       ├─ 停留时长
  │       ├─ 费用金额
  │       ├─ 收费方式选择(现金/扫码/免密,本次先做现金)
  │       └─ 确认出场
  └─ 未找到 → 提示"未找到车辆信息"

确认出场 → POST /vehicle/exit
  ├─ 成功 → 提示"出场成功",显示费用,清空表单
  └─ 失败 → 提示错误原因

涉及 API

接口 用途
GET /vehicle/get-by-plate?plate_number= 根据车牌查询车辆信息
POST /vehicle/exit 执行出场(返回 fee、stayTime、entryTime、exitTime)

6. 技术实现

前端

说明
框架 Vue 3 + Composition API
组件库 Element Plus(el-tabs、el-form、el-input、el-select、el-button、el-descriptions)
API 封装 复用 src/api/vehicle.js 已有的 vehicleEntryvehicleAppearobtainVehicleLicense
文件位置 frontend/src/view/parking/entryExit.vue
路由 后端菜单表中新增记录,前端通过动态路由自动加载

后端

无需修改。已有 API 全部就绪:

  • VehicleEntry / VehicleExit handler 在 internal/api/v1/vehicle/vehicle.go
  • 计费逻辑在 internal/service/vehicle/vehicle.gocalculateFee()
  • PassageService 已抽取公共逻辑(internal/service/parking/passage.go

涉及文件变更

文件 操作 说明
frontend/src/view/parking/entryExit.vue 新增 进出场操作页面
frontend/src/api/vehicle.js 不改 已有 entry/exit API
internal/initialize/seed.go 修改 新增菜单记录 + Casbin 规则
后端其他文件 不改 API 已就绪

7. 边界情况

场景 处理方式
输入为空时点查询 前端校验,至少填一个(车牌或 RFID)
车牌和 RFID 都填 优先用车牌号查询
查到的车辆已进场 进场 Tab:提示"车辆已入场,请切换到出场";出场 Tab:正常显示费用
查到的车辆不在场内 进场 Tab:允许入场;出场 Tab:提示"车辆不在场内"
车辆不存在(新临时车) 进场 Tab:自动创建临时车记录后入场;出场 Tab:提示未找到
未选停车场点确认进场 前端校验,提示"请选择停车场"
API 调用失败 显示后端返回的错误信息

8. 后续扩展预留

  • 关联 UHF 实时扫描:页面预留"最近扫描"区域,显示 DeviceManager 推送的标签列表,点击自动填入
  • 收费方式:当前写死现金,后续对接 P0-3 收费模块后,支持扫码/免密
  • 抓拍图片VehicleEntry/VehicleExit 已有 EntryImage/ExitImage 字段,页面后续可加拍照上传