diff --git a/apps/web-antd/src/views/aiot/device/roi/index.vue b/apps/web-antd/src/views/aiot/device/roi/index.vue index f29cc7cb1..cf3e99760 100644 --- a/apps/web-antd/src/views/aiot/device/roi/index.vue +++ b/apps/web-antd/src/views/aiot/device/roi/index.vue @@ -46,9 +46,7 @@ const router = useRouter(); // ==================== 摄像头选择 ==================== -const cameraId = ref(''); -const app = ref(''); -const stream = ref(''); +const cameraCode = ref(''); const showCameraSelector = ref(false); const cameraOptions = ref< @@ -74,10 +72,8 @@ const selectedRoi = computed(() => { onMounted(async () => { const q = route.query; - if (q.cameraId) { - cameraId.value = String(q.cameraId); - app.value = String(q.app || ''); - stream.value = String(q.stream || ''); + if (q.cameraCode) { + cameraCode.value = String(q.cameraCode); await buildSnapUrl(); loadRois(); } else { @@ -94,8 +90,8 @@ async function loadCameraOptions() { const res = await getCameraList({ page: 1, count: 200 }); const list = res.list || []; cameraOptions.value = list.map((cam: AiotDeviceApi.Camera) => ({ - value: `${cam.app}/${cam.stream}`, - label: `${cam.app}/${cam.stream}${cam.srcUrl ? ` (${cam.srcUrl})` : ''}`, + value: cam.cameraCode || '', + label: `${cam.cameraCode || cam.stream}${cam.srcUrl ? ` (${cam.srcUrl})` : ''}`, camera: cam, })); } catch { @@ -108,9 +104,7 @@ async function loadCameraOptions() { async function onCameraSelected(val: string) { const opt = cameraOptions.value.find((o) => o.value === val); if (opt) { - cameraId.value = val; - app.value = opt.camera.app || ''; - stream.value = opt.camera.stream || ''; + cameraCode.value = val; showCameraSelector.value = false; await buildSnapUrl(); loadRois(); @@ -124,8 +118,8 @@ function goBack() { // ==================== 截图 ==================== async function buildSnapUrl() { - if (app.value && stream.value) { - snapUrl.value = await getSnapUrl(app.value, stream.value); + if (cameraCode.value) { + snapUrl.value = await getSnapUrl(cameraCode.value); } } @@ -137,7 +131,7 @@ async function refreshSnap() { async function loadRois() { try { - const data = await getRoiByCameraId(cameraId.value); + const data = await getRoiByCameraId(cameraCode.value); roiList.value = Array.isArray(data) ? data : []; if (selectedRoiId.value) { loadRoiDetail(); @@ -168,7 +162,7 @@ function startDraw(mode: string) { async function onRoiDrawn(data: { coordinates: string; roi_type: string }) { drawMode.value = null; const newRoi: Partial = { - cameraId: cameraId.value, + cameraId: cameraCode.value, name: `ROI-${roiList.value.length + 1}`, roiType: data.roi_type, coordinates: data.coordinates, @@ -251,7 +245,7 @@ function handlePush() { content: '确定将此摄像头的所有ROI配置推送到边缘端?', async onOk() { try { - await pushConfig(cameraId.value); + await pushConfig(cameraCode.value); message.success('推送成功'); } catch (err: any) { message.error(err?.message || '推送失败,请检查AI服务是否启用'); @@ -286,7 +280,7 @@ function handlePush() {