11wqe1 10 miesięcy temu
rodzic
commit
37801c2000

+ 75 - 31
src/components/pages/components/exportDataDialog.vue

@@ -106,28 +106,35 @@
                 alt=""
               />
             </div>
-            <div class="zhBlockCon"><el-rate v-model="star"></el-rate></div>
+            <div class="zhBlockCon">
+              <div class="zhBlockCon">{{ star }} / 5.0</div>
+            </div>
+          </div>
+          <div class="zhBlock">
+            <div class="zhBlockTit">
+              <span style="margin-right: 5px">包含学科</span
+              ><img
+                src="../../../assets/icon/exportPdfworks/infocircle.svg"
+                alt=""
+              />
+            </div>
+            <div class="zhBlockCon2">
+              <!-- <span>语文</span>
+              <span>数学</span>
+              <span>英语</span>
+              <span>化学</span>
+              <span>美术</span> -->
+            </div>
           </div>
-          <!-- <div class="zhBlock">
-                <div class="zhBlockTit">
-                  <span style="margin-right: 5px">包含学科</span
-                  ><img src="../assets/img/infocircle.svg" alt="" />
-                </div>
-                <div class="zhBlockCon2">
-                  <span>语文</span>
-                  <span>数学</span>
-                  <span>英语</span>
-                  <span>化学</span>
-                  <span>美术</span>
-                </div>
-              </div> -->
         </div>
-        <div style="display: flex; height: 370px; margin: 10px 0">
-          <div style="width: 50%">
-            <div ref="chart" style="width: 100%; height: 360px"></div>
+        <div
+          style="display: flex;justify-content: space-between; height: 310px;margin-bottom: 30px"
+        >
+          <div class="zxt" style="width: 49%">
+            <div ref="chart" style="width: 100%; height: 300px"></div>
           </div>
-          <div style="width: 50%">
-            <div ref="ringChart" style="height: 360px; width: 100%"></div>
+          <div class="zxt" style="width: 49%">
+            <div ref="ringChart" style="height: 300px; width: 100%"></div>
           </div>
         </div>
         <!-- 作业提交率 -->
