suorce.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. 'use strict';
  2. app.controller('reportsuorceCtrl', ["$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. $scope.quikly = [{ name: '自定义', value: 0 }, { name: '近7天', value: 1 }, { name: '近30天', value: 2 }, { name: '近90天', value: 3 }, { name: '近半年', value: 4 }, { name: '近一年', value: 5 }];
  17. // var starttime, endtime
  18. // $scope.starttimes = moment().startOf('month').format('YYYYMMDD');
  19. // $scope.endtimes = moment().format('YYYYMMDD');
  20. function startdata() {
  21. $scope.searchkeys = { 'group': {}, 'quikly': { name: '近7天', value: 1 } };
  22. $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD');
  23. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  24. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  25. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  26. }
  27. startdata();
  28. $scope.changeForm = function(paramDateFrom) {
  29. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  30. $scope.starttimes = moment(paramDateFrom).format('YYYYMMDD');
  31. }
  32. $scope.changeTo = function(paramDateTo) {
  33. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  34. $scope.endtimes = moment(paramDateTo).format('YYYYMMDD');
  35. }
  36. $scope.open = function($event) {
  37. $event.preventDefault();
  38. $event.stopPropagation();
  39. $scope.opened = !$scope.opened;
  40. };
  41. $scope.endOpen = function($event) {
  42. $event.preventDefault();
  43. $event.stopPropagation();
  44. $scope.startOpened = false;
  45. $scope.endOpened = !$scope.endOpened;
  46. };
  47. $scope.startOpen = function($event) {
  48. $event.preventDefault();
  49. $event.stopPropagation();
  50. $scope.endOpened = false;
  51. $scope.startOpened = !$scope.startOpened;
  52. };
  53. function ConvertDateParameter(parameters) {
  54. var result = undefined;
  55. if (angular.isArray(parameters)) {
  56. //
  57. } else {
  58. result = {};
  59. for (var k in parameters) {
  60. if (k.indexOf("Date") > 0) {
  61. if (angular.isDate(parameters[k])) {
  62. result[k] = moment(parameters[k]).format("YYYY-MM-DD");
  63. } else if (angular.isString(parameters[k])) {
  64. result[k] = parameters[k];
  65. }
  66. }
  67. }
  68. }
  69. return result;
  70. }
  71. $scope.restData = function() {
  72. startdata();
  73. $scope.mdxquery();
  74. }
  75. $scope.mdxquery = function(key) {
  76. var changedate = ConvertDateParameter($scope.parameters)
  77. getdata({ "startTime": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "endTime": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  78. getlistdata({ "startTime": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "endTime": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  79. getpiedata({ "startTime": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "endTime": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  80. }
  81. $scope.onChangetime = function(key) {
  82. if (key.value == 1) {
  83. $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYY-MM-DD');
  84. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  85. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  86. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  87. } else if (key.value == 2) {
  88. $scope.starttimes = moment(new Date().getTime() - 86400000 * 30).format('YYYY-MM-DD');
  89. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  90. $scope.parameters.paramDateFrom = $scope.starttimes;
  91. $scope.parameters.paramDateTo = $scope.endtimes;
  92. } else if (key.value == 3) {
  93. $scope.starttimes = moment(new Date().getTime() - 86400000 * 90).format('YYYY-MM-DD');
  94. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  95. $scope.parameters.paramDateFrom = $scope.starttimes;
  96. $scope.parameters.paramDateTo = $scope.endtimes;
  97. } else if (key.value == 4) {
  98. $scope.searchstate = "month";
  99. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 6)).format('YYYY-MM-DD');
  100. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  101. $scope.parameters.paramDateFrom = $scope.starttimes;
  102. $scope.parameters.paramDateTo = $scope.endtimes;
  103. } else if (key.value == 5) {
  104. $scope.searchstate = "month";
  105. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 12)).format('YYYY-MM-DD');
  106. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  107. $scope.parameters.paramDateFrom = $scope.starttimes;
  108. $scope.parameters.paramDateTo = $scope.endtimes;
  109. }
  110. // $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD');
  111. // $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  112. // $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  113. // $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  114. // $scope.mdxquery();
  115. }
  116. // $scope.execute = function() {
  117. // api_report.list($scope.token).then(function(response) {
  118. // $scope.select_treedata = $scope.my_data = response;
  119. // });
  120. // }
  121. $scope.searchOptions = function() {
  122. if (angular.isDefined(workspace.query)) {
  123. var queryParameters = workspace.query.parameters;
  124. for (var parm in queryParameters) {
  125. if (parm == 'Week') {
  126. } else {
  127. }
  128. }
  129. }
  130. }
  131. //pie 工单解决率
  132. // $scope.pielenddata = ["处理人", "处理人1", "处理人2"];
  133. // $scope.piebodydata = [{ "value": 1, "name": "处理人", "proportion": "25%" }, { "value": 1, "name": "处理人1", "proportion": "25%" }, { "value": 2, "name": "处理人2", "proportion": "50%" }];
  134. $scope.pielenddata = [];
  135. $scope.piebodydata = [];
  136. var domsuorce = document.getElementById("reportsuorce");
  137. var myChartsuorce = echarts.init(domsuorce);
  138. var app = {};
  139. var optionsuorce = null;
  140. myChartsuorce.showLoading({  
  141. text: '数据加载中...',
  142. color: '#c23531',
  143. textColor: '#fff',
  144. maskColor: 'rgba(255,255,255,0)',
  145. zlevel: 0
  146. });
  147. myChartsuorce.hideLoading();
  148. optionsuorce = {
  149. title: {
  150. subtext: 0,
  151. text: "事件总数",
  152. itemGap: 3,
  153. "x": '24%',
  154. "y": '40%',
  155. textAlign: "center",
  156. "textStyle": {
  157. "fontWeight": 'normal',
  158. "fontSize": 12,
  159. "color": '#333',
  160. },
  161. "subtextStyle": {
  162. "fontWeight": 'normal',
  163. "fontSize": 18,
  164. "color": '#005395',
  165. "lineHeight": 14
  166. },
  167. },
  168. tooltip: {
  169. "backgroundColor": "rgba(0,0,0,9)",
  170. "textStyle": {
  171. "fontSize": 12,
  172. "color": '#f9f9f9',
  173. },
  174. trigger: 'item',
  175. formatter: "{a} <br/>{b}: {c} ({d}%)"
  176. },
  177. legend: {
  178. orient: 'vertical',
  179. icon: "circle",
  180. x: '50%',
  181. y: 'center',
  182. itemGap: 10,
  183. itemWidth: 8,
  184. itemHeight: 8,
  185. borderRadius: 4,
  186. textStyle: {
  187. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  188. },
  189. data: $scope.pielenddata,
  190. formatter: function(param) {
  191. for (var i = 0; i < $scope.pielenddata.length; i++) {
  192. if ($scope.piebodydata[i].name == param) {
  193. return ' ' + $scope.piebodydata[i].name + ' | ' + $scope.piebodydata[i].count + ' ' + $scope.piebodydata[i].percentage;
  194. }
  195. }
  196. },
  197. textStyle: {
  198. rich: {
  199. white: {
  200. color: "#fff",
  201. fontSize: 12,
  202. padding: [6, 0, 0, 0]
  203. }
  204. }
  205. }
  206. },
  207. series: [{
  208. // name: $scope.startlist.title,
  209. type: 'pie',
  210. radius: ['70%', '85%'],
  211. center: ['25%', '50%'],
  212. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  213. hoverAnimation: true,
  214. label: {
  215. normal: {
  216. show: false,
  217. position: 'center'
  218. },
  219. formatter: [
  220. '{a|这段文本采用样式a}',
  221. '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'
  222. ].join('\n'),
  223. rich: {
  224. a: {
  225. color: 'red',
  226. lineHeight: 10
  227. },
  228. b: {
  229. backgroundColor: {
  230. image: 'xxx/xxx.jpg'
  231. },
  232. height: 40
  233. },
  234. x: {
  235. fontSize: 18,
  236. fontFamily: 'Microsoft YaHei',
  237. borderColor: '#449933',
  238. borderRadius: 4
  239. },
  240. }
  241. },
  242. labelLine: {
  243. normal: {
  244. show: false
  245. }
  246. },
  247. data: $scope.piebodydata
  248. }]
  249. };
  250. if (optionsuorce && typeof optionsuorce === "object") {
  251. myChartsuorce.setOption(optionsuorce, true);
  252. myChartsuorce.hideLoading();
  253. }
  254. function getpiedata(time) {
  255. api_hkreport.incidentreport(time, 'incident_source_pie').then(function(data) {
  256. var sum = 0
  257. angular.forEach(data.data[1], function(item, index) {
  258. data.data[1][index].value = data.data[1][index].count;
  259. sum += Number(data.data[1][index].value);
  260. })
  261. $scope.pielenddata = data.data[0];
  262. $scope.piebodydata = data.data[1];
  263. optionsuorce.series[0].data = $scope.piebodydata;
  264. optionsuorce.legend.data = $scope.pielenddata;
  265. optionsuorce.title.subtext = sum;
  266. myChartsuorce.setOption(optionsuorce, true);
  267. myChartsuorce.hideLoading();
  268. })
  269. }
  270. getpiedata({ "endTime": $scope.parameters.paramDateTo, "startTime": $scope.parameters.paramDateFrom })
  271. //end 工单解决率
  272. //折线图
  273. $scope.headerslist = [];
  274. var axilist = [];
  275. var serieslist = [];
  276. var headerlist = [];
  277. var datas = [];
  278. var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f'];
  279. var domllsuorce = document.getElementById("liuliangsuorce");
  280. var myChartllsuorce = echarts.init(domllsuorce);
  281. myChartllsuorce.showLoading({  
  282. text: '数据加载中...',
  283. color: '#c23531',
  284. textColor: '#fff',
  285. maskColor: 'rgba(255,255,255,0)',
  286. zlevel: 0
  287. });
  288. var app = {};
  289. var optionllsuorce = null;
  290. app.title = '流量';
  291. $scope.llmyData = [];
  292. var zhengliudata = 0;
  293. var huliudata = 0;
  294. $scope.zhengliu = 0;
  295. $scope.huliu = 0;
  296. // var zwmyData = [];
  297. // var hlmyData = [];
  298. var xhuzwmyData = [];
  299. $scope.zhengliu = 0;
  300. $scope.huliu = 0;
  301. optionllsuorce = {
  302. color: ['#D53A35'],
  303. tooltip: {
  304. trigger: 'axis',
  305. //formatter: "{b} <br> 合格率: {c}%"
  306. },
  307. grid: {
  308. top: '10%',
  309. bottom: '15%',
  310. left: '3%',
  311. right: '8%',
  312. containLabel: true
  313. },
  314. xAxis: {
  315. type: 'category',
  316. name: '',
  317. boundaryGap: false,
  318. axisLine: {
  319. show: false,
  320. lineStyle: {
  321. color: '#525252'
  322. }
  323. },
  324. axisTick: {
  325. show: false
  326. },
  327. axisLabel: {
  328. color: '#525252'
  329. },
  330. data: axilist
  331. },
  332. yAxis: {
  333. type: 'value',
  334. minInterval: 1,
  335. name: '',
  336. axisLine: {
  337. show: false,
  338. },
  339. axisTick: {
  340. show: false
  341. },
  342. axisLabel: {
  343. color: '#525252'
  344. },
  345. splitLine: {
  346. lineStyle: {
  347. type: 'dotted',
  348. color: '#AAA' //F3F3F3
  349. }
  350. }
  351. },
  352. "legend": {
  353. "bottom": 0,
  354. // "textStyle": {
  355. // "color": "#e6e9ed"
  356. // },
  357. // "inactiveColor": "#5a626d",
  358. // "data": [
  359. // "全部机型"
  360. // ],
  361. data: headerlist,
  362. "itemGap": 5,
  363. "itemWidth": 16,
  364. "itemHeight": 12,
  365. "pageTextStyle": {
  366. "color": "#e6e9ed"
  367. },
  368. "pageIconSize": 14
  369. },
  370. series: serieslist
  371. };
  372. function getdata(time) {
  373. api_hkreport.incidentreport(time, 'incident_source_trend').then(function(data) {
  374. headerlist = data.data[0]
  375. axilist = data.data[1][0][0];
  376. angular.forEach(data.data[1], function(item, index) {
  377. // titledata.push(item.category);
  378. // datas[index] = [];
  379. datas = item[1];
  380. // angular.forEach(item[1], function(itemtwo, indextwo) {
  381. // datas = itemtwo;
  382. // })
  383. serieslist[index] = {
  384. name: headerlist[index],
  385. type: 'line',
  386. symbol: 'none',
  387. itemStyle: {
  388. normal: {
  389. color: colorlist[index]
  390. }
  391. },
  392. lineStyle: {
  393. normal: {
  394. width: 2
  395. }
  396. },
  397. data: datas
  398. }
  399. })
  400. optionllsuorce.xAxis.data = axilist;
  401. optionllsuorce.legend.data = headerlist;
  402. myChartllsuorce.setOption(optionllsuorce, true);
  403. myChartllsuorce.hideLoading();
  404. })
  405. }
  406. getdata({ "endTime": $scope.parameters.paramDateTo, "startTime": $scope.parameters.paramDateFrom })
  407. //表格
  408. $scope.rRowssuorce = [];
  409. function getlistdata(time) {
  410. api_hkreport.incidentreport(time, 'incident_source').then(function(data) {
  411. $scope.rRowssuorce = data.data;
  412. })
  413. }
  414. getlistdata({ "endTime": $scope.parameters.paramDateTo, "startTime": $scope.parameters.paramDateFrom })
  415. }]);