lazhang-display.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. var timeday = ["今日", "昨日", "本周", "本月"];
  2. function getSpotHtml(htmlbody, i) {
  3. htmlbody += "<tr>";
  4. htmlbody += `<tr>
  5. <td>${timeday[i]}</td>
  6. <td>${hispass[i]}</td>
  7. <td>${hisfail[i]}</td>
  8. <td>${hisstack[i]}</td>
  9. <td>${hisrate[i] + '%'}</td>
  10. </tr>`;
  11. htmlbody += "</tr>";
  12. return htmlbody;
  13. }
  14. function getSpotHtml1(htmlbody, i) {
  15. htmlbody += "<tr>";
  16. htmlbody += `<tr>
  17. <td>${goodid[i]}</td>
  18. <td>${goodpass[i]}</td>
  19. <td>${goodid[i]}</td>
  20. <td>${goodfailrate[i] + '%'}</td>
  21. </tr>`;
  22. htmlbody += "</tr>";
  23. return htmlbody;
  24. }
  25. function getSpotHtml2(htmlbody, i) {
  26. htmlbody += "<tr>";
  27. htmlbody += `<tr>
  28. <td>${badid[i]}</td>
  29. <td>${badpass[i]}</td>
  30. <td>${badid[i]}</td>
  31. <td>${badfailrate[i] + '%'}</td>
  32. </tr>`;
  33. htmlbody += "</tr>";
  34. return htmlbody;
  35. }
  36. function showEachSpot() {
  37. var htmlbody = "", one_person = "";
  38. var i = 0;
  39. var triGap = 4;
  40. htmlbody = "";
  41. for (i = 0; i < triGap; i++) {
  42. htmlbody = getSpotHtml(htmlbody, i);
  43. }
  44. $("#rank-one").html(htmlbody);
  45. //console.log(htmlbody);
  46. }
  47. function showEachSpot1() {
  48. var htmlbody = "", one_person = "";
  49. var i = 0;
  50. var triGap = 3;
  51. htmlbody = "";
  52. for (i = 0; i < triGap; i++) {
  53. htmlbody = getSpotHtml1(htmlbody, i);
  54. }
  55. $("#rank-two").html(htmlbody);
  56. //console.log(htmlbody);
  57. }
  58. function showEachSpot2() {
  59. var htmlbody = "", one_person = "";
  60. var i = 0;
  61. var triGap = 3;
  62. htmlbody = "";
  63. for (i = 0; i < triGap; i++) {
  64. htmlbody = getSpotHtml2(htmlbody, i);
  65. }
  66. $("#rank-three").html(htmlbody);
  67. //console.log(htmlbody);
  68. }
  69. var compAxis = {
  70. categories: namedata,
  71. crosshair: true,
  72. title: {
  73. text: '工位',
  74. style: {
  75. fontSize: '1.5em'
  76. }
  77. },
  78. labels: {
  79. style: {
  80. fontSize: '1.5em'
  81. }
  82. }
  83. };
  84. function showChart() {
  85. var data = [];
  86. var ratedata = [];
  87. var stackmax = 0;
  88. var failmax = 0;
  89. var passdata = [];
  90. var faildata = [];
  91. var passmax = 0;
  92. for (i = 0; i < passNumber.length; i++) {
  93. if (stackmax < stackeverynum[i]) {
  94. stackmax = stackeverynum[i];
  95. }
  96. if (failmax < failrate[i]) {
  97. failmax = failrate[i];
  98. }
  99. if (passmax < passNumber[i]) {
  100. passmax = passNumber[i];
  101. }
  102. data.push(stackeverynum[i]);
  103. ratedata.push(Math.floor(failrate[i]));
  104. passdata.push(passNumber[i]);
  105. faildata.push(failNumber[i])
  106. }
  107. showEachSpot();
  108. showEachSpot1();
  109. showEachSpot2();
  110. stackmax = Math.max(stackmax, 5);
  111. failmax = Math.max(failmax, 5);
  112. stackAndFailChart = Highcharts.chart('graph-1', {
  113. chart: {
  114. zoomType: 'xy',
  115. //height: (4 / 16 * 100) + '%' // 16:9 ratio
  116. },
  117. title: {text: '各工位今日产能'},
  118. credits: {enabled: false},
  119. exporting: {enabled: false},
  120. xAxis: [compAxis],
  121. yAxis: [{
  122. labels: {
  123. format: '{value}',
  124. style: {
  125. color: Highcharts.getOptions().colors[0],
  126. fontSize: '1.5em'
  127. }
  128. },
  129. min: 0,
  130. max: passmax * 1.5,
  131. title: {
  132. style: {
  133. color: Highcharts.getOptions().colors[0],
  134. fontSize: '1em'
  135. }
  136. }
  137. },],
  138. tooltip: {shared: true},
  139. legend: {
  140. layout: 'vertical',
  141. align: 'right',
  142. x: -100,
  143. verticalAlign: 'top',
  144. y: 0,
  145. floating: true,
  146. backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
  147. },
  148. series: [{
  149. name: '良品数',
  150. type: 'column',
  151. data: passdata,
  152. }, {
  153. name: '不良品数',
  154. type: 'column',
  155. data: faildata,
  156. },
  157. {
  158. name: '堆积数',
  159. type: 'column',
  160. data: data,
  161. }]
  162. });
  163. FailChart = Highcharts.chart('graph-2', {
  164. chart: {
  165. //height: (4 / 16 * 100) + '%' // 16:9 ratio
  166. },
  167. title: {
  168. text: '各工位今日不良率'
  169. },
  170. credits: {
  171. enabled: false // 禁用版权信息
  172. },
  173. exporting: {
  174. enabled: false
  175. },
  176. xAxis: [compAxis],
  177. yAxis: [{ // Secondary yAxis
  178. title: {
  179. text: '不良率',
  180. style: {
  181. color: 'red',
  182. fontSize: '1em'
  183. }
  184. },
  185. min: 0,
  186. max: 1.5 * failmax,
  187. labels: {
  188. formatter: function () {
  189. return Math.floor(this.value) + "%";
  190. },
  191. style: {
  192. color: 'red',
  193. fontSize: '20px'
  194. }
  195. },
  196. }],
  197. tooltip: {
  198. shared: true
  199. },
  200. legend: {
  201. layout: 'vertical',
  202. align: 'right',
  203. x: -120,
  204. verticalAlign: 'top',
  205. y: 0,
  206. floating: true,
  207. backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
  208. },
  209. series: [{
  210. name: '不良率',
  211. type: 'spline',
  212. data: ratedata,
  213. color: 'red',
  214. tooltip: {
  215. valueSuffix: '%'
  216. }
  217. }]
  218. });
  219. }
  220. function updateChart() {
  221. var data = [];
  222. var ratedata = [];
  223. var stackmax = 0;
  224. var failmax = 0;
  225. var passdata = [];
  226. var faildata = [];
  227. var passmax = 0;
  228. for (i = 0; i < passNumber.length; i++) {
  229. if (stackmax < stackeverynum[i]) {
  230. stackmax = stackeverynum[i];
  231. }
  232. if (failmax < failrate[i]) {
  233. failmax = failrate[i];
  234. }
  235. if (passmax < passNumber[i]) {
  236. passmax = passNumber[i];
  237. }
  238. data.push(stackeverynum[i]);
  239. ratedata.push(Math.floor(failrate[i]));
  240. passdata.push(passNumber[i]);
  241. faildata.push(failNumber[i])
  242. }
  243. stackmax = Math.max(stackmax, 5);
  244. failmax = Math.max(failmax, 5);
  245. // https://api.hcharts.cn/highcharts#Series.addPoint;
  246. stackAndFailChart.series[0].setData(passdata);
  247. stackAndFailChart.series[1].setData(faildata);
  248. stackAndFailChart.series[2].setData(data);
  249. FailChart.series[0].setData(ratedata);
  250. if (failmax > FailChart.yAxis[0].getExtremes().max * 1.3 || failmax < FailChart.yAxis[0].getExtremes().max * 0.5) {
  251. FailChart.yAxis[0].setExtremes(0, failmax * 1.5);
  252. }
  253. if (passmax > stackAndFailChart.yAxis[0].getExtremes().max * 1.3 || passmax < stackAndFailChart.yAxis[0].getExtremes().max * 0.5) {
  254. stackAndFailChart.yAxis[0].setExtremes(0, passmax * 1.5);
  255. }
  256. showEachSpot();
  257. showEachSpot1();
  258. showEachSpot2();
  259. }
  260. var stackAndFailChart = null;
  261. var FailChart = null;