@@ -230,7 +237,7 @@ export default {
 
       // 作业得分折线图开始
       taskList: [], //每个阶段下有几个任务
-      scoFoldLineData: [],
+      scoFoldLineData: [], //课程得分图数据
       // 作业得分折线图结束
 
       // 分数工具柱状图开始
@@ -395,9 +402,17 @@ export default {
       for (let i = 0; i < this.tableData.length; i++) {
         this.loading = true;
 
+        this.toolRatio = [
+          { name: "互动类", value: 0 },
+          { name: "思维类", value: 0 },
+          { name: "协作类", value: 0 },
+          { name: "测评类", value: 0 },
+          { name: "评价类", value: 0 },
+          { name: "编程类", value: 0 },
+          { name: "学科类", value: 0 }
+        ];
         this.uid2 = this.tableData[i].userid;
         this.worksDialogCon2 = this.tableData[i];
-        // await this.getCourseDetail();
         await this.getData();
         let a = await this.getPdf2();
         pdfList.push(a);
@@ -413,7 +428,7 @@ export default {
         saveAs(content, _this.courseTit + "-学生报告汇总.zip");
       });
 
-      //   this.$emit("update:worksDialog", false);
+      this.$emit("update:worksDialog", false);
       // this.worksDialog = false;
     },
     // 压缩pdf
@@ -506,6 +521,7 @@ export default {
 
             // 处理这个课程下的工具分类
             let data = JSON.parse(res.data[0][0].chapters);
+            
 
             if (this.cState == 1) {
               this.getDataStageMode(data);
@@ -528,6 +544,17 @@ export default {
     },
     // ai模式处理数据
     getDataAiMode(data) {
+      this.toolData = [[], [], [], [], [], [], []];
+      this.taskList = []; //每个阶段下有几个任务
+      this.toolPercentage = [];
+      this.interact = [];
+      this.interactWork = [];
+      this.stuInterAllWork = [];
+      this.stuInterAllLike = [];
+      this.bdStuInterAllWork = [];
+      this.bdStuInterAllLike = [];
+      this.stageList = [];
+      this.stageListPer = [];
       data.forEach((e, eInd) => {
         let toolList = e.chapterInfo[0].taskJson;
         toolList.forEach((i, iInd) => {
@@ -586,7 +613,9 @@ export default {
       this.toolRatio[4].value = this.toolData[4].length;
       this.toolRatio[5].value = this.toolData[5].length;
       this.toolRatio[6].value = this.toolData[6].length;
-
+      this.toolRatio = this.toolRatio.filter(e => {
+        return e.value != 0;
+      });
       // console.log("this.toolRatio[0]", this.toolRatio);
       // 作业提交率折线图
       let repeatWork = this.newArrFn(this.data3);
@@ -628,9 +657,21 @@ export default {
     },
     // 阶段模式处理数据
     getDataStageMode(data) {
+      this.toolData = [[], [], [], [], [], [], []];
+      this.taskList = []; //每个阶段下有几个任务
+      this.toolPercentage = [];
+      this.interact = [];
+      this.interactWork = [];
+      this.stuInterAllWork = [];
+      this.stuInterAllLike = [];
+      this.bdStuInterAllWork = [];
+      this.bdStuInterAllLike = [];
+      this.stageList = [];
+      this.stageListPer = [];
+
       data.forEach((e, eInd) => {
         let toolList = e.chapterInfo[0].taskJson;
-        this.toolPercentage[eInd] = [];
+        this.toolPercentage[eInd] = []; // 每个任务有的工具
         // X轴数据
         this.stageList.push("阶段" + (eInd * 1 + 1));
         // 作业提交率基础数据
@@ -648,6 +689,8 @@ export default {
         this.bdStuInterAllLike[eInd] = []; // 生生互动阶段被动点赞评论分类
 
         // 每个阶段下有多少个任务
+        console.log("toolList", JSON.parse(JSON.stringify(toolList)));
+
         this.taskList[eInd] = toolList;
 
         toolList.forEach(i => {
@@ -691,7 +734,9 @@ export default {
       this.toolRatio[4].value = this.toolData[4].length;
       this.toolRatio[5].value = this.toolData[5].length;
       this.toolRatio[6].value = this.toolData[6].length;
-
+      this.toolRatio = this.toolRatio.filter(e => {
+        return e.value != 0;
+      });
       // 作业提交率折线图
       let repeatWork = this.newArrFn(this.data3);
       this.getFoldLineData(repeatWork);
@@ -814,15 +859,13 @@ export default {
         );
       });
       this.scoFoldLineData = scoList;
-      // console.log("this.scoFoldLineData", this.scoFoldLineData);
 
       let zSco = 0;
       this.scoFoldLineData.forEach(e => {
         zSco += e * 1;
       });
 
-      this.star = (zSco / this.scoFoldLineData.length).toFixed(0) * 1;
-      // console.log("this.star", this.star);
+      this.star = (zSco / this.scoFoldLineData.length).toFixed(1) * 1;
     },
 
     getFoldLineData(repeatWork) {
@@ -923,8 +966,7 @@ export default {
         zSco += e * 1;
       });
 
-      this.star = (zSco / this.scoFoldLineData.length).toFixed(0) * 1;
-      // console.log("this.star", this.star);
+      this.star = (zSco / this.scoFoldLineData.length).toFixed(1) * 1;
     },
     // 师生互动数据
     getTeaStuHdAi(TeaStuHdData) {
@@ -1049,6 +1091,8 @@ export default {
             labelLine: {
               show: false
             },
+            center: ["40%", "50%"], // 控制饼图的位置
+
             data: this.toolRatio
           }
         ]
@@ -1099,7 +1143,7 @@ export default {
       const chart = echarts.init(this.$refs.cScoEcharts);
       const option = {
         title: {
-          text: this.cState == 1?'阶段成绩':'任务成绩',
+          text: this.cState == 1 ? "阶段成绩" : "任务成绩",
           left: "left",
           textStyle: {
             color: "rgba(140, 140, 140, 1)", // 标题颜色

+ 1 - 1
src/components/pages/components/worksDetail2.vue

@@ -1362,7 +1362,7 @@
                     </div>
                      
                    
-                      <div v-if="worksDetail[sIndex].eList.length">
+                      <div v-if="worksDetail[sIndex].eList && worksDetail[sIndex].eList.length">
                        
                         <div>
                           <div class="score_boxTit"><span>分数详情</span></div>

+ 15 - 3
src/components/pages/works.vue

@@ -565,10 +565,22 @@ export default {
     },
     // 一键导出pdf
     exportPdfSetAllBtn(){
-      this.worksDialog = true;
 
-      this.digNum = 1
-      this.exportW++
+      this.$confirm("是否导出全部学生报告?批量打印需要等待一会哦。", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+      .then(() => {
+        this.worksDialog = true;
+
+        this.digNum = 1
+        this.exportW++
+      })
+      .catch(() => {
+        return;
+      });
+     
       
     },
     goTo(path) {