|
@@ -18,7 +18,9 @@
|
|
|
</div>
|
|
|
<div class="info blueBG">
|
|
|
<span>本月新增课程环比</span>
|
|
|
- <span v-if="loginCountMonthArray.length">{{ (loginCountMonthArray[loginCountMonthArray.length - 1].course) > 0 ? (((loginCountMonthArray[loginCountMonthArray.length - 1].course) / allCourse) * 100).toFixed(0) + '%' : 0 }}</span>
|
|
|
+ <span v-if="loginCountMonthArray.length">{{ (loginCountMonthArray[loginCountMonthArray.length - 1].course) >
|
|
|
+ 0 ? (((loginCountMonthArray[loginCountMonthArray.length - 1].course) / allCourse) * 100).toFixed(0) + '%'
|
|
|
+ : 0 }}</span>
|
|
|
<!-- <span>{{ weekCount }}</span> -->
|
|
|
<!-- <span v-if="loginCountMonthArray.length">{{
|
|
|
loginCountMonthArray[loginCountMonthArray.length - 1].course -
|
|
@@ -118,15 +120,26 @@
|
|
|
}}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <Bar style="height: calc(100% - 70px)" v-if="skType == 0" :workList="tedurArray"></Bar>
|
|
|
- <ToolUse style="height: calc(100% - 70px)" v-if="skType == 1" :yearArray="courseWorksCountYearArray"></ToolUse>
|
|
|
- <!-- <div class="otherCss">
|
|
|
+ <Bar style="height: calc(100% - 70px)" v-if="skType == 0 && !oType" :workList="tedurArray"></Bar>
|
|
|
+ <!-- <ToolUse2 style="height: calc(100% - 100px)" v-if="skType == 0 && oType" :yearArray="courseWorksCountYearArray"></ToolUse2> -->
|
|
|
+
|
|
|
+ <ToolUse style="height: calc(100% - 100px)" v-if="skType == 1 && !oType2"
|
|
|
+ :yearArray="courseWorksCountYearArray"></ToolUse>
|
|
|
+ <Bar2 style="height: calc(100% - 100px)" v-if="skType == 1 && oType2" :workList="tedurArray2"></Bar2>
|
|
|
+ <!-- <div class="otherCss" v-if="skType == 0">
|
|
|
<div v-if="!oType">切换为柱状图</div>
|
|
|
<div v-if="oType">切换为热力图</div>
|
|
|
<div class="otherImg" @click="otherEchart">
|
|
|
<img src="../../../../assets/icon/other.png" alt="" />
|
|
|
</div>
|
|
|
</div> -->
|
|
|
+ <div class="otherCss" v-if="skType == 1">
|
|
|
+ <div v-if="!oType2">切换为热力图</div>
|
|
|
+ <div v-if="oType2">切换为柱状图</div>
|
|
|
+ <div class="otherImg" @click="otherEchart2">
|
|
|
+ <img src="../../../../assets/icon/other.png" alt="" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -161,10 +174,10 @@
|
|
|
<span>已提交作业</span>
|
|
|
<div>
|
|
|
<el-progress :width="80" type="circle" :percentage="allCourse
|
|
|
- ? parseInt(
|
|
|
- ((haveWorksCourse / allCourse) * 100).toFixed(0)
|
|
|
- )
|
|
|
- : 0
|
|
|
+ ? parseInt(
|
|
|
+ ((haveWorksCourse / allCourse) * 100).toFixed(0)
|
|
|
+ )
|
|
|
+ : 0
|
|
|
" :stroke-width="5" :format="format" color="#106BFF"></el-progress>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -172,8 +185,8 @@
|
|
|
<span>设置评价</span>
|
|
|
<div>
|
|
|
<el-progress :width="80" type="circle" :percentage="allCourse
|
|
|
- ? parseInt(((evaCount / allCourse) * 100).toFixed(0))
|
|
|
- : 0
|
|
|
+ ? parseInt(((evaCount / allCourse) * 100).toFixed(0))
|
|
|
+ : 0
|
|
|
" :stroke-width="5" :format="format" color="#106BFF"></el-progress>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -181,10 +194,10 @@
|
|
|
<span>已评价课程</span>
|
|
|
<div>
|
|
|
<el-progress :width="80" type="circle" :percentage="allCourse
|
|
|
- ? parseInt(
|
|
|
- ((evaWorksCount / allCourse) * 100).toFixed(0)
|
|
|
- )
|
|
|
- : 0
|
|
|
+ ? parseInt(
|
|
|
+ ((evaWorksCount / allCourse) * 100).toFixed(0)
|
|
|
+ )
|
|
|
+ : 0
|
|
|
" :stroke-width="5" :format="format" color="#106BFF"></el-progress>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -192,10 +205,10 @@
|
|
|
<span>教学评一体化</span>
|
|
|
<div>
|
|
|
<el-progress :width="80" type="circle" :percentage="allCourse
|
|
|
- ? parseInt(
|
|
|
- ((evaWorksCount / allCourse) * 100).toFixed(0)
|
|
|
- )
|
|
|
- : 0
|
|
|
+ ? parseInt(
|
|
|
+ ((evaWorksCount / allCourse) * 100).toFixed(0)
|
|
|
+ )
|
|
|
+ : 0
|
|
|
" :stroke-width="5" :format="format" color="#106BFF"></el-progress>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -296,12 +309,14 @@
|
|
|
<script>
|
|
|
import TeaFre from "./chartList/teaFre.vue";
|
|
|
import ToolUse from "./chartList/toolUse.vue";
|
|
|
+import ToolUse2 from "./chartList/toolUse2.vue";
|
|
|
import CateRank from "./chartList/cateRank.vue";
|
|
|
import WorkNum from "./chartList/workNum.vue";
|
|
|
import CourseTime from "./chartList/courseTime.vue";
|
|
|
import CourseAna from "./chartList/courseAna.vue";
|
|
|
import WorkTime from "./chartList/workTime.vue";
|
|
|
import Bar from "./chartList/bar.vue";
|
|
|
+import Bar2 from "./chartList/bar2.vue";
|
|
|
import CourseNum from "./chartList/courseNum.vue";
|
|
|
import ToolChart from "./chartList/toolChart.vue";
|
|
|
import Subjuect from "./chartList/subjuect.vue";
|
|
@@ -309,12 +324,14 @@ export default {
|
|
|
components: {
|
|
|
TeaFre,
|
|
|
ToolUse,
|
|
|
+ ToolUse2,
|
|
|
CateRank,
|
|
|
WorkNum,
|
|
|
CourseTime,
|
|
|
CourseAna,
|
|
|
WorkTime,
|
|
|
Bar,
|
|
|
+ Bar2,
|
|
|
CourseNum,
|
|
|
ToolChart,
|
|
|
Subjuect,
|
|
@@ -339,6 +356,7 @@ export default {
|
|
|
courseType: 0,
|
|
|
sType: 0,
|
|
|
oType: false,
|
|
|
+ oType2: false,
|
|
|
shType: true,
|
|
|
xtType: false,
|
|
|
allCourse: 0,
|
|
@@ -348,6 +366,7 @@ export default {
|
|
|
lType1: "grade",
|
|
|
allTimeList: [],
|
|
|
tedurArray: [],
|
|
|
+ tedurArray2: [],
|
|
|
classList: [],
|
|
|
subjectList: [],
|
|
|
themeList: [],
|
|
@@ -400,6 +419,9 @@ export default {
|
|
|
otherEchart() {
|
|
|
this.oType = !this.oType;
|
|
|
},
|
|
|
+ otherEchart2() {
|
|
|
+ this.oType2 = !this.oType2;
|
|
|
+ },
|
|
|
shEchart() {
|
|
|
this.shType = !this.shType;
|
|
|
},
|
|
@@ -409,6 +431,50 @@ export default {
|
|
|
format(percentage) {
|
|
|
return percentage + "%";
|
|
|
},
|
|
|
+ getMonth() {
|
|
|
+ // 获取当前时间
|
|
|
+ var currentDate = new Date();
|
|
|
+
|
|
|
+ // 获取本月的年份和月份
|
|
|
+ var currentYear = currentDate.getFullYear();
|
|
|
+ var currentMonth = currentDate.getMonth() + 1; // 月份从0开始,需要加1
|
|
|
+
|
|
|
+ // 获取上个月的年份和月份
|
|
|
+ var lastMonthYear, lastMonth;
|
|
|
+ if (currentMonth === 1) {
|
|
|
+ lastMonthYear = currentYear - 1;
|
|
|
+ lastMonth = 12;
|
|
|
+ } else {
|
|
|
+ lastMonthYear = currentYear;
|
|
|
+ lastMonth = currentMonth - 1;
|
|
|
+ }
|
|
|
+ // 获取本月的第一天和最后一天的日期
|
|
|
+ var firstDayOfMonth = new Date(currentYear, currentMonth - 1, 1);
|
|
|
+ var lastDayOfMonth = new Date(currentYear, currentMonth, 0);
|
|
|
+
|
|
|
+ // 获取上个月的第一天和最后一天的日期
|
|
|
+ var firstDayOfLastMonth = new Date(lastMonthYear, lastMonth - 1, 1);
|
|
|
+ var lastDayOfLastMonth = new Date(lastMonthYear, lastMonth, 0);
|
|
|
+
|
|
|
+ // 构建本月日期的数组
|
|
|
+ var currentMonthDates = [];
|
|
|
+ for (var i = 1; i <= lastDayOfMonth.getDate(); i++) {
|
|
|
+ let a = new Date(currentYear, currentMonth - 1, i)
|
|
|
+ currentMonthDates.push(a.getFullYear() + '-' + (a.getMonth() + 1) + '-' + a.getDate());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建上个月日期的数组
|
|
|
+ var lastMonthDates = [];
|
|
|
+ for (var j = firstDayOfLastMonth.getDate(); j <= lastDayOfLastMonth.getDate(); j++) {
|
|
|
+ let a = new Date(lastMonthYear, lastMonth - 1, j)
|
|
|
+ lastMonthDates.push(a.getFullYear() + '-' + (a.getMonth() + 1) + '-' + a.getDate());
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ lastWeek: lastMonthDates,//上月
|
|
|
+ toWeek: currentMonthDates //本月
|
|
|
+ }
|
|
|
+ },
|
|
|
typeChange1() {
|
|
|
var a = [];
|
|
|
if (this.lType == "all") {
|
|
@@ -469,6 +535,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
courseWorksCountYearArray = courseWorksCountYearArray.reverse();
|
|
|
+
|
|
|
for (var i = 0; i < this.allCourseWorks.length; i++) {
|
|
|
let _date = new Date(this.allCourseWorks[i].create_at);
|
|
|
let _type = this.allCourseWorks[i].typeid;
|
|
@@ -533,7 +600,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
} else if (this.lType1 == "grade") {
|
|
|
- if (this.gradeList.indexOf(this.allCourseWorks[i].typeid)) {
|
|
|
+ if (this.gradeList.indexOf(this.allCourseWorks[i].typeid) != -1) {
|
|
|
if (this.allCourseWorks[i].id) {
|
|
|
worksCount++;
|
|
|
}
|
|
@@ -548,7 +615,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
} else if (this.lType1 == "subject") {
|
|
|
- if (this.subjectList2.indexOf(this.allCourseWorks[i].typeid)) {
|
|
|
+ if (this.subjectList2.indexOf(this.allCourseWorks[i].typeid) != -1) {
|
|
|
if (this.allCourseWorks[i].id) {
|
|
|
worksCount++;
|
|
|
}
|
|
@@ -563,7 +630,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- if (this.thList.indexOf(this.allCourseWorks[i].typeid)) {
|
|
|
+ if (this.thList.indexOf(this.allCourseWorks[i].typeid) != -1) {
|
|
|
if (this.allCourseWorks[i].id) {
|
|
|
worksCount++;
|
|
|
}
|
|
@@ -579,6 +646,75 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ var courseJson = this.allCourseWorks
|
|
|
+ let _allTime = JSON.parse(JSON.stringify(this.allTimeList)).filter(el => {
|
|
|
+ el.time = 0
|
|
|
+ return el
|
|
|
+ })
|
|
|
+ let _grade = JSON.parse(JSON.stringify(this.classList)).filter(el => {
|
|
|
+ el.time = 0
|
|
|
+ return el
|
|
|
+ })
|
|
|
+ let _subject = JSON.parse(JSON.stringify(this.subjectList)).filter(el => {
|
|
|
+ el.time = 0
|
|
|
+ return el
|
|
|
+ })
|
|
|
+ let _themeList = JSON.parse(JSON.stringify(this.themeList)).filter(el => {
|
|
|
+ el.time = 0
|
|
|
+ return el
|
|
|
+ })
|
|
|
+
|
|
|
+ for (var i = 0; i < courseJson.length; i++) {
|
|
|
+ for (var j = 0; j < _allTime.length; j++) {
|
|
|
+ if (courseJson[i].typeid.indexOf(_allTime[j].id) != -1) {
|
|
|
+ if (_allTime[j].time) {
|
|
|
+ _allTime[j].time += 1;
|
|
|
+ } else {
|
|
|
+ _allTime[j].time = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (var j = 0; j < _grade.length; j++) {
|
|
|
+ if (courseJson[i].typeid.indexOf(_grade[j].id) != -1) {
|
|
|
+ if (_grade[j].time) {
|
|
|
+ _grade[j].time += 1;
|
|
|
+ } else {
|
|
|
+ _grade[j].time = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (var k = 0; k < _subject.length; k++) {
|
|
|
+ if (courseJson[i].typeid.indexOf(_subject[k].id) != -1) {
|
|
|
+ if (_subject[k].time ) {
|
|
|
+ _subject[k].time += 1;
|
|
|
+ } else {
|
|
|
+ _subject[k].time = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (var l = 0; l < _themeList.length; l++) {
|
|
|
+ if (courseJson[i].typeid.indexOf(_themeList[l].id) != -1) {
|
|
|
+ if (_themeList[l].time) {
|
|
|
+ _themeList[l].time += 1;
|
|
|
+ } else{
|
|
|
+ _themeList[l].time = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.lType1 == "all") {
|
|
|
+ this.tedurArray2 = _allTime;
|
|
|
+ } else if (this.lType1 == "grade") {
|
|
|
+ this.tedurArray2 = _grade;
|
|
|
+ } else if (this.lType1 == "subject") {
|
|
|
+ this.tedurArray2 = _subject;
|
|
|
+ } else {
|
|
|
+ this.tedurArray2 = _themeList;
|
|
|
+ }
|
|
|
this.courseWorksCountYearArray = courseWorksCountYearArray;
|
|
|
this.worksCount = worksCount;
|
|
|
this.haveWorksCourse = haveWorksCourse.length;
|
|
@@ -715,7 +851,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
this.allTimeList = _allTime;
|
|
|
this.classList = _grade;
|
|
|
this.subjectList = _subject;
|
|
@@ -1099,27 +1235,29 @@ export default {
|
|
|
lastWeek: [], //上周
|
|
|
toWeek: [], //本周
|
|
|
};
|
|
|
- for (var i = 0; i < 14; i++) {
|
|
|
- let time = JSON.parse(JSON.stringify(lastDayOfWeek));
|
|
|
- let time2 = new Date(time);
|
|
|
- var a = new Date(time2.setDate(time2.getDate() - i));
|
|
|
- if (i > 6) {
|
|
|
- weekArray.lastWeek.push(
|
|
|
- a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate()
|
|
|
- );
|
|
|
- } else {
|
|
|
- weekArray.toWeek.push(
|
|
|
- a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate()
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
+ // for (var i = 0; i < 14; i++) {
|
|
|
+ // let time = JSON.parse(JSON.stringify(lastDayOfWeek));
|
|
|
+ // let time2 = new Date(time);
|
|
|
+ // var a = new Date(time2.setDate(time2.getDate() - i));
|
|
|
+ // if (i > 6) {
|
|
|
+ // weekArray.lastWeek.push(
|
|
|
+ // a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate()
|
|
|
+ // );
|
|
|
+ // } else {
|
|
|
+ // weekArray.toWeek.push(
|
|
|
+ // a.getFullYear() + "-" + (a.getMonth() + 1) + "-" + a.getDate()
|
|
|
+ // );
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ weekArray = this.getMonth()
|
|
|
+
|
|
|
let weekCourse = [];
|
|
|
let weekCourse2 = [];
|
|
|
let lastWeekCouseCount = 0;
|
|
|
let toWeekCouseCount = 0;
|
|
|
for (var z = 0; z < _course.length; z++) {
|
|
|
let _date = new Date(
|
|
|
- weekArray.lastWeek[weekArray.lastWeek.length - 1]
|
|
|
+ weekArray.lastWeek[0]
|
|
|
);
|
|
|
if (
|
|
|
new Date(_course[z].create_at) > _date &&
|
|
@@ -1495,5 +1633,4 @@ export default {
|
|
|
.blueBG {
|
|
|
background: rgb(243, 248, 253);
|
|
|
border: 2px solid rgb(234, 246, 255);
|
|
|
-}
|
|
|
-</style>
|
|
|
+}</style>
|