Browse Source

Merge branch 'refs/heads/dev-2.19.0' into dev

Lita-Tako 5 months ago
parent
commit
97f5740d3d

+ 188 - 0
src/components/video/Live.vue

@@ -0,0 +1,188 @@
1
+<!-- 实时视频监控 -->
2
+<script setup>
3
+import {getPreview} from "@/api/previewPlayback";
4
+import { useRoute } from 'vue-router';
5
+import commonSelect from '@/components/CommonSelector/index.vue'
6
+const activeKey = ref('1')
7
+const windowCount = ref('1')
8
+const route = useRoute();
9
+const orgId = route.query.orgId
10
+console.log('orgId', orgId)
11
+console.log('player', window.JSPlugin)
12
+const player = ref(null)
13
+const IS_MOVE_DEVICE = false
14
+const isMoveDevice = ref(IS_MOVE_DEVICE)
15
+const splitNum = ref(IS_MOVE_DEVICE ? 1 : 2)
16
+const init = () => {
17
+	window.addEventListener('resize', () => {
18
+		if(player.vlaue)
19
+			player.value.JS_Resize()
20
+	})
21
+}
22
+const createPlayer = () => {
23
+	player.value = new window.JSPlugin({
24
+		szId: 'player',
25
+		szBasePath: "./",
26
+		iMaxSplit: 4,
27
+		iCurrentSplit: parseInt(windowCount.value),
28
+		openDebug: true,
29
+		oStyle: {
30
+			borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',
31
+		}
32
+	})
33
+	player.value.JS_SetWindowControlCallback({
34
+		windowEventSelect: function (iWndIndex) {  //插件选中窗口回调
35
+			console.log('windowSelect callback: ', iWndIndex);
36
+		},
37
+		pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {  //插件错误回调
38
+			console.log('pluginError callback: ', iWndIndex, iErrorCode, oError);
39
+		},
40
+		windowEventOver: function (iWndIndex) {  //鼠标移过回调
41
+			//console.log(iWndIndex);
42
+		},
43
+		windowEventOut: function (iWndIndex) {  //鼠标移出回调
44
+			//console.log(iWndIndex);
45
+		},
46
+		windowEventUp: function (iWndIndex) {  //鼠标mouseup事件回调
47
+			//console.log(iWndIndex);
48
+		},
49
+		windowFullCcreenChange: function (bFull) {  //全屏切换回调
50
+			console.log('fullScreen callback: ', bFull);
51
+		},
52
+		firstFrameDisplay: function (iWndIndex, iWidth, iHeight) {  //首帧显示回调
53
+			console.log('firstFrame loaded callback: ', iWndIndex, iWidth, iHeight);
54
+		},
55
+		performanceLack: function () {  //性能不足回调
56
+			console.log('performanceLack callback: ');
57
+		}
58
+	});
59
+}
60
+
61
+const arrangeWindow = () => {
62
+	let num = splitNum.value
63
+	player.value.JS_ArrangeWindow(num).then(
64
+		() => { console.log(`arrangeWindow to ${num}x${num} success`) },
65
+		e => { console.error(e) }
66
+	)
67
+}
68
+
69
+const wholeFullScreen = () => {
70
+	player.value.JS_FullScreenDisplay(true).then(
71
+		() => { console.log(`wholeFullScreen success`) },
72
+		e => { console.error(e) }
73
+	)
74
+}
75
+
76
+onMounted(() => {
77
+	init()
78
+	createPlayer()
79
+	getPreview({cameraIndexCode: '0'})
80
+})
81
+</script>
82
+
83
+<template>
84
+	<div class="flex mt-[5px]">
85
+		<div class="tree w-[20%] mr-4">树</div>
86
+		<div class="player mr-4">
87
+			<div class="w-full h-[25px] bg-black text-white pl-5">
88
+				播放通道
89
+			</div>
90
+			<div id="player"></div>
91
+		</div>
92
+		<div class="control w-[20%] h-full">
93
+			<a-tabs v-model:activeKey="activeKey">
94
+				<a-tab-pane key="1" tab="摄像头列表"></a-tab-pane>
95
+				<a-tab-pane key="2" tab="操作" force-render>
96
+					<div class="row">
97
+						<span class="w-[30%]">窗口数量:</span> <common-select v-model:value="windowCount" type="windowCount" class="w-[70%]"/>
98
+					</div>
99
+					<div class="row">
100
+						<a-button type="primary" class="mr-5 btn">轮巡</a-button>
101
+						<a-button type="primary" class="btn">中止轮巡</a-button>
102
+					</div>
103
+					<div class="row">
104
+						<a-button type="primary" class="mr-5 btn">窗口抓图</a-button>
105
+						<a-button type="primary" class="btn">窗口关闭</a-button>
106
+					</div>
107
+					<div class="row">
108
+						<a-button type="primary" class="mr-5 btn">全部抓图</a-button>
109
+						<a-button type="primary" class="btn">全部关闭</a-button>
110
+					</div>
111
+					<div v-if="hasPerm(['controlCloud'])" class="flex flex-col">
112
+						<div>云控制台</div>
113
+						<div>
114
+							<template
115
+								v-for="list in [
116
+									[{label: '↖', code: 'LEFT_UP'}, {label: '↑', code: 'UP'}, {label: '↗', code: 'RIGHT_UP'}],
117
+									[{label: '←', code: 'LEFT'}, {label: 'center', code: 'GOTO_PRESET'}, {label: '→', code: 'RIGHT'}],
118
+									[{label: '↙', code: 'LEFT_DOWN'}, {label: '↓', code: 'DOWN'}, {label: '↘', code: 'RIGHT_DOWN'}]]" >
119
+								<div class="control-row">
120
+									<template v-for="item in list">
121
+										<a-button
122
+											v-if="item.code !== 'GOTO_PRESET'"
123
+											:key="item.code"
124
+											class="small-btn"
125
+										>{{ item.label }}</a-button>
126
+										<a-button v-else class="small-btn">
127
+											<template #icon>
128
+												<UndoOutlined />
129
+											</template>
130
+										</a-button>
131
+									</template>
132
+								</div>
133
+							</template>
134
+						</div>
135
+					</div>
136
+					<div class="row">
137
+						<a-button type="primary" class="mr-5 btn">
138
+							+ 聚焦
139
+						</a-button>
140
+						<a-button type="primary" class="btn">- 聚焦</a-button>
141
+					</div>
142
+					<div class="row">
143
+						<a-button type="primary" class="mr-5 btn">
144
+							+ 调焦
145
+						</a-button>
146
+						<a-button type="primary" class="btn">- 调焦</a-button>
147
+					</div>
148
+					<div class="row">
149
+						<a-button type="primary" class="mr-5 btn">
150
+							录像开始
151
+						</a-button>
152
+						<a-button type="primary" class="btn">录像结束</a-button>
153
+					</div>
154
+				</a-tab-pane>
155
+			</a-tabs>
156
+		</div>
157
+	</div>
158
+</template>
159
+
160
+<style scoped lang="less">
161
+.player {
162
+	#player {
163
+		width: 55vw;
164
+		height: calc((55vw) * 5 / 8);
165
+	}
166
+}
167
+
168
+.row {
169
+	margin-bottom: 10px;
170
+	display: flex;
171
+	justify-content: center;
172
+	align-items: center;
173
+	.btn {
174
+		width: 120px;
175
+		margin-top: 5px;
176
+	}
177
+}
178
+.control-row {
179
+	display: flex;
180
+	justify-content: center;
181
+	align-items: center;
182
+	.small-btn {
183
+		width: 80px;
184
+		margin-top: 5px;
185
+	}
186
+}
187
+</style>
188
+

