From 686fe4edca8d224e0db90033406c1bf348b7d062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Mon, 30 Jun 2025 14:23:13 +0800 Subject: [PATCH] =?UTF-8?q?tplink=E6=91=84=E5=83=8F=E5=A4=B4=E5=8F=98?= =?UTF-8?q?=E7=84=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/iot/tplink/camera/camera.api.ts | 14 ++++ .../camera/components/CameraLeftTree.vue | 46 +++++-------- .../camera/components/CameraPreviewForm.vue | 67 ++++++++++++++++++- .../camera/components/CameraPreviewModal.vue | 5 ++ 4 files changed, 102 insertions(+), 30 deletions(-) diff --git a/src/views/iot/tplink/camera/camera.api.ts b/src/views/iot/tplink/camera/camera.api.ts index 50e1e82..a04d781 100644 --- a/src/views/iot/tplink/camera/camera.api.ts +++ b/src/views/iot/tplink/camera/camera.api.ts @@ -6,6 +6,7 @@ enum Api { syncProject = '/iot/tplink/projectInfo/sync', syncRegion = '/iot/tplink/regionInfo/sync', list = '/iot/tplink/cameraInfo/list', + syncProjectIpcDevice = '/iot/tplink/cameraInfo/syncProjectIpcDevice', ipcCapability = '/iot/tplink/cameraInfo/getIpcCapability', nuList = '/iot/tplink/cameraInfo/nuList', edit = '/iot/tplink/cameraInfo/edit', @@ -38,6 +39,7 @@ enum Api { uploadToServer = '/iot/tplink/cameraInfo/uploadToServer', stopUploadToServer = '/iot/tplink/cameraInfo/stopUploadToServer', getUploadToServerProcess = '/iot/tplink/cameraInfo/getUploadToServerProcess', + motionCtrl = '/iot/tplink/cameraInfo/motionCtrl', } @@ -72,6 +74,12 @@ export const syncRegion = (params?) => defHttp.get({ url: Api.syncRegion, params */ export const list = (params) => defHttp.get({ url: Api.list, params }); +/** + * 同步此项目下的IPC设备 + * @param params + */ +export const syncProjectIpcDevice = (params) => defHttp.get({ url: Api.syncProjectIpcDevice, params }); + /** * 获取IPC能力集 * @param params @@ -266,3 +274,9 @@ export const stopUploadToServer = (params) => defHttp.get({ url: Api.stopUploadT */ export const getUploadToServerProcess = (params) => defHttp.get({ url: Api.getUploadToServerProcess, params }); +/** + * 控制球机转动 + * @param params + */ +export const motionCtrl = (params) => defHttp.get({ url: Api.motionCtrl, params }); + diff --git a/src/views/iot/tplink/camera/components/CameraLeftTree.vue b/src/views/iot/tplink/camera/components/CameraLeftTree.vue index 12ff870..26d37d1 100644 --- a/src/views/iot/tplink/camera/components/CameraLeftTree.vue +++ b/src/views/iot/tplink/camera/components/CameraLeftTree.vue @@ -3,10 +3,7 @@
刷新 - - - - + 同步设备
@@ -35,8 +32,9 @@ import { useModal } from '/@/components/Modal'; import { useMessage } from '/@/hooks/web/useMessage'; import { useMethods } from '/@/hooks/system/useMethods'; + import { syncProjectIpcDevice,queryProjectTreeSync, queryRegionTreeSync, syncProject, syncRegion } from '../camera.api'; + const { createMessage } = useMessage(); - import { queryProjectTreeSync, queryRegionTreeSync, syncProject, syncRegion } from '../camera.api'; const emit = defineEmits(['select', 'rootTreeData']); const syncoading = ref(false); @@ -172,31 +170,21 @@ } /** - * 同步项目 + * 同步设备 */ - // async function syncProjectInfo(){ - // syncoading.value = true; - // await syncProject(); - // await loadRootTreeData(); - // } - - /** - * 同步区域 - */ - // async function syncRegionInfo(){ - // let data = currentRegion.value; - // if (data == null) { - // createMessage.warning('请先选择一个区域'); - // return; - // } - // const record = { - // projectId: data.projectId, - // regionId: data.regionId - // }; - // syncoading.value = true; - // await syncRegion(record); - // await loadRootTreeData(); - // } + async function getProjectIpcDevice(){ + let data = currentRegion.value; + if (data == null) { + createMessage.warning('请先选择一个区域'); + return; + } + const record = { + projectId: data.projectId + }; + await syncProjectIpcDevice(record); + currentRegion.value["timestamp"] = new Date().getTime(); + emit('select', currentRegion.value); + } defineExpose({ loadRootTreeData, diff --git a/src/views/iot/tplink/camera/components/CameraPreviewForm.vue b/src/views/iot/tplink/camera/components/CameraPreviewForm.vue index fd3567d..a173140 100644 --- a/src/views/iot/tplink/camera/components/CameraPreviewForm.vue +++ b/src/views/iot/tplink/camera/components/CameraPreviewForm.vue @@ -61,6 +61,17 @@ 报警 + + + 变焦 + + + + + + + + @@ -76,7 +87,8 @@ getMultitransUrl, getPreviewUrl, setImageCommon, - testAudio + testAudio, + motionCtrl } from "../camera.api"; const props = defineProps({ @@ -328,6 +340,59 @@ izPhone.value = false; } + /** + * 缩放 + */ + function zoomInOut(type){ + let delayTime = 6000; + if(type == 'in'){ + formData.zoom = formData.zoom+0.4; + if(formData.zoom > 4){ + formData.zoom = 4; + } + formData.sliderValue = formData.zoom; + moveCtrl(10,1,1); + if(formData.sliderValue<=2){ + delayTime = 0.4*6000; + }else{ + delayTime = 0.2*6000; + } + delayExecute(moveCtrl,[10,0,1],delayTime); + }else{ + formData.zoom = formData.zoom-0.4; + if(formData.zoom < 1){ + formData.zoom = 1; + } + formData.sliderValue = formData.zoom; + moveCtrl(9,1,1); + if(formData.sliderValue<=2){ + delayTime = 0.4*6000; + }else{ + delayTime = 0.2*6000; + } + delayExecute(moveCtrl,[9,0,1],delayTime); + } + } + + /** + * 控制球机 + */ + function moveCtrl(direction,startOrNot,speed){ + let params = { + "deviceIndex": formData.deviceIndex, + "direction": direction, + "startOrNot": startOrNot, + "speed": speed, + }; + motionCtrl(params); + } + + function delayExecute(fn, args, delay) { + setTimeout(() => { + fn.apply(this,args) // 使用apply传递参数数组 + }, delay) + } + /** * 销毁 */ diff --git a/src/views/iot/tplink/camera/components/CameraPreviewModal.vue b/src/views/iot/tplink/camera/components/CameraPreviewModal.vue index 8491d96..d7c6cea 100644 --- a/src/views/iot/tplink/camera/components/CameraPreviewModal.vue +++ b/src/views/iot/tplink/camera/components/CameraPreviewModal.vue @@ -63,5 +63,10 @@ .jee-hidden { display: none !important; } + + .ant-modal-body { + height: auto !important; + overflow: hidden !important; + }