index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <template>
  2. <div class="personalProfile">
  3. <div class="report_header">
  4. <el-radio-group v-model="radio1" @change="portraitTab">
  5. <el-radio-button label="grade">年级画像</el-radio-button>
  6. <el-radio-button label="class">班级画像</el-radio-button>
  7. </el-radio-group>
  8. </div>
  9. <!-- 我的历次成绩子组件 -->
  10. <MyGradeHistory :mode="radio1" />
  11. <!-- 历次考试知识点追踪 -->
  12. <KnowledgeTrack :knowledge-stats="knowledgeStats" :mode="radio1" />
  13. <!-- 零分知识点、高频错题知识点 -->
  14. <zeroScoreKnowledge
  15. :table-data="treeData"
  16. :fatal-vulnerability="fatalVulnerability"
  17. :high-vulnerability="highVulnerability"
  18. :mode="radio1"
  19. />
  20. </div>
  21. </template>
  22. <script>
  23. import MyGradeHistory from './MyGradeHistory.vue';
  24. import KnowledgeTrack from './KnowledgeTrack.vue';
  25. import zeroScoreKnowledge from './zeroScoreKnowledge.vue';
  26. export default {
  27. name: "PersonalProfile",
  28. components: {
  29. MyGradeHistory,
  30. KnowledgeTrack,
  31. zeroScoreKnowledge
  32. },
  33. computed: {
  34. // 动态生成知识统计文本,使用repeatKnowledgeNum
  35. knowledgeStats() {
  36. const stats = [];
  37. // 当konwLenght不等于0时,显示第一行文本
  38. stats.push(
  39. `共包含<span style='color:#2E64FA'>23</span>个知识点,
  40. 分别为<span style='color:#333333;font-weight:600;'>多角度探究作品意蕴、熟语;</span>`
  41. ); //包含知识点
  42. // 当repeatKnowledgeNum不等于0时,显示第二行文本
  43. stats.push(
  44. `其中<span style='color:#2E64FA'>15</span>个为多次考试的高频考点,
  45. 其中<span style='color:#333333;font-weight:600;'>概括分析、比较材料</span>
  46. 你的得分率<span style='color:#3BA272;font-weight:600;'>提升</span>
  47. <span style='color:#333333;font-weight:600;'>文言文断句、文言文阅读、材料作文</span>
  48. 你的得分率<span style="color:#F56C6C;font-weight:600;">下降</span>,
  49. 希望针对下降的知识点进行总结和反思。`
  50. ); //重复知识点
  51. return stats;
  52. },
  53. },
  54. data() {
  55. return {
  56. // 画像切换
  57. radio1: "grade",
  58. // 知识点树状图数据
  59. treeData: [],
  60. // 零分知识点数据
  61. fatalVulnerability: [],
  62. // 高频错题知识点数据
  63. highVulnerability: [],
  64. };
  65. },
  66. created() {
  67. //零分知识点、高频知识点
  68. this.vulerabData()
  69. },
  70. methods: {
  71. // 画像切换
  72. portraitTab() {
  73. },
  74. // 零分知识点、高频错题知识点数据
  75. vulerabData() {
  76. // 零分知识点数据
  77. this.fatalVulnerability = [
  78. {
  79. "knowledgeName": "区间的关系与运算",
  80. "knowledgeId": 10550,
  81. "parentId": 10548,
  82. "gradeScoreRate": "50", // 年级得分率
  83. "classScoreRate": "54.55", // 班级得分率
  84. "scoreRateDiff": "4.55", // 得分率差值
  85. "knowledgeType": 1, // 知识点类型 1:零分知识点 2:高频错题知识点
  86. "examNum": 2 // 考试次数
  87. },
  88. {
  89. "knowledgeName": "具体函数的定义域",
  90. "knowledgeId": 10552,
  91. "parentId": 10551,
  92. "gradeScoreRate": "37.9",
  93. "classScoreRate": "27.27",
  94. "scoreRateDiff": "-10.63",
  95. "knowledgeType": 1,
  96. "examNum": 2
  97. }
  98. ];
  99. // 高频错题知识点数据
  100. this.highVulnerability = [
  101. {
  102. "knowledgeName": "抽象函数的定义域",
  103. "knowledgeId": 10553,
  104. "parentId": 10551,
  105. "gradeScoreRate": "6.45",
  106. "classScoreRate": "12.12",
  107. "scoreRateDiff": "5.67",
  108. "knowledgeType": 1,
  109. "examNum": 2
  110. },
  111. {
  112. "knowledgeName": "求函数的零点",
  113. "knowledgeId": 10820,
  114. "parentId": 10818,
  115. "gradeScoreRate": "34.03",
  116. "classScoreRate": "35.76",
  117. "scoreRateDiff": "1.73",
  118. "knowledgeType": 1,
  119. "examNum": 1
  120. }
  121. ];
  122. },
  123. },
  124. }
  125. </script>
  126. <style scoped lang="scss">
  127. .personalProfile{
  128. // 确保所有子组件之间有10px的间隔
  129. > * {
  130. margin-bottom: 10px;
  131. font-family: PingFang SC, PingFang SC;
  132. font-size: 14px;
  133. font-weight: 400;
  134. color: #333333;
  135. }
  136. > *:last-child {
  137. margin-bottom: 0;
  138. }
  139. // 画像切换
  140. .report_header{
  141. padding: 10px 0;
  142. text-align: center;
  143. font-size: 14px;
  144. background: #ffffff;
  145. border-radius: 10px;
  146. display: flex;
  147. align-items: center;
  148. justify-content: flex-start;
  149. padding-left: 10px;
  150. /* 选中状态 */
  151. :deep(.el-radio-button__orig-radio:checked + .el-radio-button__inner) {
  152. font-weight: 600 !important;
  153. color: #ffffff !important;
  154. }
  155. :deep(.el-radio-button__inner) {
  156. height: 36px;
  157. line-height: 36px;
  158. padding: 0px;
  159. width: 76px;
  160. text-align: center;
  161. color: #999999;
  162. }
  163. }
  164. }
  165. </style>