|
@@ -123,7 +123,7 @@
|
|
</dv-border-box-11>
|
|
</dv-border-box-11>
|
|
</div>
|
|
</div>
|
|
<div class="restsbox-right">
|
|
<div class="restsbox-right">
|
|
- <dv-border-box-11 :title="$t('schoolIot.device.title')">
|
|
|
|
|
|
+ <dv-border-box-11 title="数量与占比">
|
|
<!--设备统计-->
|
|
<!--设备统计-->
|
|
<!-- <div class="right-box">
|
|
<!-- <div class="right-box">
|
|
<div class="right-box-left">
|
|
<div class="right-box-left">
|
|
@@ -137,6 +137,9 @@
|
|
</div>
|
|
</div>
|
|
</div> -->
|
|
</div> -->
|
|
<!--设备统计 end-->
|
|
<!--设备统计 end-->
|
|
|
|
+ <div class="total-solution">
|
|
|
|
+ <Bar title="学期" :cdata="bars"></Bar>
|
|
|
|
+ </div>
|
|
</dv-border-box-11>
|
|
</dv-border-box-11>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -147,7 +150,7 @@
|
|
<dv-border-box-12>
|
|
<dv-border-box-12>
|
|
<div class="innerbox">
|
|
<div class="innerbox">
|
|
<p class="boxtitles">
|
|
<p class="boxtitles">
|
|
- <span>{{$t('schoolIot.lessons.title')}}</span>
|
|
|
|
|
|
+ <span>基础数据</span>
|
|
<dv-decoration-3 style="width:200px;height:20px;"/>
|
|
<dv-decoration-3 style="width:200px;height:20px;"/>
|
|
</p>
|
|
</p>
|
|
<div class="innerbox-inside">
|
|
<div class="innerbox-inside">
|
|
@@ -163,7 +166,7 @@
|
|
<div class="data-left">
|
|
<div class="data-left">
|
|
<BaseCircle circleId="webirs" chatName="WebIRS" :percent="40" subTitle="45" totalNum="77"></BaseCircle>
|
|
<BaseCircle circleId="webirs" chatName="WebIRS" :percent="40" subTitle="45" totalNum="77"></BaseCircle>
|
|
</div> -->
|
|
</div> -->
|
|
- <barandLine :baldata="baldatas"></barandLine>
|
|
|
|
|
|
+ <specialBarline :basics="basicsData"></specialBarline>
|
|
</div>
|
|
</div>
|
|
<!-- <dv-decoration-2 :reverse="true" style="width:5px;height:95%;" :dur="5" /> -->
|
|
<!-- <dv-decoration-2 :reverse="true" style="width:5px;height:95%;" :dur="5" /> -->
|
|
<!-- <div class="data-right">
|
|
<!-- <div class="data-right">
|
|
@@ -178,7 +181,7 @@
|
|
</dv-border-box-12>
|
|
</dv-border-box-12>
|
|
</div>
|
|
</div>
|
|
<div class="right-integration">
|
|
<div class="right-integration">
|
|
- <div class="bottombox-right">
|
|
|
|
|
|
+ <div class="bottombox-right ranks">
|
|
<dv-border-box-12>
|
|
<dv-border-box-12>
|
|
<div class="innerbox">
|
|
<div class="innerbox">
|
|
<p class="boxtitles">
|
|
<p class="boxtitles">
|
|
@@ -196,11 +199,12 @@
|
|
<dv-border-box-12>
|
|
<dv-border-box-12>
|
|
<div class="innerbox">
|
|
<div class="innerbox">
|
|
<p class="boxtitles">
|
|
<p class="boxtitles">
|
|
- <span>{{$t('schoolIot.morphologyClass.title')}}</span>
|
|
|
|
|
|
+ <span>{{$t('schoolIot.lessons.title')}}</span>
|
|
<dv-decoration-3 style="width:200px;height:20px;"/>
|
|
<dv-decoration-3 style="width:200px;height:20px;"/>
|
|
</p>
|
|
</p>
|
|
<div class="barbox">
|
|
<div class="barbox">
|
|
- <Bar title="学期" :cdata="bars"></Bar>
|
|
|
|
|
|
+ <!-- <specialBarline :basics="basicsData"></specialBarline> -->
|
|
|
|
+ <barandLine :baldata="baldatas"></barandLine>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</dv-border-box-12>
|
|
</dv-border-box-12>
|
|
@@ -220,6 +224,7 @@ import YPie from './echarts/pie/index'
|
|
import Bar from './echarts/bar/bar'
|
|
import Bar from './echarts/bar/bar'
|
|
import BaseCircle from "./echarts/circle/index";
|
|
import BaseCircle from "./echarts/circle/index";
|
|
import barandLine from './echarts/barandLine/barandLine'
|
|
import barandLine from './echarts/barandLine/barandLine'
|
|
|
|
+import specialBarline from './echarts/barandLine/specialBarline.vue';
|
|
export default {
|
|
export default {
|
|
name:'areaiot',
|
|
name:'areaiot',
|
|
components: {
|
|
components: {
|
|
@@ -228,7 +233,8 @@ export default {
|
|
YPie,
|
|
YPie,
|
|
Bar,
|
|
Bar,
|
|
BaseCircle,
|
|
BaseCircle,
|
|
- barandLine
|
|
|
|
|
|
+ barandLine,
|
|
|
|
+ specialBarline
|
|
},
|
|
},
|
|
data(){
|
|
data(){
|
|
return{
|
|
return{
|
|
@@ -315,6 +321,15 @@ export default {
|
|
},
|
|
},
|
|
schoolList: [],
|
|
schoolList: [],
|
|
baldatas: [],
|
|
baldatas: [],
|
|
|
|
+ basicsData:{
|
|
|
|
+ rooms:[],
|
|
|
|
+ teachs:[],
|
|
|
|
+ students:[],
|
|
|
|
+ classInfo:[],
|
|
|
|
+ classTimes:[],
|
|
|
|
+ classStudenttimes:[],
|
|
|
|
+ weekNums:0,
|
|
|
|
+ },
|
|
}
|
|
}
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
@@ -464,6 +479,35 @@ export default {
|
|
newArrs.data=newArr
|
|
newArrs.data=newArr
|
|
// this.config.data = newArr
|
|
// this.config.data = newArr
|
|
this.config = newArrs
|
|
this.config = newArrs
|
|
|
|
+ //处理基础数据
|
|
|
|
+ let basicsTotal=[]
|
|
|
|
+ for (let i = 1; i <= weekNum; i++){
|
|
|
|
+ basicsTotal.push({week:i,room:0,teach:0,student:0,class:0,classTime:0,classStudenttime:0,deviceList:[],tmidList:[]})
|
|
|
|
+ }
|
|
|
|
+ res.iotData.forEach((item)=>{
|
|
|
|
+ let times = new Date(item.year + '-' + item.month + '-' + item.day)
|
|
|
|
+ let returnWeek = this.calculateWeekNumber(startime, times)
|
|
|
|
+ let reresultIndex = basicsTotal.findIndex((item) => { return item.week === returnWeek })
|
|
|
|
+ item.deviceList.forEach((itemA)=>{ basicsTotal[reresultIndex].deviceList.push(itemA)})
|
|
|
|
+ item.tmidList.forEach((itemS)=>{basicsTotal[reresultIndex].tmidList.push(itemS)})
|
|
|
|
+ basicsTotal[reresultIndex].student +=item.stuShow
|
|
|
|
+ basicsTotal[reresultIndex].class +=item.lessonRecord
|
|
|
|
+ basicsTotal[reresultIndex].classTime +=item.lessonLengMin
|
|
|
|
+ basicsTotal[reresultIndex].classStudenttime +=item.stuLessonLengMin
|
|
|
|
+ })
|
|
|
|
+ basicsTotal.forEach((item)=>{
|
|
|
|
+ item.deviceList=[...new Set(item.deviceList)]
|
|
|
|
+ item.room=item.deviceList.length
|
|
|
|
+ item.tmidList=[...new Set(item.tmidList)]
|
|
|
|
+ item.teach=item.tmidList.length
|
|
|
|
+ })
|
|
|
|
+ this.basicsData.rooms= basicsTotal.map(item =>item.room)
|
|
|
|
+ this.basicsData.teachs=basicsTotal.map(item=>item.teach)
|
|
|
|
+ this.basicsData.students=basicsTotal.map(item=>item.student)
|
|
|
|
+ this.basicsData.classInfo=basicsTotal.map(item=>item.class)
|
|
|
|
+ this.basicsData.classTimes=basicsTotal.map(item=>item.classTime)
|
|
|
|
+ this.basicsData.classStudenttimes=basicsTotal.map(item=>item.classStudenttime)
|
|
|
|
+ this.basicsData.weekNums=this.basicsData.rooms.length
|
|
this.loading=false
|
|
this.loading=false
|
|
})
|
|
})
|
|
},
|
|
},
|
|
@@ -679,10 +723,10 @@ export default {
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
.restsbox-left{
|
|
.restsbox-left{
|
|
- width:100%;
|
|
|
|
|
|
+ width:50%;
|
|
}
|
|
}
|
|
.restsbox-right{
|
|
.restsbox-right{
|
|
- width:0%;
|
|
|
|
|
|
+ width:50%;
|
|
}
|
|
}
|
|
.left-item{
|
|
.left-item{
|
|
width: 21%;
|
|
width: 21%;
|
|
@@ -692,7 +736,7 @@ export default {
|
|
align-items: center;
|
|
align-items: center;
|
|
border-radius: 5px;
|
|
border-radius: 5px;
|
|
background-color: rgba(19, 25, 47, 0.6);
|
|
background-color: rgba(19, 25, 47, 0.6);
|
|
- margin: 4% 2% 1% 2%;
|
|
|
|
|
|
+ margin: 8% 2% 1% 2%;
|
|
}
|
|
}
|
|
.item-img {
|
|
.item-img {
|
|
width: 30%;
|
|
width: 30%;
|
|
@@ -757,7 +801,7 @@ export default {
|
|
height:50vh;
|
|
height:50vh;
|
|
}
|
|
}
|
|
.bottombox-left{
|
|
.bottombox-left{
|
|
- width:55%;
|
|
|
|
|
|
+ width:50%;
|
|
display: flex;
|
|
display: flex;
|
|
}
|
|
}
|
|
.innerbox{
|
|
.innerbox{
|
|
@@ -777,7 +821,7 @@ export default {
|
|
}
|
|
}
|
|
.bottombox-right{
|
|
.bottombox-right{
|
|
width:100%;
|
|
width:100%;
|
|
- height:50%;
|
|
|
|
|
|
+ height:60%;
|
|
}
|
|
}
|
|
.data-left,.data-right{
|
|
.data-left,.data-right{
|
|
width:50%;
|
|
width:50%;
|
|
@@ -842,7 +886,7 @@ export default {
|
|
line-height: 30px !important;
|
|
line-height: 30px !important;
|
|
}
|
|
}
|
|
.right-integration{
|
|
.right-integration{
|
|
- width:45%;
|
|
|
|
|
|
+ width:50%;
|
|
display: flex;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
}
|
|
}
|
|
@@ -860,6 +904,16 @@ export default {
|
|
.item-nums-special p .timetag{
|
|
.item-nums-special p .timetag{
|
|
margin:0px 10px;
|
|
margin:0px 10px;
|
|
}
|
|
}
|
|
|
|
+.total-solution{
|
|
|
|
+ width:100%;
|
|
|
|
+ height:73%;
|
|
|
|
+ margin:0% 2%;
|
|
|
|
+ background-color: rgba(19, 25, 47, 0.6);
|
|
|
|
+ margin-top:5%;
|
|
|
|
+}
|
|
|
|
+.ranks{
|
|
|
|
+ height:40% !important;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|
|
<style>
|
|
<style>
|
|
.schooliotbox .topbox .border-box-content,.schooliotbox .restsbox .border-box-content{
|
|
.schooliotbox .topbox .border-box-content,.schooliotbox .restsbox .border-box-content{
|