scoreData.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <div class="data_body">
  3. <div class="title">
  4. <span>量规评分</span>
  5. </div>
  6. <div style="width:100%">
  7. <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
  8. <div id="charts_canvas" class="echart" style="width: 100%; height: 100%;margin:0 0 0 1rem"></div>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. export default {
  14. props: ["scoreJson"],
  15. data() {
  16. return {
  17. chartObj: null,
  18. ooption: [
  19. { value: 0, name: "意识能力" },
  20. { value: 0, name: "科学探究能力" },
  21. { value: 0, name: "实践创新能力" },
  22. { value: 0, name: "学习房媳能力" },
  23. { value: 0, name: "工程思维能力" },
  24. ],
  25. option: {
  26. tooltip: {
  27. trigger: "item",
  28. },
  29. series: [
  30. {
  31. name: "量规评分",
  32. type: "pie",
  33. radius: "70%",
  34. center: ["50%", "50%"],
  35. data: [
  36. { value: 0, name: "意识能力" },
  37. { value: 0, name: "科学探究能力" },
  38. { value: 0, name: "实践创新能力" },
  39. { value: 0, name: "学习房媳能力" },
  40. { value: 0, name: "工程思维能力" },
  41. ],
  42. itemStyle: {
  43. emphasis: {
  44. shadowBlur: 10,
  45. shadowOffsetX: 0,
  46. shadowColor: "rgba(0, 0, 0, 0.5)",
  47. },
  48. normal: {
  49. label: {
  50. show: true,
  51. formatter: "{d}%",
  52. inside: true,
  53. position: "inner",
  54. },
  55. labelLine: { show: false },
  56. },
  57. },
  58. },
  59. ],
  60. },
  61. };
  62. },
  63. methods: {
  64. setChart(option) {
  65. // 雷达图显示的标签
  66. let newPromise = new Promise((resolve) => {
  67. resolve();
  68. });
  69. //然后异步执行echarts的初始化函数
  70. newPromise.then(() => {
  71. const chartObj = this.$echarts.init(
  72. //劳动课程
  73. this.$el.querySelector("#charts_canvas")
  74. );
  75. this.option.series[0].data = option;
  76. console.log(this.option.series[0].data);
  77. // 初始化雷达图
  78. this.chartObj = chartObj;
  79. this.chartObj.setOption(this.option);
  80. });
  81. },
  82. },
  83. watch: {
  84. scoreJson(val) {
  85. this.ooption = [
  86. { value: 0, name: "意识能力" },
  87. { value: 0, name: "科学探究能力" },
  88. { value: 0, name: "实践创新能力" },
  89. { value: 0, name: "学习房媳能力" },
  90. { value: 0, name: "工程思维能力" },
  91. ];
  92. this.scoreJson.forEach((item) => {
  93. if (item.rate) {
  94. this.ooption[0].value += item.rate.ca;
  95. this.ooption[1].value += item.rate.sia;
  96. this.ooption[2].value += item.rate.eta;
  97. this.ooption[3].value += item.rate.pia;
  98. this.ooption[4].value += item.rate.lra;
  99. }
  100. });
  101. if (!this.chartObj) {
  102. this.setChart(this.ooption);
  103. } else {
  104. this.option.series[0].data = this.ooption;
  105. this.chartObj.setOption(this.option);
  106. }
  107. },
  108. },
  109. mounted() {
  110. //ca 意识能力 sia 科学探究能力 eta 实践创新能力 pia 学习反思能力 lra 工程思维能力
  111. this.scoreJson.forEach((item) => {
  112. if (item.rate) {
  113. this.ooption[0].value += item.rate.ca;
  114. this.ooption[1].value += item.rate.sia;
  115. this.ooption[2].value += item.rate.eta;
  116. this.ooption[3].value += item.rate.pia;
  117. this.ooption[4].value += item.rate.lra;
  118. }
  119. });
  120. this.setChart(this.ooption);
  121. },
  122. };
  123. </script>
  124. <style scoped>
  125. .data_body {
  126. height: 500px;
  127. display: flex;
  128. position: relative;
  129. border-radius: 5px;
  130. border: 1px solid #eee;
  131. margin: 10px auto;
  132. box-sizing: border-box;
  133. padding: 10px;
  134. width: 95%;
  135. }
  136. .data_body .title {
  137. position: absolute;
  138. top: 10px;
  139. left: 10px;
  140. }
  141. </style>