From 85b9a8ff18d730693483e3cc76aa90f8c04ceac8 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Wed, 11 Feb 2026 18:45:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
uniapps/work-wx/src/pages/equipmentManagement/index.vue | 6
applications/drone-command/src/assets/images/active-menu-item.png | 0
uniapps/work-wx/src/static/images/lbt.png | 0
applications/drone-command/src/page/index/top/index.vue | 340 ++++++++++++++++++++++++++++++++----------------
uniapps/work-wx/src/static/images/user/password.png | 0
uniapps/work-wx/src/static/images/user/rightBtn.png | 0
uniapps/work-wx/src/static/images/lb_bottom.png | 0
uniapps/work-wx/src/static/images/user/department.png | 0
applications/drone-command/src/assets/images/menu-item.png | 0
uniapps/work-wx/src/subPackages/flightApplication/index.vue | 9 +
applications/drone-command/src/views/dataCockpit/index.vue | 2
applications/drone-command/src/components/map-container/device-map-container.vue | 19 +-
uniapps/work-wx/src/static/images/logo1.png | 0
uniapps/work-wx/src/static/images/user/info.png | 0
uniapps/work-wx/src/pages/page/index.vue | 4
15 files changed, 252 insertions(+), 128 deletions(-)
diff --git a/applications/drone-command/src/assets/images/active-menu-item.png b/applications/drone-command/src/assets/images/active-menu-item.png
new file mode 100644
index 0000000..39fd486
--- /dev/null
+++ b/applications/drone-command/src/assets/images/active-menu-item.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/menu-item.png b/applications/drone-command/src/assets/images/menu-item.png
new file mode 100644
index 0000000..3b24a46
--- /dev/null
+++ b/applications/drone-command/src/assets/images/menu-item.png
Binary files differ
diff --git a/applications/drone-command/src/components/map-container/device-map-container.vue b/applications/drone-command/src/components/map-container/device-map-container.vue
index cb4e5a2..5555f05 100644
--- a/applications/drone-command/src/components/map-container/device-map-container.vue
+++ b/applications/drone-command/src/components/map-container/device-map-container.vue
@@ -5,7 +5,7 @@
:show-admin-boundary="true" :zoom-to-boundary="true" :enable-stage-emit="true"
:cluster-height="CLUSTER_HEIGHT" :detail-height="DETAIL_HEIGHT" @ready="handleMapReady"
@stage-change="handleStageChange" />
- <div v-if="props.showLayerControl" class="layer-control-root" :class="{ collapsed: props.leftCollapsed }">
+ <div v-if="props.showLayerControl" class="layer-control-root" :class="{ collapsed: props.rightCollapsed }">
<div class="layer-control-wrap" ref="layerWrapRef">
<div class="layer-control" @click="toggleLayerPanel">
<img :src="layerControlIcon" alt="图层控制" />
@@ -88,7 +88,7 @@
type: Array,
default: () => [],
},
- leftCollapsed: {
+ rightCollapsed: {
type: Boolean,
default: false,
},
@@ -1290,7 +1290,7 @@
)
watch(
- () => props.leftCollapsed,
+ () => props.rightCollapsed,
isCollapsed => {
if (isCollapsed) showLayerPanel.value = false
}
@@ -1415,14 +1415,14 @@
.layer-control-root {
position: absolute;
- left: 337px;
- bottom: 22px;
- z-index: 9;
+ right: 337px;
+ top: 95px;
+ z-index: 11;
transition: transform 0.3s ease-in-out;
pointer-events: none;
&.collapsed {
- transform: translateX(-317px);
+ transform: translateX(317px);
}
}
@@ -1449,12 +1449,13 @@
display: flex;
flex-direction: column;
position: absolute;
- left: 66px;
- bottom: 0;
+ right: 66px;
+ top: 0;
width: 160px;
max-height: 442px;
background: #191932;
border-radius: 8px 8px 8px 8px;
+ z-index: 99;
.panel-title {
padding: 0 16px;
diff --git a/applications/drone-command/src/page/index/top/index.vue b/applications/drone-command/src/page/index/top/index.vue
index e7f7b93..d090627 100644
--- a/applications/drone-command/src/page/index/top/index.vue
+++ b/applications/drone-command/src/page/index/top/index.vue
@@ -1,38 +1,49 @@
<template>
- <div class="avue-top">
- <div class="top-bar__title">
- <img :src="logoUrl" alt="">
- <span>低空飞行监管子系统</span>
- </div>
+ <header class="header-container">
+ <div class="content-wrap">
+ <div class="logo-title-wrap">
+ <img :src="logoUrl" alt="Logo"></img>
+ <p class="title">低空飞行监管子系统</p>
+ </div>
- <div class="top-bar__right">
- <div class="top-user">
- <div class="icon-box">
- <img class="gateway" @click="jumpMH" src="@/assets/images/mh.png" alt="进入门户" title="进入门户">
- </div>
+ <div class="header-right">
+ <nav class="nav-menu">
+ <div v-for="(item, index) in topMenus" :key="index" class="nav-item"
+ :class="{ active: item.active }" @click="handleMenuClick(item)">
+ <span>{{ item.label }}</span>
+ </div>
+ </nav>
- <el-dropdown popper-class="command-custom-dropdown">
- <span class="el-dropdown-link">
- <img class="top-bar__img" :src="userInfo.avatar" alt="" />
- </span>
+ <div class="icon-group">
+ <div class="top-user">
+ <div class="icon-box">
+ <img class="gateway" @click="jumpMH" src="@/assets/images/mh.png" alt="进入门户" title="进入门户">
+ </div>
- <template #dropdown>
- <el-dropdown-menu>
- <!-- <el-dropdown-item>
+ <el-dropdown popper-class="command-custom-dropdown">
+ <span class="el-dropdown-link">
+ <img class="top-bar__img" :src="userInfo.avatar" alt="" />
+ </span>
+
+ <template #dropdown>
+ <el-dropdown-menu>
+ <!-- <el-dropdown-item>
<router-link to="/">{{ $t('navbar.dashboard') }}</router-link>
</el-dropdown-item>-->
- <!-- <el-dropdown-item>
+ <!-- <el-dropdown-item>
<router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link>
</el-dropdown-item> -->
- <el-dropdown-item @click="logout" divided>{{ $t('navbar.logOut') }}
- </el-dropdown-item>
- </el-dropdown-menu>
- </template>
- </el-dropdown>
- <top-setting></top-setting>
+ <el-dropdown-item @click="logout" divided>{{ $t('navbar.logOut') }}
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ <top-setting></top-setting>
+ </div>
+ </div>
</div>
</div>
- </div>
+ </header>
</template>
<script>
@@ -69,6 +80,35 @@
data () {
return {
logoUrl: logo,
+ activeMenu: 'drone-control',
+ topMenus: [
+ {
+ key: 'twin-supervision',
+ label: '孪生监管',
+ path: '/flight-supervision/#/brain',
+ },
+ {
+ key: 'airspace-collaboration',
+ label: '空域协同',
+ path: '/flight-supervision/#/space',
+ },
+ {
+ key: 'air-traffic',
+ label: '空中交通',
+ path: '/flight-supervision/#/activity',
+ },
+ {
+ key: 'information-service',
+ label: '信息服务',
+ path: '/flight-supervision/#/infoService',
+ },
+ {
+ key: 'drone-control',
+ label: '无人机管控',
+ path: '',
+ active: true,
+ },
+ ],
}
},
filters: {},
@@ -93,115 +133,189 @@
cancelButtonClass: 'command-message-box-cancel',
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
- const {VITE_APP_PARENT_SYSTEM,VITE_APP_ENV} = import.meta.env
- const isDev = VITE_APP_ENV === 'development'
- isDev
- ? this.$router.push({ path: '/login' })
- : window.location.replace(`${VITE_APP_PARENT_SYSTEM}/#/login`)
+ const { VITE_APP_PARENT_SYSTEM, VITE_APP_ENV } = import.meta.env
+ const isDev = VITE_APP_ENV === 'development'
+ isDev
+ ? this.$router.push({ path: '/login' })
+ : window.location.replace(`${VITE_APP_PARENT_SYSTEM}/#/login`)
})
})
},
jumpMH () {
-
+ window.open(`${window.location.origin}/droneWeb/#/gateway`, '_blank')
+ },
+ handleMenuClick (item) {
+ this.activeMenu = item.key
+ if (!item.path) return
+ window.open(`${window.location.origin}${item.path}`, '_blank')
},
},
}
</script>
<style lang="scss" scoped>
-.avue-top {
- display: flex;
- justify-content: space-between;
- height: 100%;
+.header-container {
+ position: relative;
+ height: 110px;
background: url('@/assets/images/topContainer/top-bg.png') center / 100% 100% no-repeat !important;
+ background-repeat: no-repeat;
+ background-size: cover;
pointer-events: none;
-}
+ z-index: 2;
-.top-bar__left {
- flex: 0 0 auto;
-}
-
-.top-bar__title {
- margin-top: 16px;
- margin-left: 30px;
- flex: 1;
- display: flex;
- align-items: center;
- height: pxToVh(48);
-
- img {
- margin-right: 17px;
- width: 50px;
- height: 50px;
+ .bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ pointer-events: none;
}
- span {
- width: 353px;
- height: 43px;
- font-family: PangMen;
- font-weight: 400;
- font-size: 36px;
- color: #FFFFFF;
- letter-spacing: 3px;
- text-shadow: 3px 3px 0px rgba(0, 13, 42, 0.27);
- text-align: left;
- font-style: normal;
- text-transform: none;
- }
-}
-
-.top-bar__right {
- margin-right: 28px;
- padding-top: 16px;
- flex: 0 0 auto;
- display: flex !important;
- align-items: flex-start;
- height: 100%;
- pointer-events: auto;
- box-sizing: border-box;
-
- .icon-box {
- margin-top: 6px;
- margin-right: 30px;
+ .content-wrap {
+ position: absolute;
+ inset: 0;
display: flex;
align-items: center;
- gap: 0 20px;
+ z-index: 1;
+ padding: 0 40px;
- .gateway {
- width: 21px;
- height: 18px;
+ .logo-title-wrap {
+ display: flex;
+ align-items: center;
+ transform: translateY(-10px);
+
+ img {
+ width: 70px;
+ height: 63px;
+ vertical-align: middle;
+ }
+
+ .title {
+ margin-left: 16px;
+ margin-top: 0;
+ margin-bottom: 0;
+
+ width: 353px;
+ height: 43px;
+ font-family: PangMen;
+ font-weight: 400;
+ font-size: 36px;
+ color: #FFFFFF;
+ letter-spacing: 3px;
+ text-shadow: 3px 3px 0px rgba(0, 13, 42, 0.27);
+ text-align: left;
+ font-style: normal;
+ text-transform: none;
+ }
}
- >* {
- cursor: pointer;
+ .header-right {
+ display: flex;
+ align-items: center;
+ margin-left: auto;
+ margin-top: -25px;
+ pointer-events: auto;
+
+ .nav-menu {
+ display: flex;
+ margin-right: 30px;
+ gap: 0px;
+
+ .nav-item {
+ width: 136px;
+ height: 34px;
+ box-sizing: border-box;
+ text-align: center;
+ color: #afafe0;
+ text-decoration: none;
+ font-size: 20px;
+ transition: color 0.3s;
+ padding: 0;
+ background: url('@/assets/images/menu-item.png') no-repeat center / 136px 34px;
+ cursor: pointer;
+ margin: 0 10px;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding-bottom: 10px;
+ line-height: 1;
+
+ font-family: YouSheBiaoTiHei;
+
+ &:hover {
+ color: #fff;
+ }
+
+ &.active {
+ color: #fff;
+ background: url('@/assets/images/active-menu-item.png') no-repeat center / 136px 34px;
+
+ span {
+ background: linear-gradient(180deg,
+ #fff 22.11%,
+ #ffffff 86.69%);
+ background-size: contain;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ text-shadow: 0px 0px 13px 0px #5da6ef73;
+ }
+ }
+ }
+ }
+
+ .icon-group {
+ display: flex;
+ align-items: center;
+ margin-right: 20px;
+ gap: 15px;
+
+
+ .icon-box {
+ margin-top: 6px;
+ margin-right: 30px;
+ display: flex;
+ align-items: center;
+ gap: 0 20px;
+
+ .gateway {
+ width: 21px;
+ height: 18px;
+ }
+
+ >* {
+ cursor: pointer;
+ }
+ }
+ }
+
+ .top-bar__item {
+ margin-right: 15px;
+ display: inline-block !important;
+ }
+
+ .top-user {
+ display: flex;
+ align-items: center;
+ }
+
+ .top-bar__img {
+ margin-top: 5px;
+ width: 20px;
+ height: 20px;
+ border: 2px solid #383874;
+ border-radius: 50%;
+ }
+
+ .el-dropdown-link {
+ cursor: pointer;
+ color: #606266;
+ }
+
+ .el-dropdown-link:hover {
+ color: #409EFF;
+ }
}
}
-}
-
-.top-bar__item {
- margin-right: 15px;
- display: inline-block !important;
-}
-
-.top-user {
- display: flex;
- align-items: center;
-}
-
-.top-bar__img {
- margin-top: 5px;
- width: 20px;
- height: 20px;
- border: 2px solid #383874;
- border-radius: 50%;
-}
-
-.el-dropdown-link {
- cursor: pointer;
- color: #606266;
-}
-
-.el-dropdown-link:hover {
- color: #409EFF;
}
</style>
diff --git a/applications/drone-command/src/views/dataCockpit/index.vue b/applications/drone-command/src/views/dataCockpit/index.vue
index d9399c1..71073a9 100644
--- a/applications/drone-command/src/views/dataCockpit/index.vue
+++ b/applications/drone-command/src/views/dataCockpit/index.vue
@@ -11,7 +11,7 @@
<template>
<div class="page-container">
<DeviceMapContainer ref="deviceMapRef" :all-devices="allDevices" :alarm-drones="realWarningData"
- :left-collapsed="leftCollapsed" container-id="data-cockpit-map"
+ :right-collapsed="rightCollapsed" container-id="data-cockpit-map"
@drone-signal="handleAlarmAction('signal', $event)" @drone-counter="handleAlarmAction('counter', $event)"
@drone-favorite="handleAlarmFavorite" />
<LeftContainer class="left-container" v-model:activeId="leftActiveId" v-model:collapsed="leftCollapsed"
diff --git a/uniapps/work-wx/src/pages/equipmentManagement/index.vue b/uniapps/work-wx/src/pages/equipmentManagement/index.vue
index 4c0b578..5e6e9df 100644
--- a/uniapps/work-wx/src/pages/equipmentManagement/index.vue
+++ b/uniapps/work-wx/src/pages/equipmentManagement/index.vue
@@ -4,7 +4,11 @@
<view class="content">
<view class="title">飞行设备</view>
<u-list :style="{ height: 'calc(100vh - 160rpx)' }" @scrolltolower="scrolltolower" :lower-threshold="50">
- <view class="card" v-for="(item, index) in equipmentList" :key="index" @click="handleClick(item)">
+ <u-empty v-if="equipmentList.length === 0"
+ text="暂无数据"
+ icon="http://cdn.uviewui.com/uview/empty/car.png">
+ </u-empty>
+ <view v-else class="card" v-for="(item, index) in equipmentList" :key="index" @click="handleClick(item)">
<view class="left">
<u-image :src="droneSvg" mode="aspectFill" :width="70" :height="90"></u-image>
</view>
diff --git a/uniapps/work-wx/src/pages/page/index.vue b/uniapps/work-wx/src/pages/page/index.vue
index 64ec0ea..e6e31ca 100644
--- a/uniapps/work-wx/src/pages/page/index.vue
+++ b/uniapps/work-wx/src/pages/page/index.vue
@@ -147,8 +147,8 @@
// 获取轮播图
async function getLBListTest() {
const res = await getLBList({})
- console.log(res, '8898')
- lbList.value = res.data.data.map(item => ({
+ // 排除annexUrl为空的项
+ lbList.value = res.data.data.filter(item => item.annexUrl).map(item => ({
...item,
image: item.annexUrl,
title: item.bannerTitle,
diff --git a/uniapps/work-wx/src/static/images/lb_bottom.png b/uniapps/work-wx/src/static/images/lb_bottom.png
new file mode 100644
index 0000000..8775fa3
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/lb_bottom.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/lbt.png b/uniapps/work-wx/src/static/images/lbt.png
new file mode 100644
index 0000000..eebf8d6
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/lbt.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/logo1.png b/uniapps/work-wx/src/static/images/logo1.png
new file mode 100644
index 0000000..fad3549
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/logo1.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/user/department.png b/uniapps/work-wx/src/static/images/user/department.png
new file mode 100644
index 0000000..8ea0456
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/user/department.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/user/info.png b/uniapps/work-wx/src/static/images/user/info.png
new file mode 100644
index 0000000..18ab1f7
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/user/info.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/user/password.png b/uniapps/work-wx/src/static/images/user/password.png
new file mode 100644
index 0000000..eb63256
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/user/password.png
Binary files differ
diff --git a/uniapps/work-wx/src/static/images/user/rightBtn.png b/uniapps/work-wx/src/static/images/user/rightBtn.png
new file mode 100644
index 0000000..db90c73
--- /dev/null
+++ b/uniapps/work-wx/src/static/images/user/rightBtn.png
Binary files differ
diff --git a/uniapps/work-wx/src/subPackages/flightApplication/index.vue b/uniapps/work-wx/src/subPackages/flightApplication/index.vue
index 89584d5..d80c0be 100644
--- a/uniapps/work-wx/src/subPackages/flightApplication/index.vue
+++ b/uniapps/work-wx/src/subPackages/flightApplication/index.vue
@@ -18,8 +18,13 @@
<view class="sp-title">
审批记录
</view>
+
<u-list :style="{ height: 'calc(100vh - 240rpx)' }" @scrolltolower="scrolltolower" :lower-threshold="50">
- <view class="approvalRecord" v-for="(approvalRecord,approvalRecordIndex) in approvalRecords" :key="approvalRecordIndex" @click="handleClick(approvalRecord)">
+ <u-empty v-if="approvalRecords.length === 0"
+ text="暂无数据"
+ icon="http://cdn.uviewui.com/uview/empty/car.png">
+ </u-empty>
+ <view v-else class="approvalRecord" v-for="(approvalRecord,approvalRecordIndex) in approvalRecords" :key="approvalRecordIndex" @click="handleClick(approvalRecord)">
<view class="name-status">
<view class="name-image">
<u-image :src="spSvg" class="icon" width="16" height="16"></u-image>
@@ -297,7 +302,7 @@
color: #FFFFFF;
padding: 0 6rpx;
-
+
}
}
--
Gitblit v1.9.3