feat 前台数据展示

master
rouchen 2024-06-03 21:30:44 +08:00
parent a0b6bd758c
commit 360a217220
5 changed files with 80 additions and 20 deletions

View File

@ -0,0 +1,15 @@
import request from '@/utils/request'
export function selectCar(){
return request({
url: '/connect/select',
method: 'post'
})
}
export function selectCarList(){
return request({
url: '/connect/selectCar',
method: 'post'
})
}

View File

@ -1,4 +1,5 @@
<template> <template>
<el-row :gutter="40" class="panel-group" > <el-row :gutter="40" class="panel-group" >
<el-col :lg="6" :sm="12" :xs="12" class="card-panel-col" > <el-col :lg="6" :sm="12" :xs="12" class="card-panel-col" >
<div class="card-panel" @click="handleSetLineChartData('gatewayNodeSum')"> <div class="card-panel" @click="handleSetLineChartData('gatewayNodeSum')">
@ -11,7 +12,7 @@
</div> </div>
<count-to <count-to
suffix="台" suffix="台"
:duration="3000" :end-val="20" :start-val="0" class="card-panel-num"/> :duration="3000" :end-val="carNum.gatewayNum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -26,7 +27,7 @@
</div> </div>
<count-to <count-to
suffix="台" suffix="台"
:duration="3000" :end-val="160" :start-val="0" class="card-panel-num"/> :duration="3000" :end-val="carNum.dataNum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -41,7 +42,7 @@
</div> </div>
<count-to :decimals="2" <count-to :decimals="2"
suffix="%" suffix="%"
:duration="3200" :end-val="63.23" :start-val="0" class="card-panel-num"/> :duration="3200" :end-val="carNum.overallLoad" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -56,7 +57,7 @@
</div> </div>
<count-to <count-to
suffix="辆" suffix="辆"
:duration="3600" :end-val="13600" :start-val="0" class="card-panel-num"/> :duration="3600" :end-val="carNum.carSum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -65,15 +66,30 @@
<script> <script>
import CountTo from 'vue-count-to' import CountTo from 'vue-count-to'
import {selectCar} from "@/api/connect/connect";
export default { export default {
components: { components: {
CountTo CountTo
}, },
data(){
return{
carNum:{}
}
},
created() {
this.selectCarNum()
},
methods: { methods: {
handleSetLineChartData(type) { handleSetLineChartData(type) {
this.$emit('handleSetLineChartData', type) this.$emit('handleSetLineChartData', type)
} },
selectCarNum(){
selectCar().then(res => {
console.log('res',res)
this.carNum= res.data
})
},
} }
} }
</script> </script>

View File

@ -7,11 +7,11 @@
</div> </div>
<div class="card-panel-description"> <div class="card-panel-description">
<div class="card-panel-text"> <div class="card-panel-text">
网关收集节点数量 收集节点数量
</div> </div>
<count-to <count-to
suffix="台" suffix="台"
:duration="3000" :end-val="20" :start-val="0" class="card-panel-num"/> :duration="3000" :end-val="carNum.gatewayNum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -26,7 +26,7 @@
</div> </div>
<count-to <count-to
suffix="台" suffix="台"
:duration="3000" :end-val="160" :start-val="0" class="card-panel-num"/> :duration="3000" :end-val="carNum.dataNum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -41,7 +41,7 @@
</div> </div>
<count-to :decimals="2" <count-to :decimals="2"
suffix="%" suffix="%"
:duration="3200" :end-val="63.23" :start-val="0" class="card-panel-num"/> :duration="3200" :end-val="carNum.overallLoad" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -56,7 +56,7 @@
</div> </div>
<count-to <count-to
suffix="辆" suffix="辆"
:duration="3600" :end-val="13600" :start-val="0" class="card-panel-num"/> :duration="3600" :end-val="carNum.carSum" :start-val="0" class="card-panel-num"/>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -65,15 +65,30 @@
<script> <script>
import CountTo from 'vue-count-to' import CountTo from 'vue-count-to'
import {selectCar} from "@/api/connect/connect";
export default { export default {
components: { components: {
CountTo CountTo
}, },
data(){
return{
carNum:{}
}
},
created() {
this.selectCarNum()
},
methods: { methods: {
handleSetLineChartData(type) { handleSetLineChartData(type) {
this.$emit('handleSetLineChartData', type) this.$emit('handleSetLineChartData', type)
} },
selectCarNum(){
selectCar().then(res => {
console.log('res',res)
this.carNum= res.data
})
},
} }
} }
</script> </script>

View File

@ -57,18 +57,18 @@
<el-row :gutter="32"> <el-row :gutter="32">
<el-col :lg="8" :sm="24" :xs="24"> <el-col :lg="8" :sm="24" :xs="24">
<div class="chart-wrapper"> <div class="chart-wrapper">
<el-tabs v-model="activeTopName" type="card"> <el-tabs v-model="car" type="card">
<el-tab-pane label="最长在线TOP10" name="最长在线TOP10"> <el-tab-pane label="TOP10" name="TOP10">
<el-card class="box-card"> <el-card class="box-card">
<div v-for="o in 10" :key="o" class="text item"> <div v-for="o in 10" :key="o" class="text item">
{{'VIN123456789' + (o - 1) }} <span style="float:right;">{{56 - o}}分钟</span> {{ + (o - 1) }} <span style="float:right;">{{ 55- o }}分钟</span>
</div> </div>
</el-card> </el-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="最新上线车辆" name="最新上线车辆"> <el-tab-pane label="最新上线车辆" name="最新上线车辆">
<el-card class="box-card"> <el-card class="box-card">
<div v-for="o in 10" :key="o" class="text item"> <div v-for="o in 10" :key="o" class="text item">
{{'VIN123456789' + (o - 1) }} <span style="float:right;">2024-4-13 23:06:5{{(10-o)}}</span> {{ + (o - 1) }} <span style="float:right;">{{ car.timestamp + (o - 1) }}</span>
</div> </div>
</el-card> </el-card>
</el-tab-pane> </el-tab-pane>
@ -126,6 +126,7 @@ import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart' import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart' import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart' import BarChart from './dashboard/BarChart'
import {selectCarList} from "@/api/connect/connect";
const yType = { const yType = {
@ -177,9 +178,17 @@ export default {
activeName: 1, activeName: 1,
activeTopName: "最长在线TOP10", activeTopName: "最长在线TOP10",
value1: true, value1: true,
value2: true value2: true,
car:[]
} }
}, },
created() {
this.selectCarList()
},
mounted() {
//
this.currentTimestamp = Date.now();
},
methods: { methods: {
handleSetLineChartData(type) { handleSetLineChartData(type) {
if (type){ if (type){
@ -188,7 +197,12 @@ export default {
}else { }else {
this.lineChartData.yType = yType[this.formInline.user] this.lineChartData.yType = yType[this.formInline.user]
} }
},
selectCarList(){
selectCarList().then(res => {
console.log('res',res)
this.car = res.data
})
} }
} }
} }

View File

@ -35,7 +35,7 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`, target: `http://127.0.0.1:8082`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''