From 7aaca71bd1a51c9f9fe4d646595cb8f65e08df35 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Wed, 08 Apr 2026 19:03:38 +0800
Subject: [PATCH] feat:把反无搜索条件日期都加上00:00 或者23:59
---
applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue | 105 +++++++++++++++++++++++++++++++++++++---------------
1 files changed, 74 insertions(+), 31 deletions(-)
diff --git a/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue b/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
index f21d5f8..a524faa 100644
--- a/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
+++ b/applications/drone-command/src/views/dataCockpit/components/LeftContainer.vue
@@ -7,12 +7,21 @@
<div class="category-item" v-for="(item, ind) in categoryList" :key="ind"
@click="activeIdModel = item.id" :class="{ active: activeIdModel === item.id }">
{{ item.name }}
- <span class="badge">{{ item.badge }}</span>
+ <span class="badge" v-if="item.badge">{{ item.badge }}</span>
</div>
</div>
<div class="content">
- <component :is="currentComponent" />
+ <RealWarning
+ v-if="activeIdModel === 1"
+ :data="realWarningData"
+ :loading="realWarningLoading"
+ @signal="emit('real-warning-signal', $event)"
+ @counter="emit('real-warning-counter', $event)"
+ @favorite="emit('real-warning-favorite', $event)"
+ />
+ <EquipmentWarning v-else-if="activeIdModel === 2" />
+ <HistoryWarning v-else />
</div>
</div>
@@ -24,9 +33,11 @@
<script setup>
import TitleTemplate from './templateComponents/TitleTemplate.vue'
-import RealWarning from './RealWarning.vue'
import EquipmentWarning from './EquipmentWarning.vue'
import HistoryWarning from './HistoryWarning.vue'
+import { alarmStatisticsApi } from '@/api/dataCockpit'
+import { computed, onMounted, ref } from 'vue'
+import RealWarning from './RealWarning.vue'
const props = defineProps({
activeId: {
@@ -36,10 +47,24 @@
collapsed: {
type: Boolean,
default: false
+ },
+ realWarningData: {
+ type: Array,
+ default: () => []
+ },
+ realWarningLoading: {
+ type: Boolean,
+ default: false
}
})
-const emit = defineEmits(['update:activeId', 'update:collapsed'])
+const emit = defineEmits([
+ 'update:activeId',
+ 'update:collapsed',
+ 'real-warning-signal',
+ 'real-warning-counter',
+ 'real-warning-favorite'
+])
const activeIdModel = computed({
get: () => props.activeId,
@@ -55,30 +80,44 @@
{
id: 1,
name: '实时告警',
- badge: 8,
+ badge: 0,
component: RealWarning
},
{
id: 2,
name: '设备告警',
- badge: 8,
+ badge: 0,
component: EquipmentWarning
},
{
id: 3,
name: '历史告警',
- badge: 8,
+ badge: 0,
component: HistoryWarning
}
])
-const currentComponent = computed(() => {
- return categoryList.value.find(i => i.id === activeIdModel.value)?.component
-})
-
const toggleCollapse = () => {
collapsedModel.value = !collapsedModel.value
}
+
+const updateBadges = async () => {
+ const res = await alarmStatisticsApi()
+ const data = res?.data?.data || {}
+ const realTotal = data.realTimeAlarmCount ?? 0
+ const historyTotal = data.historyAlarmCount ?? 0
+ const deviceTotal = data.deviceAlarmCount ?? 0
+ categoryList.value = categoryList.value.map((item) => {
+ if (item.id === 1) return { ...item, badge: realTotal }
+ if (item.id === 2) return { ...item, badge: deviceTotal }
+ if (item.id === 3) return { ...item, badge: historyTotal }
+ return item
+ })
+}
+
+onMounted(() => {
+ updateBadges()
+})
</script>
<style lang="scss" scoped>
@@ -87,30 +126,25 @@
transition: transform 0.3s ease-in-out;
&.collapsed {
- transform: translateX(-100%);
+ transform: translateX(calc(-100% - 17px - 32px));
}
}
.collapse-btn {
position: absolute;
- top: 50%;
- left: 357px;
- background: rgba(17, 23, 34, 0.8);
- border: 1px solid #333355;
- border-left: none;
- border-radius: 0 4px 4px 0;
+ bottom: 454px;
+ left: 300px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
z-index: 10;
- backdrop-filter: blur(5px);
- transform: translateY(-50%);
+ transform: translateY(50%);
.arrow {
- width: 24px;
- height: 24px;
+ width: 36px;
+ height: 36px;
background: url('@/assets/images/dataCockpit/left-btn.png') center / 100% 100% no-repeat;
}
@@ -120,8 +154,19 @@
}
.category-container {
+ position: relative;
display: flex;
justify-content: space-between;
+
+ &::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 1px;
+ background: #333355;
+ }
.category-item {
position: relative;
@@ -155,8 +200,7 @@
left: 0;
bottom: 0;
width: 100%;
- height: 1px;
- background: #333355;
+ height: 0;
}
&.active::after {
@@ -164,19 +208,19 @@
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;
+ z-index: 9;
}
.badge {
position: absolute;
top: 16px;
- right: 4px;
- min-width: 16px;
- height: 16px;
- line-height: 16px;
+ right: -4px;
+ min-width: 18px;
+ line-height: 18px;
font-size: 12px;
color: #FFFFFF;
background: #FF3B30;
- border-radius: 9px;
+ border-radius: 50%;
text-align: center;
box-shadow: 0px 2px 6px rgba(255, 59, 48, 0.6);
pointer-events: none;
@@ -188,7 +232,6 @@
height: 0;
flex: 1;
margin-top: 20px;
- overflow-x: hidden;
- overflow-y: auto;
+ overflow: hidden;
}
</style>
--
Gitblit v1.9.3