ChartBar.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <div :id="'chartBar-' + data.id" style="width: 100%; height: 100%;"></div>
  3. </template>
  4. <script>
  5. export default {
  6. name: "ChartBar",
  7. props: {
  8. data: {
  9. type: Object,
  10. default: function () {
  11. return {
  12. id: 0,
  13. time: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', '测试月'],
  14. data: [120, 132, 101, 134, 90, 230, 210, 210, 245, 203, 124, 214, 210],
  15. name: '默认',
  16. unit: '%'
  17. }
  18. }
  19. }
  20. },
  21. data() {
  22. return {
  23. myChart: null
  24. }
  25. },
  26. methods: {
  27. init() {
  28. let max = Math.max(...this.data.data);
  29. let max1 = max + 30;
  30. // 获取当前数组的数量并push 成新数组
  31. let data1 = new Array(this.data.data.length).fill(max1);
  32. let options = {
  33. // title: {
  34. // text: `用水监测`,
  35. // x: "center",
  36. // y: "top",
  37. // textStyle: {
  38. // fontSize: 16,
  39. // color: "#ffffff",
  40. // },
  41. // },
  42. tooltip: {
  43. trigger: "axis",
  44. axisPointer: {
  45. // 坐标轴指示器,坐标轴触发有效
  46. type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
  47. },
  48. },
  49. grid: {
  50. top: "5%",
  51. left: "5%",
  52. right: "5%",
  53. bottom: "2%",
  54. containLabel: true,
  55. },
  56. xAxis: {
  57. type: "category",
  58. data: this.data.time,
  59. axisLabel: {
  60. color: "#fff",
  61. },
  62. nameTextStyle: {
  63. color: "#fff",
  64. },
  65. axisLine: {
  66. lineStyle: {
  67. color: "#FFF",
  68. },
  69. },
  70. },
  71. yAxis: {
  72. splitLine: { show: false },
  73. axisLine: {
  74. show: true,
  75. lineStyle: {
  76. type: "solid",
  77. color: "#fff", //左边线的颜色
  78. width: "2", //坐标线的宽度
  79. },
  80. },
  81. axisLabel: {
  82. formatter: `{value}${this.data.unit}`,
  83. textStyle: {
  84. color: "#fff",
  85. fontSize: 12,
  86. },
  87. },
  88. nameTextStyle: {
  89. fontSize: 12,
  90. },
  91. // axisLabel: {
  92. // textStyle: {
  93. // color: "#fff",
  94. //
  95. // fontSize: 12,
  96. // },
  97. // },
  98. },
  99. series: [
  100. {
  101. type: "pictorialBar",
  102. symbol: "rect",
  103. itemStyle: {
  104. color: "#0369df",
  105. barBorderRadius: 3,
  106. },
  107. label: {
  108. show: true, //开启显示
  109. position: "top", //在上方显示
  110. textStyle: {
  111. //数值样式
  112. color: "#fff",
  113. fontSize: 14,
  114. },
  115. formatter: "{c}",
  116. },
  117. symbolRepeat: true,
  118. symbolSize: [20, 3],
  119. symbolMargin: 3,
  120. data: this.data.data,
  121. },
  122. {
  123. type: "pictorialBar",
  124. symbol: "rect",
  125. itemStyle: {
  126. color: "#022a62",
  127. barBorderRadius: 3,
  128. },
  129. symbolRepeat: true,
  130. symbolSize: [20, 3],
  131. symbolMargin: 3,
  132. z: -10,
  133. data: data1,
  134. },
  135. ],
  136. }
  137. this.myChart.setOption(options)
  138. }
  139. },
  140. mounted() {
  141. this.myChart = this.$echarts.init(document.getElementById('chartBar-' + this.data.id));
  142. this.init()
  143. let that = this;
  144. window.addEventListener('resize', function () {
  145. that.myChart.resize()
  146. })
  147. }
  148. }
  149. </script>
  150. <style scoped>
  151. </style>