+ 141 - 0
src/components/video/Replay.vue

@@ -0,0 +1,141 @@
1
+<script setup>
2
+import {getPreview} from "@/api/previewPlayback";
3
+import { useRoute } from 'vue-router';
4
+import commonSelect from '@/components/CommonSelector/index.vue'
5
+const activeKey = ref('1')
6
+const windowCount = ref('1')
7
+const route = useRoute();
8
+const orgId = route.query.orgId
9
+console.log('orgId', orgId)
10
+console.log('player', window.JSPlugin)
11
+const player = ref(null)
12
+const IS_MOVE_DEVICE = false
13
+const isMoveDevice = ref(IS_MOVE_DEVICE)
14
+const splitNum = ref(IS_MOVE_DEVICE ? 1 : 2)
15
+const init = () => {
16
+	window.addEventListener('resize', () => {
17
+		if(player.vlaue)
18
+			player.value.JS_Resize()
19
+	})
20
+}
21
+const createPlayer = () => {
22
+	player.value = new window.JSPlugin({
23
+		szId: 'player',
24
+		szBasePath: "./",
25
+		iMaxSplit: 4,
26
+		iCurrentSplit: parseInt(windowCount.value),
27
+		openDebug: true,
28
+		oStyle: {
29
+			borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',
30
+		}
31
+	})
32
+	player.value.JS_SetWindowControlCallback({
33
+		windowEventSelect: function (iWndIndex) {  //插件选中窗口回调
34
+			console.log('windowSelect callback: ', iWndIndex);
35
+		},
36
+		pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {  //插件错误回调
37
+			console.log('pluginError callback: ', iWndIndex, iErrorCode, oError);
38
+		},
39
+		windowEventOver: function (iWndIndex) {  //鼠标移过回调
40
+			//console.log(iWndIndex);
41
+		},
42
+		windowEventOut: function (iWndIndex) {  //鼠标移出回调
43
+			//console.log(iWndIndex);
44
+		},
45
+		windowEventUp: function (iWndIndex) {  //鼠标mouseup事件回调
46
+			//console.log(iWndIndex);
47
+		},
48
+		windowFullCcreenChange: function (bFull) {  //全屏切换回调
49
+			console.log('fullScreen callback: ', bFull);
50
+		},
51
+		firstFrameDisplay: function (iWndIndex, iWidth, iHeight) {  //首帧显示回调
52
+			console.log('firstFrame loaded callback: ', iWndIndex, iWidth, iHeight);
53
+		},
54
+		performanceLack: function () {  //性能不足回调
55
+			console.log('performanceLack callback: ');
56
+		}
57
+	});
58
+}
59
+
60
+const arrangeWindow = () => {
61
+	let num = splitNum.value
62
+	player.value.JS_ArrangeWindow(num).then(
63
+		() => { console.log(`arrangeWindow to ${num}x${num} success`) },
64
+		e => { console.error(e) }
65
+	)
66
+}
67
+
68
+const wholeFullScreen = () => {
69
+	player.value.JS_FullScreenDisplay(true).then(
70
+		() => { console.log(`wholeFullScreen success`) },
71
+		e => { console.error(e) }
72
+	)
73
+}
74
+
75
+onMounted(() => {
76
+	init()
77
+	createPlayer()
78
+	getPreview({cameraIndexCode: '0'})
79
+})
80
+</script>
81
+
82
+<template>
83
+	<div class="flex mt-[5px]">
84
+		<div class="tree w-[20%] mr-4">树</div>
85
+		<div class="player mr-4">
86
+			<div class="w-full h-[25px] bg-black text-white pl-5">
87
+				播放通道
88
+			</div>
89
+			<div id="player"></div>
90
+		</div>
91
+		<div class="control w-[20%] h-full">
92
+			<a-tabs v-model:activeKey="activeKey">
93
+				<a-tab-pane key="1" tab="摄像头列表">
94
+					回放日期  <a-range-picker value-format="YYYY-MM-DD HH:mm:ss" show-time />
95
+				</a-tab-pane>
96
+				<a-tab-pane key="2" tab="操作" force-render>
97
+
98
+					<div class="row">
99
+						<a-button type="primary" class="mr-5 btn">&lt;&lt; 慢放</a-button>
100
+						<a-button type="primary" class="btn">快放 &gt;&gt;</a-button>
101
+					</div>
102
+					<div class="row">
103
+						<a-button type="primary" class="mr-1 w-[60px]">暂停</a-button>
104
+						<a-button type="primary" class="mr-1 w-[60px]">恢复</a-button>
105
+						<a-button type="primary" class="mr-1 w-[60px]">停止</a-button>
106
+						<a-button type="primary" class="w-[120px]">全部停止</a-button>
107
+					</div>
108
+				</a-tab-pane>
109
+			</a-tabs>
110
+		</div>
111
+	</div>
112
+</template>
113
+
114
+<style scoped lang="less">
115
+.player {
116
+	#player {
117
+		width: 55vw;
118
+		height: calc((55vw) * 5 / 8);
119
+	}
120
+}
121
+
122
+.row {
123
+	margin-bottom: 10px;
124
+	display: flex;
125
+	justify-content: center;
126
+	align-items: center;
127
+	.btn {
128
+		width: 120px;
129
+		margin-top: 5px;
130
+	}
131
+}
132
+.control-row {
133
+	display: flex;
134
+	justify-content: center;
135
+	align-items: center;
136
+	.small-btn {
137
+		width: 80px;
138
+		margin-top: 5px;
139
+	}
140
+}
141
+</style>

