BusinessElectricChart.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div>
  3. <div class="dashboardPortrait-select">
  4. <a-checkable-tag v-model="tagCheck.all" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('all')">
  5. <span class="dashboardPortrait-select-text">总体用电</span>
  6. </a-checkable-tag>
  7. <a-checkable-tag v-model="tagCheck.F15" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F15')">
  8. <span class="dashboardPortrait-select-text">15F</span>
  9. </a-checkable-tag>
  10. <a-checkable-tag v-model="tagCheck.F20" color="white" class="dashboardPortrait-select-tag" @change="handleTagSelect('F20')">
  11. <span class="dashboardPortrait-select-text">20F</span>
  12. </a-checkable-tag>
  13. </div>
  14. <div class="myChart" ref="myChart" :style="{height: height+'px'}">
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import apiOperationAnalysis from "@/api/operation/apiOperationAnalysis";
  20. export default {
  21. data() {
  22. return {
  23. currCheck: '',
  24. tagCheck: {
  25. all: false,
  26. F15: false,
  27. F20: false,
  28. },
  29. option: {
  30. color: ['#80D4FF','#A6A6FF','#79F2E8','#FFDF80','#FF7C1F'],
  31. legend: {
  32. data: [
  33. '尖',
  34. '峰',
  35. '平',
  36. '谷',
  37. ]
  38. },
  39. grid: {
  40. left: '2%', //默认10%
  41. right: '2%', //默认10%
  42. bottom: '15%', //默认60
  43. top: '15%',
  44. containLabel: true
  45. //grid区域是否包含坐标轴的刻度标签
  46. },
  47. xAxis: {
  48. type: 'category',
  49. data: []
  50. },
  51. yAxis: [
  52. {
  53. name: 'kwh',
  54. type: 'value',
  55. nameTextStyle: {
  56. padding: [10, 0, 10, -20]
  57. },
  58. },
  59. ],
  60. tooltip: {
  61. trigger: 'axis',
  62. axisPointer: {
  63. type: 'shadow'
  64. },
  65. textStyle: {
  66. color: '#fff',
  67. align: 'left',
  68. fontSize: 14
  69. },
  70. axisLine: {//x坐标轴轴线
  71. show: true,
  72. lineStyle: {//x坐标轴轴线样式
  73. color: '#000',//'#ccc' | 'rgb(128, 128, 128)' | 'rgba(128, 128, 128, 0.5)',设置标签颜色
  74. }
  75. },
  76. backgroundColor: 'rgba(0,0,0,0.8)',
  77. },
  78. series: [
  79. {
  80. name: '尖',
  81. data: [],
  82. type: 'bar',
  83. stack: 'A',
  84. barWidth: '30%',
  85. itemStyle: {
  86. color: '#3AA7E6'
  87. },
  88. backgroundStyle: {
  89. color: 'rgba(180, 180, 180, 0.2)'
  90. }
  91. },
  92. {
  93. name: '峰',
  94. data: [],
  95. type: 'bar',
  96. stack: 'A',
  97. itemStyle: {
  98. color: '#9790F8'
  99. },
  100. backgroundStyle: {
  101. color: 'rgba(180, 180, 180, 0.2)'
  102. }
  103. },
  104. {
  105. name: '平',
  106. data: [],
  107. type: 'bar',
  108. stack: 'A',
  109. itemStyle: {
  110. color: '#4ACFB8'
  111. },
  112. backgroundStyle: {
  113. color: 'rgba(180, 180, 180, 0.2)'
  114. }
  115. },{
  116. name: '谷',
  117. data: [],
  118. type: 'bar',
  119. stack: 'A',
  120. itemStyle: {
  121. color: '#F4955F'
  122. },
  123. backgroundStyle: {
  124. color: 'rgba(180, 180, 180, 0.2)'
  125. }
  126. }
  127. ]
  128. },
  129. }
  130. },
  131. props: {
  132. height: Number
  133. },
  134. mounted() {
  135. this.init();
  136. this.handleTagSelect('all')
  137. },
  138. methods: {
  139. handleTagSelect(item) {
  140. for (const key in this.tagCheck) {
  141. this.tagCheck[key] = false;
  142. }
  143. this.currCheck = item;
  144. this.tagCheck[item] = true;
  145. },
  146. init() {
  147. let chart = this.$echarts.init(this.$refs.myChart)
  148. this.chart = chart;
  149. chart.setOption(this.option)
  150. this.getData()
  151. },
  152. getData() {
  153. apiOperationAnalysis.getEnergyTrendsAnalysePower({}).then(res=>{
  154. let data = this.$util.dataUtil.covertDataToEcharts(res, ['tip','seal','flat','valley'])
  155. this.$util.dataUtil.refreshEchartsData(this.chart, this.option, data)
  156. })
  157. }
  158. }
  159. }
  160. </script>
  161. <style lang="less" scoped>
  162. </style>