|
|
@@ -1,58 +1,33 @@
|
|
|
<template>
|
|
|
<div class="personalProfile">
|
|
|
<!-- 我的历次成绩子组件 -->
|
|
|
- <MyGradeHistory :grade-history-data="gradeHistoryData" v-loading="historyloading" @selection-change="handleSelectionChange" />
|
|
|
+ <MyGradeHistory :grade-history-data="gradeHistoryData" v-loading="historyloading"
|
|
|
+ @selection-change="handleSelectionChange" @page-change="handlePageChange"
|
|
|
+ @export-knowledge-paps="exportKnowledgePaps"/>
|
|
|
|
|
|
<!-- 历次考试知识点追踪 -->
|
|
|
- <KnowledgeTrack
|
|
|
- :exam-range="knowledgeMapData.examRange"
|
|
|
- :knowledge-stats="knowledgeStats"
|
|
|
- v-loading="knowledgeloading"
|
|
|
- />
|
|
|
+ <KnowledgeTrack :exam-range="knowledgeMapData.examRange" :knowledge-stats="knowledgeStats"
|
|
|
+ v-loading="knowledgeloading" />
|
|
|
|
|
|
<!-- 零分知识点、高频错题知识点 -->
|
|
|
- <zeroScoreKnowledge
|
|
|
- ref="knowledgeGraphRef"
|
|
|
- @knowledge-item-click="handleKnowledgeItemClick"
|
|
|
- :active-view="activeView"
|
|
|
- @view-change="activeView = $event"
|
|
|
- :subject-name="portraitData.subjectName"
|
|
|
- :subject-score-rate="subjectScoreRate"
|
|
|
- :table-data="treeData"
|
|
|
- :fatal-vulnerability="fatalVulnerability"
|
|
|
- :high-vulnerability="highVulnerability"
|
|
|
- :all-knowledge-list="allKnowledgeList"
|
|
|
- @activeTabChange="handleActiveTabChange"
|
|
|
- @legend-change="handleLegendChange"
|
|
|
- v-loading="zeroloading"
|
|
|
- />
|
|
|
+ <zeroScoreKnowledge ref="knowledgeGraphRef" @knowledge-item-click="handleKnowledgeItemClick"
|
|
|
+ :active-view="activeView" @view-change="activeView = $event" :subject-name="portraitData.subjectName"
|
|
|
+ :subject-score-rate="subjectScoreRate" :table-data="treeData" :fatal-vulnerability="fatalVulnerability"
|
|
|
+ :high-vulnerability="highVulnerability" :all-knowledge-list="allKnowledgeList"
|
|
|
+ @activeTabChange="handleActiveTabChange" @legend-change="handleLegendChange" v-loading="zeroloading" />
|
|
|
|
|
|
<!-- 历次变化 -->
|
|
|
- <HistoricalChangeChart
|
|
|
- ref="historicalChangeChartRef"
|
|
|
- :personalList="historicalChangeData.personalList"
|
|
|
- :classList="historicalChangeData.classList"
|
|
|
- :gradeList="historicalChangeData.gradeList"
|
|
|
- :examName="historicalChangeData.examName"
|
|
|
- :knowledgeName="knowledgeName"
|
|
|
- v-loading="historicalChangeLoading"
|
|
|
- />
|
|
|
+ <HistoricalChangeChart ref="historicalChangeChartRef" :personalList="historicalChangeData.personalList"
|
|
|
+ :classList="historicalChangeData.classList" :gradeList="historicalChangeData.gradeList"
|
|
|
+ :examName="historicalChangeData.examName" :knowledgeName="knowledgeName"
|
|
|
+ v-loading="historicalChangeLoading" />
|
|
|
<!-- 薄弱知识点精准提升 -->
|
|
|
- <knowledgePaps
|
|
|
- :knowledgeName="knowledgeName"
|
|
|
- v-loading="knowledgePapsLoading"
|
|
|
- :knowledgData="knowledgData"
|
|
|
- @export-knowledge-paps="exportKnowledgePaps"
|
|
|
- />
|
|
|
+ <knowledgePaps :knowledgeName="knowledgeName" v-loading="knowledgePapsLoading" :knowledgData="knowledgData"
|
|
|
+ />
|
|
|
<!-- 下载试题 -->
|
|
|
- <Download
|
|
|
- ref="downloadRef"
|
|
|
- :visible.sync="visible"
|
|
|
- :examId="portraitData.examId"
|
|
|
- :subjectCode="portraitData.subjectCode"
|
|
|
- :knowledgeId="knowledgeId"
|
|
|
- />
|
|
|
-
|
|
|
+ <Download ref="downloadRef" :visible.sync="visible" :examId="portraitData.examId"
|
|
|
+ :subjectCode="portraitData.subjectCode" :knowledgeId="knowledgeId" />
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
@@ -81,7 +56,7 @@ export default {
|
|
|
knowledgeStats() {
|
|
|
const stats = [];
|
|
|
const prefix = ''; // 定义prefix变量
|
|
|
-
|
|
|
+
|
|
|
// 当有知识点数据时,生成统计文本
|
|
|
if (this.knowledgeMapData.konwLenght > 0 || this.knowledgeMapData.knowledgeList) {
|
|
|
// 获取得分率变化的文本部分
|
|
|
@@ -90,17 +65,16 @@ export default {
|
|
|
const hasDrop = this.knowledgeMapData.dropKnowledgeList; // 下降部分
|
|
|
const hasKnowledgeList = this.knowledgeMapData.knowledgeList; // 知识点列表
|
|
|
const knowledgeNum = this.knowledgeMapData.konwLenght; // 知识点数量
|
|
|
-
|
|
|
// 基础文本:包含的知识点数量
|
|
|
if (knowledgeNum > 0) {
|
|
|
changeText += `共包含<span style='color:#2E64FA'>${knowledgeNum}</span>个知识点`;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 添加知识点列表(可选)
|
|
|
- if (hasKnowledgeList) {
|
|
|
- changeText += `,包括<span style="color:#333333;font-weight:600;">${this.knowledgeMapData.knowledgeList}</span>`;
|
|
|
+ if (hasKnowledgeList && hasKnowledgeList.length > 0) {
|
|
|
+ changeText += `,共有<span style="color:#2E64FA">${this.knowledgeMapData.repeatKnowledgeNum}</span>个知识点重复出现`;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 当repeatKnowledgeNum大于0时,添加得分率变化信息
|
|
|
if (this.knowledgeMapData.repeatKnowledgeNum > 0) {
|
|
|
// 只有当raiseKnowledgeList不为空时,添加得分率提升的部分
|
|
|
@@ -123,11 +97,13 @@ export default {
|
|
|
// 如果只有提升,添加句号
|
|
|
changeText += `。`;
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else if(this.knowledgeMapData.repeatKnowledgeNum === 0){
|
|
|
// 如果repeatKnowledgeNum为0,添加完整句号
|
|
|
+ changeText += ``;
|
|
|
+ }else{
|
|
|
changeText += `。`;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 确保始终返回数组
|
|
|
if (changeText) {
|
|
|
stats.push(changeText);
|
|
|
@@ -136,7 +112,7 @@ export default {
|
|
|
// 如果只有考试范围数据,添加说明文本
|
|
|
stats.push(`本次考试涵盖<span style="color:#333333;font-weight:600;">${this.knowledgeMapData.knowledgeList}</span>,暂无详细知识点追踪数据。`);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return stats;
|
|
|
},
|
|
|
|
|
|
@@ -147,7 +123,7 @@ export default {
|
|
|
gradeHistoryData: [],
|
|
|
// 历次考试知识点追踪数据
|
|
|
knowledgeMapData: {
|
|
|
- examRange: "", //考试名称
|
|
|
+ examRange: [], //考试名称
|
|
|
konwLenght: 0, // 包含知识点数
|
|
|
knowledgeList: [],// 包含知识点列表
|
|
|
repeatKnowledgeNum: 0, // 重复知识点数
|
|
|
@@ -207,28 +183,34 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
// 我的历次成绩---年级画像
|
|
|
- MyGradeHistoryData() {
|
|
|
+ MyGradeHistoryData(currentPage = 1, pageSize = 10) {
|
|
|
// 加载状态-清空数据
|
|
|
this.historyloading = true;
|
|
|
// 历次考试知识点追踪-加载状态
|
|
|
- this.knowledgeloading = true;
|
|
|
+ this.knowledgeloading = true;
|
|
|
// 零分知识点、高频错题知识点-加载状态
|
|
|
- this.zeroloading = true;
|
|
|
+ this.zeroloading = true;
|
|
|
// 薄弱知识点精准提升-加载状态
|
|
|
this.knowledgePapsLoading = true;
|
|
|
// 历次变化图表-加载状态
|
|
|
this.historicalChangeLoading = true;
|
|
|
- this.gradeHistoryData = [];
|
|
|
+ this.gradeHistoryData = { records: [], total: 0 };
|
|
|
let examParams = {
|
|
|
examId: this.portraitData.examId,
|
|
|
subjectCode: this.portraitData.subjectCode,
|
|
|
+ page: currentPage,
|
|
|
+ size: pageSize,
|
|
|
};
|
|
|
this.$api.personalProfile.examScoreList(examParams).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
- let data = res.data || [];
|
|
|
+ let data = res.data || {};
|
|
|
if (data) {
|
|
|
- this.gradeHistoryData = res.data.records || [];
|
|
|
- let examIds = this.gradeHistoryData.map(item => item.examId || '');
|
|
|
+ // 确保total是数字类型
|
|
|
+ if (data.total !== undefined) {
|
|
|
+ data.total = Number(data.total);
|
|
|
+ }
|
|
|
+ this.gradeHistoryData = data;
|
|
|
+ let examIds = (data.records[0].data || []).map(item => item.examId || '');
|
|
|
this.portraitData.examIds = examIds;
|
|
|
// 加载状态
|
|
|
this.historyloading = false;
|
|
|
@@ -237,7 +219,7 @@ export default {
|
|
|
this.vulerabData();
|
|
|
// 历次考试知识点追踪
|
|
|
this.previousExamsData();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 加载状态
|
|
|
// 历次考试知识点追踪-加载状态
|
|
|
this.knowledgeloading = false;
|
|
|
@@ -246,14 +228,22 @@ export default {
|
|
|
// 薄弱知识点精准提升-加载状态
|
|
|
this.knowledgePapsLoading = false;
|
|
|
// 历次变化图表-加载状态
|
|
|
- this.historicalChangeLoading = false;
|
|
|
+ this.historicalChangeLoading = false;
|
|
|
this.historyloading = false;
|
|
|
- this.gradeHistoryData = [];
|
|
|
+ this.gradeHistoryData = { records: [], total: 0 };
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 加载状态
|
|
|
this.historyloading = false;
|
|
|
- this.gradeHistoryData = [];
|
|
|
+ // 历次考试知识点追踪-加载状态
|
|
|
+ this.knowledgeloading = false;
|
|
|
+ // 零分知识点、高频错题知识点-加载状态
|
|
|
+ this.zeroloading = false;
|
|
|
+ // 薄弱知识点精准提升-加载状态
|
|
|
+ this.knowledgePapsLoading = false;
|
|
|
+ // 历次变化图表-加载状态
|
|
|
+ this.historicalChangeLoading = false;
|
|
|
+ this.gradeHistoryData = { records: [], total: 0 };
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
@@ -265,12 +255,18 @@ export default {
|
|
|
// 零分知识点、高频错题知识点(会自动调用 KnowledgeTrackData 和 pushQuestionData)
|
|
|
this.vulerabData();
|
|
|
},
|
|
|
+ // 处理分页变化
|
|
|
+ handlePageChange(pageInfo) {
|
|
|
+ const { currentPage, pageSize } = pageInfo;
|
|
|
+ // 重新调用接口获取对应页码的数据
|
|
|
+ this.MyGradeHistoryData(currentPage, pageSize);
|
|
|
+ },
|
|
|
//历次考试知识点追踪
|
|
|
previousExamsData() {
|
|
|
// 加载状态-清空数据
|
|
|
this.knowledgeloading = true;
|
|
|
this.knowledgeMapData = {
|
|
|
- examRange: "", //考试名称
|
|
|
+ examRange: [], //考试名称
|
|
|
konwLenght: 0, // 包含知识点数
|
|
|
knowledgeList: [],// 包含知识点列表
|
|
|
repeatKnowledgeNum: 0, // 重复知识点数
|
|
|
@@ -289,7 +285,7 @@ export default {
|
|
|
this.knowledgeloading = false;
|
|
|
// 考试名称列表
|
|
|
if (data.examNameList) {
|
|
|
- this.knowledgeMapData.examRange = data.examNameList.join('、') || '';
|
|
|
+ this.knowledgeMapData.examRange =data.examNameList ? data.examNameList : [];
|
|
|
}
|
|
|
// 知识点列表
|
|
|
if (data.knowledgeList) {
|
|
|
@@ -305,11 +301,11 @@ export default {
|
|
|
if (data.dropKnowledgeList) {
|
|
|
this.knowledgeMapData.dropKnowledgeList = data.dropKnowledgeList.join('、') || '';
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 加载状态
|
|
|
this.knowledgeloading = false;
|
|
|
this.knowledgeMapData = {
|
|
|
- examRange: "", //考试名称
|
|
|
+ examRange: [], //考试名称
|
|
|
konwLenght: 0, // 包含知识点数
|
|
|
knowledgeList: [],// 包含知识点列表
|
|
|
repeatKnowledgeNum: 0, // 重复知识点数
|
|
|
@@ -317,11 +313,11 @@ export default {
|
|
|
dropKnowledgeList: [],//下降知识点
|
|
|
};
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 加载状态
|
|
|
this.knowledgeloading = false;
|
|
|
this.knowledgeMapData = {
|
|
|
- examRange: "", //考试名称
|
|
|
+ examRange: [], //考试名称
|
|
|
konwLenght: 0, // 包含知识点数
|
|
|
knowledgeList: [],// 包含知识点列表
|
|
|
repeatKnowledgeNum: 0, // 重复知识点数
|
|
|
@@ -365,7 +361,7 @@ export default {
|
|
|
|
|
|
// 新增:调用studentKnowledgeDataTree API获取treeData
|
|
|
this.getStudentKnowledgeDataTree();
|
|
|
-
|
|
|
+
|
|
|
// 获取知识点第一条数据id 全部>高频错题>零分知识点
|
|
|
if (this.allKnowledgeList.length > 0) {
|
|
|
this.knowledgeName = this.allKnowledgeList[0].knowledgeName || '';
|
|
|
@@ -374,7 +370,7 @@ export default {
|
|
|
if (this.highVulnerability.length > 0) {
|
|
|
this.knowledgeName = this.highVulnerability[0].knowledgeName || '';
|
|
|
this.knowledgeId = this.highVulnerability[0].knowledgeId || 0;
|
|
|
- }else if (this.fatalVulnerability.length > 0) {
|
|
|
+ } else if (this.fatalVulnerability.length > 0) {
|
|
|
this.knowledgeName = this.fatalVulnerability[0].knowledgeName || '';
|
|
|
this.knowledgeId = this.fatalVulnerability[0].knowledgeId || 0;
|
|
|
} else {
|
|
|
@@ -382,12 +378,12 @@ export default {
|
|
|
this.knowledgeId = '';
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 首次加载默认获取知识点
|
|
|
this.KnowledgeTrackData();
|
|
|
// 加载推送试题
|
|
|
this.pushQuestionData();
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
this.treeData = [];
|
|
|
this.subjectScoreRate = 0; //科目得分率
|
|
|
this.fatalVulnerability = []; // 零分知识点数据
|
|
|
@@ -411,7 +407,7 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
this.treeData = [];
|
|
|
this.subjectScoreRate = 0; //科目得分率
|
|
|
this.fatalVulnerability = []; // 零分知识点数据
|
|
|
@@ -428,7 +424,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 新增:获取知识点树状图数据
|
|
|
getStudentKnowledgeDataTree(knowledgeType = 0, scoreRateTypes = null) {
|
|
|
this.treeData = [];
|
|
|
@@ -440,14 +436,14 @@ export default {
|
|
|
scoreRateTypes: scoreRateTypes, // 得分率类型 1薄弱 2良好 3优秀(精准提升),为空是全部
|
|
|
knowledgeType: knowledgeType // 知识点类型 0全部 1高频错题知识点 2零分知识点(精准提升)
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
this.$api.personalProfile.studentKnowledgeDataTree(params).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
let data = res.data;
|
|
|
if (data) {
|
|
|
// 从新API获取treeData
|
|
|
this.treeData = data || [];
|
|
|
-
|
|
|
+
|
|
|
// 接口调用成功后,刷新图表
|
|
|
this.$nextTick(() => {
|
|
|
if (this.$refs.knowledgeGraphRef) {
|
|
|
@@ -474,7 +470,7 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 处理图例变化事件
|
|
|
handleLegendChange(data) {
|
|
|
// 调用getStudentKnowledgeDataTree方法,传递knowledgeType和scoreRateTypes
|
|
|
@@ -534,7 +530,7 @@ export default {
|
|
|
gradeList: gradeList,
|
|
|
examName: examNames,
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
this.$nextTick(() => {
|
|
|
if (this.$refs.historicalChangeChartRef) {
|
|
|
this.$refs.historicalChangeChartRef.initChart();
|
|
|
@@ -565,7 +561,7 @@ export default {
|
|
|
},
|
|
|
|
|
|
// 推题列表
|
|
|
- pushQuestionData(){
|
|
|
+ pushQuestionData() {
|
|
|
this.knowledgData = [];
|
|
|
let params = {
|
|
|
examId: this.portraitData.examId, //当前考试id
|
|
|
@@ -574,23 +570,23 @@ export default {
|
|
|
};
|
|
|
this.$api.personalProfile.pushQuestionList(params).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
- let data = res.data ;
|
|
|
+ let data = res.data;
|
|
|
if (data) {
|
|
|
// 加载状态-清空数据
|
|
|
this.knowledgePapsLoading = false;
|
|
|
- // 更新推题列表数据
|
|
|
+ // 更新推题列表数据
|
|
|
this.knowledgData = data || [];
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 加载状态-清空数据
|
|
|
this.knowledgePapsLoading = false;
|
|
|
- // 更新推题列表数据
|
|
|
- this.knowledgData = [];
|
|
|
+ // 更新推题列表数据
|
|
|
+ this.knowledgData = [];
|
|
|
}
|
|
|
} else {
|
|
|
- // 加载状态-清空数据
|
|
|
+ // 加载状态-清空数据
|
|
|
this.knowledgePapsLoading = false;
|
|
|
// 更新推题列表数据
|
|
|
- this.knowledgData = [];
|
|
|
+ this.knowledgData = [];
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
@@ -598,8 +594,8 @@ export default {
|
|
|
// 知识点列表点击事件
|
|
|
handleKnowledgeItemClick(data) {
|
|
|
// 点击知识点后,更新图表数据
|
|
|
- this.knowledgeId = data.item.knowledgeId ;
|
|
|
- this.knowledgeName = data.item.knowledgeName ;
|
|
|
+ this.knowledgeId = data.item.knowledgeId;
|
|
|
+ this.knowledgeName = data.item.knowledgeName;
|
|
|
// 点击知识点后,更新历次变化
|
|
|
this.KnowledgeTrackData();
|
|
|
// 点击知识点后,更新推题列表
|
|
|
@@ -612,12 +608,12 @@ export default {
|
|
|
// zero 零分
|
|
|
// all 所有知识点
|
|
|
let knowledgeType = 0;
|
|
|
-
|
|
|
+
|
|
|
if (tab === 'highFreq') {
|
|
|
// 高频知识点
|
|
|
knowledgeType = 1;
|
|
|
- if(this.highVulnerability.length > 0) {
|
|
|
- this.knowledgeId = this.highVulnerability[0].knowledgeId ;
|
|
|
+ if (this.highVulnerability.length > 0) {
|
|
|
+ this.knowledgeId = this.highVulnerability[0].knowledgeId;
|
|
|
this.knowledgeName = this.highVulnerability[0].knowledgeName;
|
|
|
} else {
|
|
|
this.knowledgeId = '';
|
|
|
@@ -626,7 +622,7 @@ export default {
|
|
|
} else if (tab === 'zero') {
|
|
|
// 零分知识点
|
|
|
knowledgeType = 2;
|
|
|
- if(this.fatalVulnerability.length > 0) {
|
|
|
+ if (this.fatalVulnerability.length > 0) {
|
|
|
this.knowledgeId = this.fatalVulnerability[0].knowledgeId || 0;
|
|
|
this.knowledgeName = this.fatalVulnerability[0].knowledgeName || '';
|
|
|
} else {
|
|
|
@@ -636,7 +632,7 @@ export default {
|
|
|
} else if (tab === 'all') {
|
|
|
// 所有知识点
|
|
|
knowledgeType = 0;
|
|
|
- if(this.allKnowledgeList.length > 0) {
|
|
|
+ if (this.allKnowledgeList.length > 0) {
|
|
|
this.knowledgeId = this.allKnowledgeList[0].knowledgeId || 0;
|
|
|
this.knowledgeName = this.allKnowledgeList[0].knowledgeName || '';
|
|
|
} else {
|
|
|
@@ -644,7 +640,7 @@ export default {
|
|
|
this.knowledgeName = '';
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 重置图例状态:让三个图例恢复成原先的模样
|
|
|
if (this.$refs.knowledgeGraphRef) {
|
|
|
this.$refs.knowledgeGraphRef.selectedLegend = {
|
|
|
@@ -659,11 +655,11 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 根据tab切换调用新API,传递对应的knowledgeType和重置后的scoreRateTypes=null
|
|
|
this.getStudentKnowledgeDataTree(knowledgeType, null);
|
|
|
-
|
|
|
- if(!this.knowledgeId){
|
|
|
+
|
|
|
+ if (!this.knowledgeId) {
|
|
|
this.historicalChangeData = {
|
|
|
personalList: [],
|
|
|
classList: [],
|
|
|
@@ -685,12 +681,16 @@ export default {
|
|
|
|
|
|
// 导出精准提升试题
|
|
|
exportKnowledgePaps() {
|
|
|
- if(this.knowledgData.length === 0){
|
|
|
- this.$message.warning('暂无知识点推题');
|
|
|
- return
|
|
|
- }
|
|
|
+ // if (this.knowledgData.length === 0) {
|
|
|
+ // this.$message.warning('暂无知识点推题');
|
|
|
+ // return
|
|
|
+ // }
|
|
|
// 触发Download组件弹窗
|
|
|
this.visible = true;
|
|
|
+ },
|
|
|
+ // 导出试题(供父组件调用)
|
|
|
+ ExportQuestions() {
|
|
|
+ this.exportKnowledgePaps();
|
|
|
}
|
|
|
},
|
|
|
}
|