+ 2 - 174
src/views/RLGI/comonents/videoData/RealTimeMonitoring.vue

@@ -2,187 +2,15 @@
2 2
 <script setup>
3 3
 import {getPreview} from "@/api/previewPlayback";
4 4
 import { useRoute } from 'vue-router';
5
-import commonSelect from '@/components/CommonSelector/index.vue'
6
-const activeKey = ref('1')
7
-const windowCount = ref('1')
8
-const route = useRoute();
9
-const orgId = route.query.orgId
10
-console.log('orgId', orgId)
11
-console.log('player', window.JSPlugin)
12
-const player = ref(null)
13
-const IS_MOVE_DEVICE = false
14
-const isMoveDevice = ref(IS_MOVE_DEVICE)
15
-const splitNum = ref(IS_MOVE_DEVICE ? 1 : 2)
16
-const init = () => {
17
-	window.addEventListener('resize', () => {
18
-		if(player.vlaue)
19
-			player.value.JS_Resize()
20
-	})
21
-}
22
-const createPlayer = () => {
23
-	player.value = new window.JSPlugin({
24
-		szId: 'player',
25
-		szBasePath: "./",
26
-		iMaxSplit: 4,
27
-		iCurrentSplit: parseInt(windowCount.value),
28
-		openDebug: true,
29
-		oStyle: {
30
-			borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',
31
-		}
32
-	})
33
-	player.value.JS_SetWindowControlCallback({
34
-		windowEventSelect: function (iWndIndex) {  //插件选中窗口回调
35
-			console.log('windowSelect callback: ', iWndIndex);
36
-		},
37
-		pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {  //插件错误回调
38
-			console.log('pluginError callback: ', iWndIndex, iErrorCode, oError);
39
-		},
40
-		windowEventOver: function (iWndIndex) {  //鼠标移过回调
41
-			//console.log(iWndIndex);
42
-		},
43
-		windowEventOut: function (iWndIndex) {  //鼠标移出回调
44
-			//console.log(iWndIndex);
45
-		},
46
-		windowEventUp: function (iWndIndex) {  //鼠标mouseup事件回调
47
-			//console.log(iWndIndex);
48
-		},
49
-		windowFullCcreenChange: function (bFull) {  //全屏切换回调
50
-			console.log('fullScreen callback: ', bFull);
51
-		},
52
-		firstFrameDisplay: function (iWndIndex, iWidth, iHeight) {  //首帧显示回调
53
-			console.log('firstFrame loaded callback: ', iWndIndex, iWidth, iHeight);
54
-		},
55
-		performanceLack: function () {  //性能不足回调
56
-			console.log('performanceLack callback: ');
57
-		}
58
-	});
59
-}
60 5
 
