handlepeople.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. 'use strict';
  2. app.controller('reporthandlepeopleCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "moment", "SweetAlert", "Restangular", "api_hkreport", "api_user_data", function($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, moment, SweetAlert, Restangular, api_hkreport, api_user_data) {
  3. var ROWS = "ROWS";
  4. var COLUMNS = "COLUMNS";
  5. $scope.treeshow = true;
  6. $scope.searchstate = "";
  7. $scope.headers = "请选择事件树形列表!";
  8. var workspace = {};
  9. $scope.parameters = {};
  10. $scope.starttimes = {};
  11. $scope.endtimes = {};
  12. $scope.category = {};
  13. $scope.reportName = "报表";
  14. $scope.allheight = 100;
  15. $scope.isMaskground = false;
  16. $scope.group = [];
  17. //表格
  18. $scope.rRowspeople = [];
  19. $scope.quikly = [{ name: '自定义', value: 0 }, { name: '近7天', value: 1 }, { name: '近30天', value: 2 }, { name: '近90天', value: 3 }, { name: '近半年', value: 4 }, { name: '近一年', value: 5 }];
  20. // var starttime, endtime
  21. // $scope.starttimes = moment().startOf('month').format('YYYYMMDD');
  22. // $scope.endtimes = moment().format('YYYYMMDD');
  23. function startdata() {
  24. $scope.searchkeys = { 'group': {}, 'quikly': { name: '近7天', value: 1 } };
  25. $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD');
  26. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  27. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  28. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  29. }
  30. startdata();
  31. $scope.changeForm = function(paramDateFrom) {
  32. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  33. $scope.starttimes = moment(paramDateFrom).format('YYYYMMDD');
  34. }
  35. $scope.changeTo = function(paramDateTo) {
  36. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  37. $scope.endtimes = moment(paramDateTo).format('YYYYMMDD');
  38. }
  39. $scope.open = function($event) {
  40. $event.preventDefault();
  41. $event.stopPropagation();
  42. $scope.opened = !$scope.opened;
  43. };
  44. $scope.endOpen = function($event) {
  45. $event.preventDefault();
  46. $event.stopPropagation();
  47. $scope.startOpened = false;
  48. $scope.endOpened = !$scope.endOpened;
  49. };
  50. $scope.startOpen = function($event) {
  51. $event.preventDefault();
  52. $event.stopPropagation();
  53. $scope.endOpened = false;
  54. $scope.startOpened = !$scope.startOpened;
  55. };
  56. //处理组
  57. api_user_data.fetchDataList('group', { "idx": 0, "sum": 1000, "group": { "selectType": "nouser" } }).then(function(data) {
  58. if (data.status == 200) {
  59. $scope.group = data.list;
  60. }
  61. })
  62. function ConvertDateParameter(parameters) {
  63. var result = undefined;
  64. if (angular.isArray(parameters)) {
  65. //
  66. } else {
  67. result = {};
  68. for (var k in parameters) {
  69. if (k.indexOf("Date") > 0) {
  70. if (angular.isDate(parameters[k])) {
  71. result[k] = moment(parameters[k]).format("YYYY-MM-DD");
  72. } else if (angular.isString(parameters[k])) {
  73. result[k] = parameters[k];
  74. }
  75. }
  76. }
  77. }
  78. return result;
  79. }
  80. $scope.restData = function() {
  81. startdata();
  82. $scope.mdxquery();
  83. }
  84. $scope.mdxquery = function(key) {
  85. var changedate = ConvertDateParameter($scope.parameters)
  86. var fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }
  87. if (key && key.group && key.group.id) {
  88. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD"), "groupId": key.group.id }
  89. } else {
  90. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }
  91. }
  92. getdata(fildata)
  93. // getlistdata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  94. // getpiedata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  95. // getpiedata({ "end": $scope.parameters.paramDateFrom, "start": $scope.parameters.paramDateTo })
  96. }
  97. $scope.onChangetime = function(key) {
  98. if (key.value == 1) {
  99. $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYY-MM-DD');
  100. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  101. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  102. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  103. } else if (key.value == 2) {
  104. $scope.starttimes = moment(new Date().getTime() - 86400000 * 30).format('YYYY-MM-DD');
  105. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  106. $scope.parameters.paramDateFrom = $scope.starttimes;
  107. $scope.parameters.paramDateTo = $scope.endtimes;
  108. } else if (key.value == 3) {
  109. $scope.starttimes = moment(new Date().getTime() - 86400000 * 90).format('YYYY-MM-DD');
  110. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  111. $scope.parameters.paramDateFrom = $scope.starttimes;
  112. $scope.parameters.paramDateTo = $scope.endtimes;
  113. } else if (key.value == 4) {
  114. $scope.searchstate = "month";
  115. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 6)).format('YYYY-MM-DD');
  116. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  117. $scope.parameters.paramDateFrom = $scope.starttimes;
  118. $scope.parameters.paramDateTo = $scope.endtimes;
  119. } else if (key.value == 5) {
  120. $scope.searchstate = "month";
  121. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 12)).format('YYYY-MM-DD');
  122. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  123. $scope.parameters.paramDateFrom = $scope.starttimes;
  124. $scope.parameters.paramDateTo = $scope.endtimes;
  125. }
  126. // $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD');
  127. // $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  128. // $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  129. // $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  130. // $scope.mdxquery();
  131. }
  132. // $scope.onChangegroup = function(key) {
  133. // }
  134. // $scope.execute = function() {
  135. // api_report.list($scope.token).then(function(response) {
  136. // $scope.select_treedata = $scope.my_data = response;
  137. // });
  138. // }
  139. $scope.searchOptions = function() {
  140. if (angular.isDefined(workspace.query)) {
  141. var queryParameters = workspace.query.parameters;
  142. for (var parm in queryParameters) {
  143. if (parm == 'Week') {
  144. } else {
  145. }
  146. }
  147. }
  148. }
  149. //pie 工单解决率
  150. // $scope.pielenddata = ["处理人", "处理人1", "处理人2"];
  151. // $scope.piebodydata = [{ "value": 1, "name": "处理人", "proportion": "25%" }, { "value": 1, "name": "处理人1", "proportion": "25%" }, { "value": 2, "name": "处理人2", "proportion": "50%" }];
  152. $scope.pielenddata = [];
  153. $scope.piebodydata = [];
  154. var dompeople = document.getElementById("reportpeople");
  155. var myChartpeople = echarts.init(dompeople);
  156. var app = {};
  157. var optionpeople = null;
  158. myChartpeople.showLoading({  
  159. text: '数据加载中...',
  160. color: '#c23531',
  161. textColor: '#fff',
  162. maskColor: 'rgba(255,255,255,0)',
  163. zlevel: 0
  164. });
  165. myChartpeople.hideLoading();
  166. optionpeople = {
  167. title: {
  168. subtext: 0,
  169. text: "事件总数(件)",
  170. itemGap: 3,
  171. "x": '15%',
  172. "y": '40%',
  173. textAlign: "center",
  174. "textStyle": {
  175. "fontWeight": 'normal',
  176. "fontSize": 12,
  177. "color": '#333',
  178. },
  179. "subtextStyle": {
  180. "fontWeight": 'normal',
  181. "fontSize": 18,
  182. "color": '#005395',
  183. "lineHeight": 14
  184. },
  185. },
  186. tooltip: {
  187. "backgroundColor": "rgba(0,0,0,9)",
  188. "textStyle": {
  189. "fontSize": 12,
  190. "color": '#f9f9f9',
  191. },
  192. trigger: 'item',
  193. formatter: "{b} : {c} ({d}%)"
  194. },
  195. legend: {
  196. orient: 'vertical',
  197. icon: "circle",
  198. x: '30%',
  199. y: 'center',
  200. // type: 'scroll',
  201. pageFormatter: {
  202. current: 1,
  203. total: 2
  204. },
  205. pagemode: true,
  206. itemGap: 10,
  207. itemWidth: 8,
  208. itemHeight: 8,
  209. borderRadius: 4,
  210. textStyle: {
  211. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  212. },
  213. data: $scope.pielenddata,
  214. formatter: function(param) {
  215. for (var i = 0; i < $scope.pielenddata.length; i++) {
  216. if ($scope.piebodydata[i].name == param) {
  217. return ' ' + $scope.piebodydata[i].name + '/' + $scope.piebodydata[i].groupname + ' | ' + $scope.piebodydata[i].value + ' ' + $scope.piebodydata[i].proportion + '%';
  218. }
  219. }
  220. },
  221. textStyle: {
  222. rich: {
  223. white: {
  224. color: "#fff",
  225. fontSize: 12,
  226. padding: [6, 0, 0, 0]
  227. }
  228. }
  229. }
  230. },
  231. series: [{
  232. // name: $scope.startlist.title,
  233. type: 'pie',
  234. radius: ['60%', '80%'],
  235. center: ['15%', '50%'],
  236. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  237. hoverAnimation: true,
  238. label: {
  239. normal: {
  240. show: false,
  241. position: 'center'
  242. },
  243. formatter: [
  244. '{a|这段文本采用样式a}',
  245. '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'
  246. ].join('\n'),
  247. rich: {
  248. a: {
  249. color: 'red',
  250. lineHeight: 10
  251. },
  252. b: {
  253. backgroundColor: {
  254. image: 'xxx/xxx.jpg'
  255. },
  256. height: 40
  257. },
  258. x: {
  259. fontSize: 18,
  260. fontFamily: 'Microsoft YaHei',
  261. borderColor: '#449933',
  262. borderRadius: 4
  263. },
  264. }
  265. },
  266. labelLine: {
  267. normal: {
  268. show: false
  269. }
  270. },
  271. data: $scope.piebodydata
  272. }]
  273. };
  274. //bar 存储容量
  275. //start事件月统计图
  276. var domfaultpeople = document.getElementById("faultpeople");
  277. var myChartfaultpeople = echarts.init(domfaultpeople);
  278. var app = {};
  279. var optionfaultpeople = null;
  280. app.title = '当月事件工单处理TOP5';
  281. var XData = [];
  282. var yData = [];
  283. // XData.map(function() {
  284. // yData.push((Math.random() * 1000 + 100).toFixed(0))
  285. // })
  286. // var dataMin=parseInt(Math.min.apply(null, yData)/2);
  287. myChartfaultpeople.showLoading({  
  288. text: '数据加载中...',
  289. color: '#c23531',
  290. textColor: '#fff',
  291. maskColor: 'rgba(255,255,255,0)',
  292. zlevel: 0
  293. });
  294. myChartfaultpeople.hideLoading();
  295. optionfaultpeople = {
  296. title: {
  297. // text: '(件)故障数量',
  298. x: '10',
  299. y: '0',
  300. textStyle: {
  301. fontWeight: 'normal',
  302. fontSize: 12,
  303. color: "#56c9ff",
  304. }
  305. },
  306. xAxis: {
  307. type: 'value',
  308. axisTick: {
  309. show: false
  310. },
  311. splitLine: {
  312. show: true,
  313. lineStyle: {
  314. type: 'dashed',
  315. color: '#eee'
  316. }
  317. },
  318. splitArea: {
  319. show: false
  320. },
  321. // data: XData,
  322. axisLine: {
  323. show: false,
  324. lineStyle: {
  325. color: '#ddd'
  326. }
  327. },
  328. axisLabel: {
  329. textStyle: {
  330. color: '#999999',
  331. fontSize: 12,
  332. }
  333. },
  334. },
  335. yAxis: {
  336. type: 'category',
  337. data: [],
  338. axisTick: {
  339. show: false
  340. },
  341. splitLine: {
  342. show: false
  343. },
  344. splitArea: {
  345. show: false
  346. },
  347. axisLabel: {
  348. show: true,
  349. textStyle: {
  350. color: '#999999',
  351. fontSize: 12,
  352. }
  353. },
  354. axisLine: {
  355. show: true,
  356. lineStyle: {
  357. color: '#cecece'
  358. }
  359. }
  360. },
  361. grid: {
  362. left: 10,
  363. top: 25,
  364. bottom: 0,
  365. right: 20,
  366. containLabel: true
  367. },
  368. "tooltip": {
  369. "trigger": "item",
  370. "textStyle": {
  371. "fontSize": 12
  372. },
  373. "formatter": "{b0}:{c0}"
  374. },
  375. series: {
  376. type: "bar",
  377. itemStyle: {
  378. normal: {
  379. color: "#005395",
  380. }
  381. },
  382. label: {
  383. normal: {
  384. show: true,
  385. position: 'right',
  386. textStyle: {
  387. // color: '# 56 c9ff '
  388. }
  389. }
  390. },
  391. barWidth: 18,
  392. // barWidth: '30%',
  393. // data: yData
  394. data: [0, 0, 0, 0, 0]
  395. }
  396. };
  397. function getdata(time) {
  398. api_hkreport.incidentreport(time, 'incident_handler').then(function(data) {
  399. // var sum = 0
  400. // angular.forEach(data.data[1], function(item, index) {
  401. // data.data[1][index].value = data.data[1][index].count;
  402. // sum += Number(data.data[1][index].value);
  403. // })
  404. $scope.rRowspeople = data.list; //表格
  405. //饼图
  406. // $scope.pielenddata = data.pieChart;
  407. $scope.piebodydata = data.pieChart;
  408. $scope.pielenddata = [];
  409. angular.forEach($scope.piebodydata, function(item, index) {
  410. $scope.piebodydata[index].name = item.account;
  411. $scope.pielenddata.push(item.account);
  412. })
  413. optionpeople.series[0].data = $scope.piebodydata;
  414. optionpeople.legend.data = $scope.pielenddata;
  415. optionpeople.title.subtext = data.pieChartSum;
  416. myChartpeople.setOption(optionpeople, true);
  417. myChartpeople.hideLoading();
  418. //柱状图
  419. var barGraph = [];
  420. var baryx = [];
  421. angular.forEach(data.barGraph, function(item) {
  422. barGraph.push(item.sum);
  423. baryx.push(item.account + '/' + item.groupname);
  424. })
  425. optionfaultpeople.yAxis.data = baryx.reverse();
  426. optionfaultpeople.series.data = barGraph.reverse();
  427. myChartfaultpeople.setOption(optionfaultpeople, true);
  428. myChartfaultpeople.hideLoading();
  429. })
  430. }
  431. getdata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  432. //表格
  433. // $scope.rRows = [];
  434. // function getlistdata(time) {
  435. // api_hkreport.incidentreport(time, 'incident_source').then(function(data) {
  436. // $scope.rRows = data.data;
  437. // })
  438. // }
  439. // getlistdata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  440. }]);