line-wv.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. html {
  10. height: 100%
  11. }
  12. body {
  13. height: 100%;
  14. margin: 0
  15. }
  16. </style>
  17. </head>
  18. <body>
  19. <div id="main" style="width:100%;height:85%;margin:auto"></div>
  20. <script src="./echarts.min.js"></script>
  21. <script type="text/javascript" src="../luckysheet/dist/plugins/js/uni-webview-js0.0.3_index.js"></script>
  22. <script src="../jquery.min.js"></script>
  23. <script>
  24. function GetQueryString(name) {
  25. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  26. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  27. var context = "";
  28. if (r != null)
  29. context = decodeURIComponent(r[2]);
  30. reg = null;
  31. r = null;
  32. return context == null || context == "" || context == "undefined" ? "" : context;
  33. }
  34. function nowDate() {
  35. var date = new Date();
  36. var sign2 = ":";
  37. var year = date.getFullYear() // 年
  38. var month = date.getMonth() + 1; // 月
  39. var day = date.getDate(); // 日
  40. var hour = date.getHours(); // 时
  41. var minutes = date.getMinutes(); // 分
  42. var seconds = date.getSeconds() //秒
  43. var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
  44. var week = weekArr[date.getDay()];
  45. // 给一位数的数据前面加 “0”
  46. if (month >= 1 && month <= 9) {
  47. month = "0" + month;
  48. }
  49. if (day >= 0 && day <= 9) {
  50. day = "0" + day;
  51. }
  52. if (hour >= 0 && hour <= 9) {
  53. hour = "0" + hour;
  54. }
  55. if (minutes >= 0 && minutes <= 9) {
  56. minutes = "0" + minutes;
  57. }
  58. if (seconds >= 0 && seconds <= 9) {
  59. seconds = "0" + seconds;
  60. }
  61. return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
  62. }
  63. </script>
  64. <script>
  65. var option = {
  66. title: {
  67. text: '',
  68. textStyle: {
  69. color: '#666666',
  70. fontWeight: 'normal',
  71. fontSize: '14'
  72. }
  73. },
  74. xAxis: {
  75. type: 'category',
  76. data: [],
  77. axisLabel: {
  78. formatter: function(value) {
  79. return value.substring(11, 19) + "\n" + value.substring(0, 10).split('-').join('')
  80. }
  81. }
  82. },
  83. yAxis: {
  84. type: 'value'
  85. },
  86. legend: {
  87. type: 'scroll',
  88. top: 30
  89. },
  90. tooltip: {
  91. trigger: 'axis',
  92. axisPointer: {
  93. type: 'cross',
  94. lineStyle: {
  95. type: 'dashed'
  96. },
  97. label: {
  98. show: false
  99. },
  100. },
  101. textStyle:{
  102. color:'#ffffff'
  103. },
  104. confine: true,
  105. extraCssText: 'white-space: normal; word-break: break-all;',
  106. backgroundColor: 'rgba(108,106,120,0.9)', //通过设置rgba调节背景颜色与透明度
  107. position: 'inside',
  108. formatter: function(params) {
  109. let result = ''
  110. for (let i in params) {
  111. let value = '--'
  112. if (params[i].data !== null) {
  113. value = params[i].data
  114. }
  115. result += '<br>' + params[i].seriesName + ':' +
  116. value
  117. }
  118. return result
  119. }
  120. },
  121. dataZoom: [{
  122. type: 'inside',
  123. start: 90,
  124. end: 100
  125. },
  126. {
  127. type: 'slider',
  128. show: true,
  129. start: 90,
  130. end: 100,
  131. bottom: 10
  132. }
  133. ],
  134. series: []
  135. };
  136. </script>
  137. <script>
  138. document.addEventListener('UniAppJSBridgeReady', function() {
  139. uni.getEnv(function(res) {
  140. const id = GetQueryString('id')
  141. const startTime = GetQueryString('startTime')
  142. const endTime = nowDate()
  143. const token = window.localStorage.getItem('C_TOKEN')
  144. var echartsData
  145. let chartParams = {
  146. id: id
  147. }
  148. $.ajax({
  149. url: "",
  150. type: 'GET',
  151. beforeSend: function(xhr) {
  152. // this.url =
  153. // `http://192.168.0.41:8081/chart/getChartById?id=${id}&startTime=${startTime}&endTime=${endTime}`
  154. this.url = window.location.origin +
  155. `/chart/getChartById?id=${id}&startTime=${startTime}&endTime=${endTime}`
  156. xhr.setRequestHeader("Authorization", "Bearer " +
  157. token);
  158. xhr.setRequestHeader("token", token);
  159. },
  160. success: function(res) {
  161. if (res.code === 200) {
  162. option.title.text = res.data.chartName
  163. echartsData = res.data.chartItemList
  164. getServerData(echartsData)
  165. getEmit(res)
  166. }
  167. }
  168. })
  169. function initEcharts() {
  170. var chart = echarts.init(document.getElementById('main'));
  171. chart.setOption(option)
  172. }
  173. function getServerData(echartsData) {
  174. const chartData = echartsData
  175. const timeData = chartData[0].valueTimeList
  176. const series = chartData.map(item => {
  177. return {
  178. // name: item.describe ? item.describe : item.itemName,
  179. name: item.describe ? item.describe : item.itemReadName,
  180. data: item.valueList,
  181. type: 'line'
  182. }
  183. })
  184. var chart = echarts.init(document.getElementById('main'));
  185. var lastOption = chart.getOption();
  186. if (lastOption != undefined) {
  187. option.dataZoom[0].start = lastOption.dataZoom[0].start
  188. option.dataZoom[0].end = lastOption.dataZoom[0].end
  189. option.dataZoom[1].start = lastOption.dataZoom[1].start
  190. option.dataZoom[1].end = lastOption.dataZoom[1].end
  191. }
  192. option.xAxis.data = timeData
  193. option.series = series
  194. initEcharts()
  195. }
  196. function getEmit(res) {
  197. const {
  198. bucketType,
  199. bucketValue
  200. } = res.data
  201. var time = null
  202. switch (bucketType) {
  203. case 0:
  204. time = 86400000 * bucketValue
  205. break;
  206. case 1:
  207. time = 3600000 * bucketValue
  208. break;
  209. case 2:
  210. time = 60000 * bucketValue
  211. break;
  212. case 3:
  213. time = 1000 * bucketValue
  214. break;
  215. }
  216. var lineTime = setInterval(() => {
  217. const currentTime = nowDate();
  218. var lastTime = localStorage.getItem(id + 'sTime');
  219. localStorage.setItem(id + 'sTime', currentTime)
  220. $.ajax({
  221. url: "",
  222. type: 'GET',
  223. beforeSend: function(xhr) {
  224. // this.url =
  225. // `http://192.168.0.41:8081/chart/getChartById?id=${id}&startTime=${lastTime}&endTime=${currentTime}`
  226. this.url=window.location.origin+"/chart/getChartById?id="+id+"&startTime="+lastTime+"&endTime="+currentTime
  227. xhr.setRequestHeader("Authorization", "Bearer " +
  228. token);
  229. xhr.setRequestHeader("token", token);
  230. },
  231. success: function(res) {
  232. if (res.code === 200) {
  233. let chartItemList = res.data.chartItemList;
  234. chartItemList.forEach((item, index) => {
  235. if (item.itemId === echartsData[
  236. index].itemId) {
  237. if (item.valueList.length !== 0) {
  238. //执行将新数据添加进去,旧数据去除一个
  239. echartsData[index].valueList =
  240. echartsData[index].valueList
  241. .concat(item.valueList)
  242. echartsData[
  243. index]
  244. .valueList.splice(0, item
  245. .valueList.length)
  246. echartsData[index]
  247. .valueTimeList = echartsData[
  248. index]
  249. .valueTimeList.concat(item
  250. .valueTimeList)
  251. echartsData[
  252. index]
  253. .valueTimeList.splice(0,
  254. item
  255. .valueTimeList.length)
  256. }
  257. }
  258. })
  259. getServerData(echartsData)
  260. }
  261. }
  262. })
  263. }, time)
  264. }
  265. })
  266. })
  267. </script>
  268. </body>
  269. </html>