61
-const arrangeWindow = () => {
62
-	let num = splitNum.value
63
-	player.value.JS_ArrangeWindow(num).then(
64
-		() => { console.log(`arrangeWindow to ${num}x${num} success`) },
65
-		e => { console.error(e) }
66
-	)
67
-}
68
-
69
-const wholeFullScreen = () => {
70
-	player.value.JS_FullScreenDisplay(true).then(
71
-		() => { console.log(`wholeFullScreen success`) },
72
-		e => { console.error(e) }
73
-	)
74
-}
75
-
76
-onMounted(() => {
77
-	init()
78
-	createPlayer()
79
-	getPreview({cameraIndexCode: '0'})
80
-})
6
+import Live from '@/components/video/Live.vue'
81 7
 </script>
82 8
 
83 9
 <template>
84
-	<div class="flex mt-[5px]">
85
-		<div class="tree w-[20%] mr-4">树</div>
86
-		<div class="player mr-4">
87
-			<div class="w-full h-[25px] bg-black text-white pl-5">
88
-				播放通道
89
-			</div>
90
-			<div id="player"></div>
91
-		</div>
92
-		<div class="control w-[20%] h-full">
93
-			<a-tabs v-model:activeKey="activeKey">
94
-				<a-tab-pane key="1" tab="摄像头列表"></a-tab-pane>
95
-				<a-tab-pane key="2" tab="操作" force-render>
96
-					<div class="row">
97
-						<span class="w-[30%]">窗口数量:</span> <common-select v-model:value="windowCount" type="windowCount" class="w-[70%]"/>
98
-					</div>
99
-					<div class="row">
100
-						<a-button type="primary" class="mr-5 btn">轮巡</a-button>
101
-						<a-button type="primary" class="btn">中止轮巡</a-button>
102
-					</div>
103
-					<div class="row">
104
-						<a-button type="primary" class="mr-5 btn">窗口抓图</a-button>
105
-						<a-button type="primary" class="btn">窗口关闭</a-button>
106
-					</div>
107
-					<div class="row">
108
-						<a-button type="primary" class="mr-5 btn">全部抓图</a-button>
109
-						<a-button type="primary" class="btn">全部关闭</a-button>
110
-					</div>
111
-					<div v-if="hasPerm(['controlCloud'])" class="flex flex-col">
112
-						<div>云控制台</div>
113
-						<div>
114
-							<template
115
-								v-for="list in [
116
-									[{label: '↖', code: 'LEFT_UP'}, {label: '↑', code: 'UP'}, {label: '↗', code: 'RIGHT_UP'}],
117
-									[{label: '←', code: 'LEFT'}, {label: 'center', code: 'GOTO_PRESET'}, {label: '→', code: 'RIGHT'}],
118
-									[{label: '↙', code: 'LEFT_DOWN'}, {label: '↓', code: 'DOWN'}, {label: '↘', code: 'RIGHT_DOWN'}]]" >
119
-								<div class="control-row">
120
-									<template v-for="item in list">
121
-										<a-button
122
-											v-if="item.code !== 'GOTO_PRESET'"
123
-											:key="item.code"
124
-											class="small-btn"
125
-										>{{ item.label }}</a-button>
126
-										<a-button v-else class="small-btn">
127
-											<template #icon>
128
-												<UndoOutlined />
129
-											</template>
130
-										</a-button>
131
-									</template>
132
-								</div>
133
-							</template>
134
-						</div>
135
-					</div>
136
-					<div class="row">
137
-						<a-button type="primary" class="mr-5 btn">
138
-							+ 聚焦
139
-						</a-button>
140
-						<a-button type="primary" class="btn">- 聚焦</a-button>
141
-					</div>
142
-					<div class="row">
143
-						<a-button type="primary" class="mr-5 btn">
144
-							+ 调焦
145
-						</a-button>
146
-						<a-button type="primary" class="btn">- 调焦</a-button>
147
-					</div>
148
-					<div class="row">
149
-						<a-button type="primary" class="mr-5 btn">
150
-							录像开始
151
-						</a-button>
152
-						<a-button type="primary" class="btn">录像结束</a-button>
153
-					</div>
154
-				</a-tab-pane>
155
-			</a-tabs>
156
-		</div>
157
-	</div>
10
+	<live />
158 11
 </template>
