fault.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. $(".form-control").datepicker({
  2. format: 'yyyy-mm-dd',
  3. language: 'zh-CN',
  4. autoclose: true,
  5. todayBtn: 'linked'
  6. }).on('changeDate', function () {
  7. zTreeOnClick();
  8. }).on('keydown', function (e) {
  9. return false;
  10. });
  11. $("input[name='optionsRadios']").change(function (obj) {
  12. var str = $("input[name='optionsRadios']:checked").val();
  13. if (str === "0") {
  14. $("#day").attr("class", "tab-pane active")
  15. $("#days").attr("class", "tab-pane")
  16. }
  17. if (str === "1") {
  18. $("#day").attr("class", "tab-pane")
  19. $("#days").attr("class", "tab-pane active")
  20. }
  21. zTreeOnClick();
  22. });
  23. //$("input:radio:first").attr("checked", "checked");
  24. //$("input:radio:first").change();
  25. function shortcut(key) {
  26. if (key === -2) {
  27. var date = new Date();
  28. var d = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + (date.getDate() - 2);
  29. $("#date").val(d).datepicker('setDate', d);
  30. }
  31. if (key === -1) {
  32. var date = new Date();
  33. var d = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + (date.getDate() - 1);
  34. $("#date").val(d).datepicker('setDate', d);
  35. }
  36. if (key === 0) {
  37. var date = new Date();
  38. var d = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
  39. $("#date").val(d).datepicker('setDate', d);
  40. }
  41. }
  42. function getTOP10Faults(id, startTime, endTime) {
  43. $.ajax({
  44. url: '/Fault/GetTOP10Faults',
  45. type: 'GET',
  46. async: true,
  47. data: {
  48. "id": id,
  49. "startTime": startTime,
  50. "endTime": endTime,
  51. "filterString": "安全门,门禁,提示上料,提示卸料,门锁,门打开,请选择LOT生产"
  52. },
  53. success: function (rev) {
  54. option.series = [];
  55. var x = [];
  56. var y1 = [];
  57. var y2 = [];
  58. for (var i = 0; i < rev.length; i++) {
  59. x.push(rev[i].faultInfo);
  60. y1.push(rev[i].shiftCount);
  61. y2.push(rev[i].nightShiftCount);
  62. }
  63. option.xAxis.data = x;
  64. var serie = {
  65. name: '白班',
  66. type: 'bar',
  67. stack: 'total',
  68. label: {
  69. show: true,
  70. formatter: (params) => '白班: ' + params.value + '次'
  71. },
  72. data: y1
  73. }
  74. option.series.push(serie);
  75. var serie1 = {
  76. name: '夜班',
  77. type: 'bar',
  78. stack: 'total',
  79. label: {
  80. show: true,
  81. formatter: (params) => '夜班: ' + params.value + '次'
  82. },
  83. data: y2
  84. }
  85. option.series.push(serie1);
  86. myChart.setOption(option, true);
  87. }
  88. });
  89. option2.series = [];
  90. myChart2.setOption(option2, true);
  91. }
  92. var dom = document.getElementById('container1');
  93. var myChart = echarts.init(dom, 'dark');
  94. var app = {};
  95. var option;
  96. option = {
  97. backgroundColor: '#001529',
  98. tooltip: {
  99. trigger: 'axis',
  100. axisPointer: {
  101. type: 'cross',
  102. crossStyle: {
  103. color: '#999'
  104. }
  105. }
  106. },
  107. toolbox: {
  108. feature: {
  109. dataZoom: { yAxisIndex: 'none' },
  110. restore: {},
  111. saveAsImage: {}
  112. }
  113. },
  114. xAxis: {
  115. type: 'category',
  116. axisPointer: {
  117. type: 'shadow'
  118. },
  119. axisLabel: {
  120. interval: 0,
  121. rotate: 0,
  122. formatter: function (value) {
  123. var length = value.length;
  124. var str = "";
  125. var num = 8;
  126. for (let i = 0; i * num < length; i++) {
  127. if ((i + 1) * num <= length) {
  128. str += value.substring(i * num, (i + 1) * num) + "\r\n";
  129. }
  130. else {
  131. str += value.substring(i * num, length);
  132. }
  133. }
  134. //if (value.length > 5) {
  135. // return value.substring(5, 15) + "..";
  136. //}
  137. return str;
  138. }
  139. }
  140. },
  141. yAxis: [
  142. {
  143. type: 'value',
  144. name: '次数'
  145. }
  146. ],
  147. series: [],
  148. code:[]
  149. };
  150. if (option && typeof option === 'object') {
  151. myChart.setOption(option);
  152. }
  153. window.addEventListener('resize', myChart.resize);
  154. var emphasisStyle = {
  155. itemStyle: {
  156. shadowBlur: 10,
  157. shadowColor: 'rgba(0,0,0,0.3)'
  158. }
  159. };
  160. function addSerie(name, type, data, yIndex, company) {
  161. var serie = {
  162. name: name,
  163. type: type,
  164. label: {
  165. show: true
  166. },
  167. yAxisIndex: yIndex,
  168. tooltip: {
  169. valueFormatter: function (value) {
  170. return value + company;
  171. }
  172. },
  173. data: data
  174. }
  175. option.series.push(serie);
  176. }
  177. function getFaultTrend(id, code, startTime, endTime) {
  178. $.ajax({
  179. url: '/Fault/GetFaultTrend',
  180. type: 'GET',
  181. async: true,
  182. data: {
  183. "id": id,
  184. "faultInfo": code,
  185. "startTime": startTime,
  186. "endTime": endTime
  187. },
  188. success: function (rev) {
  189. option2.series = [];
  190. for (var i = 0; i < rev.series.length; i++) {
  191. addSerie2(rev.series[i].name, "line", rev.series[i].data, 0, " 次");
  192. addSerie3("", "line", startTime, endTime);
  193. }
  194. myChart2.setOption(option2, true);
  195. }
  196. });
  197. }
  198. var dom2 = document.getElementById('container2');
  199. var myChart2 = echarts.init(dom2, 'dark');
  200. var app2 = {};
  201. var option2;
  202. option2 = {
  203. backgroundColor: '#001529',
  204. tooltip: {
  205. trigger: 'axis',
  206. axisPointer: {
  207. type: 'cross',
  208. crossStyle: {
  209. color: '#999'
  210. }
  211. }
  212. },
  213. legend: {},
  214. toolbox: {
  215. feature: {
  216. dataZoom: { yAxisIndex: 'none' },
  217. restore: {},
  218. saveAsImage: {}
  219. }
  220. },
  221. xAxis: {
  222. type: 'category',
  223. axisPointer: {
  224. type: 'shadow'
  225. },
  226. axisLabel: {
  227. interval: 0,
  228. formatter: function (value) {
  229. return value.substring(0, 13)
  230. }
  231. }
  232. },
  233. yAxis: [
  234. {
  235. type: 'value',
  236. name: '次数'
  237. }
  238. ],
  239. series: []
  240. };
  241. if (option2 && typeof option === 'object') {
  242. myChart2.setOption(option2);
  243. }
  244. window.addEventListener('resize', myChart2.resize);
  245. function addSerie2(name, type, data, yIndex, company) {
  246. var serie = {
  247. name: name,
  248. type: type,
  249. label: {
  250. show: true
  251. },
  252. yAxisIndex: yIndex,
  253. tooltip: {
  254. valueFormatter: function (value) {
  255. return value + company;
  256. }
  257. },
  258. data: data
  259. }
  260. option2.series.push(serie);
  261. }
  262. function addSerie3(name, type, start, end) {
  263. var serie = {
  264. name: name,
  265. type: type,
  266. areaStyle: {},
  267. lineStyle: {
  268. width: 1
  269. },
  270. emphasis: {
  271. focus: 'series'
  272. },
  273. markArea: {
  274. silent: true,
  275. itemStyle: {
  276. opacity: 0.3
  277. },
  278. data: [
  279. [
  280. {
  281. xAxis: start
  282. },
  283. {
  284. //xAxis: '2009/9/22\n7:00'
  285. xAxis: end
  286. }
  287. ]
  288. ]
  289. }
  290. }
  291. option2.series.push(serie);
  292. }
  293. var zTreeObj;
  294. var setting = {
  295. callback: {
  296. onClick: zTreeOnClick
  297. },
  298. view: {
  299. showIcon: false
  300. }
  301. };
  302. $.ajax({
  303. url: "/ProductionLine/GetProductionLineMachineTree",
  304. type: "GET",
  305. async: true,
  306. success: function (zNodes) {
  307. zTreeObj = $.fn.zTree.init($("#productionLineTree"), setting, zNodes);
  308. }
  309. });
  310. function zTreeOnClick() {
  311. var treeNode = zTreeObj.getSelectedNodes()[0];
  312. if (treeNode.level === 1) {
  313. var str = $("input[name='optionsRadios']:checked").val();
  314. if (str === "0") {
  315. var startTime = $("#date").val();
  316. var endTime = $("#date").val();
  317. getTOP10Faults(treeNode.id, startTime, endTime);
  318. }
  319. if (str === "1") {
  320. var startTime = $("#date1").val();
  321. var endTime = $("#date2").val();
  322. getTOP10Faults(treeNode.id, startTime, endTime);
  323. }
  324. }
  325. }
  326. myChart.on('click', function (params) {
  327. //console.log(params);
  328. var treeNode = zTreeObj.getSelectedNodes()[0];
  329. if (treeNode.level === 1) {
  330. var str = $("input[name='optionsRadios']:checked").val();
  331. if (str === "0") {
  332. var startTime = $("#date").val();
  333. var endTime = $("#date").val();
  334. getFaultTrend(treeNode.id, params.name, startTime, endTime);
  335. }
  336. if (str === "1") {
  337. var startTime = $("#date1").val();
  338. var endTime = $("#date2").val();
  339. getFaultTrend(treeNode.id, params.name, startTime, endTime);
  340. }
  341. }
  342. });
  343. function getFaultTrendV1(id, code, day) {
  344. $.ajax({
  345. url: '/Fault/GetFaultTrendV1',
  346. type: 'GET',
  347. async: true,
  348. data: {
  349. "id": id,
  350. "faultInfo": code,
  351. "day": day
  352. },
  353. success: function (rev) {
  354. option2.series = [];
  355. for (var i = 0; i < rev.series.length; i++) {
  356. addSerie2(rev.series[i].name, "line", rev.series[i].data, 0, " 次");
  357. }
  358. myChart2.setOption(option2, true);
  359. }
  360. });
  361. }