|
|
@@ -77,6 +77,8 @@ import {
|
|
|
import { getPersonalReport } from '@/api/report'
|
|
|
import dayjs from 'dayjs'
|
|
|
import { TIME_FORMAT } from '@/utils/common'
|
|
|
+import { getExamAnalysis } from '@/api/analysis'
|
|
|
+import { mapGetters } from 'vuex'
|
|
|
|
|
|
export default Vue.extend({
|
|
|
name: 'PersonalResult',
|
|
|
@@ -114,6 +116,9 @@ export default Vue.extend({
|
|
|
loadingText: ''
|
|
|
}
|
|
|
},
|
|
|
+ methods: {
|
|
|
+ ...mapGetters(['getId'])
|
|
|
+ },
|
|
|
mounted() {
|
|
|
const examId = this.$route.params.examId
|
|
|
|
|
|
@@ -135,9 +140,18 @@ export default Vue.extend({
|
|
|
}
|
|
|
)
|
|
|
|
|
|
- getPersonalReport(examId).then(({ data }) => {
|
|
|
- let rank = data.result.rank
|
|
|
- let score = data.result.score
|
|
|
+ getExamAnalysis(examId).then(({ data }) => {
|
|
|
+ const analysisInfo = data.result
|
|
|
+ const infoBenchItem = analysisInfo.all
|
|
|
+ const avgPercentage = analysisInfo.avg
|
|
|
+ const myInfo = analysisInfo[this.getId()]
|
|
|
+ const myPercentage = new Map()
|
|
|
+ Object.entries(myInfo).map((val) => {
|
|
|
+ const value = val[1] ?? 0
|
|
|
+ myPercentage.set(val[0], (value / infoBenchItem[val[0]]) * 100)
|
|
|
+ avgPercentage[val[0]] =
|
|
|
+ (avgPercentage[val[0]] / infoBenchItem[val[0]]) * 100
|
|
|
+ })
|
|
|
|
|
|
this.skillOption = {
|
|
|
title: {
|
|
|
@@ -161,7 +175,10 @@ export default Vue.extend({
|
|
|
xAxis: [
|
|
|
{
|
|
|
type: 'category',
|
|
|
- data: ['数据结构', '网络', '操作系统', '测试', '设计模式']
|
|
|
+ data: Object.keys(infoBenchItem),
|
|
|
+ axisLabel: {
|
|
|
+ interval: 0
|
|
|
+ }
|
|
|
}
|
|
|
],
|
|
|
yAxis: [
|
|
|
@@ -173,15 +190,20 @@ export default Vue.extend({
|
|
|
{
|
|
|
name: '个人正确率',
|
|
|
type: 'bar',
|
|
|
- data: [50, 33, 31, 34, 39]
|
|
|
+ data: Object.values(Object.fromEntries(myPercentage))
|
|
|
},
|
|
|
{
|
|
|
name: '平均正确率',
|
|
|
type: 'bar',
|
|
|
- data: [12, 13, 10, 14, 90]
|
|
|
+ data: Object.values(avgPercentage)
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
+ })
|
|
|
+
|
|
|
+ getPersonalReport(examId).then(({ data }) => {
|
|
|
+ let rank = data.result.rank
|
|
|
+ let score = data.result.score
|
|
|
|
|
|
this.gradeOption = {
|
|
|
tooltip: {
|
|
|
@@ -246,6 +268,9 @@ export default Vue.extend({
|
|
|
|
|
|
detail: {
|
|
|
formatter: function(value) {
|
|
|
+ if (value === 0) {
|
|
|
+ value = 1
|
|
|
+ }
|
|
|
return '排名前 {value|' + value.toFixed(0) + '}{unit|%}'
|
|
|
},
|
|
|
rich: {
|