159 12
 
160 13
 <style scoped lang="less">
161
-.player {
162
-	#player {
163
-		width: 55vw;
164
-		height: calc((55vw) * 5 / 8);
165
-	}
166
-}
167 14
 
168
-.row {
169
-	margin-bottom: 10px;
170
-	display: flex;
171
-	justify-content: center;
172
-	align-items: center;
173
-	.btn {
174
-		width: 120px;
175
-		margin-top: 5px;
176
-	}
177
-}
178
-.control-row {
179
-	display: flex;
180
-	justify-content: center;
181
-	align-items: center;
182
-	.small-btn {
183
-		width: 80px;
184
-		margin-top: 5px;
185
-	}
186
-}
187 15
 </style>
188 16
 

+ 12 - 22
src/views/RLGI/comonents/videoData/VideoReplay.vue

@@ -1,29 +1,19 @@
1
-<script setup lang="ts">
2
-
1
+<script setup>
2
+import {getPreview} from "@/api/previewPlayback";
3
+import { useRoute } from 'vue-router';
4
+import commonSelect from '@/components/CommonSelector/index.vue'
5
+const activeKey = ref('1')
6
+const windowCount = ref('1')
7
+const route = useRoute();
8
+const orgId = route.query.orgId
9
+console.log('orgId', orgId)
10
+console.log('player', window.JSPlugin)
11
+import Replay from '@/components/video/Replay.vue'
3 12
 </script>
4 13
 
5 14
 <template>
