From 31d0fc3caacc159faddf0c4f3bb4f84bf7a00c69 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 08 Jan 2026 16:53:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 94 insertions(+), 1 deletions(-)

diff --git a/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue b/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
index 25fb897..0708d8a 100644
--- a/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
+++ b/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
@@ -1,15 +1,108 @@
 <template>
 	<div class="left-container">
 		<div class="wrapper">
-			
+			<TitleTemplate>异常情况告警</TitleTemplate>
+
+			<div class="category-container">
+				<div class="category-item" v-for="(item, ind) in categoryList" :key="ind" @click="activeId = item.id"
+					:class="{ active: activeId === item.id }">
+					{{ item.name }}
+				</div>
+			</div>
+
+			<div class="content">
+				<component :is="currentComponent" />
+			</div>
 		</div>
 	</div>
 </template>
 
 <script setup>
+import TitleTemplate from './templateComponents/TitleTemplate.vue'
+import RealWarning from './RealWarning.vue'
+import EquipmentWarning from './EquipmentWarning.vue'
+import HistoryWarning from './HistoryWarning.vue'
 
+const activeId = ref(1)
+
+const categoryList = ref([
+	{
+		id: 1,
+		name: '实时告警',
+		component: RealWarning
+	},
+	{
+		id: 2,
+		name: '设备告警',
+		component: EquipmentWarning
+	},
+	{
+		id: 3,
+		name: '历史告警',
+		component: HistoryWarning
+	}
+])
+
+const currentComponent = computed(() => {
+	return categoryList.value.find(i => i.id === activeId.value)?.component
+})
 </script>
 
 <style lang="scss" scoped>
+.category-container {
+	display: flex;
+	justify-content: space-between;
 
+	.category-item {
+		position: relative;
+		width: 0;
+		flex: 1;
+		margin-left: 26px;
+		height: 68px;
+		line-height: 68px;
+
+		font-family: Source Code Pro, Source Code Pro;
+		font-weight: 400;
+		font-size: 14px;
+		color: #86909C;
+		text-align: center;
+		font-style: normal;
+		text-transform: none;
+		cursor: pointer;
+
+		&:first-child {
+			margin-left: 0;
+		}
+
+		&.active {
+			font-weight: normal;
+			color: #FFFFFF;
+		}
+
+		&::after {
+			content: '';
+			position: absolute;
+			left: 0;
+			bottom: 0;
+			width: 100%;
+			height: 1px;
+			background: #333355;
+		}
+
+		&.active::after {
+			height: 3px;
+			background: #284FE3;
+			box-shadow: 0px 3px 2px 0px rgba(15, 89, 255, 0.1), 0px 7px 5px 0px rgba(15, 89, 255, 0.15), 0px 13px 10px 0px rgba(15, 89, 255, 0.18), 0px 22px 18px 0px rgba(15, 89, 255, 0.21), 0px 42px 33px 0px rgba(15, 89, 255, 0.26), 0px 100px 80px 0px rgba(15, 89, 255, 0.36);
+			border-radius: 5px 5px 0px 0px;
+		}
+	}
+}
+
+.content {
+	height: 0;
+	flex: 1;
+	margin-top: 20px;
+	overflow-x: hidden;
+	overflow-y: auto;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3