|
|
@@ -1,28 +1,67 @@
|
|
|
<template>
|
|
|
<div class="dashboard-container">
|
|
|
<!-- 顶部横幅 -->
|
|
|
- <div class="banner">
|
|
|
+
|
|
|
+ <div class="server_title">
|
|
|
+ <el-image
|
|
|
+ style="width: 824px; height: 786px"
|
|
|
+ src="static/images/wgn_title.png"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ <div class="server_title_text">
|
|
|
+ <div class="server_title_text_title">时空门户</div>
|
|
|
+ <div class="server_title_text_content">
|
|
|
+ 时空门户子系统为用户提供信息概览、导航入口及交互功能,帮助用户快速了解和使用平台服务。系统统计访问量(累计和日均)、用户使用时长及活跃时段;展示平台功能、核心能力及操作演示视频;统计并展示服务总数、分类占比及新上线服务;同时统计各委办平台的注册用户信息及用户总数。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- <div class="banner">
|
|
|
<div class="banner-content">
|
|
|
<h1>时空门户</h1>
|
|
|
<p>时空门户是一个集数据采集、分析、展示于一体的综合性平台,为用户提供全面的设备监控和数据分析服务</p>
|
|
|
<button class="enter-btn">进入系统</button>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
|
|
|
<!-- 平台数据统计 -->
|
|
|
<div class="stats-section">
|
|
|
+ <div class="overview-header">
|
|
|
+ <h2>平台数据统计</h2>
|
|
|
+ </div>
|
|
|
<div class="stats-grid">
|
|
|
<div class="stat-card card-1">
|
|
|
+ <div class="stat-label">平台服务总数
|
|
|
+ <el-image
|
|
|
+ style="width: 20px; height: 20px"
|
|
|
+ src="static/images/skmh-1.png"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
<div class="stat-number">1,248</div>
|
|
|
- <div class="stat-label">在线设备数</div>
|
|
|
+ <div class="stat-label">较上月增长12.5%</div>
|
|
|
</div>
|
|
|
<div class="stat-card card-2">
|
|
|
+ <div class="stat-label">新上线服务统计
|
|
|
+ <el-image
|
|
|
+ style="width: 20px; height: 20px"
|
|
|
+ src="static/images/skmh-2.png"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
<div class="stat-number">86</div>
|
|
|
- <div class="stat-label">重大隐患统计</div>
|
|
|
+ <div class="stat-label">本月新增服务</div>
|
|
|
</div>
|
|
|
<div class="stat-card card-3">
|
|
|
+ <div class="stat-label">注册用户总数
|
|
|
+ <el-image
|
|
|
+ style="width: 20px; height: 20px"
|
|
|
+ src="static/images/skmh-3.png"
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
<div class="stat-number">24,586</div>
|
|
|
- <div class="stat-label">隐患排查人员</div>
|
|
|
+ <div class="stat-label">本周新增12,34人</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -31,66 +70,109 @@
|
|
|
<div class="data-overview">
|
|
|
<div class="overview-header">
|
|
|
<h2>数据概览</h2>
|
|
|
- <div class="time-tabs">
|
|
|
+ <!-- <div class="time-tabs">
|
|
|
<div class="tab active">今日</div>
|
|
|
<div class="tab">本周</div>
|
|
|
<div class="tab">本月</div>
|
|
|
<div class="tab">本年</div>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <div class="time-section">
|
|
|
+ <div class="time-card">
|
|
|
+ <div class="time-content">
|
|
|
+ <div style="">
|
|
|
+ <el-date-picker
|
|
|
+ class="el-date-picker"
|
|
|
+ v-model="fromTime.date"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ @change="changeTime"
|
|
|
+
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="button-row">
|
|
|
+ <el-button type="primary" @click="handleType(7)">最近7天</el-button>
|
|
|
+ <el-button type="primary" @click="handleType(30)">最近30天</el-button>
|
|
|
+ <el-button type="primary" @click="handleType(90)">最近90天</el-button>
|
|
|
+ <el-button type="primary" @click="handleType(365)">最近1年</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="charts-grid">
|
|
|
- <!-- 设备统计柱状图 -->
|
|
|
+ <!-- 访问量统计柱状图 -->
|
|
|
<div class="chart-card">
|
|
|
- <div class="chart-title">设备统计</div>
|
|
|
+ <div class="chart-title">访问量统计</div>
|
|
|
<div ref="deviceChart" class="chart-container"></div>
|
|
|
</div>
|
|
|
- <!-- 设备状态分布饼图 -->
|
|
|
+ <!-- 服务分类占比饼图 -->
|
|
|
<div class="chart-card">
|
|
|
- <div class="chart-title">设备状态分布</div>
|
|
|
+ <div class="chart-title">服务分类占比</div>
|
|
|
<div ref="statusChart" class="chart-container"></div>
|
|
|
</div>
|
|
|
<!-- 用户活跃度分析折线图 -->
|
|
|
- <div class="chart-card">
|
|
|
+ <!-- <div class="chart-card">
|
|
|
<div class="chart-title">用户活跃度分析</div>
|
|
|
<div ref="activityChart" class="chart-container"></div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<!-- 数据量柱状图 -->
|
|
|
- <div class="chart-card">
|
|
|
+ <!-- <div class="chart-card">
|
|
|
<div class="chart-title">数据量</div>
|
|
|
<div ref="dataVolumeChart" class="chart-container"></div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 设备综合分析比较 -->
|
|
|
<div class="comparison-section">
|
|
|
<div class="chart-card full-width">
|
|
|
- <div class="chart-title">设备综合分析比较</div>
|
|
|
- <div ref="comparisonChart" class="chart-container"></div>
|
|
|
+ <div class="chart-title">各委办平台用户分布</div>
|
|
|
+ <!-- <div ref="comparisonChart" class="chart-container"></div> -->
|
|
|
+ <el-table :data="tableData" style="width: 100%">
|
|
|
+ <el-table-column prop="name" label="委办单位" />
|
|
|
+ <el-table-column prop="number" label="注册用户数" />
|
|
|
+ <el-table-column prop="activity" label="活跃度" />
|
|
|
+ <el-table-column prop="server" label="服务使用量" />
|
|
|
+ </el-table>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<!-- 功能演示 -->
|
|
|
<div class="demo-section">
|
|
|
- <h2>功能演示</h2>
|
|
|
+ <div class="overview-header">
|
|
|
+ <h2>功能演示</h2>
|
|
|
+ </div>
|
|
|
<div class="demo-grid">
|
|
|
<div class="demo-card">
|
|
|
<div class="demo-thumbnail">
|
|
|
<div class="play-btn">▶</div>
|
|
|
</div>
|
|
|
- <div class="demo-title">设备监控演示</div>
|
|
|
+ <div class="demo-title">
|
|
|
+ <div class="demo-label">核心功能操作演示</div>
|
|
|
+ <div class="demo-text">展示系统核心功能操作流程与交互方式</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="demo-card">
|
|
|
<div class="demo-thumbnail">
|
|
|
<div class="play-btn">▶</div>
|
|
|
</div>
|
|
|
- <div class="demo-title">数据分析演示</div>
|
|
|
+ <div class="demo-title">
|
|
|
+ <div class="demo-label">二三维一体化引擎</div>
|
|
|
+ <div class="demo-text">展示空间数据可视化与交互分析能力</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="demo-card">
|
|
|
<div class="demo-thumbnail">
|
|
|
<div class="play-btn">▶</div>
|
|
|
</div>
|
|
|
- <div class="demo-title">隐患排查演示</div>
|
|
|
+ <div class="demo-title">
|
|
|
+ <div class="demo-label">实际业务场景应用</div>
|
|
|
+ <div class="demo-text">展示系统在行业中的实际应用案例</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -108,7 +190,36 @@ export default {
|
|
|
statusChart: null,
|
|
|
activityChart: null,
|
|
|
dataVolumeChart: null,
|
|
|
- comparisonChart: null
|
|
|
+ comparisonChart: null,
|
|
|
+ fromTime:{
|
|
|
+ date:[new Date(),new Date()]
|
|
|
+ },
|
|
|
+ tableData:[
|
|
|
+ {
|
|
|
+ number: '1234',
|
|
|
+ name: 'tom',
|
|
|
+ activity:'87',
|
|
|
+ server: '2324',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ number: '1234',
|
|
|
+ name: 'canver',
|
|
|
+ activity:'78',
|
|
|
+ server: '2324',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ number: '1234',
|
|
|
+ name: 'lina',
|
|
|
+ activity:'88',
|
|
|
+ server: '2324',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ number: '1234',
|
|
|
+ name: 'wang',
|
|
|
+ activity:'86',
|
|
|
+ server: '2324',
|
|
|
+ },
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
@@ -123,22 +234,44 @@ export default {
|
|
|
initCharts() {
|
|
|
this.initDeviceChart()
|
|
|
this.initStatusChart()
|
|
|
- this.initActivityChart()
|
|
|
- this.initDataVolumeChart()
|
|
|
- this.initComparisonChart()
|
|
|
+ // this.initActivityChart()
|
|
|
+ // this.initDataVolumeChart()
|
|
|
+ // this.initComparisonChart()
|
|
|
+ },
|
|
|
+ handleType(param){
|
|
|
+ const end = new Date()
|
|
|
+ const start = new Date()
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * param) //天计算
|
|
|
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1) //天计算
|
|
|
+ // start.setMonth(start.getMonth() - 6)
|
|
|
+ this.fromTime.date = [start,end]
|
|
|
+ },
|
|
|
+ changeTime(v){
|
|
|
+ debugger
|
|
|
+ console.log('[ eee ] >', v)
|
|
|
+ this.fromTime.date=v
|
|
|
+
|
|
|
},
|
|
|
|
|
|
initDeviceChart() {
|
|
|
this.deviceChart = echarts.init(this.$refs.deviceChart)
|
|
|
const option = {
|
|
|
tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
+ trigger: 'item',
|
|
|
backgroundColor: 'rgba(0, 25, 50, 0.8)',
|
|
|
borderColor: '#1E90FF',
|
|
|
textStyle: {
|
|
|
color: '#fff'
|
|
|
}
|
|
|
},
|
|
|
+ legend: {
|
|
|
+ orient: 'horizontal',
|
|
|
+ // bottom: 0,
|
|
|
+ top:0,
|
|
|
+ textStyle: {
|
|
|
+ color: '#a3b6c7'
|
|
|
+ }
|
|
|
+ },
|
|
|
grid: {
|
|
|
left: '3%',
|
|
|
right: '4%',
|
|
|
@@ -210,7 +343,7 @@ export default {
|
|
|
},
|
|
|
series: [
|
|
|
{
|
|
|
- name: '设备状态',
|
|
|
+ name: '服务分类占比',
|
|
|
type: 'pie',
|
|
|
radius: ['40%', '70%'],
|
|
|
avoidLabelOverlap: false,
|
|
|
@@ -235,10 +368,10 @@ export default {
|
|
|
show: false
|
|
|
},
|
|
|
data: [
|
|
|
- { value: 400, name: '正常', itemStyle: { color: '#52C41A' } },
|
|
|
- { value: 300, name: '警告', itemStyle: { color: '#FAAD14' } },
|
|
|
- { value: 200, name: '异常', itemStyle: { color: '#F5222D' } },
|
|
|
- { value: 100, name: '离线', itemStyle: { color: '#8C8C8C' } }
|
|
|
+ { value: 400, name: '空间分析', itemStyle: { color: '#52C41A' } },
|
|
|
+ { value: 300, name: '数据查询', itemStyle: { color: '#FAAD14' } },
|
|
|
+ { value: 200, name: '三维可视化', itemStyle: { color: '#F5222D' } },
|
|
|
+ { value: 100, name: '路径规划', itemStyle: { color: '#8C8C8C' } }
|
|
|
]
|
|
|
}
|
|
|
]
|
|
|
@@ -517,12 +650,45 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
+
|
|
|
+/* 确保你的自定义样式优先级更高 */
|
|
|
+.el-date-picker {
|
|
|
+ /* 重置为期望的样式 */
|
|
|
+ color: initial !important; /* 使用 !important 来确保优先级 */
|
|
|
+ background-color: white !important; /* 确保背景色正确 */
|
|
|
+}
|
|
|
.dashboard-container {
|
|
|
background-color: #0A192F;
|
|
|
min-height: 100vh;
|
|
|
color: #fff;
|
|
|
}
|
|
|
|
|
|
+.server_title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.server_title_text {
|
|
|
+ width: calc(100vw - 824px);
|
|
|
+ height: 786px;
|
|
|
+ background-color: #1c2631;
|
|
|
+ color: #fff;
|
|
|
+ padding: 0 160px 0 60px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ overflow: hidden;
|
|
|
+ &_title {
|
|
|
+ font-size: 64px;
|
|
|
+ font-weight: bold;
|
|
|
+ letter-spacing: 0.5rem;
|
|
|
+ }
|
|
|
+ &_content {
|
|
|
+ margin-top: 77px;
|
|
|
+ font-size: 22px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/* 顶部横幅 */
|
|
|
.banner {
|
|
|
position: relative;
|
|
|
@@ -585,6 +751,18 @@ export default {
|
|
|
/* 平台数据统计 */
|
|
|
.stats-section {
|
|
|
padding: 40px 20px;
|
|
|
+ .overview-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 30px;
|
|
|
+
|
|
|
+ h2 {
|
|
|
+ font-size: 24px;
|
|
|
+ color: #fff;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
.stats-grid {
|
|
|
display: flex;
|
|
|
@@ -593,14 +771,14 @@ export default {
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
.stat-card {
|
|
|
- width: 300px;
|
|
|
+ width: 555px;
|
|
|
height: 150px;
|
|
|
border-radius: 12px;
|
|
|
padding: 20px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
|
- align-items: center;
|
|
|
+ align-items: flex-start;
|
|
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
|
|
|
transition: transform 0.3s ease;
|
|
|
|
|
|
@@ -611,6 +789,7 @@ export default {
|
|
|
.stat-number {
|
|
|
font-size: 36px;
|
|
|
font-weight: bold;
|
|
|
+ margin-top: 10px;
|
|
|
margin-bottom: 10px;
|
|
|
color: #fff;
|
|
|
}
|
|
|
@@ -618,19 +797,22 @@ export default {
|
|
|
.stat-label {
|
|
|
font-size: 16px;
|
|
|
color: rgba(255, 255, 255, 0.8);
|
|
|
+ width: 100%;
|
|
|
+ justify-content: space-between;
|
|
|
+ display: flex;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.card-1 {
|
|
|
- background: linear-gradient(135deg, #1E90FF 0%, #00BFFF 100%);
|
|
|
+ background: linear-gradient(135deg, #3B82F6 0%, #4F46E5 100%);
|
|
|
}
|
|
|
|
|
|
.card-2 {
|
|
|
- background: linear-gradient(135deg, #52C41A 0%, #95DE64 100%);
|
|
|
+ background: linear-gradient(135deg, #22C55E 0%, #059669 100%);
|
|
|
}
|
|
|
|
|
|
.card-3 {
|
|
|
- background: linear-gradient(135deg, #9370DB 0%, #BA55D3 100%);
|
|
|
+ background: linear-gradient(135deg, #A855F7 0%, #7C3AED 100%);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -689,7 +871,7 @@ export default {
|
|
|
font-size: 18px;
|
|
|
color: #fff;
|
|
|
margin-bottom: 20px;
|
|
|
- text-align: center;
|
|
|
+ text-align: left;
|
|
|
}
|
|
|
|
|
|
.chart-container {
|
|
|
@@ -699,6 +881,22 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+// 时间筛选
|
|
|
+.time-section{
|
|
|
+ padding: 0 0px 40px;
|
|
|
+ .time-card {
|
|
|
+ background-color: rgba(30, 41, 59, 0.6);
|
|
|
+ border-radius: 12px;
|
|
|
+ padding: 20px;
|
|
|
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
|
|
|
+ }
|
|
|
+ .time-content{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/* 设备综合分析比较 */
|
|
|
.comparison-section {
|
|
|
@@ -718,7 +916,7 @@ export default {
|
|
|
font-size: 18px;
|
|
|
color: #fff;
|
|
|
margin-bottom: 20px;
|
|
|
- text-align: center;
|
|
|
+ text-align: left;
|
|
|
}
|
|
|
|
|
|
.chart-container {
|
|
|
@@ -730,18 +928,24 @@ export default {
|
|
|
|
|
|
/* 功能演示 */
|
|
|
.demo-section {
|
|
|
- padding: 0 20px 40px;
|
|
|
+ padding: 0 20px 100px;
|
|
|
|
|
|
- h2 {
|
|
|
- font-size: 24px;
|
|
|
- color: #fff;
|
|
|
+ .overview-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
margin-bottom: 30px;
|
|
|
- text-align: center;
|
|
|
+
|
|
|
+ h2 {
|
|
|
+ font-size: 24px;
|
|
|
+ color: #fff;
|
|
|
+ margin: 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.demo-grid {
|
|
|
display: flex;
|
|
|
- justify-content: center;
|
|
|
+ justify-content: space-between;
|
|
|
gap: 30px;
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
@@ -787,9 +991,19 @@ export default {
|
|
|
|
|
|
.demo-title {
|
|
|
padding: 15px;
|
|
|
+ color: #fff;
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+ .demo-label {
|
|
|
font-size: 16px;
|
|
|
color: #fff;
|
|
|
- text-align: center;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+ .demo-text {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #fff;
|
|
|
+ text-align: left;
|
|
|
}
|
|
|
}
|
|
|
}
|