6
-	<div style="margin-top: 10px; ">
7
-		<a-row style="min-height: 100%;">
8
-			<a-col :span="24" :md="12">
9
-				<a-affix :offset-top="8">
10
-					<div id="player" style="min-height: 500px;"></div>
11
-				</a-affix>
12
-				<a-form-item>
13
-					分屏
14
-					<a-radio-group v-model:value="splitNum" @change="arrangeWindow">
15
-						<a-radio-button :value="1">1x1</a-radio-button>
16
-						<a-radio-button :value="2">2x2</a-radio-button>
17
-						<a-radio-button :value="3" v-show="!isMoveDevice">3x3</a-radio-button>
18
-						<a-radio-button :value="4" v-show="!isMoveDevice">4x4</a-radio-button>
19
-					</a-radio-group>
20
-					<a-button @click="wholeFullScreen" v-show="!isMoveDevice">整体全屏</a-button>
21
-				</a-form-item>
22
-			</a-col>
23
-		</a-row>
24
-	</div>
15
+	<replay />
25 16
 </template>
26 17
 
27 18
 <style scoped lang="less">
28
-
29 19
 </style>

+ 2 - 1
src/views/RLGI/comonents/videoSurveillance.vue

@@ -14,6 +14,7 @@
14 14
 import RealTimeMonitoring from './videoData/RealTimeMonitoring.vue'
15 15
 import BusinessTraceability from './videoData/BusinessTraceability.vue'
16 16
 import VideoAnalysis from './videoData/VideoAnalysis.vue'
