Prechádzať zdrojové kódy

个人画像-样式修改,暂无数据字体大小修改

吴朋磊 3 mesiacov pred
rodič
commit
bec8ab45b7

+ 1 - 1
src/views/analysisReport/personalProfile/KnowledgeTrack.vue

@@ -113,7 +113,7 @@ export default {
       top: 50%;
       left: 50%;
       transform: translate(-50%, -50%);
-      font-size: 16px;
+      font-size: 14px;
       color: #909399;
       text-align: center;
       width: 100%;

+ 1 - 1
src/views/analysisReport/personalProfile/MyGradeHistory.vue

@@ -238,7 +238,7 @@ export default {
       top: 50%;
       left: 50%;
       transform: translate(-50%, -50%);
-      font-size: 16px;
+      font-size: 14px;
       color: #909399;
       text-align: center;
       width: 100%;

+ 25 - 9
src/views/analysisReport/personalProfile/index.vue

@@ -21,6 +21,7 @@
             :table-data="treeData" 
             :fatal-vulnerability="fatalVulnerability"
             :high-vulnerability="highVulnerability" 
+            :all-knowledge-list="allKnowledgeList"
             @activeTabChange="handleActiveTabChange" 
             v-loading="zeroloading"
         />
@@ -81,8 +82,7 @@ export default {
             // 当konwLenght不等于0时,显示第一行文本
             if (this.knowledgeMapData.konwLenght > 0) {
                 stats.push(
-                    `共包含<span style='color:#2E64FA'>${this.knowledgeMapData.konwLenght}</span>个知识点,
-                分别为<span style='color:#333333;font-weight:600;'>${this.knowledgeMapData.knowledgeList}</span>`
+                    `共包含<span style='color:#2E64FA'>${this.knowledgeMapData.konwLenght}</span>个知识点,分别为<span style='color:#333333;font-weight:600;'>${this.knowledgeMapData.knowledgeList}</span>`
                 ); //包含知识点
             }
             // 当repeatKnowledgeNum不等于0时,显示第二行文本
@@ -93,17 +93,14 @@ export default {
                 const hasDrop = this.knowledgeMapData.dropKnowledgeList;
                 // 只有当raiseKnowledgeList不为空时,添加得分率提升的部分
                 if (hasRaise) {
-                    changeText += `其中<span style="color:#333333;font-weight:600;">
-                        ${this.knowledgeMapData.raiseKnowledgeList}</span>
-                        ${prefix}得分率<span style="color:#3BA272;font-weight:600;">提升</span>`;
+                    changeText += `其中<span style="color:#333333;font-weight:600;">${this.knowledgeMapData.raiseKnowledgeList}</span>${prefix}得分率<span style="color:#3BA272;font-weight:600;">提升</span>`;
                 }
                 // 只有当dropKnowledgeList不为空时,添加得分率下降的部分
                 if (hasDrop) {
                     if (hasRaise) {
                         changeText += `,`;
                     }
-                    changeText += `<span style="color:#333333;font-weight:600;">${this.knowledgeMapData.dropKnowledgeList}</span>${prefix}得分率
-                    <span style="color:#F56C6C;font-weight:600;">下降</span>,希望针对下降的知识点进行总结和反思。`;
+                    changeText += `<span style="color:#333333;font-weight:600;">${this.knowledgeMapData.dropKnowledgeList}</span>${prefix}得分率<span style="color:#F56C6C;font-weight:600;">下降</span>,希望针对下降的知识点进行总结和反思。`;
                 } else if (hasRaise) {
                     // 如果只有提升,添加句号
                     changeText += `。`;
@@ -140,7 +137,8 @@ export default {
             fatalVulnerability: [],
             // 高频错题知识点数据
             highVulnerability: [],
-
+            // 所有知识点数据
+            allKnowledgeList: [],
             // 知识点名称
             knowledgeName: '',
             knowledgeId: '',
@@ -301,6 +299,7 @@ export default {
             this.subjectScoreRate = 0; //科目得分率
             this.fatalVulnerability = []; // 零分知识点数据
             this.highVulnerability = []; // 高频错题知识点数据
+            this.allKnowledgeList = []; // 所有知识点数据
             let examParams = {
                 examId: this.portraitData.examId, //当前考试id
                 examIds: this.portraitData.examIds, //历次考试ids
@@ -322,6 +321,8 @@ export default {
                         this.fatalVulnerability = data.fatalVulnerability || [];
                         // 高频错题知识点数据
                         this.highVulnerability = data.highVulnerability || [];
+                        // 所有知识点数据
+                        this.allKnowledgeList = data.allKnowledgeList || [];
 
                         // 接口调用成功后,刷新图表
                         this.$nextTick(() => {
@@ -338,6 +339,9 @@ export default {
                             if (this.highVulnerability.length > 0) {
                                 this.knowledgeName = this.highVulnerability[0].knowledgeName || '';
                                 this.knowledgeId = this.highVulnerability[0].knowledgeId || 0;
+                            } else if (this.allKnowledgeList.length > 0) {
+                                this.knowledgeName = this.allKnowledgeList[0].knowledgeName || '';
+                                this.knowledgeId = this.allKnowledgeList[0].knowledgeId || 0;
                             } else {
                                 this.knowledgeName = '';
                                 this.knowledgeId = '';
@@ -353,6 +357,7 @@ export default {
                         this.subjectScoreRate = 0; //科目得分率
                         this.fatalVulnerability = []; // 零分知识点数据
                         this.highVulnerability = []; // 高频错题知识点数据
+                        this.allKnowledgeList = []; // 所有知识点数据
                         // 首次加载默认获取知识点
                         this.zeroloading = false;
                         // 接口调用成功后,刷新图表
@@ -367,6 +372,7 @@ export default {
                     this.subjectScoreRate = 0; //科目得分率
                     this.fatalVulnerability = []; // 零分知识点数据
                     this.highVulnerability = []; // 高频错题知识点数据
+                    this.allKnowledgeList = []; // 所有知识点数据
                     // 加载状态
                     this.zeroloading = false;
                     // 接口调用成功后,刷新图表
@@ -505,10 +511,11 @@ export default {
             this.pushQuestionData();
         },
 
-        // 零分、高频切换
+        // 零分、高频、全部知识点切换
         handleActiveTabChange(tab) {
             // highFreq 高频
             // zero 零分
+            // all 所有知识点
             if (tab === 'highFreq') {
                 // 高频知识点
                 if(this.highVulnerability.length > 0) {
@@ -527,6 +534,15 @@ export default {
                     this.knowledgeId = '';
                     this.knowledgeName = '';
                 }
+            } else if (tab === 'all') {
+                // 所有知识点
+                if(this.allKnowledgeList.length > 0) {
+                    this.knowledgeId = this.allKnowledgeList[0].knowledgeId || 0;
+                    this.knowledgeName = this.allKnowledgeList[0].knowledgeName || '';
+                } else {
+                    this.knowledgeId = '';
+                    this.knowledgeName = '';
+                }
             }
             if(!this.knowledgeId){
                 this.historicalChangeData = {

+ 45 - 14
src/views/analysisReport/personalProfile/zeroScoreKnowledge.vue

@@ -21,15 +21,15 @@
       <div class="legend">
         <div class="legend_item" :class="{ 'selected': selectedLegend.weak }">
           <span class="legend_dot weak"></span>
-          <span class="legend_text">${{ '薄弱(0%≤得分率<60%)' }}</span>
+          <span class="legend_text">{{ '薄弱(0%≤得分率<60%)' }}</span>
         </div>
         <div class="legend_item" :class="{ 'selected': selectedLegend.good }">
           <span class="legend_dot good"></span>
-          <span class="legend_text">${{ '良好(60%≤得分率<85%)' }}</span>
+          <span class="legend_text">{{ '良好(60%≤得分率<85%)' }}</span>
         </div>
         <div class="legend_item" :class="{ 'selected': selectedLegend.excellent }">
           <span class="legend_dot excellent"></span>
-          <span class="legend_text">${{ '优秀(85%≤得分率)' }}</span>
+          <span class="legend_text">{{ '优秀(85%≤得分率)' }}</span>
         </div>
       </div>
       <!-- 视图切换按钮 - 移到knowledge_graph容器下 -->
@@ -61,15 +61,15 @@
             <!-- @click="toggleLegend('weak')"  @click="toggleLegend('good')" @click="toggleLegend('excellent')" -->
             <div class="legend_item" :class="{ 'selected': selectedLegend.weak }">
               <span class="legend_dot weak"></span>
-              <span class="legend_text">${{ '薄弱(0%≤得分率<60%)' }}</span>
+              <span class="legend_text">{{ '薄弱(0%≤得分率<60%)' }}</span>
             </div>
             <div class="legend_item" :class="{ 'selected': selectedLegend.good }">
               <span class="legend_dot good"></span>
-              <span class="legend_text">${{ '良好(60%≤得分率<85%)' }}</span>
+              <span class="legend_text">{{ '良好(60%≤得分率<85%)' }}</span>
             </div>
             <div class="legend_item" :class="{ 'selected': selectedLegend.excellent }">
               <span class="legend_dot excellent"></span>
-              <span class="legend_text">${{ '优秀(85%≤得分率)' }}</span>
+              <span class="legend_text">{{ '优秀(85%≤得分率)' }}</span>
             </div>
           </div>
           <!-- 视图切换按钮  -->
@@ -114,23 +114,35 @@
           <!-- 正常列表数据 -->
           <div class="list_item" v-for="(item, index) in knowledgeItems" :key="index"
             @click="handleItemClick(item, index)" :class="{ active: selectedIndex === index }" v-else>
+
             <div class="item_header">
-              <span class="item_dot"></span>
+              <span class="item_dot" :style="{ backgroundColor: getDotColor(item) }"></span>
               <el-tooltip :content="item.knowledgeName" placement="top" effect="light"
                 :disabled="!item.knowledgeName || item.knowledgeName.length < 15">
                 <span class="item_title">{{ item.knowledgeName }}</span>
               </el-tooltip>
               <span class="item_tag" v-if="item.scoreRateDiff">{{ item.scoreRateDiff }} %</span>
             </div>
+
             <div class="item_info">
               <!-- 班级/学生得分率 -->
-              <span class="item_score">
+              <!-- <span class="item_score">
                 <span class="score_label">得分率:</span>
                 <span class="score_first" v-if="item.classScoreRate">{{ item.classScoreRate }}%</span>
                 <span class="score_separator" v-if="item.classScoreRate">|</span>
                 <span v-if="item.gradeScoreRate"
                   :class="item.classScoreRate !== null ? 'score_second' : 'score_first'">{{ item.gradeScoreRate }}%</span>
+              </span> -->
+
+              <!-- 班级/学生得分率 -->
+              <span class="item_score">
+                <span class="score_label">得分率:</span>
+                <span :style="{color: getDotColor(item)}" v-if="item.personalScoreRate">{{ item.personalScoreRate }}%</span>
+                <span class="score_separator" v-if="item.personalScoreRate">|</span>
+                <span v-if="item.personalScoreRate" class="score_second">{{ item.classScoreRate }}%</span>
+                <span v-if="!item.personalScoreRate" :style="{color: getDotColor(item)}">{{ item.classScoreRate }}%</span>
               </span>
+
               <span class="item_exam_count">考试数: <span class="exam_count">{{ item.examNum || 0 }}</span></span>
             </div>
           </div>
@@ -349,7 +361,7 @@ export default {
       // 这是为了避免在视图切换时重复调用接口
       if (this._isMounted && newTab !== oldTab) {
         // 向父组件发送tab切换事件
-        this.$emit('active-tab-change', newTab);
+        this.$emit('activeTabChange', newTab);
       }
     },
     // 监听数据变化,重新设置默认选中项
@@ -699,6 +711,20 @@ export default {
     handleCellClick({ row }) {
       // 调用行点击事件处理逻辑
       this.handleRowClick(row);
+    },
+
+    // 根据知识点得分率获取对应的点颜色
+    getDotColor(item) {
+      // 优先使用classScoreRate,若不存在或为空则使用gradeScoreRate
+      const scoreRate = item.classScoreRate || item.gradeScoreRate;
+      const rate = parseFloat(scoreRate);
+      if (rate >= 85) {
+        return '#3BA272'; // 优秀 - 绿色
+      } else if (rate > 60) {
+        return '#FAC858'; // 良好 - 黄色
+      } else {
+        return '#EE6666'; // 薄弱 - 红色
+      }
     }
   }
 };
@@ -1099,7 +1125,7 @@ export default {
         top: 50%;
         left: 50%;
         transform: translate(-50%, -50%);
-        font-size: 16px;
+        font-size: 14px;
         color: #909399;
         text-align: center;
         width: 100%;
@@ -1318,10 +1344,13 @@ export default {
     }
 
     .rate_info {
-      display: flex;
+      // display: flex;
       align-items: center;
       gap: 8px;
       justify-content: center;
+      width: 80px;
+      margin: 0 auto;
+      position: relative;
     }
 
     .rate_dot {
@@ -1329,7 +1358,9 @@ export default {
       width: 6px;
       height: 6px;
       border-radius: 50%;
-
+      position: absolute;
+      top: 8px;
+      left: 2px;
       &.rate_excellent {
         background-color: #3BA272;
       }
@@ -1344,12 +1375,12 @@ export default {
     }
 
     .rate_value {
-      font-size: 16px;
+      font-size: 14px;
       color: #606266;
     }
 
     .diff_value {
-      font-size: 16px;
+      font-size: 14px;
       color: #606266;
 
       &.diff_negative {