lazhang-display.js 7.2 KB

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