17
+import VideoReplay from './videoData/VideoReplay.vue'
17 18
 const tabsList = [
18 19
   { value: '1', lable: '实时视频监控' },
19 20
   { value: '2', lable: '视频回放' },
@@ -28,7 +29,7 @@ function changeMenu(key) {
28 29
     case '1':
29 30
       return currentComponent.value = RealTimeMonitoring
30 31
     case '2':
31
-      return currentComponent.value = ''
32
+      return currentComponent.value = VideoReplay
32 33
     case '3':
33 34
       return currentComponent.value = BusinessTraceability
34 35
     case '4':

+ 1 - 0
src/views/emergencySupport/analysis.vue

@@ -177,6 +177,7 @@
177 177
 <template>
178 178
 	<a-card :bordered="false">
179 179
 		<a-button v-if="stack.length > 0" class="mb-2" @click="back">上一层</a-button>
180
+		<a-button v-if="stack.length > 0" class="mb-2" @click="back">上一层</a-button>
180 181
 		<a-table v-show="areaTableShow" :columns="columns" :data-source="dataSource" bordered :pagination="false">
181 182
 			<template #bodyCell="{ column, text, record }">
182 183
 				<a

+ 11 - 0
src/views/storehouseVideo/storehouseVideoLive.vue

@@ -0,0 +1,11 @@
1
+<script setup name="storehouseVideoLive">
2
+import Live from '@/components/video/Live.vue'
3
+</script>
4
+
5
+<template>
6
+	<live />
7
+</template>
8
+
9
+<style scoped lang="less">
10
+
11
+</style>

+ 11 - 0
src/views/storehouseVideo/storehouseVideoReplay.vue

@@ -0,0 +1,11 @@
1
+<script setup name="storehouseVideoReplay">
2
+import Replay from '@/components/video/Replay.vue'
3
+</script>
4
+
5
+<template>
6
+	<replay />
7
+</template>
8
+
9
+<style scoped lang="less">
10
+
11
+</style>

+ 3 - 104
src/views/videoMonitor/index.vue

@@ -1,112 +1,11 @@
1
-<script setup>
2
-	import commonSelect from '@/components/CommonSelector/index.vue'
3
-	const activeKey = ref('1')
4
-	const windowCount = ref('1')
5
-	// /h5player/
1
+<script setup name="videoMonitorLive">
2
+import Live from '@/components/video/Live.vue'
6 3
 </script>
7 4
 
8 5
 <template>
9
-	<div class="flex mt-[5px]">
10
-		<div class="tree w-[20%] mr-4">树</div>
11
-		<div class="player mr-4">
12
-			<div class="w-full h-[25px] bg-black text-white pl-5">
13
-				播放通道
14
-			</div>
15
-			<div id="player"></div>
16
-		</div>
17
-		<div class="control w-[20%] h-full">
18
-			<a-tabs v-model:activeKey="activeKey">
19
-				<a-tab-pane key="1" tab="摄像头列表"></a-tab-pane>
20
-				<a-tab-pane key="2" tab="操作" force-render>
21
-					<div class="row">
22
-						<span class="w-[30%]">窗口数量:</span> <common-select v-model:value="windowCount" type="windowCount" class="w-[70%]"/>
23
-					</div>
24
-					<div class="row">
25
-						<a-button type="primary" class="mr-5 btn">轮巡</a-button>
26
-						<a-button type="primary" class="btn">中止轮巡</a-button>
27
-					</div>
28
-					<div class="row">
29
-						<a-button type="primary" class="mr-5 btn">窗口抓图</a-button>
30
-						<a-button type="primary" class="btn">窗口关闭</a-button>
31
-					</div>
32
-					<div class="row">
33
-						<a-button type="primary" class="mr-5 btn">全部抓图</a-button>
34
-						<a-button type="primary" class="btn">全部关闭</a-button>
35
-					</div>
36
-					<div class="flex flex-col">
37
-						<div>云控制台</div>
38
-						<div>
39
-							<template
40
-								v-for="list in [
41
-									[{label: '↖', code: 'LEFT_UP'}, {label: '↑', code: 'UP'}, {label: '↗', code: 'RIGHT_UP'}],
42
-									[{label: '←', code: 'LEFT'}, {label: 'center', code: 'GOTO_PRESET'}, {label: '→', code: 'RIGHT'}],
43
-									[{label: '↙', code: 'LEFT_DOWN'}, {label: '↓', code: 'DOWN'}, {label: '↘', code: 'RIGHT_DOWN'}]]" >
44
-								<div class="control-row">
45
-									<template v-for="item in list">
46
-										<a-button
47
-											v-if="item.code !== 'GOTO_PRESET'"
48
-											:key="item.code"
49
-											class="small-btn"
50
-										>{{ item.label }}</a-button>
51
-										<a-button v-else class="small-btn">
52
-											<template #icon>
53
-												<UndoOutlined />
54
-											</template>
55
-										</a-button>
56
-									</template>
57
-								</div>
58
-							</template>
59
-						</div>
60
-					</div>
61
-					<div class="row">
62
-						<a-button type="primary" class="mr-5 btn">
63
-							+ 聚焦
64
-						</a-button>
65
-						<a-button type="primary" class="btn">- 聚焦</a-button>
66
-					</div>
67
-					<div class="row">
68
-						<a-button type="primary" class="mr-5 btn">
69
-							+ 调焦
70
-						</a-button>
71
-						<a-button type="primary" class="btn">- 调焦</a-button>
72
-					</div>
73
-					<div class="row">
74
-						<a-button type="primary" class="mr-5 btn">
75
-							录像开始
76
-						</a-button>
77
-						<a-button type="primary" class="btn">录像结束</a-button>
78
-					</div>
79
-				</a-tab-pane>
80
-			</a-tabs>
81
-		</div>
82
-	</div>
6
+	<live />
83 7
 </template>
84 8
 
85 9
 <style scoped lang="less">
86
-	.player {
87
-		#player {
88
-			width: 55vw;
89
-			height: calc((55vw) * 5 / 8);
90
-		}
91
-	}
92 10
 
93
-	.row {
94
-		margin-bottom: 10px;
95
-		display: flex;
96
-		justify-content: center;
97
-		align-items: center;
98
-		.btn {
99
-			width: 120px;
100
-			margin-top: 5px;
101
-		}
102
-	}
103
-	.control-row {
104
-		display: flex;
105
-		justify-content: center;
106
-		align-items: center;
107
-		.small-btn {
108
-			width: 80px;
109
-			margin-top: 5px;
110
-		}
111
-	}
112 11
 </style>

+ 11 - 0
src/views/videoMonitor/videoMonitorLive.vue

@@ -0,0 +1,11 @@
1
+<script setup name="videoMonitorLive">
2
+import Live from '@/components/video/Live.vue'
3
+</script>
4
+
5
+<template>
6
+	<live />
7
+</template>
8
+
9
+<style scoped lang="less">
10
+
11
+</style>

+ 11 - 0
src/views/videoMonitor/videoMonitorReplay.vue

@@ -0,0 +1,11 @@
1
+<script setup name="videoMonitorReplay">
2
+import Replay from '@/components/video/Replay.vue'
3
+</script>
4
+
5
+<template>
6
+	<replay />
7
+</template>
8
+
9
+<style scoped lang="less">
10
+
11
+</style>