Ver código fonte

fix Promise bugs

ChengYuXuan 5 anos atrás
pai
commit
14622fb3b3
2 arquivos alterados com 139 adições e 138 exclusões
  1. 3 3
      src/views/exam/ExamPane.vue
  2. 136 135
      src/views/exam/PersonalResult.vue

+ 3 - 3
src/views/exam/ExamPane.vue

@@ -424,12 +424,12 @@ export default Vue.extend({
                 return value.data.result as CodeQuestionSerializer
               })
               this.codeQuestionsReady = true
+
+              this.currentQuestionIndex = 0
+              this.fetchQuestionStem(0)
             })
           })
 
-          this.currentQuestionIndex = 0
-          this.fetchQuestionStem(0)
-
           this.objectiveAnswers = new Map<ID, Record>()
         })
       })

+ 136 - 135
src/views/exam/PersonalResult.vue

@@ -134,6 +134,142 @@ export default Vue.extend({
           return prev + cur
         }
       )
+
+      getPersonalReport(examId).then(({ data }) => {
+        let rank = data.result.rank
+        let score = data.result.score
+
+        this.skillOption = {
+          title: {
+            text: '知识点掌握情况'
+          },
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              type: 'shadow'
+            }
+          },
+          legend: {
+            data: ['个人正确率', '平均正确率']
+          },
+          grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+          },
+          xAxis: [
+            {
+              type: 'category',
+              data: ['数据结构', '网络', '操作系统', '测试', '设计模式']
+            }
+          ],
+          yAxis: [
+            {
+              type: 'value'
+            }
+          ],
+          series: [
+            {
+              name: '个人正确率',
+              type: 'bar',
+              data: [50, 33, 31, 34, 39]
+            },
+            {
+              name: '平均正确率',
+              type: 'bar',
+              data: [12, 13, 10, 14, 90]
+            }
+          ]
+        }
+
+        this.gradeOption = {
+          tooltip: {
+            trigger: 'item',
+            formatter: '{a}{b}: {c} ({d}%)'
+          },
+          title: {
+            text: '得分   ',
+            left: 'right'
+          },
+          legend: {
+            orient: 'vertical',
+            left: 10,
+            data: ['错误', '正确']
+          },
+          series: [
+            {
+              name: '',
+              type: 'pie',
+              radius: ['50%', '70%'],
+              avoidLabelOverlap: false,
+              label: {
+                show: false
+              },
+              emphasis: {
+                label: {
+                  show: true,
+                  fontSize: '15',
+                  fontWeight: 'bold'
+                }
+              },
+              labelLine: {
+                show: false
+              },
+              data: [
+                { value: this.totalScore - score, name: '错误' },
+                { value: score, name: '正确' }
+              ]
+            }
+          ]
+        }
+
+        this.rankOption = {
+          series: [
+            {
+              type: 'gauge',
+              startAngle: 180,
+              endAngle: 0,
+              min: 100,
+              max: 0,
+              splitNumber: 5,
+              axisLabel: {
+                distance: 15,
+                fontSize: 10
+              },
+
+              progress: {
+                show: true,
+                roundCap: true,
+                width: 10
+              },
+
+              detail: {
+                formatter: function(value) {
+                  return '排名前 {value|' + value.toFixed(0) + '}{unit|%}'
+                },
+                rich: {
+                  value: {
+                    fontSize: 20,
+                    fontWeight: 'bolder',
+                    color: '#777'
+                  },
+                  unit: {
+                    fontSize: 20,
+                    color: '#999'
+                  }
+                }
+              },
+              data: [
+                {
+                  value: rank
+                }
+              ]
+            }
+          ]
+        }
+      })
+
       let questionsPromises: Promise<
         AxiosResponse<ReceivedData<TeacherQuestionSerializer, 0>>
       >[] = []
@@ -149,141 +285,6 @@ export default Vue.extend({
         this.fetching = false
       })
     })
-
-    getPersonalReport(examId).then(({ data }) => {
-      let rank = data.result.rank
-      let score = data.result.score
-
-      this.skillOption = {
-        title: {
-          text: '知识点掌握情况'
-        },
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: {
-            type: 'shadow'
-          }
-        },
-        legend: {
-          data: ['个人正确率', '平均正确率']
-        },
-        grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '3%',
-          containLabel: true
-        },
-        xAxis: [
-          {
-            type: 'category',
-            data: ['数据结构', '网络', '操作系统', '测试', '设计模式']
-          }
-        ],
-        yAxis: [
-          {
-            type: 'value'
-          }
-        ],
-        series: [
-          {
-            name: '个人正确率',
-            type: 'bar',
-            data: [50, 33, 31, 34, 39]
-          },
-          {
-            name: '平均正确率',
-            type: 'bar',
-            data: [12, 13, 10, 14, 90]
-          }
-        ]
-      }
-
-      this.gradeOption = {
-        tooltip: {
-          trigger: 'item',
-          formatter: '{a}{b}: {c} ({d}%)'
-        },
-        title: {
-          text: '得分   ',
-          left: 'right'
-        },
-        legend: {
-          orient: 'vertical',
-          left: 10,
-          data: ['错误', '正确']
-        },
-        series: [
-          {
-            name: '',
-            type: 'pie',
-            radius: ['50%', '70%'],
-            avoidLabelOverlap: false,
-            label: {
-              show: false
-            },
-            emphasis: {
-              label: {
-                show: true,
-                fontSize: '15',
-                fontWeight: 'bold'
-              }
-            },
-            labelLine: {
-              show: false
-            },
-            data: [
-              { value: this.totalScore - score, name: '错误' },
-              { value: score, name: '正确' }
-            ]
-          }
-        ]
-      }
-
-      this.rankOption = {
-        series: [
-          {
-            type: 'gauge',
-            startAngle: 180,
-            endAngle: 0,
-            min: 100,
-            max: 0,
-            splitNumber: 5,
-            axisLabel: {
-              distance: 15,
-              fontSize: 10
-            },
-
-            progress: {
-              show: true,
-              roundCap: true,
-              width: 10
-            },
-
-            detail: {
-              formatter: function(value) {
-                return '排名前 {value|' + value.toFixed(0) + '}{unit|%}'
-              },
-              rich: {
-                value: {
-                  fontSize: 20,
-                  fontWeight: 'bolder',
-                  color: '#777'
-                },
-                unit: {
-                  fontSize: 20,
-                  color: '#999'
-                }
-              }
-            },
-            data: [
-              {
-                value: rank
-              }
-            ]
-          }
-        ]
-      }
-    })
   }
 })
 </script>