newdash.js 86 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762
  1. 'use strict';
  2. /**
  3. * controllers used for the dashboard
  4. */
  5. var appFormly = angular.module('formlyDashboard', [
  6. 'formly', 'formlyBootstrap', 'ui.bootstrap',
  7. 'ngSanitize', 'ui.select', 'ui.grid'
  8. ]);
  9. app.requires.push('formlyDashboard');
  10. // var appFormly = angular.module('formlyExample', [
  11. // 'formly', 'formlyBootstrap','ui.bootstrap',
  12. // 'ngSanitize','ui.select','ui.grid'],
  13. appFormly.config(
  14. function config(formlyConfigProvider) {
  15. //格式转换方法 XXX-XXX转驼峰命名
  16. });
  17. appFormly.controller('newDashCtrl', ['$rootScope', '$auth', '$scope', '$parse', '$injector', '$http', '$q', '$state', '$modal', '$timeout', '$interval', 'SweetAlert', 'i18nService', '$window', "ngTableParams", 'Restangular', 'UserRestangular', 'BpmRestangular', 'api_configure_form', 'api_bpm_domain', 'api_bpm_data', 'api_user_data', 'api_report', 'api_msg', 'api_bpm_schedule', 'api_newreport', 'api_statistic', "calendarConfig", "api_login",
  18. function($rootScope, $auth, $scope, $parse, $injector, $http, $q, $state, $modal, $timeout, $interval, SweetAlert, i18nService, $window, ngTableParams, Restangular, UserRestangular, BpmRestangular, api_configure_form, api_bpm_domain, api_bpm_data, api_user_data, api_report, api_msg, api_bpm_schedule, api_newreport, api_statistic, calendarConfig, api_login) {
  19. $scope.incidentlist = {};
  20. $scope.bodyheight = {};
  21. // $scope.tableParams = {};
  22. $scope.sumline = '';
  23. $scope.gaoliangleft = true;
  24. $scope.gaoliangright = false;
  25. $scope.userlist = [];
  26. $scope.totalPage = "";
  27. $scope.thisuserrole = "admin";
  28. $rootScope.app.layout.isNavbarFixed = false;
  29. $rootScope.app.layout.isSidebarFixed = false;
  30. $scope.thisalldata = moment(new Date()).format('YYYY-MM-DD hh:mm:ss');
  31. $scope.thissomedata = moment(new Date()).format('YYYY-MM');
  32. $scope.thisdatatop5 = moment(new Date()).format('YYYY年MM月');
  33. $scope.thismonthtop5 = (new Date()).getMonth() + 1;
  34. $scope.thisyertop5 = (new Date()).getFullYear();
  35. $scope.thismonthjiejue = (new Date()).getMonth() + 1;
  36. $scope.thisyerjiejue = (new Date()).getFullYear();
  37. $scope.thisdatajiejue = moment(new Date()).format('YYYY年MM月');
  38. $scope.maxtoptime = true;
  39. $scope.maxjiejuetime = true;
  40. $scope.paiming = '(暂无)';
  41. $scope.loginBtn = {
  42. closeEl: '.close',
  43. modal: {
  44. templateUrl: 'assets/views/loginform.html',
  45. postion: 'center'
  46. }
  47. };
  48. var getMenus = function() {
  49. function convertListToTree(data, treeMap) {
  50. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  51. var root = null; //Initially set our loop to null
  52. var parentNode = null;
  53. //loop over data
  54. for (var i = 0; i < data.length; i++) {
  55. // data[i].id = Number(data[i].id);
  56. var datum = data[i];
  57. //each node will have children, so let's give it a "children" poperty
  58. datum.children = [];
  59. //add an entry for this node to the map so that any future children can
  60. //lookup the parent
  61. idToNodeMap[datum.id] = datum;
  62. //Does this node have a parent?
  63. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  64. //Doesn't look like it, so this node is the root of the tree
  65. root = datum;
  66. treeMap[datum.id] = root;
  67. } else {
  68. //This node has a parent, so let's look it up using the id
  69. parentNode = idToNodeMap[datum.parentid];
  70. //We don't need this property, so let's delete it.
  71. //delete datum.parentid;
  72. //Let's add the current node as a child of the parent node.
  73. parentNode.children.push(datum);
  74. }
  75. }
  76. return root;
  77. }
  78. function convertParentToChildList(data) {
  79. var treeMap = {};
  80. var list = [];
  81. convertListToTree(data, treeMap);
  82. angular.forEach(treeMap, function(item) {
  83. list.push(item);
  84. });
  85. list = window._.sortBy(list, function(o) {
  86. return o.orders;
  87. });
  88. return list;
  89. }
  90. //if(userMenus.length==0){
  91. var userMenus = [];
  92. var idMapMenu = {};
  93. if ($rootScope.user) {
  94. if ($rootScope.user.menu) {
  95. userMenus = convertParentToChildList($rootScope.user.menu);
  96. }
  97. }
  98. //}
  99. $rootScope.userMenus = userMenus;
  100. if ($rootScope.userMenus.length > 0) {
  101. // getpending();
  102. // setInterval(getpending, 30000);
  103. }
  104. return userMenus;
  105. }
  106. var url = location.hash; //获取url中"?"符后的字串 var index=obj.lastIndexOf("\-");
  107. var theRequest = {};
  108. var index = url.substring(index + 1, url.length).lastIndexOf("\?");
  109. if (url.indexOf("?") != -1 && url.indexOf("dashboard")) {
  110. var str = url.substr(index + 1);
  111. var strs = str.split("&");
  112. for (var i = 0; i < strs.length; i++) {
  113. theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  114. }
  115. $rootScope.statuscall = 1;
  116. $scope.loginForm = {
  117. username: theRequest.username,
  118. password: theRequest.password
  119. }
  120. $auth.submitLogin($scope.loginForm)
  121. .then(function(resp) {
  122. localStorage.setItem("jry_user", JSON.stringify(resp));
  123. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  124. $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  125. getMenus();
  126. if (resp.error != 500) {
  127. $rootScope.app.isLoginFixed = false;
  128. var filterDataone = {
  129. "assignee": $rootScope.user.id,
  130. "searchType": "todo",
  131. "idx": 0,
  132. "sum": 5
  133. }
  134. var filterDatatwo = {
  135. "alarmIncident": { "state": "未处理" },
  136. "idx": 0,
  137. "sum": 5
  138. }
  139. $scope.filterData = {
  140. "assignee": $rootScope.user.id,
  141. "searchType": "todo",
  142. "idx": 0,
  143. "sum": 5
  144. }
  145. $scope.nian = [(new Date()).getFullYear(), (new Date()).getFullYear() - 1, (new Date()).getFullYear() - 2, (new Date()).getFullYear() - 3, (new Date()).getFullYear() - 4, (new Date()).getFullYear() - 5, (new Date()).getFullYear() - 6, (new Date()).getFullYear() - 7, (new Date()).getFullYear() - 8, (new Date()).getFullYear() - 9, (new Date()).getFullYear() - 10, (new Date()).getFullYear() - 11, (new Date()).getFullYear() - 12, (new Date()).getFullYear() - 13, (new Date()).getFullYear() - 14, (new Date()).getFullYear() - 15, (new Date()).getFullYear() - 16, (new Date()).getFullYear() - 17, (new Date()).getFullYear() - 18, (new Date()).getFullYear() - 19];
  146. $scope.yue = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  147. changeDivHeight();         
  148. window.onresize = function() {  changeDivHeight(); }              
  149. function  changeDivHeight() {                               
  150. var  h  =  document.documentElement.clientHeight; //获取页面可见高度  
  151. $scope.bodyheight = { "height": h + "px" };  
  152. $scope.sumline = (h - 60) * 0.45 / 34;
  153. }
  154. //角色判断
  155. for (var i = 0; i < $rootScope.user.role.length; i++) {
  156. if ($rootScope.user.role[i].rolecode == "call center") {
  157. $scope.thisuserrole = "center";
  158. break;
  159. } else if ($rootScope.user.role[i].rolecode == "admin general") {
  160. $scope.thisuserrole = "admin";
  161. break;
  162. } else if ($rootScope.user.role[i].rolecode == "3164d1ab-b733-4cb0-98bc-7d1593df3ebc") {
  163. $scope.thisuserrole = "yunwei";
  164. break;
  165. }
  166. }
  167. // angular.forEach($rootScope.user.role, function(item) {
  168. // // if (item.role == "call center") {
  169. // // } else() {
  170. // // }
  171. // })
  172. $rootScope.user.role
  173. //
  174. $scope.gowechart = function() {
  175. $state.go('app.desk.chart');
  176. }
  177. $scope.gobaojin = function() {
  178. $state.go('app.desk.jry_emergency');
  179. }
  180. $scope.goliuyan = function() {
  181. $state.go('app.desk.record');
  182. }
  183. $scope.gotonghua = function() {
  184. $state.go('app.desk.calllog');
  185. }
  186. $scope.gonewincident = function() {
  187. $state.go('app.incident.editor');
  188. }
  189. $scope.goyuqi = function() {
  190. var fildata = { searchType: "overDate" }
  191. $state.go('app.incident.list', { model: JSON.stringify(fildata) });
  192. }
  193. $scope.goknowledge = function() {
  194. $state.go('app.knowledge.manager');
  195. }
  196. $scope.gohuifang = function() {
  197. $state.go('app.incident.list');
  198. }
  199. $scope.gopaiban = function() {
  200. $state.go('app.scheduling.myscheduling');
  201. }
  202. //新建问题
  203. $scope.gonewproblem = function() {
  204. $state.go('app.problem.editor');
  205. }
  206. //新建变更
  207. $scope.gonewchange = function() {
  208. $state.go('app.change.editor');
  209. }
  210. //cmdb
  211. $scope.gocmdb = function() {
  212. $state.go('app.means.listd');
  213. }
  214. $scope.jingjiinform = function(row) {
  215. if (row.alarm.alarmExtension) {
  216. row.alarm.alarmExtension = row.alarm.alarmExtension.replace('{', "");
  217. row.alarm.alarmExtension = row.alarm.alarmExtension.replace('}', "");
  218. row.alarm.alarmExtension = row.alarm.alarmExtension.replace(/,/g, '\n');
  219. }
  220. event.stopPropagation();
  221. var modelfile = { model: row };
  222. $state.go('app.desk.form_editor', { formKey: 'desk_emergency', service: 'api_user_data', model: JSON.stringify(modelfile) });
  223. };
  224. // $scope.goschedule = function(time) {
  225. // }
  226. //我的排班
  227. $scope.scheevents = [];
  228. $scope.getschedule = function(time) {
  229. api_bpm_schedule.fetchSchedule($rootScope.user.id, time.startTime, time.endTime).then(function(response) {
  230. if (response.status == 200) {
  231. $scope.scheevents = [];
  232. var myData = response.list;
  233. angular.forEach(myData, function(item) {
  234. var eventTemp = {};
  235. eventTemp.title = item.description;
  236. // eventTemp.title = item.name;
  237. eventTemp.type = item.scheduleClass.code;
  238. eventTemp.startsAt = moment(item['scheduleOrderDTO'].startTime).toDate();
  239. eventTemp.endsAtTime = moment(item['scheduleOrderDTO'].endTime).toDate();
  240. eventTemp.startTime = moment(item['scheduleOrderDTO'].startTime).format('YYYY-MM-DD hh:mm')
  241. eventTemp.endTime = moment(item['scheduleOrderDTO'].endTime).format('YYYY-MM-DD hh:mm')
  242. eventTemp.id = item.id;
  243. eventTemp.deletable = false;
  244. eventTemp.user = item.user;
  245. $scope.scheevents.push(eventTemp);
  246. })
  247. $scope.scheevents = $scope.scheevents.slice(0, 5)
  248. }
  249. });
  250. }
  251. $scope.getschedule({ 'time': { 'startTime': "2018-09-01 00:00:00", 'endTime': "2018-09-30 23:59:59" } });
  252. //去处理
  253. $scope.gotuclose = function(data) {
  254. if (data.type == 1) {
  255. $state.go('app.incident.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  256. } else if (data.type == 2) {
  257. $state.go('app.change.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  258. } else if (data.type == 3) {
  259. $state.go('app.problem.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  260. } else if (data.type == 4) {
  261. $state.go('app.means.applyediter', { taskId: data.taskId, processInstanceId: data.procInstId });
  262. }
  263. }
  264. //消息通知
  265. // api_user_data.fetchDataList('user', { "idx": 0, "sum": 10 }).then(function(response) {
  266. // if (response) {
  267. // if (response.status = 200) {
  268. // $scope.userlist = response.list;
  269. // }
  270. // }
  271. // })
  272. $scope.message_yes = function(type) { //已读0
  273. var fildata = { "idx": 0, "sum": 5, "messageStation": { "readStatus": 1, "userId": $rootScope.user.id } };
  274. api_msg.msgDataList(fildata).then(function(data) {
  275. if (data.status == 200) {
  276. api_user_data.fetchDataList('user', { "idx": 0, "sum": 1000 }).then(function(response) {
  277. if (response) {
  278. $scope.xiaoxilist = data.list;
  279. angular.forEach(data.list, function(item, index) {
  280. angular.forEach(response.list, function(itemone) {
  281. if (item.userId == itemone.id) {
  282. $scope.xiaoxilist[index].user = itemone;
  283. }
  284. })
  285. })
  286. }
  287. })
  288. } else {}
  289. })
  290. };
  291. $scope.message_yes();
  292. //代办事项
  293. function getincidentlist(fildata) {
  294. api_statistic.getTask($rootScope.user.id, $scope.filterData.idx, 5).then(function(data) {
  295. if (data) {
  296. // var myData = Restangular.stripRestangular(data);
  297. // var list = [];
  298. $scope.totalPage = Math.ceil(data.sum / 5);
  299. // $scope.myData = myData.data;
  300. // for (var i = 0; i < $scope.myData.length; i++) {
  301. // $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum
  302. // }
  303. if ($scope.totalPage <= 1) {
  304. $scope.gaoliangright = true;
  305. }
  306. $scope.incidentlist = data.task;
  307. angular.forEach($scope.incidentlist, function(item) {
  308. if (item.type == 1) {
  309. item.tolabelname = "事件工单"
  310. } else if (item.type == 2) {
  311. item.tolabelname = "变更工单"
  312. } else if (item.type == 3) {
  313. item.tolabelname = "问题工单"
  314. } else if (item.type == 4) {
  315. item.tolabelname = "资产审核"
  316. }
  317. })
  318. // $scope.tableParams = new ngTableParams({
  319. // page: 1, // show first page
  320. // count: 5 // count per page
  321. // }, {
  322. // total: $scope.incidentlist.length, // length of data
  323. // getData: function($defer, params) {
  324. // $defer.resolve($scope.incidentlist.slice((params.page() - 1) * params.count(), params.page() * params.count()));
  325. // }
  326. // });
  327. } else {
  328. SweetAlert.swal({
  329. title: "系统错误",
  330. text: "请稍后再试!",
  331. type: "error"
  332. });
  333. }
  334. }, function() {});
  335. }
  336. getincidentlist(filterDataone, )
  337. //翻页
  338. $scope.parselist = function() {
  339. if ($scope.gaoliangleft == false) {
  340. $scope.incidentlist = [];
  341. $scope.filterData.idx = $scope.filterData.idx - 1;
  342. if ($scope.filterData.idx == 0) {
  343. $scope.gaoliangleft = true;
  344. }
  345. $scope.gaoliangright = false;
  346. getincidentlist($scope.filterData)
  347. }
  348. }
  349. $scope.nextlist = function() {
  350. if ($scope.gaoliangright == false) {
  351. $scope.incidentlist = [];
  352. $scope.filterData.idx = $scope.filterData.idx + 1;
  353. if ($scope.filterData.idx == $scope.totalPage - 1) {
  354. $scope.gaoliangright = true;
  355. }
  356. $scope.gaoliangleft = false;
  357. getincidentlist($scope.filterData)
  358. }
  359. }
  360. //告警列表
  361. api_bpm_data.fetchDataList("alarmIncident", filterDatatwo, 'alarmIncident').then(function(data) {
  362. $scope.myDataalarmincident = data.list;
  363. }, function() {
  364. });
  365. //start事件月统计图
  366. var domfault = document.getElementById("fault");
  367. var myChartfault = echarts.init(domfault);
  368. var app = {};
  369. var optionfault = null;
  370. app.title = '当月事件工单处理TOP5';
  371. var XData = [];
  372. var yData = [];
  373. // XData.map(function() {
  374. // yData.push((Math.random() * 1000 + 100).toFixed(0))
  375. // })
  376. // var dataMin=parseInt(Math.min.apply(null, yData)/2);
  377. myChartfault.showLoading({  
  378. text: '数据加载中...',
  379. color: '#c23531',
  380. textColor: '#fff',
  381. maskColor: 'rgba(255,255,255,0)',
  382. zlevel: 0
  383. });
  384. myChartfault.hideLoading();
  385. optionfault = {
  386. title: {
  387. // text: '(件)故障数量',
  388. x: '10',
  389. y: '0',
  390. textStyle: {
  391. fontWeight: 'normal',
  392. fontSize: 12,
  393. color: "#56c9ff",
  394. }
  395. },
  396. xAxis: {
  397. axisTick: {
  398. show: false
  399. },
  400. splitLine: {
  401. show: false,
  402. },
  403. splitArea: {
  404. show: false
  405. },
  406. // data: XData,
  407. data: ['', '', '', '', ''],
  408. axisLine: {
  409. lineStyle: {
  410. color: '#ddd'
  411. }
  412. },
  413. axisLabel: {
  414. textStyle: {
  415. color: '#999999',
  416. fontSize: 12,
  417. }
  418. },
  419. },
  420. yAxis: {
  421. axisTick: {
  422. show: false
  423. },
  424. splitLine: {
  425. show: true,
  426. lineStyle: {
  427. type: 'dashed',
  428. color: '#eee'
  429. }
  430. },
  431. splitArea: {
  432. show: false
  433. },
  434. axisLabel: {
  435. show: true,
  436. textStyle: {
  437. color: '#999999',
  438. fontSize: 12,
  439. }
  440. },
  441. axisLine: {
  442. show: false,
  443. lineStyle: {
  444. color: '#4d4d4d'
  445. }
  446. }
  447. },
  448. grid: {
  449. left: 10,
  450. top: 25,
  451. bottom: 0,
  452. right: 10,
  453. containLabel: true
  454. },
  455. "tooltip": {
  456. "trigger": "item",
  457. "textStyle": {
  458. "fontSize": 12
  459. },
  460. "formatter": "{b0}:{c0}"
  461. },
  462. series: {
  463. type: "bar",
  464. itemStyle: {
  465. normal: {
  466. color: function(params) {
  467. // type = 'linear';
  468. var colorList = [
  469. '#204266', '#1b3651', '#00437a', '#005395', '#79a3c4'
  470. ];
  471. return colorList[params.dataIndex]
  472. },
  473. }
  474. },
  475. label: {
  476. normal: {
  477. show: true,
  478. position: 'top',
  479. textStyle: {
  480. // color: '#56c9ff'
  481. }
  482. }
  483. },
  484. barWidth: 18,
  485. // barWidth: '30%',
  486. // data: yData
  487. data: [0, 0, 0, 0, 0]
  488. }
  489. };
  490. // if (optionfault && typeof optionfault === "object") {
  491. // myChartfault.setOption(optionfault, true);
  492. // }
  493. function getinternettop5(data) {
  494. api_newreport.fetchDataList('handlePersonResolve', data).then(function(data) {
  495. if (data.status == 200) {
  496. var xaxisdata = [];
  497. if (data.data.length > 0) {
  498. for (var i = 0; i < 5 && i < data.data.length; i++) {
  499. xaxisdata.push(data.data[i].name);
  500. }
  501. for (var i = 0; i < data.data.length; i++) {
  502. if (data.data[i].name == $rootScope.user.name) {
  503. $scope.paiming = i + 1;
  504. break
  505. } else {
  506. $scope.paiming = "(暂无)";
  507. }
  508. }
  509. } else {
  510. $scope.paiming = "(暂无)";
  511. }
  512. // angular.forEach(data.data, function(item, index) {
  513. // if (item.name == $rootScope.user.name) {
  514. // $scope.paiming = I
  515. // }
  516. // })
  517. optionfault.xAxis.data = xaxisdata;
  518. optionfault.series.data[0] = parseInt(data.data[0] ? data.data[0].num : 0);
  519. optionfault.series.data[1] = parseInt(data.data[1] ? data.data[1].num : 0);
  520. optionfault.series.data[2] = parseInt(data.data[2] ? data.data[2].num : 0);
  521. optionfault.series.data[3] = parseInt(data.data[3] ? data.data[3].num : 0);
  522. optionfault.series.data[4] = parseInt(data.data[4] ? data.data[4].num : 0);
  523. myChartfault.setOption(optionfault);
  524. myChartfault.hideLoading();
  525. }
  526. })
  527. }
  528. $scope.maxtoptime = true;
  529. getinternettop5({ "paramDateFrom": moment(new Date()).startOf('month').format('YYYY-MM-DD 00:00:00'), "paramDateTo": moment(new Date()).endOf('month').format('YYYY-MM-DD 23:59:59') });
  530. var loginUser = $rootScope.user;
  531. var date = new Date();
  532. var d = date.getDate();
  533. var m = date.getMonth();
  534. var y = date.getFullYear();
  535. $scope.scheduleClass = {};
  536. $scope.odr = 2;
  537. $scope.searchstate = 2;
  538. $scope.events = [];
  539. $scope.calendarView = 'month';
  540. $scope.calendarDate = moment().startOf('month').toDate();
  541. $scope.calendarDatejiejue = moment().startOf('month').toDate();
  542. $scope.calendarTitle;
  543. $scope.timeLabel = "时间";
  544. $scope.eventLabel = "描述";
  545. $scope.moment = function(string) {
  546. return moment(string);
  547. }
  548. $scope.eventClicked = function(event) {
  549. // console.log("event="+JSON.stringify(event))
  550. showModal('Clicked', event);
  551. };
  552. $scope.eventEdited = function(event) {
  553. showModal('Edited', event);
  554. };
  555. var updateViews = function(newvalue, oldvalue) {
  556. // if (newvalue.getMonth() > (new Date()).getMonth()) {
  557. // $scope.maxtoptime = true;
  558. // $scope.calendarDate = oldvalue;
  559. // } else {
  560. if (oldvalue == newvalue) return;
  561. $scope.maxtoptime = false;
  562. var timeStart, timeEnd, timeStartSpan, timeEndSpan;
  563. timeStart = moment(newvalue).startOf('month');
  564. timeEnd = moment(newvalue).endOf('month');
  565. timeStartSpan = timeStart.format('YYYY-MM-DD 00:00:00');
  566. timeEndSpan = timeEnd.format('YYYY-MM-DD 23:59:59');
  567. $scope.thisdatatop5 = moment(newvalue).startOf('month').format('YYYY年MM月');
  568. $scope.thismonthtop5 = newvalue.getMonth() + 1;
  569. $scope.thisyertop5 = newvalue.getFullYear();
  570. // if (newvalue.getMonth() == (new Date()).getMonth()) {
  571. // $scope.maxtoptime = true;
  572. // } else {
  573. // $scope.maxtoptime = false;
  574. // }
  575. getinternettop5({ "paramDateFrom": timeStartSpan, "paramDateTo": timeEndSpan });
  576. // }
  577. }
  578. $scope.$watch('calendarDate', updateViews);
  579. $scope.changeyear = function(yeardata) {
  580. $scope.calendarDate = new Date((new Date($scope.calendarDate)).setYear(yeardata));
  581. }
  582. $scope.changemonth = function(monthdata) {
  583. $scope.calendarDate = new Date((new Date($scope.calendarDate)).setMonth(monthdata - 1));
  584. }
  585. $scope.next = function() {
  586. $scope.getmonth = 'nextmonth';
  587. $scope.calendarControl.next();
  588. }
  589. $scope.prev = function() {
  590. $scope.calendarControl.prev();
  591. }
  592. $scope.setCalendarToToday = function() {
  593. $scope.calendarDay = new Date();
  594. };
  595. $scope.toggle = function($event, field, event) {
  596. $event.preventDefault();
  597. $event.stopPropagation();
  598. event[field] = !event[field];
  599. };
  600. // $scope.nexttop5 = function() {
  601. // $state.go('app.desk.chart');
  602. // }
  603. // setInterval(function() {
  604. // getinternettop5({ "paramDateFrom": "2018-09-01 00:00:00", "paramDateTo": "2018-09-30 23:59:59" });
  605. // }, 10000);
  606. //end事件月统计图
  607. //当月工单解决率
  608. var domfinish = document.getElementById("finish");
  609. var myChartfinish = echarts.init(domfinish);
  610. var app = {};
  611. var optionfinish = null;
  612. app.title = '当月工单解决率';
  613. myChartfinish.showLoading({  
  614. text: '数据加载中...',
  615. color: '#c23531',
  616. textColor: '#fff',
  617. maskColor: 'rgba(255,255,255,0)',
  618. zlevel: 0
  619. });
  620. myChartfinish.hideLoading();
  621. optionfinish = {
  622. title: {
  623. "text": 0,
  624. subtext: '事件总数',
  625. itemGap: 3,
  626. "x": '48%',
  627. "y": '35%',
  628. textAlign: "center",
  629. "textStyle": {
  630. "fontWeight": 'normal',
  631. "fontSize": 18,
  632. "color": '#005395',
  633. },
  634. "subtextStyle": {
  635. "fontWeight": 'normal',
  636. "fontSize": 12,
  637. "color": '#333',
  638. "lineHeight": 14
  639. },
  640. },
  641. tooltip: {
  642. // show: false,
  643. trigger: 'item',
  644. formatter: function(a) {
  645. // console.log(a)
  646. return (
  647. a['data']['name'] + ":" + a['data']['value']
  648. )
  649. },
  650. position: ['50%', '30%']
  651. },
  652. grid: {
  653. left: 10,
  654. top: 0,
  655. bottom: 0,
  656. right: 10,
  657. containLabel: true
  658. },
  659. legend: {
  660. show: true,
  661. orient: 'vertical',
  662. x: 'center',
  663. // y: 'bottom',
  664. bottom: 40,
  665. itemWidth: 14,
  666. itemHeight: 14,
  667. // shadowOffsetX: 20,
  668. textStyle: {
  669. fontSize: '14',
  670. fontWeight: 'normal',
  671. color: '#666',
  672. },
  673. data: ['按时解决', '逾期解决'],
  674. formatter: function(name) {
  675. var oa = optionfinish.series[0].data;
  676. var num = oa[0].value + oa[1].value + oa[2].value;
  677. for (var i = 0; i < optionfinish.series[0].data.length; i++) {
  678. if (name == oa[i].name) {
  679. return ' ' + name + ' ' + oa[i].value + ' ' + oa[i].percent + '%';
  680. }
  681. }
  682. }
  683. },
  684. "color": ["#79a3c4", "#005395", "transparent", "transparent"],
  685. "startAngle": 180,
  686. series: [{
  687. name: '',
  688. type: 'pie',
  689. radius: ['60%', '80%'],
  690. avoidLabelOverlap: false,
  691. startAngle: 180,
  692. center: ["50%", "50%"],
  693. //stillShowZeroSum:0,
  694. label: {
  695. normal: {
  696. show: false,
  697. position: 'inner',
  698. textStyle: {
  699. color: '#fff',
  700. fontSize: 12
  701. }
  702. },
  703. emphasis: {
  704. show: false,
  705. textStyle: {
  706. fontSize: '12',
  707. fontWeight: 'bold'
  708. }
  709. }
  710. },
  711. labelLine: {
  712. normal: {
  713. show: false
  714. }
  715. },
  716. data: [{ value: 50, name: '按时解决' }, { value: 50, name: '逾期解决' }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }]
  717. }]
  718. };
  719. // if (optionfinish && typeof optionfinish === "object") {
  720. // myChartfinish.setOption(optionfinish, true);
  721. // }
  722. function getinternetAlarm(data) {
  723. api_newreport.fetchDataList('getIncidentSolveRatio', data).then(function(data) {
  724. if (data.code == 200) {
  725. optionfinish.series[0].data[0].value = data.noOverdue;
  726. optionfinish.series[0].data[0].percent = data.noOverdueRatio;
  727. optionfinish.series[0].data[1].value = data.overdue;
  728. optionfinish.series[0].data[1].percent = data.overdueRatio;
  729. optionfinish.series[0].data[2].value = data.sum / 2;
  730. optionfinish.series[0].data[3].value = data.sum / 2;
  731. optionfinish.title.text = data.sum;
  732. myChartfinish.setOption(optionfinish);
  733. myChartfinish.hideLoading();
  734. } else {
  735. // optionfinish.series[0].data[0].value = 0;
  736. // optionfinish.series[0].data[1].value = 0;
  737. // optionfinish.series[0].data[2].value = 0;
  738. // myChartfinish.setOption(optionfinish);
  739. // myChartfinish.hideLoading();
  740. }
  741. })
  742. }
  743. getinternetAlarm({ "date": $scope.thissomedata });
  744. var updateViewsalarm = function(newvalue, oldvalue) {
  745. if (oldvalue == newvalue) return;
  746. var timeStart, timeEnd, timeStartSpan, timeEndSpan;
  747. timeStart = moment(newvalue).startOf('month');
  748. timeEnd = moment(newvalue).endOf('month');
  749. timeStartSpan = timeStart.format('YYYY-MM-DD 00:00:00');
  750. timeEndSpan = timeEnd.format('YYYY-MM-DD 23:59:59');
  751. $scope.thisdatajiejue = moment(newvalue).startOf('month').format('YYYY年MM月');
  752. $scope.thismonthjiejue = newvalue.getMonth() + 1;
  753. $scope.thisyerjiejue = newvalue.getFullYear();
  754. getinternetAlarm({ "date": timeStart.format('YYYY-MM') });
  755. }
  756. $scope.$watch('calendarDatejiejue', updateViewsalarm)
  757. $scope.jiejueyear = function(yeardata) {
  758. $scope.calendarDatejiejue = new Date((new Date($scope.calendarDatejiejue)).setYear(yeardata));
  759. }
  760. $scope.jiejuemonth = function(monthdata) {
  761. $scope.calendarDatejiejue = new Date((new Date($scope.calendarDatejiejue)).setMonth(monthdata - 1));
  762. }
  763. //知识库撰写量
  764. var domknowlege = document.getElementById("knowlege");
  765. var myChartknowlege = echarts.init(domknowlege);
  766. var app = {};
  767. var optionknowlege = null;
  768. app.title = '知识库撰写量';
  769. myChartknowlege.showLoading({  
  770. text: '数据加载中...',
  771. color: '#c23531',
  772. textColor: '#fff',
  773. maskColor: 'rgba(255,255,255,0)',
  774. zlevel: 0
  775. });
  776. myChartknowlege.hideLoading();
  777. optionknowlege = {
  778. title: {
  779. "text": 0,
  780. subtext: '知识库总数',
  781. itemGap: 3,
  782. "x": '48%',
  783. "y": '35%',
  784. textAlign: "center",
  785. "textStyle": {
  786. "fontWeight": 'normal',
  787. "fontSize": 18,
  788. "color": '#005395',
  789. },
  790. "subtextStyle": {
  791. "fontWeight": 'normal',
  792. "fontSize": 12,
  793. "color": '#333',
  794. "lineHeight": 14
  795. },
  796. },
  797. tooltip: {
  798. // show: false,
  799. trigger: 'item',
  800. formatter: function(a) {
  801. // console.log(a)
  802. return (
  803. a['data']['name'] + ":" + a['data']['value']
  804. )
  805. },
  806. position: ['50%', '30%']
  807. },
  808. grid: {
  809. left: 10,
  810. top: 0,
  811. bottom: 0,
  812. right: 10,
  813. containLabel: true
  814. },
  815. legend: {
  816. show: true,
  817. orient: 'vertical',
  818. x: 'center',
  819. // y: 'bottom',
  820. bottom: 40,
  821. itemWidth: 14,
  822. itemHeight: 14,
  823. // shadowOffsetX: 20,
  824. textStyle: {
  825. fontSize: '14',
  826. fontWeight: 'normal',
  827. color: '#666',
  828. },
  829. data: ['我撰写', '其他人撰写'],
  830. formatter: function(name) {
  831. var oa = optionknowlege.series[0].data;
  832. var num = parseInt(oa[0].value) + parseInt(oa[1].value) + parseInt(oa[2].value);
  833. for (var i = 0; i < optionknowlege.series[0].data.length; i++) {
  834. if (name == oa[i].name) {
  835. return ' ' + name + ' ' + oa[i].value + ' ' + oa[i].percent + '%';
  836. }
  837. }
  838. }
  839. },
  840. "color": ["#005395", "#79a3c4", "transparent", "transparent"],
  841. "startAngle": 180,
  842. series: [{
  843. name: '',
  844. type: 'pie',
  845. radius: ['60%', '80%'],
  846. avoidLabelOverlap: false,
  847. startAngle: 180,
  848. center: ["50%", "50%"],
  849. label: {
  850. normal: {
  851. show: false,
  852. position: 'inner',
  853. textStyle: {
  854. color: '#fff',
  855. fontSize: 12
  856. },
  857. // formatter: function(params) {
  858. // if (params.value > 0) {
  859. // return params.percent + '%'
  860. // } else {
  861. // return ''
  862. // }
  863. // }
  864. },
  865. emphasis: {
  866. show: false,
  867. textStyle: {
  868. fontSize: '12',
  869. fontWeight: 'bold'
  870. }
  871. }
  872. },
  873. labelLine: {
  874. normal: {
  875. show: false
  876. }
  877. },
  878. data: [{ value: 50, name: '我撰写' }, { value: 50, name: '其他人撰写' }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }]
  879. }]
  880. };
  881. // if (optionknowlege && typeof optionknowlege === "object") {
  882. // myChartknowlege.setOption(optionknowlege, true);
  883. // }
  884. function getinternetknow(data) {
  885. api_newreport.fetchDataList('getSolutionCountByMyself', data).then(function(data) {
  886. if (data.status == "200") {
  887. optionknowlege.series[0].data[0].value = data.data[0] ? data.data[0].num : 0;
  888. optionknowlege.series[0].data[0].percent = data.data[0] ? data.data[0].percent : 0
  889. if (data.data == 0) {
  890. optionknowlege.series[0].data[1].percent = 0
  891. } else {
  892. optionknowlege.series[0].data[1].percent = data.otherPercent ? data.otherPercent : 0
  893. }
  894. optionknowlege.series[0].data[1].value = data.total - (data.data[0] ? data.data[0].num : 0);
  895. optionknowlege.series[0].data[2].value = data.total / 2;
  896. optionknowlege.series[0].data[3].value = data.total / 2;
  897. optionknowlege.title.text = data.total;
  898. myChartknowlege.setOption(optionknowlege);
  899. myChartknowlege.hideLoading();
  900. } else {
  901. }
  902. })
  903. }
  904. getinternetknow({ "user": $rootScope.user.id });
  905. } else {
  906. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  907. }
  908. })
  909. // $scope.login_signquick(theRequest)
  910. } else {
  911. var filterDataone = {
  912. "assignee": $rootScope.user.id,
  913. "searchType": "todo",
  914. "idx": 0,
  915. "sum": 5
  916. }
  917. var filterDatatwo = {
  918. "alarmIncident": { "state": "未处理" },
  919. "idx": 0,
  920. "sum": 5
  921. }
  922. $scope.filterData = {
  923. "assignee": $rootScope.user.id,
  924. "searchType": "todo",
  925. "idx": 0,
  926. "sum": 5
  927. }
  928. $scope.nian = [(new Date()).getFullYear(), (new Date()).getFullYear() - 1, (new Date()).getFullYear() - 2, (new Date()).getFullYear() - 3, (new Date()).getFullYear() - 4, (new Date()).getFullYear() - 5, (new Date()).getFullYear() - 6, (new Date()).getFullYear() - 7, (new Date()).getFullYear() - 8, (new Date()).getFullYear() - 9, (new Date()).getFullYear() - 10, (new Date()).getFullYear() - 11, (new Date()).getFullYear() - 12, (new Date()).getFullYear() - 13, (new Date()).getFullYear() - 14, (new Date()).getFullYear() - 15, (new Date()).getFullYear() - 16, (new Date()).getFullYear() - 17, (new Date()).getFullYear() - 18, (new Date()).getFullYear() - 19];
  929. $scope.yue = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  930. changeDivHeight();         
  931. window.onresize = function() {  changeDivHeight(); }              
  932. function  changeDivHeight() {                               
  933. var  h  =  document.documentElement.clientHeight; //获取页面可见高度  
  934. $scope.bodyheight = { "height": h + "px" };  
  935. $scope.sumline = (h - 60) * 0.45 / 34;
  936. }
  937. //角色判断
  938. for (var i = 0; i < $rootScope.user.role.length; i++) {
  939. if ($rootScope.user.role[i].rolecode == "call center") {
  940. $scope.thisuserrole = "center";
  941. break;
  942. } else if ($rootScope.user.role[i].rolecode == "admin general") {
  943. $scope.thisuserrole = "admin";
  944. break;
  945. } else if ($rootScope.user.role[i].rolecode == "3164d1ab-b733-4cb0-98bc-7d1593df3ebc") {
  946. $scope.thisuserrole = "yunwei";
  947. break;
  948. }
  949. }
  950. // angular.forEach($rootScope.user.role, function(item) {
  951. // // if (item.role == "call center") {
  952. // // } else() {
  953. // // }
  954. // })
  955. $rootScope.user.role
  956. //
  957. $scope.gowechart = function() {
  958. $state.go('app.desk.chart');
  959. }
  960. $scope.gobaojin = function() {
  961. $state.go('app.desk.jry_emergency');
  962. }
  963. $scope.goliuyan = function() {
  964. $state.go('app.desk.record');
  965. }
  966. $scope.gotonghua = function() {
  967. $state.go('app.desk.calllog');
  968. }
  969. $scope.gonewincident = function() {
  970. $state.go('app.incident.editor');
  971. }
  972. $scope.goyuqi = function() {
  973. var fildata = { searchType: "overDate" }
  974. $state.go('app.incident.list', { model: JSON.stringify(fildata) });
  975. }
  976. $scope.goknowledge = function() {
  977. $state.go('app.knowledge.manager');
  978. }
  979. $scope.gohuifang = function() {
  980. $state.go('app.incident.list');
  981. }
  982. $scope.gopaiban = function() {
  983. $state.go('app.scheduling.myscheduling');
  984. }
  985. //新建问题
  986. $scope.gonewproblem = function() {
  987. $state.go('app.problem.editor');
  988. }
  989. //新建变更
  990. $scope.gonewchange = function() {
  991. $state.go('app.change.editor');
  992. }
  993. //cmdb
  994. $scope.gocmdb = function() {
  995. $state.go('app.means.listd');
  996. }
  997. $scope.jingjiinform = function(row) {
  998. if (row.alarm.alarmExtension) {
  999. row.alarm.alarmExtension = row.alarm.alarmExtension.replace('{', "");
  1000. row.alarm.alarmExtension = row.alarm.alarmExtension.replace('}', "");
  1001. row.alarm.alarmExtension = row.alarm.alarmExtension.replace(/,/g, '\n');
  1002. }
  1003. event.stopPropagation();
  1004. var modelfile = { model: row };
  1005. $state.go('app.desk.form_editor', { formKey: 'desk_emergency', service: 'api_user_data', model: JSON.stringify(modelfile) });
  1006. };
  1007. // $scope.goschedule = function(time) {
  1008. // }
  1009. //我的排班
  1010. $scope.scheevents = [];
  1011. $scope.getschedule = function(time) {
  1012. api_bpm_schedule.fetchSchedule($rootScope.user.id, time.startTime, time.endTime).then(function(response) {
  1013. if (response.status == 200) {
  1014. $scope.scheevents = [];
  1015. var myData = response.list;
  1016. angular.forEach(myData, function(item) {
  1017. var eventTemp = {};
  1018. eventTemp.title = item.description;
  1019. // eventTemp.title = item.name;
  1020. eventTemp.type = item.scheduleClass.code;
  1021. eventTemp.startsAt = moment(item['scheduleOrderDTO'].startTime).toDate();
  1022. eventTemp.endsAtTime = moment(item['scheduleOrderDTO'].endTime).toDate();
  1023. eventTemp.startTime = moment(item['scheduleOrderDTO'].startTime).format('YYYY-MM-DD hh:mm')
  1024. eventTemp.endTime = moment(item['scheduleOrderDTO'].endTime).format('YYYY-MM-DD hh:mm')
  1025. eventTemp.id = item.id;
  1026. eventTemp.deletable = false;
  1027. eventTemp.user = item.user;
  1028. $scope.scheevents.push(eventTemp);
  1029. })
  1030. $scope.scheevents = $scope.scheevents.slice(0, 5)
  1031. }
  1032. });
  1033. }
  1034. $scope.getschedule({ 'time': { 'startTime': "2018-09-01 00:00:00", 'endTime': "2018-09-30 23:59:59" } });
  1035. //去处理
  1036. $scope.gotuclose = function(data) {
  1037. if (data.type == 1) {
  1038. $state.go('app.incident.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  1039. } else if (data.type == 2) {
  1040. $state.go('app.change.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  1041. } else if (data.type == 3) {
  1042. $state.go('app.problem.editor', { taskId: data.taskId, processInstanceId: data.procInstId });
  1043. } else if (data.type == 4) {
  1044. $state.go('app.means.applyediter', { taskId: data.taskId, processInstanceId: data.procInstId });
  1045. }
  1046. }
  1047. //消息通知
  1048. // api_user_data.fetchDataList('user', { "idx": 0, "sum": 10 }).then(function(response) {
  1049. // if (response) {
  1050. // if (response.status = 200) {
  1051. // $scope.userlist = response.list;
  1052. // }
  1053. // }
  1054. // })
  1055. $scope.message_yes = function(type) { //已读0
  1056. var fildata = { "idx": 0, "sum": 5, "messageStation": { "readStatus": 1, "userId": $rootScope.user.id } };
  1057. api_msg.msgDataList(fildata).then(function(data) {
  1058. if (data.status == 200) {
  1059. api_user_data.fetchDataList('user', { "idx": 0, "sum": 1000 }).then(function(response) {
  1060. if (response) {
  1061. $scope.xiaoxilist = data.list;
  1062. angular.forEach(data.list, function(item, index) {
  1063. angular.forEach(response.list, function(itemone) {
  1064. if (item.userId == itemone.id) {
  1065. $scope.xiaoxilist[index].user = itemone;
  1066. }
  1067. })
  1068. })
  1069. }
  1070. })
  1071. } else {}
  1072. })
  1073. };
  1074. $scope.message_yes();
  1075. //代办事项
  1076. function getincidentlist(fildata) {
  1077. api_statistic.getTask($rootScope.user.id, $scope.filterData.idx, 5).then(function(data) {
  1078. if (data) {
  1079. // var myData = Restangular.stripRestangular(data);
  1080. // var list = [];
  1081. $scope.totalPage = Math.ceil(data.sum / 5);
  1082. // $scope.myData = myData.data;
  1083. // for (var i = 0; i < $scope.myData.length; i++) {
  1084. // $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum
  1085. // }
  1086. if ($scope.totalPage <= 1) {
  1087. $scope.gaoliangright = true;
  1088. }
  1089. $scope.incidentlist = data.task;
  1090. angular.forEach($scope.incidentlist, function(item) {
  1091. if (item.type == 1) {
  1092. item.tolabelname = "事件工单"
  1093. } else if (item.type == 2) {
  1094. item.tolabelname = "变更工单"
  1095. } else if (item.type == 3) {
  1096. item.tolabelname = "问题工单"
  1097. } else if (item.type == 4) {
  1098. item.tolabelname = "资产审核"
  1099. }
  1100. })
  1101. // $scope.tableParams = new ngTableParams({
  1102. // page: 1, // show first page
  1103. // count: 5 // count per page
  1104. // }, {
  1105. // total: $scope.incidentlist.length, // length of data
  1106. // getData: function($defer, params) {
  1107. // $defer.resolve($scope.incidentlist.slice((params.page() - 1) * params.count(), params.page() * params.count()));
  1108. // }
  1109. // });
  1110. } else {
  1111. SweetAlert.swal({
  1112. title: "系统错误",
  1113. text: "请稍后再试!",
  1114. type: "error"
  1115. });
  1116. }
  1117. }, function() {});
  1118. }
  1119. getincidentlist(filterDataone, )
  1120. //翻页
  1121. $scope.parselist = function() {
  1122. if ($scope.gaoliangleft == false) {
  1123. $scope.incidentlist = [];
  1124. $scope.filterData.idx = $scope.filterData.idx - 1;
  1125. if ($scope.filterData.idx == 0) {
  1126. $scope.gaoliangleft = true;
  1127. }
  1128. $scope.gaoliangright = false;
  1129. getincidentlist($scope.filterData)
  1130. }
  1131. }
  1132. $scope.nextlist = function() {
  1133. if ($scope.gaoliangright == false) {
  1134. $scope.incidentlist = [];
  1135. $scope.filterData.idx = $scope.filterData.idx + 1;
  1136. if ($scope.filterData.idx == $scope.totalPage - 1) {
  1137. $scope.gaoliangright = true;
  1138. }
  1139. $scope.gaoliangleft = false;
  1140. getincidentlist($scope.filterData)
  1141. }
  1142. }
  1143. //告警列表
  1144. api_bpm_data.fetchDataList("alarmIncident", filterDatatwo, 'alarmIncident').then(function(data) {
  1145. $scope.myDataalarmincident = data.list;
  1146. }, function() {
  1147. });
  1148. //start事件月统计图
  1149. var domfault = document.getElementById("fault");
  1150. var myChartfault = echarts.init(domfault);
  1151. var app = {};
  1152. var optionfault = null;
  1153. app.title = '当月事件工单处理TOP5';
  1154. var XData = [];
  1155. var yData = [];
  1156. // XData.map(function() {
  1157. // yData.push((Math.random() * 1000 + 100).toFixed(0))
  1158. // })
  1159. // var dataMin=parseInt(Math.min.apply(null, yData)/2);
  1160. myChartfault.showLoading({  
  1161. text: '数据加载中...',
  1162. color: '#c23531',
  1163. textColor: '#fff',
  1164. maskColor: 'rgba(255,255,255,0)',
  1165. zlevel: 0
  1166. });
  1167. myChartfault.hideLoading();
  1168. optionfault = {
  1169. title: {
  1170. // text: '(件)故障数量',
  1171. x: '10',
  1172. y: '0',
  1173. textStyle: {
  1174. fontWeight: 'normal',
  1175. fontSize: 12,
  1176. color: "#56c9ff",
  1177. }
  1178. },
  1179. xAxis: {
  1180. axisTick: {
  1181. show: false
  1182. },
  1183. splitLine: {
  1184. show: false,
  1185. },
  1186. splitArea: {
  1187. show: false
  1188. },
  1189. // data: XData,
  1190. data: ['', '', '', '', ''],
  1191. axisLine: {
  1192. lineStyle: {
  1193. color: '#ddd'
  1194. }
  1195. },
  1196. axisLabel: {
  1197. textStyle: {
  1198. color: '#999999',
  1199. fontSize: 12,
  1200. }
  1201. },
  1202. },
  1203. yAxis: {
  1204. axisTick: {
  1205. show: false
  1206. },
  1207. splitLine: {
  1208. show: true,
  1209. lineStyle: {
  1210. type: 'dashed',
  1211. color: '#eee'
  1212. }
  1213. },
  1214. splitArea: {
  1215. show: false
  1216. },
  1217. axisLabel: {
  1218. show: true,
  1219. textStyle: {
  1220. color: '#999999',
  1221. fontSize: 12,
  1222. }
  1223. },
  1224. axisLine: {
  1225. show: false,
  1226. lineStyle: {
  1227. color: '#4d4d4d'
  1228. }
  1229. }
  1230. },
  1231. grid: {
  1232. left: 10,
  1233. top: 25,
  1234. bottom: 0,
  1235. right: 10,
  1236. containLabel: true
  1237. },
  1238. "tooltip": {
  1239. "trigger": "item",
  1240. "textStyle": {
  1241. "fontSize": 12
  1242. },
  1243. "formatter": "{b0}:{c0}"
  1244. },
  1245. series: {
  1246. type: "bar",
  1247. itemStyle: {
  1248. normal: {
  1249. color: function(params) {
  1250. // type = 'linear';
  1251. var colorList = [
  1252. '#204266', '#1b3651', '#00437a', '#005395', '#79a3c4'
  1253. ];
  1254. return colorList[params.dataIndex]
  1255. },
  1256. }
  1257. },
  1258. label: {
  1259. normal: {
  1260. show: true,
  1261. position: 'top',
  1262. textStyle: {
  1263. // color: '#56c9ff'
  1264. }
  1265. }
  1266. },
  1267. barWidth: 18,
  1268. // barWidth: '30%',
  1269. // data: yData
  1270. data: [0, 0, 0, 0, 0]
  1271. }
  1272. };
  1273. // if (optionfault && typeof optionfault === "object") {
  1274. // myChartfault.setOption(optionfault, true);
  1275. // }
  1276. function getinternettop5(data) {
  1277. api_newreport.fetchDataList('handlePersonResolve', data).then(function(data) {
  1278. if (data.status == 200) {
  1279. var xaxisdata = [];
  1280. if (data.data.length > 0) {
  1281. for (var i = 0; i < 5 && i < data.data.length; i++) {
  1282. xaxisdata.push(data.data[i].name);
  1283. }
  1284. for (var i = 0; i < data.data.length; i++) {
  1285. if (data.data[i].name == $rootScope.user.name) {
  1286. $scope.paiming = i + 1;
  1287. break
  1288. } else {
  1289. $scope.paiming = "(暂无)";
  1290. }
  1291. }
  1292. } else {
  1293. $scope.paiming = "(暂无)";
  1294. }
  1295. // angular.forEach(data.data, function(item, index) {
  1296. // if (item.name == $rootScope.user.name) {
  1297. // $scope.paiming = I
  1298. // }
  1299. // })
  1300. optionfault.xAxis.data = xaxisdata;
  1301. optionfault.series.data[0] = parseInt(data.data[0] ? data.data[0].num : 0);
  1302. optionfault.series.data[1] = parseInt(data.data[1] ? data.data[1].num : 0);
  1303. optionfault.series.data[2] = parseInt(data.data[2] ? data.data[2].num : 0);
  1304. optionfault.series.data[3] = parseInt(data.data[3] ? data.data[3].num : 0);
  1305. optionfault.series.data[4] = parseInt(data.data[4] ? data.data[4].num : 0);
  1306. myChartfault.setOption(optionfault);
  1307. myChartfault.hideLoading();
  1308. }
  1309. })
  1310. }
  1311. $scope.maxtoptime = true;
  1312. getinternettop5({ "paramDateFrom": moment(new Date()).startOf('month').format('YYYY-MM-DD 00:00:00'), "paramDateTo": moment(new Date()).endOf('month').format('YYYY-MM-DD 23:59:59') });
  1313. var loginUser = $rootScope.user;
  1314. var date = new Date();
  1315. var d = date.getDate();
  1316. var m = date.getMonth();
  1317. var y = date.getFullYear();
  1318. $scope.scheduleClass = {};
  1319. $scope.odr = 2;
  1320. $scope.searchstate = 2;
  1321. $scope.events = [];
  1322. $scope.calendarView = 'month';
  1323. $scope.calendarDate = moment().startOf('month').toDate();
  1324. $scope.calendarDatejiejue = moment().startOf('month').toDate();
  1325. $scope.calendarTitle;
  1326. $scope.timeLabel = "时间";
  1327. $scope.eventLabel = "描述";
  1328. $scope.moment = function(string) {
  1329. return moment(string);
  1330. }
  1331. $scope.eventClicked = function(event) {
  1332. // console.log("event="+JSON.stringify(event))
  1333. showModal('Clicked', event);
  1334. };
  1335. $scope.eventEdited = function(event) {
  1336. showModal('Edited', event);
  1337. };
  1338. var updateViews = function(newvalue, oldvalue) {
  1339. // if (newvalue.getMonth() > (new Date()).getMonth()) {
  1340. // $scope.maxtoptime = true;
  1341. // $scope.calendarDate = oldvalue;
  1342. // } else {
  1343. if (oldvalue == newvalue) return;
  1344. $scope.maxtoptime = false;
  1345. var timeStart, timeEnd, timeStartSpan, timeEndSpan;
  1346. timeStart = moment(newvalue).startOf('month');
  1347. timeEnd = moment(newvalue).endOf('month');
  1348. timeStartSpan = timeStart.format('YYYY-MM-DD 00:00:00');
  1349. timeEndSpan = timeEnd.format('YYYY-MM-DD 23:59:59');
  1350. $scope.thisdatatop5 = moment(newvalue).startOf('month').format('YYYY年MM月');
  1351. $scope.thismonthtop5 = newvalue.getMonth() + 1;
  1352. $scope.thisyertop5 = newvalue.getFullYear();
  1353. // if (newvalue.getMonth() == (new Date()).getMonth()) {
  1354. // $scope.maxtoptime = true;
  1355. // } else {
  1356. // $scope.maxtoptime = false;
  1357. // }
  1358. getinternettop5({ "paramDateFrom": timeStartSpan, "paramDateTo": timeEndSpan });
  1359. // }
  1360. }
  1361. $scope.$watch('calendarDate', updateViews);
  1362. $scope.changeyear = function(yeardata) {
  1363. $scope.calendarDate = new Date((new Date($scope.calendarDate)).setYear(yeardata));
  1364. }
  1365. $scope.changemonth = function(monthdata) {
  1366. $scope.calendarDate = new Date((new Date($scope.calendarDate)).setMonth(monthdata - 1));
  1367. }
  1368. $scope.next = function() {
  1369. $scope.getmonth = 'nextmonth';
  1370. $scope.calendarControl.next();
  1371. }
  1372. $scope.prev = function() {
  1373. $scope.calendarControl.prev();
  1374. }
  1375. $scope.setCalendarToToday = function() {
  1376. $scope.calendarDay = new Date();
  1377. };
  1378. $scope.toggle = function($event, field, event) {
  1379. $event.preventDefault();
  1380. $event.stopPropagation();
  1381. event[field] = !event[field];
  1382. };
  1383. // $scope.nexttop5 = function() {
  1384. // $state.go('app.desk.chart');
  1385. // }
  1386. // setInterval(function() {
  1387. // getinternettop5({ "paramDateFrom": "2018-09-01 00:00:00", "paramDateTo": "2018-09-30 23:59:59" });
  1388. // }, 10000);
  1389. //end事件月统计图
  1390. //当月工单解决率
  1391. var domfinish = document.getElementById("finish");
  1392. var myChartfinish = echarts.init(domfinish);
  1393. var app = {};
  1394. var optionfinish = null;
  1395. app.title = '当月工单解决率';
  1396. myChartfinish.showLoading({  
  1397. text: '数据加载中...',
  1398. color: '#c23531',
  1399. textColor: '#fff',
  1400. maskColor: 'rgba(255,255,255,0)',
  1401. zlevel: 0
  1402. });
  1403. myChartfinish.hideLoading();
  1404. optionfinish = {
  1405. title: {
  1406. "text": 0,
  1407. subtext: '事件总数',
  1408. itemGap: 3,
  1409. "x": '48%',
  1410. "y": '35%',
  1411. textAlign: "center",
  1412. "textStyle": {
  1413. "fontWeight": 'normal',
  1414. "fontSize": 18,
  1415. "color": '#005395',
  1416. },
  1417. "subtextStyle": {
  1418. "fontWeight": 'normal',
  1419. "fontSize": 12,
  1420. "color": '#333',
  1421. "lineHeight": 14
  1422. },
  1423. },
  1424. tooltip: {
  1425. // show: false,
  1426. trigger: 'item',
  1427. formatter: function(a) {
  1428. // console.log(a)
  1429. return (
  1430. a['data']['name'] + ":" + a['data']['value']
  1431. )
  1432. },
  1433. position: ['50%', '30%']
  1434. },
  1435. grid: {
  1436. left: 10,
  1437. top: 0,
  1438. bottom: 0,
  1439. right: 10,
  1440. containLabel: true
  1441. },
  1442. legend: {
  1443. show: true,
  1444. orient: 'vertical',
  1445. x: 'center',
  1446. // y: 'bottom',
  1447. bottom: 40,
  1448. itemWidth: 14,
  1449. itemHeight: 14,
  1450. // shadowOffsetX: 20,
  1451. textStyle: {
  1452. fontSize: '14',
  1453. fontWeight: 'normal',
  1454. color: '#666',
  1455. },
  1456. data: ['按时解决', '逾期解决'],
  1457. formatter: function(name) {
  1458. var oa = optionfinish.series[0].data;
  1459. var num = oa[0].value + oa[1].value + oa[2].value;
  1460. for (var i = 0; i < optionfinish.series[0].data.length; i++) {
  1461. if (name == oa[i].name) {
  1462. return ' ' + name + ' ' + oa[i].value + ' ' + oa[i].percent + '%';
  1463. }
  1464. }
  1465. }
  1466. },
  1467. "color": ["#79a3c4", "#005395", "transparent", "transparent"],
  1468. "startAngle": 180,
  1469. series: [{
  1470. name: '',
  1471. type: 'pie',
  1472. radius: ['60%', '80%'],
  1473. avoidLabelOverlap: false,
  1474. startAngle: 180,
  1475. center: ["50%", "50%"],
  1476. //stillShowZeroSum:0,
  1477. label: {
  1478. normal: {
  1479. show: false,
  1480. position: 'inner',
  1481. textStyle: {
  1482. color: '#fff',
  1483. fontSize: 12
  1484. }
  1485. },
  1486. emphasis: {
  1487. show: false,
  1488. textStyle: {
  1489. fontSize: '12',
  1490. fontWeight: 'bold'
  1491. }
  1492. }
  1493. },
  1494. labelLine: {
  1495. normal: {
  1496. show: false
  1497. }
  1498. },
  1499. data: [{ value: 50, name: '按时解决' }, { value: 50, name: '逾期解决' }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }]
  1500. }]
  1501. };
  1502. // if (optionfinish && typeof optionfinish === "object") {
  1503. // myChartfinish.setOption(optionfinish, true);
  1504. // }
  1505. function getinternetAlarm(data) {
  1506. api_newreport.fetchDataList('getIncidentSolveRatio', data).then(function(data) {
  1507. if (data.code == 200) {
  1508. optionfinish.series[0].data[0].value = data.noOverdue;
  1509. optionfinish.series[0].data[0].percent = data.noOverdueRatio;
  1510. optionfinish.series[0].data[1].value = data.overdue;
  1511. optionfinish.series[0].data[1].percent = data.overdueRatio;
  1512. optionfinish.series[0].data[2].value = data.sum / 2;
  1513. optionfinish.series[0].data[3].value = data.sum / 2;
  1514. optionfinish.title.text = data.sum;
  1515. myChartfinish.setOption(optionfinish);
  1516. myChartfinish.hideLoading();
  1517. } else {
  1518. // optionfinish.series[0].data[0].value = 0;
  1519. // optionfinish.series[0].data[1].value = 0;
  1520. // optionfinish.series[0].data[2].value = 0;
  1521. // myChartfinish.setOption(optionfinish);
  1522. // myChartfinish.hideLoading();
  1523. }
  1524. })
  1525. }
  1526. getinternetAlarm({ "date": $scope.thissomedata });
  1527. var updateViewsalarm = function(newvalue, oldvalue) {
  1528. if (oldvalue == newvalue) return;
  1529. var timeStart, timeEnd, timeStartSpan, timeEndSpan;
  1530. timeStart = moment(newvalue).startOf('month');
  1531. timeEnd = moment(newvalue).endOf('month');
  1532. timeStartSpan = timeStart.format('YYYY-MM-DD 00:00:00');
  1533. timeEndSpan = timeEnd.format('YYYY-MM-DD 23:59:59');
  1534. $scope.thisdatajiejue = moment(newvalue).startOf('month').format('YYYY年MM月');
  1535. $scope.thismonthjiejue = newvalue.getMonth() + 1;
  1536. $scope.thisyerjiejue = newvalue.getFullYear();
  1537. getinternetAlarm({ "date": timeStart.format('YYYY-MM') });
  1538. }
  1539. $scope.$watch('calendarDatejiejue', updateViewsalarm)
  1540. $scope.jiejueyear = function(yeardata) {
  1541. $scope.calendarDatejiejue = new Date((new Date($scope.calendarDatejiejue)).setYear(yeardata));
  1542. }
  1543. $scope.jiejuemonth = function(monthdata) {
  1544. $scope.calendarDatejiejue = new Date((new Date($scope.calendarDatejiejue)).setMonth(monthdata - 1));
  1545. }
  1546. //知识库撰写量
  1547. var domknowlege = document.getElementById("knowlege");
  1548. var myChartknowlege = echarts.init(domknowlege);
  1549. var app = {};
  1550. var optionknowlege = null;
  1551. app.title = '知识库撰写量';
  1552. myChartknowlege.showLoading({  
  1553. text: '数据加载中...',
  1554. color: '#c23531',
  1555. textColor: '#fff',
  1556. maskColor: 'rgba(255,255,255,0)',
  1557. zlevel: 0
  1558. });
  1559. myChartknowlege.hideLoading();
  1560. optionknowlege = {
  1561. title: {
  1562. "text": 0,
  1563. subtext: '知识库总数',
  1564. itemGap: 3,
  1565. "x": '48%',
  1566. "y": '35%',
  1567. textAlign: "center",
  1568. "textStyle": {
  1569. "fontWeight": 'normal',
  1570. "fontSize": 18,
  1571. "color": '#005395',
  1572. },
  1573. "subtextStyle": {
  1574. "fontWeight": 'normal',
  1575. "fontSize": 12,
  1576. "color": '#333',
  1577. "lineHeight": 14
  1578. },
  1579. },
  1580. tooltip: {
  1581. // show: false,
  1582. trigger: 'item',
  1583. formatter: function(a) {
  1584. // console.log(a)
  1585. return (
  1586. a['data']['name'] + ":" + a['data']['value']
  1587. )
  1588. },
  1589. position: ['50%', '30%']
  1590. },
  1591. grid: {
  1592. left: 10,
  1593. top: 0,
  1594. bottom: 0,
  1595. right: 10,
  1596. containLabel: true
  1597. },
  1598. legend: {
  1599. show: true,
  1600. orient: 'vertical',
  1601. x: 'center',
  1602. // y: 'bottom',
  1603. bottom: 40,
  1604. itemWidth: 14,
  1605. itemHeight: 14,
  1606. // shadowOffsetX: 20,
  1607. textStyle: {
  1608. fontSize: '14',
  1609. fontWeight: 'normal',
  1610. color: '#666',
  1611. },
  1612. data: ['我撰写', '其他人撰写'],
  1613. formatter: function(name) {
  1614. var oa = optionknowlege.series[0].data;
  1615. var num = parseInt(oa[0].value) + parseInt(oa[1].value) + parseInt(oa[2].value);
  1616. for (var i = 0; i < optionknowlege.series[0].data.length; i++) {
  1617. if (name == oa[i].name) {
  1618. return ' ' + name + ' ' + oa[i].value + ' ' + oa[i].percent + '%';
  1619. }
  1620. }
  1621. }
  1622. },
  1623. "color": ["#005395", "#79a3c4", "transparent", "transparent"],
  1624. "startAngle": 180,
  1625. series: [{
  1626. name: '',
  1627. type: 'pie',
  1628. radius: ['60%', '80%'],
  1629. avoidLabelOverlap: false,
  1630. startAngle: 180,
  1631. center: ["50%", "50%"],
  1632. label: {
  1633. normal: {
  1634. show: false,
  1635. position: 'inner',
  1636. textStyle: {
  1637. color: '#fff',
  1638. fontSize: 12
  1639. },
  1640. // formatter: function(params) {
  1641. // if (params.value > 0) {
  1642. // return params.percent + '%'
  1643. // } else {
  1644. // return ''
  1645. // }
  1646. // }
  1647. },
  1648. emphasis: {
  1649. show: false,
  1650. textStyle: {
  1651. fontSize: '12',
  1652. fontWeight: 'bold'
  1653. }
  1654. }
  1655. },
  1656. labelLine: {
  1657. normal: {
  1658. show: false
  1659. }
  1660. },
  1661. data: [{ value: 50, name: '我撰写' }, { value: 50, name: '其他人撰写' }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }, { value: 50, name: '', tooltip: { formatter: function(a) { return "" } } }]
  1662. }]
  1663. };
  1664. // if (optionknowlege && typeof optionknowlege === "object") {
  1665. // myChartknowlege.setOption(optionknowlege, true);
  1666. // }
  1667. function getinternetknow(data) {
  1668. api_newreport.fetchDataList('getSolutionCountByMyself', data).then(function(data) {
  1669. if (data.status == "200") {
  1670. optionknowlege.series[0].data[0].value = data.data[0] ? data.data[0].num : 0;
  1671. optionknowlege.series[0].data[0].percent = data.data[0] ? data.data[0].percent : 0
  1672. if (data.data == 0) {
  1673. optionknowlege.series[0].data[1].percent = 0
  1674. } else {
  1675. optionknowlege.series[0].data[1].percent = data.otherPercent ? data.otherPercent : 0
  1676. }
  1677. optionknowlege.series[0].data[1].value = data.total - (data.data[0] ? data.data[0].num : 0);
  1678. optionknowlege.series[0].data[2].value = data.total / 2;
  1679. optionknowlege.series[0].data[3].value = data.total / 2;
  1680. optionknowlege.title.text = data.total;
  1681. myChartknowlege.setOption(optionknowlege);
  1682. myChartknowlege.hideLoading();
  1683. } else {
  1684. }
  1685. })
  1686. }
  1687. getinternetknow({ "user": $rootScope.user.id });
  1688. }
  1689. // setInterval(function() {
  1690. // getinternetknow({ "user": 23 });
  1691. // }, 10000);
  1692. }
  1693. ]);