Files
maintenance_system/src/views/ueScreen/components/header.vue

226 lines
4.8 KiB
Vue
Raw Normal View History

2025-11-14 16:46:34 +08:00
<template>
2025-11-14 18:59:59 +08:00
<div class="header">
<div class="header-left">
2025-11-15 16:40:35 +08:00
<DateSelector :year="currentYear" :month="currentMonth" :start-year="2010" :end-year="2030" />
<ProjectSelector v-model="selectedProjectId" :options="options" />
<!-- <div>
2025-11-14 18:59:59 +08:00
<el-date-picker v-model="value1" type="date" placeholder="请选择时间" value-format="YYYY-MM-DD" class="datePicker" />
</div>
<div>
2025-11-15 16:40:35 +08:00
<el-select v-model="value" placeholder="请选择项目">
2025-11-14 18:59:59 +08:00
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
2025-11-15 16:40:35 +08:00
</div> -->
2025-11-14 18:59:59 +08:00
</div>
<div class="header-center">新能源场站智慧运维大数据平台</div>
<div class="header-right">
<div>
<div class="left-section">
<img src="@/assets/large/weather.png" alt="天气图标" />
<span>
<span>多云 9°/18°</span>
</span>
</div>
</div>
<div>{{ date.ymd }} {{ date.hms }}</div>
2025-11-15 16:40:35 +08:00
<!-- 分割线 -->
<div class="divider">
<div class="top-block"></div>
<div class="bottom-block"></div>
</div>
<!-- -->
<div class="change" @click="emit('changePage')">
<el-icon v-if="!isFull">
<Expand />
</el-icon>
<el-icon v-else>
<Fold />
</el-icon>
</div>
<!-- 分割线 -->
<div class="divider">
<div class="top-block"></div>
<div class="bottom-block"></div>
</div>
<!-- 右侧管理系统图标 + 文字 -->
<div class="outscreen" @click="outScreen">
<img src="@/assets/large/outscreen.png" width="20" height="20" />
</div>
2025-11-14 18:59:59 +08:00
</div>
</div>
2025-11-14 16:46:34 +08:00
</template>
2025-11-14 18:59:59 +08:00
<script setup lang="ts">
2025-11-15 16:40:35 +08:00
declare var ue5: any;
2025-11-14 18:59:59 +08:00
import '@/assets/styles/element.scss';
2025-11-15 16:40:35 +08:00
import DateSelector from './date.vue';
import ProjectSelector from './project.vue';
defineProps({
isFull: {
type: Boolean,
default: false
},
});
const emit = defineEmits(['changePage']);
2025-11-14 18:59:59 +08:00
const date: any = ref({
ymd: '',
hms: '',
week: ''
});
2025-11-15 16:40:35 +08:00
const currentYear = ref(2025);
const currentMonth = ref(11);
const selectedProjectId = ref(1);
2025-11-14 18:59:59 +08:00
const value1 = ref('');
const value = ref('');
const options = ref([
{
value: 1,
label: '田东县乡村振兴光伏发电项目'
},
{
value: 2,
label: '田东县乡村振兴光伏发电项目(二期)'
},
{
value: 3,
label: '长顺县朝核农业光伏电站'
}
]);
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
const setTime = () => {
let date1 = new Date();
let year: any = date1.getFullYear();
let month: any = date1.getMonth() + 1;
let day: any = date1.getDate();
let hours: any = date1.getHours();
if (hours < 10) {
hours = '0' + hours;
}
let minutes: any = date1.getMinutes();
if (minutes < 10) {
minutes = '0' + minutes;
}
let seconds: any = date1.getSeconds();
if (seconds < 10) {
seconds = '0' + seconds;
}
date.value.ymd = year + '-' + month + '-' + day;
date.value.hms = hours + ':' + minutes + ':' + seconds;
date.value.week = date1.getDay();
};
// 添加定时器,每秒更新一次时间
const timer = setInterval(setTime, 1000);
2025-11-15 16:40:35 +08:00
const outScreen = () => {
console.log('outScreen');
ue5('exitfullscreen');
};
2025-11-14 18:59:59 +08:00
// 组件卸载时清除定时器
onUnmounted(() => {
clearInterval(timer);
});
</script>
<style scoped lang="scss">
$vm_base: 1920;
$vh_base: 1080;
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
// 计算vw
@function vw($px) {
@return calc(($px / $vm_base) * 100vw);
}
// 计算vh
@function vh($px) {
@return calc(($px / $vh_base) * 100vh);
}
2025-11-14 16:46:34 +08:00
2025-11-14 18:59:59 +08:00
.header {
width: 100%;
height: 8vh;
display: grid;
grid-template-columns: 1fr 2fr 1fr;
}
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
.header-left {
padding-left: vw(40);
display: flex;
align-items: center;
2025-11-15 16:40:35 +08:00
gap: vw(20);
// justify-content: space-between;
// &>div {
// width: vw(240);
// margin-right: vw(20);
// }
2025-11-14 18:59:59 +08:00
}
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
.header-center {
display: flex;
align-items: center;
justify-content: center;
font-family: Rang_men_zheng_title;
font-size: vw(32);
letter-spacing: vw(8);
}
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
.header-right {
padding-right: vw(20);
display: flex;
align-items: center;
justify-content: flex-end;
font-size: vw(15);
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
.left-section {
display: flex;
align-items: center;
padding-right: vw(20);
// margin-right: auto; /* 让右侧元素(管理系统)居右 */
}
2025-11-15 16:40:35 +08:00
2025-11-14 18:59:59 +08:00
.left-section img {
width: 32px;
height: 32px;
2025-11-15 16:40:35 +08:00
margin-right: 8px;
/* 图标与文字间距 */
}
}
/* 分割线 */
.divider {
display: grid;
grid-template-rows: 1fr 1fr;
gap: vh(2);
padding: vh(14) vw(10);
.top-block,
.bottom-block {
width: vw(2);
height: vh(7);
background: #19b5fb;
}
}
.change {
font-size: vw(22);
line-height: vw(22);
margin-top: vw(2);
}
.outscreen {
width: vw(20);
height: vw(20);
cursor: pointer;
img {
width: 100%;
height: 100%;
2025-11-14 18:59:59 +08:00
}
}
</style>