From 987cb959286674aea227210070934492346bdd95 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 16 Apr 2025 16:55:39 +0800
Subject: [PATCH] feat: 当前任务详情50%

---
 src/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/CurrentTaskDetails.vue |   56 ++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/src/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/CurrentTaskDetails.vue b/src/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/CurrentTaskDetails.vue
index 2b3276d..fc29ad6 100644
--- a/src/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/CurrentTaskDetails.vue
+++ b/src/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/CurrentTaskDetails.vue
@@ -9,16 +9,19 @@
 		:destroy-on-close="true"
 	>
 		<div class="content-container" v-if="isShow">
-			<TaskDetailsHead/>
-			<TaskDetailsLeft/>
 			<!-- 视频直播 -->
 			<div class="video-container">
-				<LiveVideo :videoUrl="currentLiveUrl" />
+				<LiveVideo :videoUrl="currentLiveUrl" :controls="false" />
 			</div>
 			<!-- 展示地图 -->
 			<RealTimeMap class="realTimeMap" />
-			<ControlPanel />
-<!--			<ControlPanel v-if="deviceOsdInfo?.data?.sn" />-->
+			<TaskDetailsRight v-if="isAutoControl" />
+			<template v-else>
+				<TaskDetailsHead />
+				<TaskDetailsLeft />
+			</template>
+			<!--	控制面板,里面有方法需要立即执行,不可用v-if		-->
+			<ControlPanel v-show="!isAutoControl" />
 		</div>
 	</el-dialog>
 </template>
@@ -33,10 +36,14 @@
 import { getWebsocketUrl } from '@/websocket/util/config'
 import { useConnectWebSocket } from '@/utils/websocket/connect-websocket'
 import { EBizCode } from '@/utils/staticData/enums'
-import ControlPanel from '@/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/ControlPanel.vue'
-import { KeyCode } from '@/hooks/controlDrone/useManualControl'
+import ControlPanel from '@/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/ControlPanel/ControlPanel.vue'
 import TaskDetailsHead from '@/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/TaskDetailsHead.vue'
 import TaskDetailsLeft from '@/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/TaskDetailsLeft.vue'
+import TaskDetailsRight from '@/views/TaskManage/TaskIntermediateContent/CurrentTaskDetails/TaskDetailsRight.vue'
+import { ElMessage } from 'element-plus'
+
+const isAutoControl = ref(true)
+provide('isAutoControl', isAutoControl)
 
 const isShow = defineModel('show')
 const props = defineProps({
@@ -46,14 +53,12 @@
 		default: () => ({}),
 	},
 })
-let taskDetails = ref({})
 const currentLiveUrl = ref('')
 const machineNestUrl = ref('')
-
 const droneLiveUrl = ref('')
-provide('taskDetails', taskDetails)
-
+let taskDetails = ref({})
 const deviceOsdInfo = ref({})
+provide('taskDetails', taskDetails)
 provide('deviceOsdInfo', deviceOsdInfo)
 
 // 机巢直播
@@ -89,7 +94,8 @@
 	getJobDetails({ wayLineJobInfoId: props.rowData.id }).then(async res => {
 		taskDetails.value = res.data.data
 		currentLiveUrl.value = await getDeviceLiveUrl()
-		createWsConnect(taskDetails.value.way_lines[0].workspace_id)
+		taskDetails.value.workspace_id = taskDetails.value.way_lines[0]?.workspace_id
+		createWsConnect()
 	})
 }
 
@@ -106,25 +112,31 @@
 			break
 	}
 }
+
+// 创建ws连接
 let connectWs
-const createWsConnect = workspaceId => {
+const createWsConnect = () => {
+	const workspaceId = taskDetails.value.workspace_id
+	if (!workspaceId) return
 	let webSocketUrl = getWebsocketUrl() + '&workspace-id=' + workspaceId
 	// 监听ws 消息
 	connectWs = useConnectWebSocket(messageHandler, webSocketUrl)
 }
+
+watch(
+	() => taskDetails.value.workspace_id,
+	() => {
+		createWsConnect()
+	}
+)
 
 const removeEvent = () => {
 	connectWs?.close()
 	deviceOsdInfo.value = {}
 }
 
-// 监听 rowData 变化
-watch(isShow, newVal => {
-	if (newVal) {
-		getTaskDetails()
-	} else {
-		removeEvent()
-	}
+onMounted(() => {
+	getTaskDetails()
 })
 
 onBeforeUnmount(() => {
@@ -144,10 +156,12 @@
 		width: 1782px;
 		height: 1002px;
 		padding: 0;
+
 		.el-dialog__body {
 			width: 100%;
 			height: 100%;
 		}
+
 		.el-dialog__header {
 			height: 0;
 			overflow: hidden;
@@ -178,8 +192,6 @@
 		width: 100%;
 		height: 100%;
 	}
-
-
 
 	.realTimeMap {
 		position: absolute;

--
Gitblit v1.9.3