|
@@ -25,7 +25,7 @@
|
|
|
</div>
|
|
|
<div>我的综合表现</div>
|
|
|
</div>
|
|
|
- <MrOverPer class="r_box"></MrOverPer>
|
|
|
+ <MrOverPer class="r_box" :overPData="overPer"></MrOverPer>
|
|
|
</div>
|
|
|
<div class="third">
|
|
|
<div class="sub_title">
|
|
@@ -58,6 +58,14 @@
|
|
|
</div>
|
|
|
<CourseEvaScore
|
|
|
class="r_box"
|
|
|
+ style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ margin: 0;
|
|
|
+ "
|
|
|
:courseArray="cEvaScore"
|
|
|
></CourseEvaScore>
|
|
|
</div>
|
|
@@ -80,7 +88,10 @@
|
|
|
</div>
|
|
|
<div>工具类型分析</div>
|
|
|
</div>
|
|
|
- <ToolTypeAna class="r_box" :toolTypeArray="tTypeArray"></ToolTypeAna>
|
|
|
+ <ToolTypeAna
|
|
|
+ class="r_box"
|
|
|
+ :toolTypeArray="tTypeArray"
|
|
|
+ ></ToolTypeAna>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -91,11 +102,11 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="report_box" v-if="reportVisible">
|
|
|
- <studentReport
|
|
|
+ <myRportLook
|
|
|
:checkCourse="checkCourse"
|
|
|
:checkStudent="checkStudent"
|
|
|
:oid="oid"
|
|
|
- ></studentReport>
|
|
|
+ ></myRportLook>
|
|
|
</div>
|
|
|
<div class="cancelbox" v-if="reportVisible">
|
|
|
<el-button @click="cancelR" type="primary" size="small">返回</el-button>
|
|
@@ -112,7 +123,7 @@ import CourseEvaScore from "./components/courseEvaScore.vue";
|
|
|
import CourseTypeAna from "./components/courseTypeAna.vue";
|
|
|
import ToolTypeAna from "./components/toolTypeAna.vue";
|
|
|
import MrEva from "./components/mrEva.vue";
|
|
|
-import studentReport from "../components/studentReport";
|
|
|
+import myRportLook from "../components/myRportLook";
|
|
|
export default {
|
|
|
components: {
|
|
|
MrBasicData,
|
|
@@ -123,7 +134,7 @@ export default {
|
|
|
CourseTypeAna,
|
|
|
ToolTypeAna,
|
|
|
MrEva,
|
|
|
- studentReport,
|
|
|
+ myRportLook,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -138,6 +149,7 @@ export default {
|
|
|
cEvaScore: [], //课程评价得分
|
|
|
cTypeAnaList: [], //课程类型分析
|
|
|
tTypeArray: [], //工具类型分析
|
|
|
+ overPer: {}, //我的综合表现
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
@@ -163,6 +175,8 @@ export default {
|
|
|
this.evaList = res.data[1];
|
|
|
var courseList = res.data[2];
|
|
|
var sWorksList = res.data[3];
|
|
|
+ var studyAllTime = res.data[4];
|
|
|
+ var loginAllTime = parseInt(res.data[5][0].text);
|
|
|
var sWorksCList = [];
|
|
|
var cList = [];
|
|
|
var cTypeList = [];
|
|
@@ -199,7 +213,9 @@ export default {
|
|
|
k < cList[i][j].chapterInfo[0].taskJson.length;
|
|
|
k++
|
|
|
) {
|
|
|
- let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
|
|
|
+ let _toolsAarry = [
|
|
|
+ 1, 3, 6, 7, 16, 15, 4, 40, 41, 42, 49, 50, 52, 32, 57,
|
|
|
+ ];
|
|
|
for (
|
|
|
var q = 0;
|
|
|
q < cList[i][j].chapterInfo[0].taskJson[k].toolChoose.length;
|
|
@@ -275,6 +291,8 @@ export default {
|
|
|
this.stuMessage.isFinishTaskWorks = isFinish;
|
|
|
this.stuMessage.noFinishTaskWorks = allToolWorks - isFinish;
|
|
|
|
|
|
+ this.overPer.toolSubRate =
|
|
|
+ (this.stuMessage.isFinishTaskWorks / allToolWorks).toFixed(2) * 100;
|
|
|
var array = [];
|
|
|
var xArray = [];
|
|
|
for (var i = 0; i < sWorksCList.length; i++) {
|
|
@@ -305,7 +323,15 @@ export default {
|
|
|
array.push(courseCount);
|
|
|
}
|
|
|
}
|
|
|
- this.cEvaScore.push({ array: array, xArray: xArray });
|
|
|
+ var tuples = xArray.map((label, index) => [label, array[index]]);
|
|
|
+ // 根据数据降序排序二元组
|
|
|
+ tuples.sort((a, b) => b[1] - a[1]);
|
|
|
+ // 提取已排序的标签
|
|
|
+ var xArrayNew = tuples.map((tuple) => tuple[0]);
|
|
|
+ var arrayNew = tuples.map((tuple) => tuple[1]);
|
|
|
+ for (var i = 0; i < xArrayNew.length; i++) {
|
|
|
+ this.cEvaScore.push({ name: xArrayNew[i], value: arrayNew[i] });
|
|
|
+ }
|
|
|
var ctArray = [];
|
|
|
var cxtArray = [];
|
|
|
for (var i = 0; i < cTypeList.length; i++) {
|
|
@@ -330,7 +356,53 @@ export default {
|
|
|
for (var i = 0; i < result.length; i++) {
|
|
|
tArray.push(result[i].count);
|
|
|
}
|
|
|
- this.cTypeAnaList.push({ array: tArray, xArray: ctArray });
|
|
|
+ var tuples1 = ctArray.map((label, index) => [label, tArray[index]]);
|
|
|
+ // 根据数据降序排序二元组
|
|
|
+ tuples1.sort((a, b) => b[1] - a[1]);
|
|
|
+ // 提取已排序的标签
|
|
|
+ var txArrayNew = tuples1.map((tuple) => tuple[0]);
|
|
|
+ var tarrayNew = tuples1.map((tuple) => tuple[1]);
|
|
|
+ for (var i = 0; i < txArrayNew.length; i++) {
|
|
|
+ this.cTypeAnaList.push({
|
|
|
+ name: txArrayNew[i],
|
|
|
+ value: tarrayNew[i],
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ var days = Math.floor(loginAllTime / (3600 * 24));
|
|
|
+ loginAllTime %= 3600 * 24;
|
|
|
+ var hours = Math.floor(loginAllTime / 3600);
|
|
|
+ loginAllTime %= 3600;
|
|
|
+ var minutes = Math.floor(loginAllTime / 60);
|
|
|
+ loginAllTime %= 60;
|
|
|
+ if (days > 0) {
|
|
|
+ this.overPer.loginTime = `${days}天${hours}小时${minutes}分钟${loginAllTime}秒`;
|
|
|
+ } else if (days < 0 && hours > 0) {
|
|
|
+ this.overPer.loginTime = `${hours}小时${minutes}分钟 ${loginAllTime}秒`;
|
|
|
+ } else if (days == 0 && hours == 0 && minutes > 0) {
|
|
|
+ this.overPer.loginTime = `${minutes}分钟${loginAllTime}秒`;
|
|
|
+ } else {
|
|
|
+ this.overPer.loginTime = `${loginAllTime}秒`;
|
|
|
+ }
|
|
|
+ var sTime = 0;
|
|
|
+ for (var i = 0; i < studyAllTime.length; i++) {
|
|
|
+ sTime += parseInt(studyAllTime[i].text);
|
|
|
+ }
|
|
|
+ var days1 = Math.floor(sTime / (3600 * 24));
|
|
|
+ sTime %= 3600 * 24;
|
|
|
+ var hours1 = Math.floor(sTime / 3600);
|
|
|
+ sTime %= 3600;
|
|
|
+ var minutes1 = Math.floor(sTime / 60);
|
|
|
+ sTime %= 60;
|
|
|
+ if (days1 > 0) {
|
|
|
+ this.overPer.studyTime = `${days1}天${hours1}小时${minutes1}分钟${sTime}秒`;
|
|
|
+ } else if (days1 < 0 && hours1 > 0) {
|
|
|
+ this.overPer.studyTime = `${hours1}小时${minutes1}分钟 ${sTime}秒`;
|
|
|
+ } else if (days1 == 0 && hours1 == 0 && minutes1 > 0) {
|
|
|
+ this.overPer.studyTime = `${minutes1}分钟${sTime}秒`;
|
|
|
+ } else {
|
|
|
+ this.overPer.studyTime = `${sTime}秒`;
|
|
|
+ }
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
console.error(err);
|
|
@@ -442,7 +514,7 @@ export default {
|
|
|
margin: 0 auto;
|
|
|
flex-direction: row;
|
|
|
flex-wrap: nowrap;
|
|
|
- margin-top: 10px;
|
|
|
+ margin-top: 5px;
|
|
|
}
|
|
|
|
|
|
.r_box {
|