EchartLineCharacter3.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <template>
  2. <div style="width: 100%; height: 100%">
  3. <!-- <div id="echartsMain" style="width: 100%; height: 100%"></div> -->
  4. </div>
  5. </template>
  6. <script lang="ts" setup>
  7. import { ref, reactive, onMounted, nextTick, defineProps, watch } from 'vue';
  8. // import Utils from '@/utils/utils'
  9. // const echarts = require('echarts')
  10. import * as echarts from 'echarts';
  11. let props = defineProps({
  12. setid: String,
  13. });
  14. let myChart = ref<any>(null);
  15. let title1 = ref<any>('');
  16. let title2 = ref('');
  17. let legend = reactive(['风阻', '负压']);
  18. let min = 0;
  19. let yname = ref('负压(Pa)');
  20. let xname = ref('风量\r\n(m³/min)\r\n');
  21. let ymax = ref(3000);
  22. let ymax2 = ref(200);
  23. let xMax = ref(300);
  24. let xMin = ref(0);
  25. let xdata1 = reactive([]);
  26. let xdata2 = reactive([]);
  27. let xdata3 = reactive([]);
  28. let xdata4 = reactive([]);
  29. let xdata5 = reactive([]);
  30. let xdata6 = reactive([]);
  31. let ynametextcolor = ref('#3df6ff');
  32. let linecolor = ref('#0092d5');
  33. let gridlinecolor = ref('#006c9d');
  34. let textcolor = ref('#ffffff');
  35. let myWidth = ref(window.innerWidth - 500 + 'px');
  36. let padding = reactive(['auto', 'auto', '40', '50']);
  37. // 风速曲线图各种参数设置
  38. function optionFun() {
  39. var option = {
  40. title: {
  41. textStyle: {
  42. color: textcolor.value,
  43. fontSize: 14, // 字体颜色
  44. },
  45. text: title.value,
  46. },
  47. grid: {
  48. top: '20%',
  49. left: '3%',
  50. right: '16%',
  51. bottom: '5%',
  52. containLabel: true,
  53. },
  54. legend: {
  55. // x:'right',
  56. top: '1%',
  57. textStyle: {
  58. color: '#ffffff',
  59. fontSize: 14, // 字体颜色
  60. },
  61. data: legend,
  62. },
  63. tooltip: {
  64. backgroundColor: 'rgba(0,0,0,0.8)',
  65. textStyle: {
  66. color: textcolor.value,
  67. fontSize: 14, // 字体颜色
  68. },
  69. formatter: function (params, ticket, callback) {
  70. console.log(params, 'params1');
  71. // var res = '风量' + ' : ' + Math.round(params.data[0] * 60 * 10) / 10 + '(m³/min)<br/>'
  72. // res = res + '&emsp;&emsp;&emsp;' + params.data[0] + '(m³/s)<br/>'
  73. var res = '风量' + ' : ' + params.data[0] * 60 + '(m³/min)<br/>';
  74. res = res + '&emsp;&emsp;&emsp;' + params.data[0].toFixed(2) + '(m³/s)<br/>';
  75. res = res + '负压' + ' : ' + params.data[1] + '(Pa)<br/>';
  76. // lxh
  77. // var res = '风量' + ' : ' + 13600 + '(m³/min)<br/>'
  78. // res = res + '&emsp;&emsp;&emsp;' + (13600 / 60).toFixed(2) + '(m³/s)<br/>'
  79. // res = res + '负压' + ' : ' + params.data[1] + '(Pa)<br/>'
  80. return res;
  81. },
  82. trigger: 'item',
  83. },
  84. color: ['#00bb00', '#ffbb00', '#ff0000', '#0000ff'],
  85. xAxis: [
  86. {
  87. name: xname.value,
  88. nameTextStyle: {
  89. color: ynametextcolor.value,
  90. fontSize: 14,
  91. },
  92. axisLine: {
  93. lineStyle: {
  94. color: linecolor.value,
  95. width: 1, // 这里是为了突出显示加上的
  96. },
  97. },
  98. splitLine: {
  99. show: false, // 网格线
  100. lineStyle: {
  101. color: gridlinecolor.value,
  102. type: 'dashed', // 设置网格线类型 dotted:虚线 solid:实线
  103. },
  104. },
  105. axisLabel: {
  106. show: true,
  107. position: 'bottom',
  108. textStyle: {
  109. color: textcolor.value,
  110. fontSize: 14,
  111. },
  112. },
  113. type: 'value',
  114. min: xMin.value * 60,
  115. max: xMax.value * 60,
  116. },
  117. {
  118. name: '',
  119. nameTextStyle: {
  120. color: ynametextcolor.value,
  121. fontSize: 14,
  122. },
  123. axisTick: {
  124. show: false,
  125. },
  126. axisLine: {
  127. show: false,
  128. lineStyle: {
  129. color: linecolor.value,
  130. width: 1, // 这里是为了突出显示加上的
  131. },
  132. },
  133. splitLine: {
  134. show: false, // 网格线
  135. lineStyle: {
  136. color: gridlinecolor.value,
  137. type: 'dashed', // 设置网格线类型 dotted:虚线 solid:实线
  138. },
  139. },
  140. axisLabel: {
  141. show: false,
  142. textStyle: {
  143. color: textcolor.value,
  144. fontSize: 14,
  145. },
  146. },
  147. type: 'value',
  148. min: xMin.value,
  149. max: xMax.value,
  150. },
  151. ],
  152. yAxis: [
  153. {
  154. name: yname.value,
  155. splitNumber: 5,
  156. nameTextStyle: {
  157. color: ynametextcolor.value,
  158. fontSize: 14,
  159. },
  160. axisLine: {
  161. show: true,
  162. lineStyle: {
  163. color: linecolor.value,
  164. width: 1, // 这里是为了突出显示加上的
  165. },
  166. },
  167. splitLine: {
  168. show: true, // 网格线
  169. lineStyle: {
  170. color: gridlinecolor.value,
  171. type: 'dashed', // 设置网格线类型 dotted:虚线 solid:实线
  172. },
  173. },
  174. axisLabel: {
  175. show: true,
  176. textStyle: {
  177. color: textcolor.value,
  178. fontSize: 14,
  179. },
  180. },
  181. type: 'value',
  182. min: 0,
  183. max: ymax.value,
  184. },
  185. ],
  186. series: [
  187. {
  188. name: legend[0],
  189. yAxisIndex: 0,
  190. xAxisIndex: 1,
  191. type: 'line',
  192. smooth: true,
  193. animationDuration: 1000,
  194. showSymbol: false,
  195. data: xdata1,
  196. },
  197. {
  198. name: legend[1],
  199. yAxisIndex: 0,
  200. xAxisIndex: 1,
  201. type: 'line',
  202. smooth: true,
  203. animationDuration: 1000,
  204. showSymbol: false,
  205. data: xdata2,
  206. },
  207. {
  208. name: legend[2],
  209. yAxisIndex: 0,
  210. xAxisIndex: 1,
  211. type: 'line',
  212. smooth: true,
  213. animationDuration: 1000,
  214. symbolSize: 10,
  215. data: xdata3,
  216. },
  217. // {
  218. // name: this.legend[3],
  219. // yAxisIndex: 0,
  220. // type: "line",
  221. // smooth: true,
  222. // animationDuration: 1000,
  223. // showSymbol: false,
  224. // data: this.xdata4
  225. // },
  226. ],
  227. };
  228. // 将option返回
  229. return option;
  230. }
  231. function initCharts() {
  232. // 图表控件
  233. myChart.value = echarts.init(document.getElementById('echartsMain'));
  234. // document.getElementById(this.setid).style.width = this.myWidth;
  235. // document.getElementById(this.setid).style.height = "100px";
  236. // 每个仪表盘参数设置
  237. // let option = optionFun()
  238. // 绘制图表,设置参数信息
  239. myChart.value.setOption(optionFun());
  240. }
  241. function setYMax(data, data2) {
  242. ymax.value = data;
  243. ymax2.value = data2;
  244. // let option = optionFun()
  245. // 绘制图表,设置参数信息
  246. myChart.value.setOption(optionFun());
  247. }
  248. function setLegend(data) {
  249. legend = data;
  250. // let option = optionFun()
  251. // 绘制图表,设置参数信息
  252. myChart.value.setOption(optionFun());
  253. }
  254. function setXMax(data) {
  255. xMax.value = data;
  256. // let option = optionFun()
  257. // 绘制图表,设置参数信息
  258. myChart.value.setOption(optionFun());
  259. }
  260. function setXMin(data) {
  261. xMin.value = data;
  262. // let option = optionFun()
  263. // 绘制图表,设置参数信息
  264. myChart.value.setOption(optionFun());
  265. }
  266. function setXData(data) {
  267. xdata1 = data;
  268. // let option = optionFun()
  269. // 绘制图表,设置参数信息
  270. myChart.value.setOption(optionFun());
  271. }
  272. function setXData1(data) {
  273. xdata1 = data;
  274. // let option = optionFun()
  275. // 绘制图表,设置参数信息
  276. myChart.value.setOption(optionFun());
  277. }
  278. function setXData2(data) {
  279. xdata2 = data;
  280. // let option = optionFun()
  281. // 绘制图表,设置参数信息
  282. myChart.value.setOption(optionFun());
  283. }
  284. function setXData3(data) {
  285. xdata3 = data;
  286. // let option = optionFun()
  287. // 绘制图表,设置参数信息
  288. myChart.value.setOption(optionFun());
  289. }
  290. function setXData4(data) {
  291. xdata4 = data;
  292. // let option = optionFun()
  293. // 绘制图表,设置参数信息
  294. myChart.value.setOption(optionFun());
  295. }
  296. function clear() {
  297. myChart.value.clear();
  298. }
  299. function setTextColor(color) {
  300. textcolor.value = color;
  301. // let option = optionFun()
  302. // 绘制图表,设置参数信息
  303. myChart.value.setOption(optionFun());
  304. }
  305. function setTitle(title1) {
  306. title1.value = title1;
  307. // let option = optionFun()
  308. // 绘制图表,设置参数信息
  309. myChart.value.setOption(optionFun());
  310. }
  311. function resize() {
  312. myChart.value.resize();
  313. }
  314. // computed: {
  315. // scale () {
  316. // return [
  317. // {
  318. // dataKey: 'y',
  319. // alias: this.yaxisText
  320. // }
  321. // ]
  322. // }
  323. // },
  324. onMounted(() => {
  325. // initCharts()
  326. });
  327. defineExpose({
  328. setXMax,
  329. setYMax,
  330. setXData,
  331. });
  332. </script>