顶部导航修改

This commit is contained in:
libingtao 2024-08-06 15:35:51 +08:00
parent 0868169ffd
commit 2477faf957
2 changed files with 299 additions and 275 deletions

View File

@ -1,228 +1,243 @@
<template> <template>
<!-- <v-scale-screen width="1185" height="784"> --> <!-- <v-scale-screen width="1185" height="784"> -->
<div class="content" id="app"> <div class="content" id="app">
<div class="community_top" v-if="isshow"> <div class="community_top" v-if="isshow">
<div style="margin-left: 26px"> <div class="lefttit">多元警情融合及预警管控平台</div>
<ul style="display: flex; margin-top: 27px"> <div style="margin-left: 16px">
<li> <ul style="display: flex; margin-top: 14px">
<router-link active-class="ist2" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/indexmin">服务总览</router-link> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
</li> <router-link active-class="ist2"
<li> style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
<router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/index">安保力量</router-link> to="/index/indexmin">服务总览</router-link>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> </li>
</li> <li>
<li> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/command">警情推送</router-link> <router-link active-class="ist"
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
</li> to="/index/index">安保力量</router-link>
<li> </li>
<router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/system">智能布控</router-link> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
</li> <router-link active-class="ist"
</ul> style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
</div> to="/index/command">警情推送</router-link>
<div style="margin-right: 100px"> </li>
<ul style="display: flex; margin-top: 27px"> <li>
<li> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist3" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/histordata">AI预警</router-link> <router-link active-class="ist"
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
</li> to="/index/system">智能布控</router-link>
<li> </li>
<router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/analysis">统计分析</router-link> </ul>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> </div>
</li> <div style="">
<li> <ul style="display: flex; margin-top: 14px">
<router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/information">资源管理</router-link> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
</li> <router-link active-class="ist3"
</ul> style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
<el-popconfirm title="确定退出吗?" @confirm="confirmEvent"> to="/index/histordata">AI预警</router-link>
<template #reference> </li>
<el-icon :size="20" style="display: inline-block; position: absolute; top: 31px; right: 32px; margin-left: 10px; vertical-align: middle; color: #9a4b48; font-weight: bold"> <li>
<switch-button /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<!-- <span style="color:#fff;">{{loginname}}</span> --> <router-link active-class="ist"
</el-icon> style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
</template> to="/index/analysis">统计分析</router-link>
</el-popconfirm> </li>
</div> <li>
</div> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<div class="community_center" v-if="isshow"> <router-link active-class="ist"
<router-view></router-view> style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
</div> to="/index/information">资源管理</router-link>
</li>
</ul>
<el-popconfirm title="确定退出吗?" @confirm="confirmEvent">
<template #reference>
<el-icon :size="20"
style="display: inline-block; position: absolute; top: 31px; right: 32px; margin-left: 10px; vertical-align: middle; color: #9a4b48; font-weight: bold">
<switch-button />
<span style="color:#fff;position: absolute;right: 29px;font-weight: 100;font-size: 16px;">{{loginname}}</span>
</el-icon>
</template>
</el-popconfirm>
</div>
</div>
<div class="community_center" v-if="isshow">
<router-view></router-view>
</div>
<router-view v-if="!isshow"></router-view> <router-view v-if="!isshow"></router-view>
</div> </div>
<!-- </v-scale-screen> --> <!-- </v-scale-screen> -->
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useUserStore } from '@/stores/modules/userStore' import { useUserStore } from '@/stores/modules/userStore'
import { useWebSocket } from '@vueuse/core' import { useWebSocket } from '@vueuse/core'
import { wsUrl } from '@/utils/webSocket' import { wsUrl } from '@/utils/webSocket'
import { ref, reactive, watch, onMounted } from 'vue' import { ref, reactive, watch, onMounted } from 'vue'
import api from '@/axios' import api from '@/axios'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const isshow = ref(true) const isshow = ref(true)
const loginname = localStorage.getItem('loginname') const loginname = localStorage.getItem('loginname')
onMounted(() => { onMounted(() => {
stationWebsocket() stationWebsocket()
setInterval(function () { setInterval(function () {
api.post('/multialarm/client/user/active', {}).then((res) => { api.post('/multialarm/client/user/active', {}).then((res) => {
console.log('token保活', res) console.log('token保活', res)
}) })
}, 180000) }, 180000)
}) })
watch( watch(
() => router.currentRoute.value, () => router.currentRoute.value,
(newValue: any) => { (newValue : any) => {
// console.log('newValue', newValue) // console.log('newValue', newValue)
if (newValue.path == '/index/communitymanage' || newValue.path == '/index/hkplay') { if (newValue.path == '/index/communitymanage' || newValue.path == '/index/hkplay') {
isshow.value = false isshow.value = false
} }
if (newValue.path == '/index/communitymanage' || newValue.path == '/index/cwPlay') { if (newValue.path == '/index/communitymanage' || newValue.path == '/index/cwPlay') {
isshow.value = false isshow.value = false
} }
}, },
{ immediate: true } { immediate: true }
) )
let istab = ref('6') let istab = ref('6')
const sendStationList = (rollCall_websocket: any, stationTempArr: any) => { const sendStationList = (rollCall_websocket : any, stationTempArr : any) => {
var getIot = { var getIot = {
msgcode: 102, msgcode: 102,
msgname: 'station-sensor-list', msgname: 'station-sensor-list',
message: stationTempArr, message: stationTempArr,
} }
var msg = JSON.stringify(getIot) var msg = JSON.stringify(getIot)
rollCall_websocket.send(msg) rollCall_websocket.send(msg)
} }
const stationHashList = ref([]) const stationHashList = ref([])
const stationWebsocket = () => { const stationWebsocket = () => {
// //
const { data, ws } = useWebSocket(wsUrl('/ClientWebSocket'), { const { data, ws } = useWebSocket(wsUrl('/ClientWebSocket'), {
heartbeat: { heartbeat: {
message: 'ping', message: 'ping',
interval: 1000 * 10, interval: 1000 * 10,
pongTimeout: 1000 * 10, pongTimeout: 1000 * 10,
}, },
autoReconnect: true, autoReconnect: true,
}) })
ws.value.onopen = () => { ws.value.onopen = () => {
console.log('链接打开') console.log('链接打开')
var messageObj = { var messageObj = {
msgcode: 100, msgcode: 100,
msgname: 'session', msgname: 'session',
message: useUserStore().getToken, message: useUserStore().getToken,
} }
var msg = JSON.stringify(messageObj) var msg = JSON.stringify(messageObj)
ws.value.send(msg) ws.value.send(msg)
var stationTempArr = [] var stationTempArr = []
for (var i in stationHashList.value) { for (var i in stationHashList.value) {
stationTempArr.push(i) stationTempArr.push(i)
if (stationTempArr.length >= 500) { if (stationTempArr.length >= 500) {
sendStationList(ws.value, stationTempArr) sendStationList(ws.value, stationTempArr)
stationTempArr = [] stationTempArr = []
} }
} }
sendStationList(ws.value, stationTempArr) sendStationList(ws.value, stationTempArr)
} }
ws.value.onclose = () => { ws.value.onclose = () => {
// console.log('') // console.log('')
// //
// stationWebsocket(); // stationWebsocket();
} }
ws.value.onmessage = function (evt) { ws.value.onmessage = function (evt) {
var data = JSON.parse(evt.data) var data = JSON.parse(evt.data)
var msgcode = data['msgcode'] var msgcode = data['msgcode']
var message = data['message'] var message = data['message']
switch (msgcode) { switch (msgcode) {
case 1035: // case 1035: //
// jinbao.value.push(message[0]) // jinbao.value.push(message[0])
useUserStore().setwebsoketdata(message[0]) useUserStore().setwebsoketdata(message[0])
break break
case 1020: // case 1020: //
// kickout(message); // kickout(message);
break break
default: default:
break break
} }
} }
} }
const toStudent = (a: any) => { const toStudent = (a : any) => {
istab = a istab = a
switch (a) { switch (a) {
case '1': case '1':
router.push('/index/index') router.push('/index/index')
break break
case '2': case '2':
router.push('/index/histordata') router.push('/index/histordata')
break break
case '3': case '3':
router.push('/index/system') router.push('/index/system')
break break
case '4': case '4':
router.push('/index/command') router.push('/index/command')
break break
case '5': case '5':
// router.push('/index/command') // router.push('/index/command')
break break
case '6': case '6':
router.push('/index/indexmin') router.push('/index/indexmin')
break break
case '7': case '7':
router.push('/index/information') router.push('/index/information')
break break
} }
} }
const confirmEvent = () => { const confirmEvent = () => {
console.log('退出') console.log('退出')
localStorage.clear() localStorage.clear()
// router.push('/login') // router.push('/login')
// router.push({ // router.push({
// path: '/login' // path: '/login'
// }) // })
location.reload() location.reload()
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.ist { .ist {
// background-image: url(@/assets/images/nav.png); // background-image: url(@/assets/images/nav.png);
background-image: url(@/views/page/indeximag/dhxz.png); background-image: url(@/views/page/indeximag/dhxz.png);
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
padding: 10px 18px; padding: 10px 18px;
border-radius: 3px; border-radius: 3px;
color: #fff !important; color: #fff !important;
// background-size: 100% 100%; // background-size: 100% 100%;
// background-repeat: no-repeat; // background-repeat: no-repeat;
// background-position: center; // background-position: center;
} }
.ist2 { .ist2 {
background-image: url(@/views/page/indeximag/dhxz.png); background-image: url(@/views/page/indeximag/dhxz.png);
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
padding: 10px 18px; padding: 10px 18px;
border-radius: 3px; border-radius: 3px;
color: #fff !important; color: #fff !important;
} }
.ist3 { .ist3 {
background-image: url(@/views/page/indeximag/dhxz.png); background-image: url(@/views/page/indeximag/dhxz.png);
background-size: 100% 100%; background-size: 100% 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
padding: 10px 18px; padding: 10px 18px;
border-radius: 3px; border-radius: 3px;
color: #fff !important; color: #fff !important;
} }
.active {
color: #fff;
}
.active {
color: #fff;
}
.content { .content {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
@ -236,76 +251,85 @@ const confirmEvent = () => {
.community_top { .community_top {
width: 100%; width: 100%;
height: 77px; height: 60px;
// position: absolute; // position: absolute;
// top: 0; // top: 0;
// background:#4880FF; // background:#4880FF;
background: #07315e; background: #07315e;
background-image: url(@/views/page/imag/titleBg1.png); // background-image: url(@/views/page/imag/titleBg1.png);
background-size: auto 100%; background-size: auto 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position-x: 55%; background-position-x: 55%;
display: flex; display: flex;
justify-content: space-between; // justify-content: space-between;
.title {
float: left;
height: 100%;
width: 400px;
line-height: 80px;
text-align: center;
font-size: 29px;
font-family: pmzd;
font-weight: 550;
background: #fff;
// background: linear-gradient(to bottom, #fff, #9cd7ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.lefttit{
height: 60px;
line-height: 60px;
font-size: 18px;
font-weight: 600;
letter-spacing: 2px;
color: #ffffff;
background: -webkit-linear-gradient(45deg, #ffffff, #a1d7ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
// background: linear-gradient(to bottom, #ffffff, #a1d7ff);
margin-left: 10px;
}
}
.title { .community_top>ul:first-child {
float: left; left: 44px;
height: 100%; }
width: 400px;
line-height: 80px;
text-align: center;
font-size: 29px;
font-family: pmzd;
font-weight: 550;
background: #fff;
// background: linear-gradient(to bottom, #fff, #9cd7ff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
}
.community_top > ul:first-child { .community_top>ul:first-child,
left: 44px; .community_top>ul:last-child {
} width: 524px;
float: left;
height: 24px;
margin-top: 23px;
padding: 0 20px;
position: relative;
}
.community_top > ul:first-child, .community_top>ul:first-child>li,
.community_top > ul:last-child { .community_top>ul:last-child>li {
width: 524px; float: left;
float: left; height: 100%;
height: 24px; width: 80px;
margin-top: 23px; border-radius: 3px;
padding: 0 20px; text-align: center;
position: relative; line-height: 24px;
} font-size: 14px;
font-family: ysbth;
.community_top > ul:first-child > li, font-weight: 600;
.community_top > ul:last-child > li { background: #1f1757;
float: left; margin-right: 10px;
height: 100%; padding: 2px 0px;
width: 80px; }
border-radius: 3px; .community_center {
text-align: center; // width: calc(100% - 100px);
line-height: 24px; width: 100%;
font-size: 14px; height: calc(100% - 51px);
font-family: ysbth; overflow: hidden;
font-weight: 600; // height: 100%;
background: #1f1757; // margin: 10px 50px 30px 50px;
margin-right: 10px; // position: absolute;
padding: 2px 0px; // position: relative;
} // background: linear-gradient(to left, rgba(0, 0, 0, 0), rgba(0, 31, 65, 1));
}
.community_center { }
// width: calc(100% - 100px);
width: 100%;
height: calc(100% - 68px);
overflow: hidden;
position: absolute;
// top: 0;
// height: 100%;
// margin: 10px 50px 30px 50px;
// position: absolute;
// position: relative;
// background: linear-gradient(to left, rgba(0, 0, 0, 0), rgba(0, 31, 65, 1));
}
}
</style> </style>

View File

@ -1102,7 +1102,7 @@
.right_bottm { .right_bottm {
width: 97%; width: 97%;
height: 33%; height: 35%;
padding: 5px; padding: 5px;
} }
} }