You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
7.1 KiB
Vue
317 lines
7.1 KiB
Vue
<script setup lang="ts">
|
|
import ReCol from "@/components/ReCol";
|
|
import { barChart, pieChart, pie3DChart } from "./components/chart";
|
|
import DeviceStatus from "./components/DeviceStatus.vue";
|
|
import Notify from "./components/Notify.vue";
|
|
import SwiperShow from "./components/SwiperShow.vue";
|
|
// import dataViewIcon1 from "@/assets/svg/icons/dataViewIcon1.svg";
|
|
// import dataViewIcon2 from "@/assets/svg/icons/dataViewIcon1.svg";
|
|
|
|
defineOptions({
|
|
name: "Workbench"
|
|
});
|
|
|
|
/** 分析概览 */
|
|
// const barChartData = [
|
|
// {
|
|
// requireData: [2101, 5288, 4239, 4962, 6752, 5208, 7450],
|
|
// questionData: [2216, 1148, 1255, 1788, 4821, 1973, 4379]
|
|
// },
|
|
// {
|
|
// requireData: [2101, 3280, 4400, 4962, 5752, 6889, 7600],
|
|
// questionData: [2116, 3148, 3255, 3788, 4821, 4970, 5390]
|
|
// }
|
|
// ];
|
|
const pie3Ddata = {
|
|
data: [
|
|
{ name: "紧急", value: 30 },
|
|
{ name: "较高", value: 10 },
|
|
{ name: "一般", value: 60 }
|
|
]
|
|
};
|
|
|
|
// 数据预览
|
|
// TODO 图标需要替换
|
|
const dataViewList = [
|
|
{
|
|
label: "异常总量",
|
|
value: "110200",
|
|
color: "#FF861A",
|
|
bgColor: "#FFE9D6",
|
|
icon: "icon-suanlipeizhi"
|
|
},
|
|
{
|
|
label: "设备总量",
|
|
value: "46700",
|
|
color: "#5786FF",
|
|
bgColor: "#D6E0FF",
|
|
icon: "icon-suanlipeizhi"
|
|
},
|
|
{
|
|
label: "覆盖网点",
|
|
value: "304800",
|
|
color: "#5024FE",
|
|
bgColor: "#DDD5FD",
|
|
icon: "icon-suanlipeizhi"
|
|
},
|
|
{
|
|
label: "资源使用",
|
|
value: "89300",
|
|
color: "#14A1FF",
|
|
bgColor: "#D6EFFF",
|
|
icon: "icon-suanlipeizhi"
|
|
}
|
|
];
|
|
</script>
|
|
|
|
<template>
|
|
<div class="main">
|
|
<el-row :gutter="24" justify="space-around">
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="24"
|
|
:md="24"
|
|
:sm="24"
|
|
:xs="24"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<el-card class="line-card" shadow="never" :body-style="{ padding: 0 }">
|
|
<div class="flex justify-between h-[140px]">
|
|
<SwiperShow />
|
|
</div>
|
|
</el-card>
|
|
</re-col>
|
|
|
|
<!-- up -->
|
|
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">数据总览</span>
|
|
|
|
<ul class="flex justify-between flex-wrap h-[252px] dataView_box">
|
|
<!-- <pieChart /> -->
|
|
<li v-for="(v, k) in dataViewList" :key="k" class="w-1/2">
|
|
<el-card class="line-card" shadow="always">
|
|
<div class="flex items-center justify-center h-[77px]">
|
|
<div
|
|
class="flex items-center justify-center"
|
|
style="width: 48px; height: 48px; border-radius: 50%"
|
|
:style="{ backgroundColor: v.bgColor }"
|
|
>
|
|
<i
|
|
class="iconfont"
|
|
:class="v.icon"
|
|
style="font-size: 28px"
|
|
:style="{ color: v.color }"
|
|
/>
|
|
</div>
|
|
<div class="dataView_info">
|
|
<span>{{ v.label }}</span>
|
|
<p>{{ v.value }}</p>
|
|
</div>
|
|
</div>
|
|
</el-card>
|
|
</li>
|
|
</ul>
|
|
</re-col>
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">设备状态</span>
|
|
<el-card
|
|
class="line-card"
|
|
shadow="always"
|
|
:body-style="{ padding: '16px' }"
|
|
>
|
|
<div class="flex justify-between h-[220px]"><DeviceStatus /></div>
|
|
</el-card>
|
|
</re-col>
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">设备告警情况</span>
|
|
<el-card
|
|
class="line-card"
|
|
shadow="always"
|
|
:body-style="{ padding: '16px' }"
|
|
>
|
|
<div class="flex justify-between h-[220px]">
|
|
<pie3DChart :data="pie3Ddata.data" />
|
|
</div>
|
|
</el-card>
|
|
</re-col>
|
|
<!-- down -->
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">违规总量</span>
|
|
<el-card
|
|
class="line-card"
|
|
shadow="always"
|
|
:body-style="{ padding: '16px' }"
|
|
>
|
|
<div class="flex justify-between h-[265px]">
|
|
<barChart />
|
|
</div>
|
|
</el-card>
|
|
</re-col>
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">算力占用</span>
|
|
<el-card
|
|
class="line-card"
|
|
shadow="always"
|
|
:body-style="{ padding: '16px' }"
|
|
>
|
|
<div class="flex justify-between h-[265px]">
|
|
<pieChart />
|
|
</div>
|
|
</el-card>
|
|
</re-col>
|
|
<re-col
|
|
v-motion
|
|
class="mb-[18px]"
|
|
:value="8"
|
|
:md="8"
|
|
:sm="8"
|
|
:xs="8"
|
|
:initial="{
|
|
opacity: 0,
|
|
y: 100
|
|
}"
|
|
:enter="{
|
|
opacity: 1,
|
|
y: 0,
|
|
transition: {
|
|
delay: 480
|
|
}
|
|
}"
|
|
>
|
|
<span class="inline-block mb-3 text-base">消息通知</span>
|
|
<el-card class="line-card" shadow="always" :body-style="{ padding: 0 }">
|
|
<div class="flex justify-between h-[297px]">
|
|
<Notify />
|
|
</div>
|
|
</el-card>
|
|
</re-col>
|
|
</el-row>
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
.dataView_box {
|
|
& > li {
|
|
padding-right: 16px;
|
|
margin-bottom: 16px;
|
|
&:nth-child(2n) {
|
|
padding-right: 0;
|
|
}
|
|
}
|
|
.dataView_info {
|
|
padding-left: 16px;
|
|
& > span {
|
|
color: #666;
|
|
font-size: 14fpx;
|
|
}
|
|
& > p {
|
|
color: #333;
|
|
font-size: 24px;
|
|
line-height: 36px;
|
|
}
|
|
}
|
|
}
|
|
</style>
|