|
@@ -1,11 +1,11 @@
|
|
|
<template>
|
|
|
<div class="sy-content">
|
|
|
-<!-- <div class="statistics">-->
|
|
|
-<!-- <div v-for="(item, index) in statData" :key="index" class="stat-item">-->
|
|
|
-<!-- <span class="stat-top">{{ item.title }}</span>-->
|
|
|
-<!-- <span class="stat-bottom">{{ item.num }}</span>-->
|
|
|
-<!-- </div>-->
|
|
|
-<!-- </div>-->
|
|
|
+ <!-- <div class="statistics">-->
|
|
|
+ <!-- <div v-for="(item, index) in statData" :key="index" class="stat-item">-->
|
|
|
+ <!-- <span class="stat-top">{{ item.title }}</span>-->
|
|
|
+ <!-- <span class="stat-bottom">{{ item.num }}</span>-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- </div>-->
|
|
|
<el-row :gutter="40" class="panel-group">
|
|
|
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
<div class="card-panel">
|
|
@@ -14,7 +14,12 @@
|
|
|
</div>
|
|
|
<div class="card-panel-description">
|
|
|
<div class="card-panel-text">管理端用户数量</div>
|
|
|
- <count-to :start-val="startVal" :end-val="statistics.managerUserNum" :duration="countDuration" class="card-panel-num" />
|
|
|
+ <count-to
|
|
|
+ :start-val="startVal"
|
|
|
+ :end-val="statistics.managerUserNum"
|
|
|
+ :duration="countDuration"
|
|
|
+ class="card-panel-num"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -25,7 +30,12 @@
|
|
|
</div>
|
|
|
<div class="card-panel-description">
|
|
|
<div class="card-panel-text">客户端用户数量</div>
|
|
|
- <count-to :start-val="startVal" :end-val="statistics.clientUserNum" :duration="countDuration" class="card-panel-num" />
|
|
|
+ <count-to
|
|
|
+ :start-val="startVal"
|
|
|
+ :end-val="statistics.clientUserNum"
|
|
|
+ :duration="countDuration"
|
|
|
+ class="card-panel-num"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -36,7 +46,12 @@
|
|
|
</div>
|
|
|
<div class="card-panel-description">
|
|
|
<div class="card-panel-text">角色数量</div>
|
|
|
- <count-to :start-val="startVal" :end-val="statistics.roleNum" :duration="countDuration" class="card-panel-num" />
|
|
|
+ <count-to
|
|
|
+ :start-val="startVal"
|
|
|
+ :end-val="statistics.roleNum"
|
|
|
+ :duration="countDuration"
|
|
|
+ class="card-panel-num"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
@@ -47,22 +62,35 @@
|
|
|
</div>
|
|
|
<div class="card-panel-description">
|
|
|
<div class="card-panel-text">报表数量</div>
|
|
|
- <count-to :start-val="startVal" :end-val="statistics.reportNum" :duration="countDuration" class="card-panel-num" />
|
|
|
+ <count-to
|
|
|
+ :start-val="startVal"
|
|
|
+ :end-val="statistics.reportNum"
|
|
|
+ :duration="countDuration"
|
|
|
+ class="card-panel-num"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
|
|
|
- <div class="card-panel">
|
|
|
+ <div class="card-panel" @click="onlineUsers">
|
|
|
<div class="card-panel-icon-wrapper icon-money">
|
|
|
<svg-icon icon-class="user-online" class-name="card-panel-icon" />
|
|
|
</div>
|
|
|
<div class="card-panel-description">
|
|
|
<div class="card-panel-text">客户端在线用户数</div>
|
|
|
- <count-to :start-val="startVal" :end-val="statistics.onlineClientUserNum" :duration="countDuration" class="card-panel-num" />
|
|
|
+ <count-to
|
|
|
+ :start-val="startVal"
|
|
|
+ :end-val="statistics.onlineClientUserNum"
|
|
|
+ :duration="countDuration"
|
|
|
+ class="card-panel-num"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
+
|
|
|
+ <!-- 客户端在线用户数弹框 -->
|
|
|
+ <onlineUsers ref="onUsers" :table-data="onlineUsersTable" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -73,13 +101,16 @@ import {
|
|
|
getManagerUserNum,
|
|
|
getCustomerUserNum,
|
|
|
getRoleNum,
|
|
|
- getReportFormrNum, getOnlineUser
|
|
|
+ getReportFormrNum,
|
|
|
+ getOnlineUser
|
|
|
} from '@/api/dashboard'
|
|
|
+import onlineUsers from './onlineUsers.vue'
|
|
|
|
|
|
export default {
|
|
|
name: 'Dashboard',
|
|
|
components: {
|
|
|
- CountTo
|
|
|
+ CountTo,
|
|
|
+ onlineUsers
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -92,7 +123,8 @@ export default {
|
|
|
clientUserNum: 0,
|
|
|
onlineClientUserNum: 0,
|
|
|
reportNum: 0
|
|
|
- }
|
|
|
+ },
|
|
|
+ onlineUsersTable: []
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -125,9 +157,14 @@ export default {
|
|
|
})
|
|
|
getOnlineUser('front').then((res) => {
|
|
|
if (res.code === 200) {
|
|
|
- this.statistics.onlineClientUserNum = res.data
|
|
|
+ this.statistics.onlineClientUserNum = res.data.count
|
|
|
+ this.onlineUsersTable = res.data.frontLoginList
|
|
|
}
|
|
|
})
|
|
|
+ },
|
|
|
+ // 点击客户端在线用户数
|
|
|
+ onlineUsers() {
|
|
|
+ this.$refs.onUsers.show()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -159,6 +196,7 @@ export default {
|
|
|
|
|
|
.card-panel-col {
|
|
|
margin-bottom: 32px;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
|
|
|
.card-panel {
|
|
@@ -169,8 +207,8 @@ export default {
|
|
|
overflow: hidden;
|
|
|
color: #666;
|
|
|
background: #fff;
|
|
|
- box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
|
|
- border-color: rgba(0, 0, 0, .05);
|
|
|
+ box-shadow: 4px 4px 40px rgba(0, 0, 0, 0.05);
|
|
|
+ border-color: rgba(0, 0, 0, 0.05);
|
|
|
|
|
|
.icon-people {
|
|
|
color: #40c9c6;
|
|
@@ -185,7 +223,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
.icon-shopping {
|
|
|
- color: #34bfa3
|
|
|
+ color: #34bfa3;
|
|
|
}
|
|
|
|
|
|
.card-panel-icon-wrapper {
|
|
@@ -222,7 +260,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-@media (max-width:550px) {
|
|
|
+@media (max-width: 550px) {
|
|
|
.card-panel-description {
|
|
|
display: none;
|
|
|
}
|