feat 引入直播接口

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Ironsp
2026-05-25 17:34:23 +08:00
parent bacbb84d54
commit 3b001f79e0
5 changed files with 81 additions and 1 deletions

29
src/api/video/index.ts Normal file
View File

@@ -0,0 +1,29 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
/**
* 开始一直播预览
* @param query
* post
* /haikang/isup/stream/live/start?deviceId=2057338485989367810
*/
export const listDemo = (deviceId?: string | number) => {
return request({
url: `/haikang/isup/stream/live/start?deviceId=${deviceId}`,
method: 'post'
});
};
/**
* 停止-直播预览
* @param query
* post
* /haikang/isup/stream/live/stop?id=2057338485989367810&channel=1
*/
export const addDemo = (data: any) => {
return request({
url: '/haikang/isup/stream/live/stop',
method: 'get',
params: data
});
};

0
src/api/video/types.ts Normal file
View File

View File

@@ -0,0 +1,41 @@
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import { addDemo, listDemo } from '@/api/video';
import Hls from 'hls.js';
export const useVideosStore = defineStore('videos', () => {
// --- State (状态) ---
// 相当于 Vuex 中的 state用 ref 或 reactive 定义
const hisUrl = ref();
// --- Getters (计算属性) ---
// 相当于 Vuex 中的 getters直接用 computed 定义
// --- Actions (动作) ---
// 相当于 Vuex 中的 actions/mutations直接写同步或异步函数
async function getVideos(deviceId?: string | number) {
try {
const response = await listDemo(deviceId);
console.log('获取视频:', response);
hisUrl.value = response.data;
} catch (error) {
console.error('获取视频失败', error);
}
}
async function stopVideos(query: any) {
try {
const response = await addDemo(query);
console.log('停止视频:', response);
} catch (error) {
console.error('停止视频失败', error);
}
}
// ⚠️ 核心点:必须把需要暴露出去的变量和方法 return 出去!
return {
hisUrl,
getVideos,
stopVideos
};
});

View File

@@ -138,7 +138,9 @@ import { listDemo, getDemo, delDemo, addDemo, updateDemo } from '@/api/demo/demo
import { DemoVO, DemoQuery, DemoForm } from '@/api/demo/demo/types';
import { log } from 'node:console';
import Hls from 'hls.js';
import { useVideosStore } from '@/store/modules/video';
const videosStore = useVideosStore();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const demoList = ref([]);
@@ -163,7 +165,7 @@ const dialog1 = reactive<DialogOption>({
title: ''
});
const monitorVideoUrl = 'http://192.168.0.214:8088/5a0db047943df198aff98b650ac9e001.mp4';
const monitorVideoUrl = ref('');
const monitorVideoRef = ref<HTMLVideoElement>();
type MonitorPoint = { x: number; y: number };
@@ -318,6 +320,7 @@ const resetMonitorDraw = () => {
monitorRectPx.value = null;
};
const handleSee = async (row?: any) => {
console.log('1111111111111111', row);
reset();
resetMonitorDraw();
seeSee.value = row?.isDrawArea === 1 ? 1 : 0;
@@ -326,6 +329,9 @@ const handleSee = async (row?: any) => {
Object.assign(form.value, res.data);
dialog1.visible = true;
dialog1.title = '修改设备';
videosStore.getVideos(row.id);
console.log('222222222222:', videosStore.hisUrl);
monitorVideoUrl.value = videosStore.hisUrl;
};
const handleMonitorDialogClose = (done: () => void) => {