# warehouse 客户端改造方案 v1.0 > **版本**: 1.0 > **日期**: 2025-05-17 > **现状**: warehouse 大屏客户端使用硬编码 Mock 数据,尚未对接网关 > **目标**: 所有子系统(视频/IoT/告警/地图)通过 IntegrationGateway 获取真实数据 --- ## 1. 仓库客户端现状分析 ### 1.1 技术栈 | 层面 | 选型 | |------|------| | 框架 | Vue 3 + TypeScript + Vite | | UI | Element Plus | | 图表 | ECharts | | 实时通信 | SignalR | | 3D 地图 | VgoMap SDK | | HTTP | Axios(`api/http.js`) | | 状态管理 | Pinia + Vuex | | API 基址 | `window.apiConfig.baseURL`(默认 `http://localhost:9100`) | ### 1.2 页面清单与数据现状 | 页面 | 文件 | 当前数据源 | 需改造 | |------|------|------|:---:| | 3D 地图 | `view/Map.vue` | VgoMap SDK,无设备标记 | ✅ | | 数据大屏 | `view/DataView.vue` | VolPro API(安全提示等)+ Mock | ✅ | | 实时视频 | `view/video/Live.vue` | **硬编码 5 个 Mock 摄像头** | ✅ | | 视频墙 | `view/video/VideoWall.vue` | 需查看 | ❓ | | 录像回放 | `view/video/History.vue` | 需查看 | ❓ | | 设备详情 | `view/DeviceInfo.vue` | Props 传入 Mock 数据 | ✅ | | 环境变量 | `view/environment/EnvVarManagement.vue` | 需查看 | ✅ | | 紧急报警 | `view/emergency-alarm/EmergencyAlarmRecord.vue` | Mock / VolPro API | ✅ | | 入侵报警 | `view/intrusion-alarm/AlarmRecord.vue` | Mock | ✅ | | 门禁 | `view/access/AccessRecord.vue` | Mock | ⏭️ Phase 3 | | 巡更 | `view/patrol/` | Mock | ⏭️ Phase 3 | | 钥匙 | `view/key/` | Mock | ⏭️ Phase 3 | | 车辆 | `view/carmanager/` | Mock | ⏭️ Phase 3 | | 访客 | `view/visitor/` | Mock | ⏭️ Phase 3 | | 无人机 | `view/drone/` | Mock | ⏭️ Phase 3 | | 对讲 | `view/intercom/` | Mock | ⏭️ Phase 3 | ### 1.3 HTTP 层现状 `api/http.js` 封装了 Axios,通过 `window.apiConfig.baseURL` 配置后端地址(默认 `http://localhost:9100`),支持 POST/GET 两种方式,自动附带 JWT Token。网关接口(`:5100`)和 Vol.Pro 接口(`:9100`)同域还是跨域取决于部署架构。 --- ## 2. 数据流改造 ### 2.1 架构决策:直连网关 vs 经 Vol.Pro 中转 | 方案 | 路径 | 优点 | 缺点 | |------|------|------|------| | A. 直连网关 | warehouse → GW(:5100) | 延迟低,零额外开发 | 需网关暴露 CORS | | B. 经 Vol.Pro 中转 | warehouse → VP(:9100) → GW(:5100) | 统一鉴权,网关不外露 | 延迟 +1 跳,需写 Controller | **推荐方案 A**:warehouse 客户端与大屏同一网络,网关开 CORS 即可。视频流和实时数据对延迟敏感,不宜多一跳。 ### 2.2 服务路由总览 ``` warehouse 客户端 ├── Vol.Pro API (axios baseURL) → http://localhost:9100 (权限/字典/CRUD) └── 网关 B 接口 (直接 fetch) → http://localhost:5100 (设备/视频/IoT/告警) ``` --- ## 3. 逐页面改造方案 ### 3.1 实时视频(Live.vue) **现状**:硬编码 5 个 Mock 摄像机,无真实流 **改造**: 1. 页面加载时调用网关 `GET /api/gateway/devices?adapter=Owl:main&page=1&size=100` 2. 摄像机列表从 `StandardDevice[]` 映射到 `Camera[]` 接口 3. 选中摄像机后调用 `GET /api/gateway/streams/{adapterCode}/{sourceId}/live` 获取 WS-FLV 地址 4. 用 `