statistics.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-theme'], function ($, undefined, Backend, Table, Form, Echarts, undefined) {
  2. var Controller = {
  3. index: function () {
  4. // 基于准备好的dom,初始化echarts实例
  5. var trend_echart = Echarts.init(document.getElementById('trend_echart'), 'walden');
  6. // 指定图表的配置项和数据
  7. var option = {
  8. title: {
  9. text: '',
  10. subtext: __('Work order submission trend chart'),
  11. x: 'center',
  12. bottom: 10,
  13. },
  14. tooltip: {
  15. trigger: 'item',
  16. formatter: "<b>{a}</b> <br/>{b} : {c}单"
  17. },
  18. legend: {},
  19. toolbox: {
  20. show: false,
  21. feature: {
  22. magicType: {show: true, type: ['stack', 'tiled']},
  23. saveAsImage: {show: true}
  24. }
  25. },
  26. xAxis: {
  27. type: 'category',
  28. boundaryGap: false,
  29. data: Config.orderTrend.columns
  30. },
  31. yAxis: {},
  32. grid: [{
  33. left: 34,
  34. top: 30,
  35. right: 34,
  36. bottom: 60
  37. }],
  38. series: [
  39. {
  40. name: __('New Order Number'),
  41. type: 'line',
  42. smooth: true,
  43. areaStyle: {
  44. normal: {}
  45. },
  46. lineStyle: {
  47. normal: {
  48. width: 1.5
  49. }
  50. },
  51. data: Config.orderTrend.data,
  52. markLine: {
  53. data: [
  54. {type: 'average', name: __('average value')}
  55. ]
  56. }
  57. }]
  58. };
  59. // 使用刚指定的配置项和数据显示图表。
  60. trend_echart.setOption(option);
  61. $(window).resize(function () {
  62. trend_echart.resize();
  63. });
  64. Form.api.bindevent($("form[role=form]"));
  65. $(document).on("click", ".btn-filter", function () {
  66. var label = $(this).text();
  67. var obj = $(".datetimerange").data("daterangepicker");
  68. var dates = obj.ranges[label];
  69. obj.startDate = dates[0];
  70. obj.endDate = dates[1];
  71. obj.clickApply();
  72. });
  73. $(".datetimerange").on("blur", function () {
  74. if (!$(this).val()) {
  75. return ;
  76. }
  77. Fast.api.ajax({
  78. url: 'workorder/statistics/index',
  79. data: {date: $(this).val()}
  80. }, function (data) {
  81. trend_echart.setOption({
  82. xAxis: {
  83. data: data.columns
  84. },
  85. series: [{
  86. name: __('New Order Number'),
  87. data: data.data
  88. }]
  89. });
  90. $("#number").text(data.sum);
  91. $.each(data, function (i, j) {
  92. if ($("#" + i).size() > 0) {
  93. $("#" + i).text(j);
  94. }
  95. });
  96. return false;
  97. });
  98. });
  99. $(document).on("click", ".btn-refresh", function () {
  100. $(".datetimerange").trigger("blur");
  101. });
  102. // pie
  103. var piePleased = Echarts.init(document.getElementById('pie-pleased'), 'walden');
  104. var option = {
  105. title: {
  106. text: __('Percentage of satisfaction'),
  107. subtext: __('Satisfaction ratio of work order solution'),
  108. x: 'center',
  109. },
  110. tooltip: {
  111. trigger: 'item',
  112. formatter: '{a} <br/>{b}: {c} ({d}%)'
  113. },
  114. legend: {
  115. orient: 'vertical',
  116. left: 'left',
  117. data: [__('star 0'), __('star 1'), __('star 2'), __('star 3'), __('star 4'), __('Not evaluated'), __('No data available')]
  118. },
  119. series: [
  120. {
  121. name: __('Percentage of satisfaction'),
  122. type: 'pie',
  123. center: ['50%', '50%'],
  124. radius: [0, '30%'],
  125. label: {
  126. position: 'inner'
  127. },
  128. data: Config.stars
  129. },
  130. {
  131. name: __('Percentage of satisfaction'),
  132. type: 'pie',
  133. radius: ['40%', '55%'],
  134. data: Config.stars
  135. },
  136. ]
  137. };
  138. piePleased.setOption(option);
  139. var pieSolve = Echarts.init(document.getElementById('pie-solve'), 'walden');
  140. var option = {
  141. title: {
  142. text: __('Proportion of solution rate'),
  143. subtext: __('Proportion of work order problem solving rate'),
  144. x: 'center',
  145. },
  146. tooltip: {
  147. trigger: 'item',
  148. formatter: '{a} <br/>{b}: {c} ({d}%)'
  149. },
  150. legend: {
  151. orient: 'vertical',
  152. left: 'left',
  153. data: [__('resolved'), __('unresolved'), __('Not evaluated'), __('No data available')]
  154. },
  155. series: [
  156. {
  157. name: __('Proportion of solution rate'),
  158. type: 'pie',
  159. center: ['50%', '50%'],
  160. radius: [0, '30%'],
  161. label: {
  162. position: 'inner'
  163. },
  164. data: Config.solved
  165. },
  166. {
  167. name: __('Proportion of solution rate'),
  168. type: 'pie',
  169. radius: ['40%', '55%'],
  170. data: Config.solved
  171. },
  172. ]
  173. };
  174. pieSolve.setOption(option);
  175. }
  176. };
  177. return Controller;
  178. });