Browse Source

添加云控制台权限按钮

Lita-Tako 5 months ago
parent
commit
ef9336b3b1

+ 98 - 26
src/views/RLGI/comonents/videoData/RealTimeMonitoring.vue

@@ -2,6 +2,9 @@
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')
5 8
 const route = useRoute();
6 9
 const orgId = route.query.orgId
7 10
 console.log('orgId', orgId)
@@ -21,7 +24,7 @@ const createPlayer = () => {
21 24
 		szId: 'player',
22 25
 		szBasePath: "./",
23 26
 		iMaxSplit: 4,
24
-		iCurrentSplit: IS_MOVE_DEVICE ? 1 : 2,
27
+		iCurrentSplit: parseInt(windowCount.value),
25 28
 		openDebug: true,
26 29
 		oStyle: {
27 30
 			borderSelect: IS_MOVE_DEVICE ? '#000' : '#FFCC00',
@@ -78,38 +81,107 @@ onMounted(() => {
78 81
 </script>
79 82
 
80 83
 <template>
81
-	<div style="margin-top: 10px; ">
82
-	<a-row style="min-height: 100%;">
83
-		<a-col :span="24" :md="12">
84
-			<a-affix :offset-top="8">
85
-				<div id="player" style="min-height: 500px;"></div>
86
-			</a-affix>
87
-			<a-form-item>
88
-				分屏
89
-				<a-radio-group v-model:value="splitNum" @change="arrangeWindow">
90
-					<a-radio-button :value="1">1x1</a-radio-button>
91
-					<a-radio-button :value="2">2x2</a-radio-button>
92
-					<a-radio-button :value="3" v-show="!isMoveDevice">3x3</a-radio-button>
93
-					<a-radio-button :value="4" v-show="!isMoveDevice">4x4</a-radio-button>
94
-				</a-radio-group>
95
-				<a-button @click="wholeFullScreen" v-show="!isMoveDevice">整体全屏</a-button>
96
-			</a-form-item>
97
-		</a-col>
98
-	</a-row>
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>
99 157
 	</div>
100 158
 </template>
101 159
 
102 160
 <style scoped lang="less">
103
-@media screen and (max-width: 991px) {
161
+.player {
104 162
 	#player {
105
-		width: calc(100vw - 16px);
106
-		height: calc((100vw - 16px) * 5 / 8);
163
+		width: 55vw;
164
+		height: calc((55vw) * 5 / 8);
107 165
 	}
108 166
 }
109
-@media screen and (min-width: 992px) {
110
-	#player {
111
-		width: calc(50vw - 8px);
112
-		height: calc((50vw - 8px) * 5 / 8);
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;
113 185
 	}
114 186
 }
115 187
 </style>

+ 29 - 0
src/views/RLGI/comonents/videoData/VideoReplay.vue

@@ -0,0 +1,29 @@
1
+<script setup lang="ts">
2
+
3
+</script>
4
+
5
+<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>
25
+</template>
26
+
27
+<style scoped lang="less">
28
+
29
+</style>