Преглед изворни кода

feat(camera): update camera control API endpoints and add preset management functions

- Changed camera control API paths to use '/camera/control' for better organization.
- Added new functions for managing PTZ presets, including listing, setting, and removing presets.
- Updated existing camera control functions to align with the new API structure.
yb пре 2 дана
родитељ
комит
4a7f8d4dc7
3 измењених фајлова са 29 додато и 10 уклоњено
  1. 24 4
      src/api/camera.ts
  2. 1 1
      src/api/ptz.ts
  3. 4 5
      vite.config.ts

+ 24 - 4
src/api/camera.ts

@@ -25,7 +25,7 @@ export function listCameras(machineId?: string): Promise<IListResponse<CameraDTO
 
 // 获取摄像头信息
 export function getCamera(cameraId: string): Promise<IBaseResponse<CameraDTO>> {
-  return get(`/camera/${cameraId}`)
+  return get(`/camera/control/${cameraId}`)
 }
 
 // 切换摄像头通道 (MVP核心)
@@ -40,19 +40,39 @@ export function getCurrentChannel(machineId: string): Promise<IBaseResponse<Chan
 
 // 开始PTZ控制 (后台专用)
 export function ptzStart(cameraId: string, action: PTZAction, speed: number = 50): Promise<BaseResponse> {
-  return post(`/camera/${cameraId}/ptz/start`, undefined, {
+  return post(`/camera/control/${cameraId}/ptz/start`, undefined, {
     params: { action, speed }
   })
 }
 
 // 停止PTZ控制 (后台专用)
 export function ptzStop(cameraId: string): Promise<BaseResponse> {
-  return post(`/camera/${cameraId}/ptz/stop`)
+  return post(`/camera/control/${cameraId}/ptz/stop`)
 }
 
 // PTZ 直接控制 (pan/tilt/zoom 方式)
 export function ptzDirectControl(cameraId: string, data: PTZControlRequest): Promise<BaseResponse> {
-  return post(`/camera/${cameraId}/ptz/control`, data)
+  return post(`/camera/control/${cameraId}/ptz/control`, data)
+}
+
+// 获取预置位列表 (PTZ后端)
+export function presetList(cameraId: string): Promise<BaseResponse> {
+  return get(`/camera/control/${cameraId}/preset/list`)
+}
+
+// 跳转到预置位 (PTZ后端)
+export function presetGoto(cameraId: string, presetId: number): Promise<BaseResponse> {
+  return post(`/camera/control/${cameraId}/preset/goto`, { presetId })
+}
+
+// 设置预置位 (PTZ后端)
+export function presetSet(cameraId: string, presetId: number, presetName?: string): Promise<BaseResponse> {
+  return post(`/camera/control/${cameraId}/preset/set`, { presetId, presetName })
+}
+
+// 删除预置位 (PTZ后端)
+export function presetRemove(cameraId: string, presetId: number): Promise<BaseResponse> {
+  return post(`/camera/control/${cameraId}/preset/remove`, { presetId })
 }
 
 // ==================== Admin APIs ====================

+ 1 - 1
src/api/ptz.ts

@@ -32,7 +32,7 @@ export interface PTZResult {
 
 // ==================== 常量 ====================
 
-const PTZ_API_BASE = 'http://localhost:3002'
+const PTZ_API_BASE = '/camera/control'
 const DEFAULT_SPEED = 50
 
 // 方向预设值 (单位向量)

+ 4 - 5
vite.config.ts

@@ -67,12 +67,11 @@ export default defineConfig({
         changeOrigin: true,
         secure: false // 禁用 SSL 证书验证(开发环境)
       },
-      // 摄像头 PTZ 代理 - 固定 IP(开发环境)
-      '/camera-proxy': {
-        target: 'http://192.168.0.64',
+      // PTZ 摄像头控制
+      '/camera/control': {
+        target: 'http://localhost:3002',
         changeOrigin: true,
-        secure: false,
-        rewrite: (path) => path.replace(/^\/camera-proxy/, '')
+        rewrite: (path) => path.replace(/^\/camera\/control/, '')
       }
     }
   },