rate-chart.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <view class="w-full h-[164px]">
  3. <ie-echart :option="options" />
  4. </view>
  5. </template>
  6. <script lang="ts" setup>
  7. import ieEchart from '@/pagesStudy/components/ie-echart/ie-echart.vue';
  8. const props = defineProps({
  9. value: {
  10. type: Number,
  11. default: 0
  12. }
  13. });
  14. const options = computed(() => {
  15. return {
  16. series: [
  17. {
  18. type: 'gauge',
  19. startAngle: 180,
  20. endAngle: 0,
  21. radius: '130%',
  22. center: ['50%', '82%'],
  23. z: 0,
  24. progress: {
  25. show: false
  26. },
  27. axisLine: {
  28. show: true,
  29. roundCap: true,
  30. lineStyle: {
  31. width: 12,
  32. color: [[1, '#EBF9FF']]
  33. }
  34. },
  35. splitLine: {
  36. show: false
  37. },
  38. axisTick: {
  39. show: false
  40. },
  41. axisLabel: {
  42. show: false
  43. },
  44. pointer: {
  45. show: false
  46. },
  47. data: []
  48. },
  49. {
  50. name: 'Pressure',
  51. type: 'gauge',
  52. startAngle: 180,
  53. endAngle: 0,
  54. radius: '135%',
  55. center: ['50%', '82%'],
  56. z: 1,
  57. progress: {
  58. show: true,
  59. overlap: false,
  60. roundCap: true,
  61. clip: false,
  62. itemStyle: {
  63. color: {
  64. type: 'linear',
  65. x: 0,
  66. y: 0,
  67. x2: 0,
  68. y2: 1,
  69. colorStops: [
  70. { offset: 0, color: '#70C8FD' },
  71. { offset: 1, color: '#31A0FC' }
  72. ]
  73. }
  74. }
  75. },
  76. axisLine: {
  77. show: false,
  78. lineStyle: {
  79. width: 22
  80. }
  81. },
  82. splitLine: {
  83. show: false
  84. },
  85. axisTick: {
  86. show: false
  87. },
  88. axisLabel: {
  89. show: false
  90. },
  91. pointer: {
  92. show: false
  93. },
  94. title: {
  95. show: false
  96. },
  97. detail: {
  98. show: false
  99. },
  100. data: [
  101. {
  102. value: props.value,
  103. name: '正确率'
  104. }
  105. ]
  106. },
  107. {
  108. type: 'gauge',
  109. startAngle: 180,
  110. endAngle: 0,
  111. radius: '130%',
  112. center: ['50%', '82%'],
  113. z: 2,
  114. progress: {
  115. show: false
  116. },
  117. axisLine: {
  118. show: false,
  119. lineStyle: {
  120. color: [[1, '#FFFFFF']],
  121. width: 1,
  122. shadowColor: 'rgba(0, 0, 0, 0.08)',
  123. shadowBlur: 4,
  124. shadowOffsetY: -20,
  125. shadowOffsetX: 0
  126. }
  127. },
  128. splitLine: {
  129. show: false
  130. },
  131. axisTick: {
  132. show: false
  133. },
  134. axisLabel: {
  135. show: false
  136. },
  137. pointer: {
  138. show: true,
  139. icon: 'circle',
  140. length: '190%',
  141. width: 20,
  142. itemStyle: {
  143. color: '#31A0FC',
  144. borderWidth: 6,
  145. borderColor: '#FFFFFF'
  146. }
  147. },
  148. title: {
  149. color: '#B3B3B3',
  150. fontSize: 14,
  151. offsetCenter: [0, -46]
  152. },
  153. detail: {
  154. formatter: '{value}%',
  155. fontSize: 32,
  156. fontWeight: 'bold',
  157. offsetCenter: [0, -10],
  158. textBorderColor: '#333333',
  159. textBorderWidth: 4,
  160. },
  161. data: [
  162. {
  163. value: props.value,
  164. name: '正确率'
  165. }
  166. ]
  167. }
  168. ]
  169. };
  170. });
  171. </script>
  172. <style lang="scss" scoped></style>