knowledgeGraph.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <div class="knowledge_graph">
  3. <!-- 环形扩散图组件 -->
  4. <circular-diffusion
  5. :activeView="activeView"
  6. :subjectName="subjectName"
  7. :subjectScoreRate="subjectScoreRate"
  8. :tableData="tableData"
  9. :fatalVulnerability="fatalVulnerability"
  10. :highVulnerability="highVulnerability"
  11. :allKnowledgeList="allKnowledgeList"
  12. :classLevel="classLevel"
  13. :classGroupName="classGroupName"
  14. :currentKnowledgeId="currentKnowledgeId"
  15. @view-change="handleViewChange"
  16. @legend-change="handleLegendChange"
  17. @activeTabChange="handleActiveTabChange"
  18. @knowledge-item-click="handleKnowledgeItemClick"
  19. />
  20. <!-- 区域展示组件 -->
  21. <region
  22. v-if="showRegion"
  23. :allKnowledgeList="allKnowledgeList"
  24. @add-practice="handleAddPractice"
  25. />
  26. </div>
  27. </template>
  28. <script>
  29. import CircularDiffusion from './knowledgeGraph/circularDiffusion.vue';
  30. import Region from './knowledgeGraph/region.vue';
  31. export default {
  32. name: 'KnowledgeGraph',
  33. components: {
  34. CircularDiffusion,
  35. Region
  36. },
  37. props: {
  38. activeView: {
  39. type: String,
  40. default: 'graph'
  41. },
  42. subjectName: {
  43. type: String,
  44. default: '知识点'
  45. },
  46. subjectScoreRate: {
  47. type: Number,
  48. default: 0
  49. },
  50. tableData: {
  51. type: Array,
  52. default: () => []
  53. },
  54. fatalVulnerability: {
  55. type: Array,
  56. default: () => []
  57. },
  58. highVulnerability: {
  59. type: Array,
  60. default: () => []
  61. },
  62. allKnowledgeList: {
  63. type: Array,
  64. default: () => []
  65. },
  66. classLevel: {
  67. type: [String, Number],
  68. default: ''
  69. },
  70. classGroupName: {
  71. type: String,
  72. default: ''
  73. },
  74. currentKnowledgeId: {
  75. type: [String, Number],
  76. default: ''
  77. },
  78. showRegion: {
  79. type: Boolean,
  80. default: false
  81. }
  82. },
  83. methods: {
  84. // 处理视图切换
  85. handleViewChange(view) {
  86. this.$emit('view-change', view);
  87. },
  88. // 处理图例变化
  89. handleLegendChange(data) {
  90. this.$emit('legend-change', data);
  91. },
  92. // 处理tab切换
  93. handleActiveTabChange(tab) {
  94. this.$emit('activeTabChange', tab);
  95. },
  96. // 处理知识点点击
  97. handleKnowledgeItemClick(data) {
  98. this.$emit('knowledge-item-click', data);
  99. },
  100. // 处理加入练习
  101. handleAddPractice(item) {
  102. this.$emit('add-practice', item);
  103. }
  104. }
  105. };
  106. </script>
  107. <style lang="scss" scoped>
  108. .knowledge_graph {
  109. width: 100%;
  110. }
  111. </style>