|
@@ -5,7 +5,7 @@
|
|
|
<!-- 自定义每页内容 -->
|
|
<!-- 自定义每页内容 -->
|
|
|
<template #default="slotProps">
|
|
<template #default="slotProps">
|
|
|
<template v-if="slotProps.type == 'web_mode'">
|
|
<template v-if="slotProps.type == 'web_mode'">
|
|
|
- <div class="area_page" style="position: absolute;top: -9999999px;z-index: -10;">
|
|
|
|
|
|
|
+ <div class="area_page" style="position: absolute;top: -9999999px;z-index: -10;height: auto;min-height: 1285px;">
|
|
|
<!-- 用于获取div的高度 默认隐藏不显示 -->
|
|
<!-- 用于获取div的高度 默认隐藏不显示 -->
|
|
|
<div class="area_title" ref="areaReportTitle">
|
|
<div class="area_title" ref="areaReportTitle">
|
|
|
<p>{{ reportTitle }}</p>
|
|
<p>{{ reportTitle }}</p>
|
|
@@ -28,6 +28,38 @@
|
|
|
<div class="pring_jg"></div>
|
|
<div class="pring_jg"></div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <!-- 知识点分层 -->
|
|
|
|
|
+ <template v-for="know in knowLedgeLayeringData">
|
|
|
|
|
+ <div class="area_module" :ref="`knowLedgeLayering_${know.subjectCode}`">
|
|
|
|
|
+ <div class="area_module_title">{{know.groupName}}分层分析</div>
|
|
|
|
|
+ <div class="area_module_table">
|
|
|
|
|
+ <ul class="student_know_paper">
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>满分区</span>
|
|
|
|
|
+ <span>(得满分的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ know.knowLedgeLayering.fullScore }}{{ know.knowLedgeLayering.fullScore ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>突破升级区</span>
|
|
|
|
|
+ <span>(得分率高于同层次,但低于上一层次平均水平的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ know.knowLedgeLayering.breakThrough }}{{ know.knowLedgeLayering.breakThrough ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>就近发展区</span>
|
|
|
|
|
+ <span>(得分率低于同层次平均水平的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ know.knowLedgeLayering.develop }}{{ know.knowLedgeLayering.develop ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="pring_jg"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="area_page web_area_page" v-for="page in pageCount" :key="`${pageKey}_${page}`">
|
|
<div class="area_page web_area_page" v-for="page in pageCount" :key="`${pageKey}_${page}`">
|
|
|
<template v-if="page == 1">
|
|
<template v-if="page == 1">
|
|
@@ -216,6 +248,35 @@
|
|
|
</template>
|
|
</template>
|
|
|
</template>
|
|
</template>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <div class="area_module" v-if="group.type=='knowledgePointQuestionData' && group?.knowLedgeLayering && page == knowLedgeLayeringPageNum[subKey]">
|
|
|
|
|
+ <div class="area_module_title">{{group.groupName}}分层分析</div>
|
|
|
|
|
+ <div class="area_module_table">
|
|
|
|
|
+ <ul class="student_know_paper">
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>满分区</span>
|
|
|
|
|
+ <span>(得满分的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ group.knowLedgeLayering.fullScore }}{{ group.knowLedgeLayering.fullScore ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>突破升级区</span>
|
|
|
|
|
+ <span>(得分率高于同层次,但低于上一层次平均水平的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ group.knowLedgeLayering.breakThrough }}{{ group.knowLedgeLayering.breakThrough ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li>
|
|
|
|
|
+ <div class="li_left">
|
|
|
|
|
+ <span>就近发展区</span>
|
|
|
|
|
+ <span>(得分率低于同层次平均水平的知识点)</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="li_know">{{ group.knowLedgeLayering.develop }}{{ group.knowLedgeLayering.develop ? '。':'' }}</div>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="pring_jg"></div>
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 历次 -->
|
|
<!-- 历次 -->
|
|
|
<!-- <div class="area_module" v-if="singleSubjectData?.[subKey]?.historyExamData?.pageNum==page && singleSubjectData[subKey].historyExamData.chartData.length > 0">
|
|
<!-- <div class="area_module" v-if="singleSubjectData?.[subKey]?.historyExamData?.pageNum==page && singleSubjectData[subKey].historyExamData.chartData.length > 0">
|
|
@@ -303,6 +364,8 @@ export default {
|
|
|
suggestionHtml: null,//总结建议
|
|
suggestionHtml: null,//总结建议
|
|
|
multiSuggestionPageNum:'',//总分 总结建议
|
|
multiSuggestionPageNum:'',//总分 总结建议
|
|
|
singleSubjectData:[],//单科数据
|
|
singleSubjectData:[],//单科数据
|
|
|
|
|
+ knowLedgeLayeringData:[],//知识点分层
|
|
|
|
|
+ knowLedgeLayeringPageNum:[],//知识点分层分页
|
|
|
bookPageImages:[],//生成的图片地址
|
|
bookPageImages:[],//生成的图片地址
|
|
|
// showReportLoading:false,
|
|
// showReportLoading:false,
|
|
|
targetProgress:0,
|
|
targetProgress:0,
|
|
@@ -405,6 +468,8 @@ export default {
|
|
|
this.modulePageData = [1];
|
|
this.modulePageData = [1];
|
|
|
this.multiSuggestionPageNum = '';//总分 总结建议
|
|
this.multiSuggestionPageNum = '';//总分 总结建议
|
|
|
this.singleSubjectData = [];//单科数据
|
|
this.singleSubjectData = [];//单科数据
|
|
|
|
|
+ this.knowLedgeLayeringData = [];//知识点分层
|
|
|
|
|
+ this.knowLedgeLayeringPageNum = [];//知识点分层分页
|
|
|
this.pageKey += 1;
|
|
this.pageKey += 1;
|
|
|
//多科成绩总览 科目标准分分析
|
|
//多科成绩总览 科目标准分分析
|
|
|
await this.QueryMultiSubjectData();
|
|
await this.QueryMultiSubjectData();
|
|
@@ -810,7 +875,7 @@ export default {
|
|
|
const tableData = res.data.tableData || [];
|
|
const tableData = res.data.tableData || [];
|
|
|
const titleData = res.data.titleData || [];
|
|
const titleData = res.data.titleData || [];
|
|
|
const studentOpenness = res.data?.studentOpenness ?? '';//控制得分显示对错或值
|
|
const studentOpenness = res.data?.studentOpenness ?? '';//控制得分显示对错或值
|
|
|
- this.TableChartData(tableData, titleData, studentOpenness, index,'smallQuestionData','小题');
|
|
|
|
|
|
|
+ this.TableChartData(tableData, titleData, studentOpenness, index,'smallQuestionData','小题',subjectCode);
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
@@ -821,26 +886,35 @@ export default {
|
|
|
subjectGroupType: 0, // 科目是否为组合
|
|
subjectGroupType: 0, // 科目是否为组合
|
|
|
isTotal: 0, //是否为总分科目 1为总分 0为非总分
|
|
isTotal: 0, //是否为总分科目 1为总分 0为非总分
|
|
|
subjectCode:subjectCode
|
|
subjectCode:subjectCode
|
|
|
- }).then(res => {
|
|
|
|
|
|
|
+ }).then(async res => {
|
|
|
if (res.code == 200 && res.data) {
|
|
if (res.code == 200 && res.data) {
|
|
|
const { bigQuestion, knowledgePointQuestion, abilityQuestion } = res.data
|
|
const { bigQuestion, knowledgePointQuestion, abilityQuestion } = res.data
|
|
|
if (bigQuestion && bigQuestion?.tableData?.length > 0) {
|
|
if (bigQuestion && bigQuestion?.tableData?.length > 0) {
|
|
|
const tableData = bigQuestion.tableData || [];
|
|
const tableData = bigQuestion.tableData || [];
|
|
|
const titleData = bigQuestion.titleData || [];
|
|
const titleData = bigQuestion.titleData || [];
|
|
|
const studentOpenness = bigQuestion?.studentOpenness ?? '';
|
|
const studentOpenness = bigQuestion?.studentOpenness ?? '';
|
|
|
- this.TableChartData(tableData, titleData, studentOpenness, index,'bigQuestionData','大题');
|
|
|
|
|
|
|
+ this.TableChartData(tableData, titleData, studentOpenness, index,'bigQuestionData','大题',subjectCode);
|
|
|
}
|
|
}
|
|
|
if (knowledgePointQuestion && knowledgePointQuestion?.tableData?.length > 0) {
|
|
if (knowledgePointQuestion && knowledgePointQuestion?.tableData?.length > 0) {
|
|
|
const tableData = knowledgePointQuestion.tableData || [];
|
|
const tableData = knowledgePointQuestion.tableData || [];
|
|
|
const titleData = knowledgePointQuestion.titleData || [];
|
|
const titleData = knowledgePointQuestion.titleData || [];
|
|
|
const studentOpenness = knowledgePointQuestion?.studentOpenness ?? '';
|
|
const studentOpenness = knowledgePointQuestion?.studentOpenness ?? '';
|
|
|
- this.TableChartData(tableData, titleData, studentOpenness, index,'knowledgePointQuestionData','知识点');
|
|
|
|
|
|
|
+ this.TableChartData(tableData, titleData, studentOpenness, index,'knowledgePointQuestionData','知识点',subjectCode);
|
|
|
|
|
+ if(this.schoolType == 2){
|
|
|
|
|
+ // 等待 DOM 更新完成后获取高度
|
|
|
|
|
+ await this.$nextTick();
|
|
|
|
|
+ await new Promise(resolve => setTimeout(resolve, 2000)); // 额外延迟确保浏览器挂载
|
|
|
|
|
+ //处理知识点分层分页
|
|
|
|
|
+ const refName = `knowLedgeLayering_${subjectCode}`;
|
|
|
|
|
+ const domHeight = this.$refs[refName]?.[0]?.offsetHeight || 0;
|
|
|
|
|
+ this.knowLedgeLayeringPageNum.push(this.SingleChartPage(domHeight));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
if (abilityQuestion && abilityQuestion?.tableData?.length > 0) {
|
|
if (abilityQuestion && abilityQuestion?.tableData?.length > 0) {
|
|
|
const tableData = abilityQuestion.tableData || [];
|
|
const tableData = abilityQuestion.tableData || [];
|
|
|
const titleData = abilityQuestion.titleData || [];
|
|
const titleData = abilityQuestion.titleData || [];
|
|
|
const studentOpenness = abilityQuestion?.studentOpenness ?? '';
|
|
const studentOpenness = abilityQuestion?.studentOpenness ?? '';
|
|
|
- this.TableChartData(tableData, titleData, studentOpenness, index,'abilityQuestionData','能力要素');
|
|
|
|
|
|
|
+ this.TableChartData(tableData, titleData, studentOpenness, index,'abilityQuestionData','能力要素',subjectCode);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -860,7 +934,7 @@ export default {
|
|
|
const tableData = item?.questionData?.tableData || []
|
|
const tableData = item?.questionData?.tableData || []
|
|
|
const titleData = item?.questionData?.titleData || []
|
|
const titleData = item?.questionData?.titleData || []
|
|
|
const studentOpenness = res.data?.studentOpenness ?? ''
|
|
const studentOpenness = res.data?.studentOpenness ?? ''
|
|
|
- this.TableChartData(tableData, titleData, studentOpenness, index,`customQuestionData${key}`,item.customName);
|
|
|
|
|
|
|
+ this.TableChartData(tableData, titleData, studentOpenness, index,`customQuestionData${key}`,item.customName,subjectCode);
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -979,7 +1053,7 @@ export default {
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
//处理数据
|
|
//处理数据
|
|
|
- TableChartData(tableData, titleData, studentOpenness, index,type,groupName) {
|
|
|
|
|
|
|
+ async TableChartData(tableData, titleData, studentOpenness, index,type,groupName,subjectCode) {
|
|
|
//柱状图
|
|
//柱状图
|
|
|
let datax = [],datay = [],radarChart = []
|
|
let datax = [],datay = [],radarChart = []
|
|
|
tableData.forEach(item => {
|
|
tableData.forEach(item => {
|
|
@@ -1006,7 +1080,33 @@ export default {
|
|
|
const tablePagesNum = pageTableData.tablePagesNum;
|
|
const tablePagesNum = pageTableData.tablePagesNum;
|
|
|
const tableList = pageTableData.tableList;
|
|
const tableList = pageTableData.tableList;
|
|
|
const headerList = pageTableData.headerList;//表头
|
|
const headerList = pageTableData.headerList;//表头
|
|
|
-
|
|
|
|
|
|
|
+ //查询单科-知识点分层分析表(联考)
|
|
|
|
|
+ let knowLedgeLayering = null;
|
|
|
|
|
+ if(type == 'knowledgePointQuestionData' && this.schoolType== 2){
|
|
|
|
|
+ await this.$api.reportStudent[getApiName()].queryStudentKnowLedgeLayering({
|
|
|
|
|
+ ...this.reportParam,
|
|
|
|
|
+ subjectGroupType: 0, // 科目是否为组合
|
|
|
|
|
+ isTotal: 0, //是否为总分科目 1为总分 0为非总分
|
|
|
|
|
+ subjectCode:subjectCode
|
|
|
|
|
+ }).then(res => {
|
|
|
|
|
+ if (res.code == 200 && res.data) {
|
|
|
|
|
+ const { breakThrough,develop,fullScore } = res.data;
|
|
|
|
|
+ knowLedgeLayering = {
|
|
|
|
|
+ breakThrough:breakThrough || '',
|
|
|
|
|
+ develop:develop || '',
|
|
|
|
|
+ fullScore:fullScore || ''
|
|
|
|
|
+ }
|
|
|
|
|
+ //知识点
|
|
|
|
|
+ this.knowLedgeLayeringData.push({
|
|
|
|
|
+ subjectCode:subjectCode,
|
|
|
|
|
+ groupName:groupName,
|
|
|
|
|
+ knowLedgeLayering:knowLedgeLayering
|
|
|
|
|
+ })
|
|
|
|
|
+ }else{
|
|
|
|
|
+ knowLedgeLayering = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
this.singleSubjectData[index].groupQuestionData.push({
|
|
this.singleSubjectData[index].groupQuestionData.push({
|
|
|
type:type,
|
|
type:type,
|
|
|
groupName:groupName,
|
|
groupName:groupName,
|
|
@@ -1018,7 +1118,8 @@ export default {
|
|
|
chartPagesNum:chartPagesNum,
|
|
chartPagesNum:chartPagesNum,
|
|
|
datax:datax,
|
|
datax:datax,
|
|
|
datay:datay,
|
|
datay:datay,
|
|
|
- radarChartData:radarChartData
|
|
|
|
|
|
|
+ radarChartData:radarChartData,
|
|
|
|
|
+ knowLedgeLayering:knowLedgeLayering
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
//按照原始顺序累加,当总和超过A4高度1285时,将当前元素放入下一组
|
|
//按照原始顺序累加,当总和超过A4高度1285时,将当前元素放入下一组
|
|
@@ -1421,6 +1522,81 @@ export default {
|
|
|
// }
|
|
// }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .student_know_paper{
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ border-radius: 6px;
|
|
|
|
|
+ border: 1px solid #EBEEF5;
|
|
|
|
|
+ li{
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ border-top: 1px solid #EBEEF5;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ &:first-child{
|
|
|
|
|
+ border-top: 0;
|
|
|
|
|
+ .li_left{
|
|
|
|
|
+ background-color: #EEF1FB;
|
|
|
|
|
+ span{
|
|
|
|
|
+ color: #5470C6;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ &:nth-child(2){
|
|
|
|
|
+ .li_left{
|
|
|
|
|
+ background-color: #ECF6F1;
|
|
|
|
|
+ span{
|
|
|
|
|
+ color: #3BA272;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ &:nth-child(3){
|
|
|
|
|
+ .li_left{
|
|
|
|
|
+ background-color: #FFFAEF;
|
|
|
|
|
+ span{
|
|
|
|
|
+ color: #FAC858;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .li_left{
|
|
|
|
|
+ width: 300px;
|
|
|
|
|
+ padding: 24px;
|
|
|
|
|
+ border-right: 1px solid #EBEEF5;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ span{
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ line-height: 28px;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ &:nth-child(2){
|
|
|
|
|
+ margin-top: 4px;
|
|
|
|
|
+ line-height: 20px;
|
|
|
|
|
+ font-weight: 400;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: #999999;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .li_know{
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ padding: 20px;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ font-weight: 400;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ line-height: 24px;
|
|
|
|
|
+ text-align: justified;
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
.difficulty {
|
|
.difficulty {
|
|
|
width: 6px;
|
|
width: 6px;
|