curve.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <el-dialog
  3. :visible.sync="dialogVisible"
  4. title="曲线"
  5. class="curve"
  6. >
  7. <!-- 图表 -->
  8. <div class="chart-area" ref="chart"></div>
  9. </el-dialog>
  10. </template>
  11. <script>
  12. import echarts from 'echarts'
  13. export default {
  14. name: "curve",
  15. data() {
  16. return {
  17. lineChart: null,//折线表
  18. chartData: ['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05'],//数据表
  19. dialogVisible: false
  20. }
  21. },
  22. methods: {
  23. open() {
  24. this.timeoutSetVal()
  25. this.dialogVisible = true
  26. },
  27. timeoutSetVal() {
  28. setTimeout(() => {
  29. if (this.$refs.chart) {
  30. //折线图参数
  31. // let lineChartOption = {
  32. // tooltip: {
  33. // trigger: 'axis',
  34. // position: function (pt) {
  35. // return [pt[0], '10%'];
  36. // }
  37. // },
  38. // xAxis: {
  39. // type: 'category',
  40. // boundaryGap: false,
  41. // data: this.chartData.map(item => item)
  42. // },
  43. // yAxis: {
  44. // type: 'value',
  45. // boundaryGap: [0, '100%']
  46. // },
  47. // dataZoom: [{
  48. // type: 'inside',
  49. // start: 80,
  50. // end: 100
  51. // }, {
  52. // start: 0,
  53. // end: 10,
  54. // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
  55. // handleSize: '80%',
  56. // handleStyle: {
  57. // color: '#fff',
  58. // shadowBlur: 3,
  59. // shadowColor: 'rgb(144, 147, 153)',
  60. // shadowOffsetX: 2,
  61. // shadowOffsetY: 2
  62. // }
  63. // }],
  64. // series: [
  65. // {
  66. // name: '数值',
  67. // type: 'line',
  68. // smooth: true,
  69. // symbol: 'none',
  70. // sampling: 'average',
  71. // itemStyle: {
  72. // color: 'rgb(103, 194, 58)'
  73. // },
  74. // areaStyle: {
  75. // color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  76. // offset: 0,
  77. // color: 'rgb(225, 243, 216)'
  78. // }, {
  79. // offset: 1,
  80. // color: 'rgb(225, 243, 216)'
  81. // }])
  82. // },
  83. // data: this.chartData.map(item => item)
  84. // }
  85. // ]
  86. // };
  87. this.lineChart = echarts.init(this.$refs.chart);
  88. var data = [
  89. ["2000-06-05", 116],
  90. ["2000-06-05", 73],
  91. ["2000-06-10", 85],
  92. ["2000-06-11", 73],
  93. ["2000-06-12", 68],
  94. ["2000-06-13", 92],
  95. ["2000-06-14", 130],
  96. ["2000-06-15", 245],
  97. ["2000-06-16", 139],
  98. ["2000-06-17", 115],
  99. ["2000-06-18", 111],
  100. ]
  101. var dateList = data.map(function (item) {
  102. return item[0];
  103. });
  104. var valueList = data.map(function (item) {
  105. return item[1];
  106. });
  107. let lineChartOption = {
  108. visualMap: [{
  109. show: false,
  110. type: 'continuous',
  111. seriesIndex: 0,
  112. min: 0,
  113. max: 400
  114. }, {
  115. show: false,
  116. type: 'continuous',
  117. seriesIndex: 1,
  118. dimension: 0,
  119. min: 0,
  120. max: dateList.length - 1
  121. }],
  122. tooltip: {
  123. trigger: 'axis'
  124. },
  125. xAxis: [{
  126. // data: dateList
  127. data: ['2000-07-17', '2000-07-18', '2000-07-19', '2000-07-20']
  128. }, {
  129. data: dateList,
  130. gridIndex: 1
  131. }],
  132. yAxis: [{
  133. splitLine: {show: false}
  134. }, {
  135. splitLine: {show: false},
  136. gridIndex: 1
  137. }],
  138. grid: [{
  139. bottom: '60%'
  140. }, {
  141. top: '60%'
  142. }],
  143. series: [{
  144. type: 'line',
  145. showSymbol: false,
  146. data: valueList
  147. }, {
  148. type: 'line',
  149. showSymbol: false,
  150. data: valueList,
  151. xAxisIndex: 1,
  152. yAxisIndex: 1
  153. }]
  154. }
  155. this.lineChart.setOption(lineChartOption);
  156. } else {
  157. this.timeoutSetVal()
  158. }
  159. }, 500)
  160. },
  161. },
  162. mounted() {
  163. let _this = this
  164. window.onresize = () => {
  165. _this.lineChart.resize()
  166. }
  167. },
  168. }
  169. </script>
  170. <style scoped lang="less">
  171. .curve {
  172. .chart-area {
  173. height: 450px;
  174. }
  175. }
  176. </style>