feat: 首页大屏完成
After Width: | Height: | Size: 214 KiB |
After Width: | Height: | Size: 136 KiB |
After Width: | Height: | Size: 737 B |
After Width: | Height: | Size: 869 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 737 B |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 2.7 KiB |
|
@ -1,3 +1,6 @@
|
||||||
@use "src/element";
|
@use "src/element";
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: var(--background-color);
|
||||||
|
}
|
|
@ -1,2 +1,6 @@
|
||||||
@use "animations/animations";
|
@use "animations/animations";
|
||||||
@use "common/common";
|
@use "common/common";
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--background-color: #051135;
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
<script lang="ts" setup></script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="bar-op">
|
||||||
|
<ul class="flex-x-around">
|
||||||
|
<li><img alt="icon-1" src="@/assets/images/icon/icon-1.png" /></li>
|
||||||
|
<li><img alt="icon-2" src="@/assets/images/icon/icon-2.png" /></li>
|
||||||
|
<li><img alt="icon-3" src="@/assets/images/icon/icon-3.png" /></li>
|
||||||
|
</ul>
|
||||||
|
<span class="c-primary">王菠萝</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.bar-op {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
position: absolute;
|
||||||
|
top: 11px;
|
||||||
|
right: 20px;
|
||||||
|
height: 36px;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
float: left;
|
||||||
|
width: 148px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
float: left;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import PageList from '@/layout/components/layout-content/page-list.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="flex-y-around">
|
||||||
|
<div class="mt-[158px]">
|
||||||
|
<p class="c-white">
|
||||||
|
<img alt="" src="@/assets/images/icon/welcome.png" />
|
||||||
|
<i class="c-primary-secondary">xxxx</i>
|
||||||
|
你好 欢迎使用xxxxxxxzz
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<page-list />
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -0,0 +1,90 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<ul class="page-list flex-x-between">
|
||||||
|
<li class="flex-y-center" @click="router.push('/smart-parking')">
|
||||||
|
<img alt="car" src="@/assets/images/icon/smart/car.png" />
|
||||||
|
<span>智慧停车</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex-y-center">
|
||||||
|
<img alt="distribution" src="@/assets/images/icon/smart/distribution.png" />
|
||||||
|
<span>智慧配送</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex-y-center">
|
||||||
|
<img alt="muck" src="@/assets/images/icon/smart/muck.png" />
|
||||||
|
<span>智慧渣土</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex-y-center">
|
||||||
|
<img alt="clean-city" src="@/assets/images/icon/smart/clean-city.png" />
|
||||||
|
<span>智慧洁城</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex-y-center">
|
||||||
|
<img alt="lamp" src="@/assets/images/icon/smart/lamp.png" />
|
||||||
|
<span>智慧路灯</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page-list {
|
||||||
|
margin: 104px 0 0 0;
|
||||||
|
width: 1477px;
|
||||||
|
height: 260px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
width: 280px;
|
||||||
|
height: 260px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:nth-child(n):hover {
|
||||||
|
background: linear-gradient(to bottom, #164ec2c9, #1fa3dec9);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
background: linear-gradient(to bottom, #006efec9, #494affc9);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
background: linear-gradient(to bottom, #2ad3acc9, #037a9cc9);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
background: linear-gradient(to bottom, #4c09bec9, #870effc9);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(4) {
|
||||||
|
background: linear-gradient(to bottom, #00b9ffc9, #034f7ec9);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(5) {
|
||||||
|
background: linear-gradient(to bottom, #0ad1d1c9, #10607cc9);
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
margin: 38px 0 0 0;
|
||||||
|
font-size: 28px;
|
||||||
|
color: #ffffff;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -9px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 37px;
|
||||||
|
height: 5px;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: inset #707070 0 0 3px 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,56 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<footer class="flex-y-around">
|
||||||
|
<ul class="flex-x-between">
|
||||||
|
<li>
|
||||||
|
<img alt="" src="@/assets/images/icon/icon-4.png" />
|
||||||
|
<span>园区</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img alt="" src="@/assets/images/icon/icon-5.png" />
|
||||||
|
<span>园区</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img alt="" src="@/assets/images/icon/icon-6.png" />
|
||||||
|
<span>园区</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<img alt="" src="@/assets/images/icon/icon-7.png" />
|
||||||
|
<span>园区</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</footer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
footer {
|
||||||
|
margin: 190px 0 0 0;
|
||||||
|
z-index: 6;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
width: 431px;
|
||||||
|
height: 90px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 90px;
|
||||||
|
height: 90px;
|
||||||
|
color: #7cc1ff;
|
||||||
|
background: url('@/assets/images/bg/bg-main-2.png');
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import BarOp from '@/components/Common/BarOp.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<header>
|
||||||
|
<div class="title">
|
||||||
|
<h1 class="c-white">后台管理系统大标题</h1>
|
||||||
|
<BarOp />
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.title {
|
||||||
|
width: 100%;
|
||||||
|
height: 108px;
|
||||||
|
background: url('@/assets/images/header/bg-layout-header.png') no-repeat center;
|
||||||
|
background-size: cover;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
line-height: 108px;
|
||||||
|
font-size: 42px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,5 +1,34 @@
|
||||||
<script lang="ts" setup></script>
|
<script lang="ts" setup>
|
||||||
|
import LayoutContent from '@/layout/components/layout-content/index.vue';
|
||||||
|
import LayoutFooter from '@/layout/components/layout-footer/index.vue';
|
||||||
|
import LayoutHeader from '@/layout/components/layout-header/index.vue';
|
||||||
|
</script>
|
||||||
|
|
||||||
<template>111</template>
|
<template>
|
||||||
|
<div class="layout-container">
|
||||||
|
<div class="particle" />
|
||||||
|
<layout-header />
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<layout-content />
|
||||||
|
|
||||||
|
<layout-footer />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.layout-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url('@/assets/images/bg/bg-layout.png') no-repeat center;
|
||||||
|
background-size: cover;
|
||||||
|
|
||||||
|
.particle {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: url('@/assets/images/bg/bg-particle.png') no-repeat center;
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -2,6 +2,7 @@ import 'animate.css';
|
||||||
import '@unocss/reset/tailwind-compat.css';
|
import '@unocss/reset/tailwind-compat.css';
|
||||||
import 'uno.css';
|
import 'uno.css';
|
||||||
import 'virtual:unocss-devtools';
|
import 'virtual:unocss-devtools';
|
||||||
|
import '@/assets/styles/global.scss';
|
||||||
|
|
||||||
import { createApp } from 'vue';
|
import { createApp } from 'vue';
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ defineProps({
|
||||||
<img
|
<img
|
||||||
alt="arrow-item"
|
alt="arrow-item"
|
||||||
class="float-left h-[16px]"
|
class="float-left h-[16px]"
|
||||||
src="@/assets/images/arrow/arrow-item.png"
|
src="../../../../assets/images/arrow/arrow-item.png"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,6 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import MainCenterItem from '@/components/Layout/MainCenterItem.vue';
|
import TruckMonitorCenterItem from '@/views/smart-parking/components/parking-content/truck-monitor-center-item.vue';
|
||||||
import MainCenterPercent from '@/components/Layout/MainCenterPercent.vue';
|
import TruckMonitorCenterPercent from '@/views/smart-parking/components/parking-content/truck-monitor-center-percent.vue';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -13,20 +13,36 @@ import MainCenterPercent from '@/components/Layout/MainCenterPercent.vue';
|
||||||
<!-- 中间布局 -->
|
<!-- 中间布局 -->
|
||||||
<div class="main-inner">
|
<div class="main-inner">
|
||||||
<div class="pos-relative">
|
<div class="pos-relative">
|
||||||
<MainCenterItem :count="45" class="top-[37px] left-[40px] w-[175px]" door="西北门" />
|
<truck-monitor-center-item
|
||||||
<MainCenterPercent :percent="44" class="top-[73px] left-[193px]" />
|
:count="45"
|
||||||
|
class="top-[37px] left-[40px] w-[175px]"
|
||||||
|
door="西北门"
|
||||||
|
/>
|
||||||
|
<truck-monitor-center-percent :percent="44" class="top-[73px] left-[193px]" />
|
||||||
</div>
|
</div>
|
||||||
<div class="pos-relative">
|
<div class="pos-relative">
|
||||||
<MainCenterItem :count="67" class="top-[37px] left-[120px] w-[175px]" door="东北门" />
|
<truck-monitor-center-item
|
||||||
<MainCenterPercent :percent="25" class="top-[73px] right-[192px]" />
|
:count="67"
|
||||||
|
class="top-[37px] left-[120px] w-[175px]"
|
||||||
|
door="东北门"
|
||||||
|
/>
|
||||||
|
<truck-monitor-center-percent :percent="25" class="top-[73px] right-[192px]" />
|
||||||
</div>
|
</div>
|
||||||
<div class="pos-relative">
|
<div class="pos-relative">
|
||||||
<MainCenterItem :count="345" class="top-[45px] left-[34px] w-[175px]" door="西南门" />
|
<truck-monitor-center-item
|
||||||
<MainCenterPercent :percent="25" class="top-[40px] left-[193px]" />
|
:count="345"
|
||||||
|
class="top-[45px] left-[34px] w-[175px]"
|
||||||
|
door="西南门"
|
||||||
|
/>
|
||||||
|
<truck-monitor-center-percent :percent="25" class="top-[40px] left-[193px]" />
|
||||||
</div>
|
</div>
|
||||||
<div class="pos-relative">
|
<div class="pos-relative">
|
||||||
<MainCenterItem :count="145" class="top-[45px] left-[130px] w-[175px]" door="东南门" />
|
<truck-monitor-center-item
|
||||||
<MainCenterPercent :percent="44" class="top-[40px] left-[66px]" />
|
:count="145"
|
||||||
|
class="top-[45px] left-[130px] w-[175px]"
|
||||||
|
door="东南门"
|
||||||
|
/>
|
||||||
|
<truck-monitor-center-percent :percent="44" class="top-[40px] left-[66px]" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main-inner-center">
|
<div class="main-inner-center">
|
||||||
|
|
|
@ -1,4 +1,15 @@
|
||||||
<script lang="ts" setup></script>
|
<script lang="ts" setup>
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
|
import BarOp from '@/components/Common/BarOp.vue';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
/** 点击家目录 */
|
||||||
|
const onHomeClick = () => {
|
||||||
|
router.push('/');
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<header class="h-[105px]">
|
<header class="h-[105px]">
|
||||||
|
@ -7,16 +18,16 @@
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h1 class="c-white">智慧智能监管中心</h1>
|
<h1 class="c-white">智慧智能监管中心</h1>
|
||||||
<h2 class="c-primary-secondary">车辆监控中心</h2>
|
<h2 class="c-primary-secondary">车辆监控中心</h2>
|
||||||
|
<img
|
||||||
|
alt="icon-setting"
|
||||||
|
class="ml-[-284px]"
|
||||||
|
src="@/assets/images/icon/icon-home.png"
|
||||||
|
@click="onHomeClick"
|
||||||
|
/>
|
||||||
|
<img alt="icon-home" class="ml-[284px]" src="@/assets/images/icon/icon-setting.png" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="bar-op">
|
<BarOp />
|
||||||
<ul class="flex-x-around">
|
|
||||||
<li><img alt="icon-1" src="@/assets/images/icon/icon-1.png" /></li>
|
|
||||||
<li><img alt="icon-2" src="@/assets/images/icon/icon-2.png" /></li>
|
|
||||||
<li><img alt="icon-3" src="@/assets/images/icon/icon-3.png" /></li>
|
|
||||||
</ul>
|
|
||||||
<span class="c-primary">王菠萝</span>
|
|
||||||
</div>
|
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -35,8 +46,21 @@ header {
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
object-fit: cover;
|
||||||
|
z-index: 1;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 42px;
|
font-size: 42px;
|
||||||
line-height: 60px;
|
line-height: 60px;
|
||||||
|
@ -48,27 +72,4 @@ header {
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bar-op {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
top: 11px;
|
|
||||||
right: 20px;
|
|
||||||
height: 36px;
|
|
||||||
|
|
||||||
ul {
|
|
||||||
float: left;
|
|
||||||
width: 148px;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 36px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
float: left;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|