reception.js 18 KB

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