catergry.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991
  1. 'use strict';
  2. app.controller('reportcatergryCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "moment", "SweetAlert", "Restangular", "api_hkreport", "api_bpm_data", function($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, moment, SweetAlert, Restangular, api_hkreport, api_bpm_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.rRowscatergry = [];
  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. $scope.try_async_loadca();
  82. startdata();
  83. $scope.mdxquery();
  84. }
  85. $scope.mdxquery = function(key) {
  86. var changedate = ConvertDateParameter($scope.parameters)
  87. var fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }
  88. if (key && key.category && key.category.id) {
  89. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD"), "categoryId": key.category.id }
  90. } else {
  91. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") }
  92. }
  93. getdata(fildata);
  94. getdatatop3(fildata);
  95. getdatatop5(fildata);
  96. getpiedata(fildata);
  97. getdataareaplace(fildata);
  98. getlistdata(fildata);
  99. // getlistdata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  100. // getpiedata({ "start": moment(changedate.paramDateFrom).format("YYYY-MM-DD"), "end": moment(changedate.paramDateTo).format("YYYY-MM-DD") })
  101. // getpiedata({ "end": $scope.parameters.paramDateFrom, "start": $scope.parameters.paramDateTo })
  102. }
  103. $scope.onChangetime = function(key) {
  104. if (key.value == 1) {
  105. $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYY-MM-DD');
  106. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  107. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  108. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYY-MM-DD").format("YYYY-MM-DD");
  109. } else if (key.value == 2) {
  110. $scope.starttimes = moment(new Date().getTime() - 86400000 * 30).format('YYYY-MM-DD');
  111. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  112. $scope.parameters.paramDateFrom = $scope.starttimes;
  113. $scope.parameters.paramDateTo = $scope.endtimes;
  114. } else if (key.value == 3) {
  115. $scope.starttimes = moment(new Date().getTime() - 86400000 * 90).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 == 4) {
  120. $scope.searchstate = "month";
  121. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 6)).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. } else if (key.value == 5) {
  126. $scope.searchstate = "month";
  127. $scope.starttimes = moment((new Date()).setMonth((new Date()).getMonth() - 12)).format('YYYY-MM-DD');
  128. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYY-MM-DD');
  129. $scope.parameters.paramDateFrom = $scope.starttimes;
  130. $scope.parameters.paramDateTo = $scope.endtimes;
  131. }
  132. // $scope.starttimes = moment(new Date().getTime() - 86400000 * 7).format('YYYYMMDD');
  133. // $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  134. // $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  135. // $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  136. // $scope.mdxquery();
  137. }
  138. // $scope.onChangegroup = function(key) {
  139. // }
  140. // $scope.execute = function() {
  141. // api_report.list($scope.token).then(function(response) {
  142. // $scope.select_treedata = $scope.my_data = response;
  143. // });
  144. // }
  145. $scope.searchOptions = function() {
  146. if (angular.isDefined(workspace.query)) {
  147. var queryParameters = workspace.query.parameters;
  148. for (var parm in queryParameters) {
  149. if (parm == 'Week') {
  150. } else {
  151. }
  152. }
  153. }
  154. }
  155. //树形图
  156. // $scope.inspecttype = {};
  157. $scope.my_tree = {};
  158. $scope.try_async_loadca = function() {
  159. $scope.my_dataca = [];
  160. $scope.doing_async = true;
  161. api_bpm_data.fetchDataList('incidentcategory', { "idx": 0, "sum": 1000 }).then(function(response) {
  162. if (response.status == 200) {
  163. var data = response.list;
  164. var objects = [];
  165. for (var i = 0; i < data.length; i++) {
  166. var object = {};
  167. object.id = data[i].id;
  168. object.parent = data[i].parent;
  169. // if (data[i].parent && data[i].parent.id != 0) {
  170. // object.parent = data[i].parent.id;
  171. // }
  172. object.label = data[i].category;
  173. objects.push(object);
  174. }
  175. $scope.my_dataca = convertParentToChildList(objects);
  176. $scope.select_treedataca = angular.copy($scope.my_dataca);
  177. if ($scope.my_dataca.length > 0) {
  178. $scope.doing_async = false;
  179. }
  180. } else {
  181. SweetAlert.swal({
  182. title: "系统错误!",
  183. text: "请刷新重试!",
  184. type: "error"
  185. });
  186. }
  187. });
  188. };
  189. $scope.my_dataca = [];
  190. function convertListToTree(data, treeMap) {
  191. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  192. var root = null; //Initially set our loop to null
  193. var parentNode = null;
  194. //loop over data
  195. for (var i = 0; i < data.length; i++) {
  196. var datum = data[i];
  197. //each node will have children, so let's give it a "children" poperty
  198. datum.children = [];
  199. //add an entry for this node to the map so that any future children can
  200. //lookup the parent
  201. idToNodeMap[datum.id] = datum;
  202. //Does this node have a parent?
  203. if (typeof datum.parent === "undefined" || datum.parent == null) {
  204. //Doesn't look like it, so this node is the root of the tree
  205. root = datum;
  206. treeMap[datum.id] = root;
  207. } else {
  208. //This node has a parent, so let's look it up using the id
  209. parentNode = idToNodeMap[datum.parent.id];
  210. //We don't need this property, so let's delete it.
  211. delete datum.parent;
  212. //Let's add the current node as a child of the parent node.
  213. parentNode.children.push(datum);
  214. }
  215. }
  216. return root;
  217. console.log(root)
  218. }
  219. function convertParentToChildList(data) {
  220. var treeMap = {};
  221. var list = [];
  222. convertListToTree(data, treeMap);
  223. angular.forEach(treeMap, function(item) {
  224. list.push(item);
  225. });
  226. return list;
  227. }
  228. $scope.try_async_loadca();
  229. // $scope.select_treedata = [];
  230. $scope.propTypeOptions = [];
  231. $scope.deselectItem = function(item) {
  232. console.log(item)
  233. console.log($scope)
  234. }
  235. // 故障现象
  236. $scope.onFilterCallback = function(item) {
  237. if (item.children && item.children.length != 0) {
  238. $scope.searchkeys.category = item;
  239. } else if (item.item && item.item.id) {
  240. $scope.searchkeys.category = {};
  241. }
  242. }
  243. //pie 工单解决率
  244. // $scope.pielenddata = ["处理人", "处理人1", "处理人2"];
  245. // $scope.piebodydata = [{ "value": 1, "name": "处理人", "proportion": "25%" }, { "value": 1, "name": "处理人1", "proportion": "25%" }, { "value": 2, "name": "处理人2", "proportion": "50%" }];
  246. $scope.pielenddata = [];
  247. $scope.piebodydata = [];
  248. var domcatergry = document.getElementById("reportcatergry");
  249. var myChartcatergry = echarts.init(domcatergry);
  250. var app = {};
  251. var optioncatergry = null;
  252. myChartcatergry.showLoading({  
  253. text: '数据加载中...',
  254. color: '#c23531',
  255. textColor: '#fff',
  256. maskColor: 'rgba(255,255,255,0)',
  257. zlevel: 0
  258. });
  259. myChartcatergry.hideLoading();
  260. optioncatergry = {
  261. title: {
  262. subtext: 0,
  263. text: "故障现象总数(件)",
  264. itemGap: 3,
  265. "x": '24%',
  266. "y": '40%',
  267. textAlign: "center",
  268. "textStyle": {
  269. "fontWeight": 'normal',
  270. "fontSize": 12,
  271. "color": '#333',
  272. },
  273. "subtextStyle": {
  274. "fontWeight": 'normal',
  275. "fontSize": 18,
  276. "color": '#005395',
  277. "lineHeight": 14
  278. },
  279. },
  280. tooltip: {
  281. "backgroundColor": "rgba(0,0,0,9)",
  282. "textStyle": {
  283. "fontSize": 12,
  284. "color": '#f9f9f9',
  285. },
  286. trigger: 'item',
  287. formatter: "{b}: {c} ({d}%)"
  288. },
  289. legend: {
  290. orient: 'vertical',
  291. icon: "circle",
  292. x: '50%',
  293. y: 'center',
  294. itemGap: 10,
  295. itemWidth: 8,
  296. itemHeight: 8,
  297. borderRadius: 4,
  298. textStyle: {
  299. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  300. },
  301. data: $scope.pielenddata,
  302. formatter: function(param) {
  303. for (var i = 0; i < $scope.pielenddata.length; i++) {
  304. if ($scope.piebodydata[i].name == param) {
  305. return ' ' + $scope.piebodydata[i].name + ' | ' + $scope.piebodydata[i].value + ' ' + $scope.piebodydata[i].proportion + '%';
  306. }
  307. }
  308. },
  309. textStyle: {
  310. rich: {
  311. white: {
  312. color: "#fff",
  313. fontSize: 12,
  314. padding: [6, 0, 0, 0]
  315. }
  316. }
  317. }
  318. },
  319. series: [{
  320. // name: $scope.startlist.title,
  321. type: 'pie',
  322. radius: ['70%', '85%'],
  323. center: ['25%', '50%'],
  324. color: ['#49a9ee', '#ffcd61', '#87c966', '#61829d', '#8496A5', '#e6eef4', '#15598F', '#61829d', '#5F9FD1', '#7EAFD6'],
  325. hoverAnimation: true,
  326. label: {
  327. normal: {
  328. show: false,
  329. position: 'center'
  330. },
  331. formatter: [
  332. '{a|这段文本采用样式a}',
  333. '{b|这段文本采用样式b}这段用默认样式{x|这段用样式x}'
  334. ].join('\n'),
  335. rich: {
  336. a: {
  337. color: 'red',
  338. lineHeight: 10
  339. },
  340. b: {
  341. backgroundColor: {
  342. image: 'xxx/xxx.jpg'
  343. },
  344. height: 40
  345. },
  346. x: {
  347. fontSize: 18,
  348. fontFamily: 'Microsoft YaHei',
  349. borderColor: '#449933',
  350. borderRadius: 4
  351. },
  352. }
  353. },
  354. labelLine: {
  355. normal: {
  356. show: false
  357. }
  358. },
  359. data: $scope.piebodydata
  360. }]
  361. };
  362. if (optioncatergry && typeof optioncatergry === "object") {
  363. myChartcatergry.setOption(optioncatergry, true);
  364. myChartcatergry.hideLoading();
  365. }
  366. function getpiedata(time) {
  367. api_hkreport.incidentreport(time, 'incident_category_proportion').then(function(data) {
  368. $scope.piebodydata = data.lsit;
  369. $scope.pielenddata = [];
  370. angular.forEach($scope.piebodydata, function(item, index) {
  371. $scope.piebodydata[index].name = item.category;
  372. $scope.piebodydata[index].value = item.num;
  373. $scope.pielenddata.push(item.category);
  374. })
  375. optioncatergry.series[0].data = $scope.piebodydata;
  376. optioncatergry.legend.data = $scope.pielenddata;
  377. optioncatergry.title.subtext = data.sum;
  378. myChartcatergry.setOption(optioncatergry, true);
  379. myChartcatergry.hideLoading();
  380. })
  381. }
  382. getpiedata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  383. //end 工单解决率
  384. //折线图
  385. $scope.headerslist = [];
  386. var axilist = [];
  387. var serieslist = [];
  388. var headerlist = [];
  389. var datas = [];
  390. var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f'];
  391. var domllcatergry = document.getElementById("liuliangcatergry");
  392. var myChartllcatergry = echarts.init(domllcatergry);
  393. myChartllcatergry.showLoading({  
  394. text: '数据加载中...',
  395. color: '#c23531',
  396. textColor: '#fff',
  397. maskColor: 'rgba(255,255,255,0)',
  398. zlevel: 0
  399. });
  400. var app = {};
  401. var optionllcatergry = null;
  402. app.title = '流量';
  403. $scope.llmyData = [];
  404. var zhengliudata = 0;
  405. var huliudata = 0;
  406. $scope.zhengliu = 0;
  407. $scope.huliu = 0;
  408. // var zwmyData = [];
  409. // var hlmyData = [];
  410. var xhuzwmyData = [];
  411. $scope.zhengliu = 0;
  412. $scope.huliu = 0;
  413. optionllcatergry = {
  414. color: ['#D53A35'],
  415. tooltip: {
  416. trigger: 'axis',
  417. //formatter: "{b} <br> 合格率: {c}%"
  418. },
  419. grid: {
  420. top: '10%',
  421. bottom: '15%',
  422. left: '3%',
  423. right: '8%',
  424. containLabel: true
  425. },
  426. xAxis: {
  427. type: 'category',
  428. name: '',
  429. boundaryGap: false,
  430. axisLine: {
  431. show: false,
  432. lineStyle: {
  433. color: '#525252'
  434. }
  435. },
  436. axisTick: {
  437. show: false
  438. },
  439. axisLabel: {
  440. color: '#525252'
  441. },
  442. data: axilist
  443. },
  444. yAxis: {
  445. type: 'value',
  446. name: '',
  447. minInterval: 1,
  448. axisLine: {
  449. show: false,
  450. },
  451. axisTick: {
  452. show: false
  453. },
  454. axisLabel: {
  455. color: '#525252'
  456. },
  457. splitLine: {
  458. lineStyle: {
  459. type: 'dotted',
  460. color: '#AAA' //F3F3F3
  461. }
  462. }
  463. },
  464. "legend": {
  465. "bottom": 0,
  466. // "textStyle": {
  467. // "color": "#e6e9ed"
  468. // },
  469. // "inactiveColor": "#5a626d",
  470. // "data": [
  471. // "全部机型"
  472. // ],
  473. data: headerlist,
  474. "itemGap": 5,
  475. "itemWidth": 16,
  476. "itemHeight": 12,
  477. "pageTextStyle": {
  478. "color": "#e6e9ed"
  479. },
  480. "pageIconSize": 14
  481. },
  482. series: serieslist
  483. };
  484. function getdata(time) {
  485. api_hkreport.incidentreport(time, 'incident_category_trend_hk').then(function(data) {
  486. headerlist = data.incidentCategoryTrend[0]
  487. axilist = data.incidentCategoryTrend[1];
  488. angular.forEach(data.incidentCategoryTrend[2], function(item, index) {
  489. // datas = item;
  490. serieslist[index] = {
  491. name: headerlist[index],
  492. type: 'line',
  493. symbol: 'none',
  494. itemStyle: {
  495. normal: {
  496. color: colorlist[index]
  497. }
  498. },
  499. lineStyle: {
  500. normal: {
  501. width: 2
  502. }
  503. },
  504. data: item
  505. }
  506. })
  507. optionllcatergry.xAxis.data = axilist;
  508. optionllcatergry.legend.data = headerlist;
  509. myChartllcatergry.setOption(optionllcatergry, true);
  510. myChartllcatergry.hideLoading();
  511. })
  512. }
  513. getdata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  514. //bar 事件区域地点TOP3
  515. var domfaultcatergry = document.getElementById("faultcatergry");
  516. var myChartfaultcatergry = echarts.init(domfaultcatergry);
  517. var app = {};
  518. var optionfaultcatergry = null;
  519. app.title = '事件区域地点TOP3';
  520. var XData = [];
  521. var yData = [];
  522. myChartfaultcatergry.showLoading({  
  523. text: '数据加载中...',
  524. color: '#c23531',
  525. textColor: '#fff',
  526. maskColor: 'rgba(255,255,255,0)',
  527. zlevel: 0
  528. });
  529. myChartfaultcatergry.hideLoading();
  530. optionfaultcatergry = {
  531. title: {
  532. // text: '(件)故障数量',
  533. x: '10',
  534. y: '0',
  535. textStyle: {
  536. fontWeight: 'normal',
  537. fontSize: 12,
  538. color: "#56c9ff",
  539. }
  540. },
  541. xAxis: {
  542. type: 'value',
  543. axisTick: {
  544. show: false
  545. },
  546. splitLine: {
  547. show: true,
  548. lineStyle: {
  549. type: 'dashed',
  550. color: '#eee'
  551. }
  552. },
  553. splitArea: {
  554. show: false
  555. },
  556. // data: XData,
  557. axisLine: {
  558. show: false,
  559. lineStyle: {
  560. color: '#ddd'
  561. }
  562. },
  563. axisLabel: {
  564. textStyle: {
  565. color: '#999999',
  566. fontSize: 12,
  567. }
  568. },
  569. },
  570. yAxis: {
  571. type: 'category',
  572. data: [],
  573. axisTick: {
  574. show: false
  575. },
  576. splitLine: {
  577. show: false
  578. },
  579. splitArea: {
  580. show: false
  581. },
  582. axisLabel: {
  583. show: true,
  584. textStyle: {
  585. color: '#999999',
  586. fontSize: 12,
  587. }
  588. },
  589. axisLine: {
  590. show: true,
  591. lineStyle: {
  592. color: '#cecece'
  593. }
  594. }
  595. },
  596. grid: {
  597. left: 10,
  598. top: 25,
  599. bottom: 0,
  600. right: 20,
  601. containLabel: true
  602. },
  603. "tooltip": {
  604. "trigger": "item",
  605. "textStyle": {
  606. "fontSize": 12
  607. },
  608. "formatter": "{b0}:{c0}"
  609. },
  610. series: {
  611. type: "bar",
  612. itemStyle: {
  613. normal: {
  614. color: "#005395",
  615. }
  616. },
  617. label: {
  618. normal: {
  619. show: true,
  620. position: 'right',
  621. textStyle: {
  622. // color: '# 56 c9ff '
  623. }
  624. }
  625. },
  626. barWidth: 18,
  627. // barWidth: '30%',
  628. // data: yData
  629. data: [0, 0, 0, 0, 0]
  630. }
  631. };
  632. function getdatatop3(time) {
  633. api_hkreport.incidentreport(time, 'incident_category_area_place_top').then(function(data) {
  634. //柱状图
  635. var barGraph = [];
  636. var baryx = [];
  637. angular.forEach(data.dataList, function(item) {
  638. barGraph.push(item.sum);
  639. baryx.push(item.area + '/' + item.place);
  640. })
  641. optionfaultcatergry.yAxis.data = baryx.reverse();
  642. optionfaultcatergry.series.data = barGraph.reverse();
  643. myChartfaultcatergry.setOption(optionfaultcatergry, true);
  644. myChartfaultcatergry.hideLoading();
  645. })
  646. }
  647. getdatatop3({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  648. //bar 故障原因TOP5
  649. var domfaultgu = document.getElementById("faultgu");
  650. var myChartfaultgu = echarts.init(domfaultgu);
  651. var app = {};
  652. var optionfaultgu = null;
  653. app.title = '事件区域地点TOP3';
  654. var XData = [];
  655. var yData = [];
  656. myChartfaultgu.showLoading({  
  657. text: '数据加载中...',
  658. color: '#c23531',
  659. textColor: '#fff',
  660. maskColor: 'rgba(255,255,255,0)',
  661. zlevel: 0
  662. });
  663. myChartfaultgu.hideLoading();
  664. optionfaultgu = {
  665. title: {
  666. // text: '(件)故障数量',
  667. x: '10',
  668. y: '0',
  669. textStyle: {
  670. fontWeight: 'normal',
  671. fontSize: 12,
  672. color: "#56c9ff",
  673. }
  674. },
  675. xAxis: {
  676. type: 'value',
  677. axisTick: {
  678. show: false
  679. },
  680. splitLine: {
  681. show: true,
  682. lineStyle: {
  683. type: 'dashed',
  684. color: '#eee'
  685. }
  686. },
  687. splitArea: {
  688. show: false
  689. },
  690. // data: XData,
  691. axisLine: {
  692. show: false,
  693. lineStyle: {
  694. color: '#ddd'
  695. }
  696. },
  697. axisLabel: {
  698. textStyle: {
  699. color: '#999999',
  700. fontSize: 12,
  701. }
  702. },
  703. },
  704. yAxis: {
  705. type: 'category',
  706. data: [],
  707. axisTick: {
  708. show: false
  709. },
  710. splitLine: {
  711. show: false
  712. },
  713. splitArea: {
  714. show: false
  715. },
  716. axisLabel: {
  717. show: true,
  718. textStyle: {
  719. color: '#999999',
  720. fontSize: 12,
  721. }
  722. },
  723. axisLine: {
  724. show: true,
  725. lineStyle: {
  726. color: '#cecece'
  727. }
  728. }
  729. },
  730. grid: {
  731. left: 10,
  732. top: 25,
  733. bottom: 0,
  734. right: 20,
  735. containLabel: true
  736. },
  737. "tooltip": {
  738. "trigger": "item",
  739. "textStyle": {
  740. "fontSize": 12
  741. },
  742. "formatter": "{b0}:{c0}"
  743. },
  744. series: {
  745. type: "bar",
  746. itemStyle: {
  747. normal: {
  748. color: "#87c966",
  749. }
  750. },
  751. label: {
  752. normal: {
  753. show: true,
  754. position: 'right',
  755. textStyle: {
  756. // color: '# 56 c9ff '
  757. }
  758. }
  759. },
  760. barWidth: 18,
  761. // barWidth: '30%',
  762. // data: yData
  763. data: [0, 0, 0, 0, 0]
  764. }
  765. };
  766. function getdatatop5(time) {
  767. api_hkreport.incidentreport(time, 'incident_category_faultcause_top').then(function(data) {
  768. //柱状图
  769. var barGraph = [];
  770. var baryx = [];
  771. angular.forEach(data.dataList, function(item) {
  772. barGraph.push(item.sum);
  773. baryx.push(item.reason);
  774. })
  775. optionfaultgu.yAxis.data = baryx.reverse();
  776. optionfaultgu.series.data = barGraph.reverse();
  777. myChartfaultgu.setOption(optionfaultgu, true);
  778. myChartfaultgu.hideLoading();
  779. })
  780. }
  781. getdatatop5({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  782. //区域地点及事件类型趋势分析
  783. //事件数量统计分析
  784. // var titledata = [];
  785. // var serieslist = [];
  786. // var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f'];
  787. // var datetime = [];
  788. // $scope.headerslist = [];
  789. // $scope.listsum = [];
  790. var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f'];
  791. var datetime = [];
  792. var titledata = [];
  793. var domanalysisca = document.getElementById("analysisca");
  794. var myChartanalysisca = echarts.init(domanalysisca);
  795. var app = {};
  796. var optionanalysisca = null;
  797. app.title = '事件数量统计分析';
  798. var XData = [];
  799. var yData = [];
  800. myChartanalysisca.showLoading({  
  801. text: '数据加载中...',
  802. color: '#c23531',
  803. textColor: '#fff',
  804. maskColor: 'rgba(255,255,255,0)',
  805. zlevel: 0
  806. });
  807. myChartanalysisca.hideLoading();
  808. app.title = '堆叠条形图';
  809. optionanalysisca = {
  810. tooltip: {
  811. trigger: 'axis',
  812. axisPointer: { // 坐标轴指示器,坐标轴触发有效
  813. type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  814. },
  815. formatter: function(datas) {
  816. var allsum = 0;
  817. angular.forEach(datas, function(item) {
  818. allsum += item.data;
  819. })
  820. var res = '';
  821. for (var i = 0; i < datas.length; i++) {
  822. res += datas[i].marker + " " + datas[i].seriesName + ' 总数:' +
  823. datas[i].data + ' 占比:' + (datas[i].data * 100 / allsum).toFixed(2) + '%' + '<br/>'
  824. }
  825. return res
  826. }
  827. },
  828. legend: {
  829. icon: "circle",
  830. bottom: '0%',
  831. data: titledata
  832. },
  833. grid: {
  834. left: '8%',
  835. right: '4%',
  836. bottom: '20%',
  837. top: '5%',
  838. containLabel: false
  839. },
  840. xAxis: {
  841. // axisTick: {
  842. // show: false
  843. // },
  844. splitLine: {
  845. show: false,
  846. },
  847. axisLine: {
  848. lineStyle: {
  849. color: '#ddd'
  850. }
  851. },
  852. splitArea: {
  853. show: false
  854. },
  855. axisLabel: {
  856. textStyle: {
  857. color: '#787878',
  858. fontSize: 12,
  859. }
  860. },
  861. type: 'value'
  862. },
  863. yAxis: {
  864. axisTick: {
  865. show: false
  866. },
  867. axisLabel: {
  868. show: true,
  869. textStyle: {
  870. color: '#6d6d6d',
  871. fontSize: 12,
  872. }
  873. },
  874. axisLine: {
  875. show: true,
  876. lineStyle: {
  877. color: '#ddd'
  878. }
  879. },
  880. splitArea: {
  881. show: false
  882. },
  883. type: 'category',
  884. data: datetime
  885. },
  886. series: serieslist
  887. }
  888. function getdataareaplace(time) {
  889. api_hkreport.incidentreport(time, 'incident_category_area_trend').then(function(data) {
  890. handledata(data);
  891. })
  892. }
  893. getdataareaplace({ "start": moment($scope.parameters.paramDateFrom, "YYYY-MM-DD").format("YYYY"), "end": moment($scope.parameters.paramDateTo, "YYYY-MM-DD").format("YYYY") })
  894. function handledata(data) {
  895. datetime = [];
  896. // $scope.headerslist = data.quantityStatisticsTitle;
  897. // $scope.rRowscatergry = data.quantityStatisticsList;
  898. // angular.forEach($scope.rRowscatergry, function(item, index) {
  899. // $scope.listsum[index] = { 'allzzl': '', 'sum': '', 'date': '', 'all': [] };
  900. // var i = (Object.values($scope.rRowscatergry[0]).length - 3) / 2;
  901. // for (var j = 0; j < i; j++) {
  902. // $scope.listsum[index].category[j] = $scope.rRows[index]['category' + j];
  903. // $scope.listsum[index].zzl[j] = $scope.rRows[index]['zzl' + j];
  904. // $scope.listsum[index].all[j] = { 'category': $scope.rRowscatergry[index]['category' + j], 'zzl': $scope.rRowscatergry[index]['zzl' + j] };
  905. // $scope.listsum[index].allzzl = $scope.rRowscatergry[index].allzzl;
  906. // $scope.listsum[index].sum = $scope.rRowscatergry[index].sum;
  907. // $scope.listsum[index].date = $scope.rRowscatergry[index].date;
  908. // }
  909. // })
  910. angular.forEach(data.data, function(item, index) {
  911. titledata.push(item.category);
  912. datas[index] = [];
  913. angular.forEach(item.data, function(itemtwo, indextwo) {
  914. datas[index][indextwo] = itemtwo.sum;
  915. })
  916. serieslist[index] = {
  917. name: item.category,
  918. type: 'bar',
  919. stack: '总量',
  920. "itemStyle": {
  921. "normal": {
  922. "barBorderRadius": 0,
  923. "color": colorlist[index],
  924. "label": {
  925. "show": false,
  926. "textStyle": {
  927. "color": "#87c966"
  928. },
  929. "position": "insideRight",
  930. formatter: function(p) {
  931. return p.value > 0 ? (p.value) : '';
  932. }
  933. }
  934. }
  935. },
  936. barWidth: 18,
  937. data: datas[index]
  938. }
  939. })
  940. angular.forEach(data.data[0].data, function(item, index) {
  941. datetime[index] = item.area;
  942. })
  943. optionanalysisca.yAxis.data = datetime;
  944. myChartanalysisca.setOption(optionanalysisca, true);
  945. myChartanalysisca.hideLoading();
  946. }
  947. //表格
  948. $scope.rRowscatergry = [];
  949. function getlistdata(time) {
  950. api_hkreport.incidentreport(time, 'incident_category_list').then(function(data) {
  951. $scope.rRowscatergry = data.dataList;
  952. })
  953. }
  954. getlistdata({ "end": $scope.parameters.paramDateTo, "start": $scope.parameters.paramDateFrom })
  955. }]);