index.html 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <!doctype html>
  2. <html lang="en" data-bs-theme="auto">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <link rel="icon" href="/app/images/dongke-logo.png">
  7. <link href="/plugins/bootstrap/bootstrap.min.css" rel="stylesheet">
  8. <title>东科软件</title>
  9. </head>
  10. <body @vue:mounted="store.getDashboardList" class="p-3 m-0 border-0 m-0 border-0">
  11. <!-- 导航条 -->
  12. <div v-scope="navbar({})"></div>
  13. <!--主体页面-->
  14. <div v-scope="chartJS()" @vue:mounted="start" class="pt-2">
  15. <ul class="list-group text-center">
  16. <li class="list-group-item">
  17. 电子看板 {{currentTime}}
  18. </li>
  19. <li class="list-group-item">
  20. <canvas id="canvasHourCL" height="200"></canvas>
  21. </li>
  22. </ul>
  23. </div>
  24. <!--版权信息-->
  25. <div v-scope="footer({})"></div>
  26. <script src="/plugins/bootstrap/bootstrap.bundle.min.js"></script>
  27. <script src="/plugins/vue/petite-vue.iife.js"></script>
  28. <script src="/plugins/axios/axios.min.js"></script>
  29. <script src="/plugins/chartjs/chart.min.js"></script>
  30. <script src="/plugins/chartjs/utils.js"></script>
  31. <script src="/app/common/navbar.js"></script>
  32. <script src="/app/common/footer.js"></script>
  33. <script>
  34. function chartJS() {
  35. return {
  36. refreshTime: 5,
  37. currentTime: -1,
  38. //计时器
  39. start() {
  40. let self = this;
  41. setInterval(function () { self.refresh(); }, 1000);
  42. },
  43. refresh() {
  44. let self = this;
  45. if (self.currentTime == -1) self.initData();
  46. if (self.currentTime > 0)
  47. self.currentTime--;
  48. else {
  49. self.loadData();
  50. self.currentTime = self.refreshTime;
  51. }
  52. },
  53. //加载数据
  54. loadData() {
  55. let self = this;
  56. axios.get('index.ashx')
  57. .then(function (response) {
  58. for (var i = 0; i < response.data[0].length; i++) {
  59. window.HourCL.data.datasets[0].data[i] = response.data[0][i];
  60. window.HourCL.data.datasets[1].data[i] = response.data[1][i];
  61. }
  62. window.HourCL.update();
  63. })
  64. .catch(function (error) {
  65. });
  66. },
  67. //初始化图表
  68. initData() {
  69. window.chartColors = {
  70. red: 'rgb(255, 99, 132)',
  71. orange: 'rgb(255, 159, 64)',
  72. yellow: 'rgb(255, 250, 86)',
  73. green: 'rgb(75, 192, 192)',
  74. blue: 'rgb(54, 162, 250)',
  75. purple: 'rgb(153, 102, 255)',
  76. grey: 'rgb(231,233,237)'
  77. };
  78. var color = Chart.helpers.color;
  79. window.randomScalingFactor = function (num) {
  80. return Math.round(Math.random() * num);
  81. }
  82. window.configHourCL = {
  83. data: {
  84. labels: ["00-01", "01-02", "02-03", "03-04", "04-05"],
  85. datasets: [{
  86. label: "甲班产量",
  87. backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
  88. borderColor: window.chartColors.orange,
  89. borderWidth: 2,
  90. pointRadius: 15,
  91. data: [10, 20, 15, 25, 30],
  92. fill: false,
  93. }, {
  94. label: "乙班产量",
  95. fill: false,
  96. backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
  97. borderColor: window.chartColors.blue,
  98. borderWidth: 2,
  99. pointRadius: 15,
  100. data: [5, 7, 18, 12, 15]
  101. }]
  102. },
  103. type: 'line',
  104. options: {
  105. responsive: true,
  106. legend: {
  107. display: true
  108. },
  109. title: {
  110. display: false,
  111. text: '每小时产量'
  112. },
  113. tooltips: {
  114. mode: 'index',
  115. intersect: false,
  116. },
  117. hover: {
  118. mode: 'nearest',
  119. intersect: true
  120. }
  121. }
  122. };
  123. var ctxHourCL = document.getElementById("canvasHourCL").getContext("2d");
  124. window.HourCL = new Chart(ctxHourCL, configHourCL);
  125. }
  126. }
  127. }
  128. PetiteVue.createApp().mount();
  129. </script>
  130. </body>
  131. </html>