relationCtrl.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. 'use strict';
  2. app.controller('hc_relationCtrl', ["$scope", "$http", "i18nService", "$rootScope", "$state", "$timeout", "moment", "$interval", "$modal", "$stateParams", "SweetAlert", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_bpm_domain", "api_text", "api_bpm_data", "api_user_data", "api_cmdb", "api_cmdb2","api_cmdb3","api_cmdb4", function ($scope, $http, i18nService, $rootScope, $state, $timeout, moment, $interval, $modal, $stateParams, SweetAlert, uiGridConstants, uiGridGroupingConstants, Restangular, api_bpm_domain, api_text, api_bpm_data, api_user_data, api_cmdb, api_cmdb2,api_cmdb3,api_cmdb4) {
  3. $scope.langs = i18nService.getAllLangs();
  4. $scope.lang = 'zh-cn';
  5. i18nService.setCurrentLang($scope.lang);
  6. $scope.myData = [];
  7. var loginUser = $rootScope.user;
  8. var pdKey = $state.current.pdKey;
  9. $scope.gridOptions = {};
  10. $scope.gridOptions.data = 'myData';
  11. $scope.gridOptions.enableColumnResizing = true;
  12. $scope.gridOptions.enableFiltering = false;
  13. $scope.gridOptions.enableGridMenu = false;
  14. $scope.gridOptions.enableSelectAll = true;
  15. $scope.gridOptions.enableRowSelection = true;
  16. $scope.gridOptions.showGridFooter = true;
  17. $scope.gridOptions.showColumnFooter = false;
  18. $scope.gridOptions.fastWatch = true;
  19. $scope.gridOptions.enableSorting = true;
  20. $scope.gridOptions.useExternalSorting = true;
  21. $scope.gridOptions.useExternalFiltering = false;
  22. $scope.gridOptions.useExternalPagination = true;
  23. $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100];
  24. $scope.gridOptions.paginationPageSize = 10;
  25. $scope.gridOptions.multiSelect = true;
  26. var mun = $scope.gridOptions.paginationPageSize;
  27. $scope.gridOptions.rowTemplate = "<div ng-click=\"onDblClick(row)\" ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.uid\" ui-grid-one-bind-id-grid=\"rowRenderIndex + '-' + col.uid + '-cell'\" class=\"ui-grid-cell\" ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\" role=\"{{col.isRowHeader ? 'rowheader' : 'gridcell'}}\" ui-grid-cell></div>";
  28. $scope.gridOptions.rowIdentity = function (row) {
  29. return row.id;
  30. };
  31. $scope.gridOptions.getRowIdentity = function (row) {
  32. return row.id;
  33. };
  34. $scope.transferColor = function (item) {
  35. var color = "icon iconfont icon-zhengchang greenfont";
  36. if (item.colourInfo) {
  37. if (item.colourInfo.id == 1) {
  38. color = "icon iconfont icon-yiyuqi redfont";
  39. } else if (item.colourInfo.id == 2) {
  40. color = "iconfont icon-yuqixinxiu yellofont";
  41. }
  42. } else {
  43. // color = "white";
  44. }
  45. return color;
  46. }
  47. $scope.transfertip = function (item) {
  48. var tip = "正常";
  49. if (item.colourInfo) {
  50. if (item.colourInfo.id == 1) {
  51. tip = "逾期";
  52. } else if (item.colourInfo.id == 2) {
  53. tip = "即将逾期";
  54. }
  55. } else {
  56. // color = "white";
  57. }
  58. return tip;
  59. }
  60. $scope.transferstatus = function (item) {
  61. var statecolor = "#fc4c58";
  62. if (item.id == 2) { //待处理
  63. statecolor = "#fc4c58";
  64. } else if (item.id == 7) { //待审核
  65. statecolor = "#fcb44c";
  66. } else if (item.id == 3) { //请求重新指派
  67. statecolor = "#ebf902";
  68. } else if (item.id == 4) { //处理中
  69. statecolor = "#0aa5f5";
  70. } else if (item.id == 5) { //已解决
  71. statecolor = "#2edbb8";
  72. } else if (item.id == 6) { //已关闭
  73. statecolor = "#bbbbbb";
  74. }
  75. return statecolor;
  76. }
  77. $scope.gridOptions.columnDefs = [
  78. // {
  79. // name: 'danhao',
  80. // displayName: '单号',
  81. // width: '21%',
  82. // cellTemplate: '<div>' +
  83. // '<div class="ui-grid-cell-contents">{{row.entity.danhao}}</div>' +
  84. // '</div>'
  85. // },
  86. // {
  87. // name: 'zhuti',
  88. // displayName: '主题',
  89. // width: '13.4%',
  90. // cellTemplate: '<div>' +
  91. // '<div class="ui-grid-cell-contents">{{row.entity.zhuti}}</div>' +
  92. // '</div>'
  93. // },
  94. // {
  95. // name: 'fenlei',
  96. // displayName: '分类',
  97. // width: '10.1%',
  98. // cellTemplate: '<div>' +
  99. // '<div class="ui-grid-cell-contents">{{row.entity.fenlei}}</div>' +
  100. // '</div>'
  101. // },
  102. // {
  103. // name: 'shenqingren',
  104. // displayName: '申请人',
  105. // width: '8%',
  106. // cellTemplate: '<div>' +
  107. // '<div class="ui-grid-cell-contents">{{row.entity.shenqingren}}</div>' +
  108. // '</div>'
  109. // },
  110. // {
  111. // name: 'chuliren',
  112. // displayName: '处理人',
  113. // width: '9.2%',
  114. // cellTemplate: '<div>' +
  115. // '<div class="ui-grid-cell-contents">{{row.entity.chuliren}}</div>' +
  116. // '</div>'
  117. // },
  118. // {
  119. // name: 'liuchengleixing',
  120. // displayName: '流程类型',
  121. // width: '15.7%',
  122. // cellTemplate: '<div>' +
  123. // '<div class="ui-grid-cell-contents">{{row.entity.liuchengleixing}}</div>' +
  124. // '</div>'
  125. // },
  126. // {
  127. // name: 'chuangjiariqi',
  128. // displayName: "创建日期",
  129. // width: '22%',
  130. // cellTemplate: '<div>' +
  131. // '<div class="ui-grid-cell-contents">{{row.entity.chuangjiariqi}}</div>' +
  132. // '</div>'
  133. // },
  134. {
  135. name: 'danhao',
  136. displayName: '单号',
  137. width: '21%',
  138. cellTemplate: '<div>' +
  139. '<div class="ui-grid-cell-contents">{{row.entity.danhao}}</div>' +
  140. '</div>'
  141. },
  142. {
  143. name: 'zhuti',
  144. displayName: '主题',
  145. width: '13%',
  146. cellTemplate: '<div>' +
  147. '<div class="ui-grid-cell-contents">{{row.entity.zhuti}}</div>' +
  148. '</div>'
  149. },
  150. {
  151. name: 'fenlei',
  152. displayName: '分类',
  153. width: '10%',
  154. cellTemplate: '<div>' +
  155. '<div class="ui-grid-cell-contents">{{row.entity.fenlei}}</div>' +
  156. '</div>'
  157. },
  158. {
  159. name: 'shenqingren',
  160. displayName: '申请人',
  161. width: '8%',
  162. cellTemplate: '<div>' +
  163. '<div class="ui-grid-cell-contents">{{row.entity.shenqingren}}</div>' +
  164. '</div>'
  165. },
  166. {
  167. name: 'chuliren',
  168. displayName: '处理人',
  169. width: '9%',
  170. cellTemplate: '<div>' +
  171. '<div class="ui-grid-cell-contents">{{row.entity.chuliren}}</div>' +
  172. '</div>'
  173. },
  174. {
  175. name: 'liuchengleixing',
  176. displayName: '流程类型',
  177. width: '7%',
  178. cellTemplate: '<div>' +
  179. '<div class="ui-grid-cell-contents">{{row.entity.liuchengleixing}}</div>' +
  180. '</div>'
  181. },
  182. {
  183. name: 'chuangjiariqi',
  184. displayName: '创建时间',
  185. width: '15%',
  186. cellTemplate: '<div>' +
  187. '<div class="ui-grid-cell-contents">{{row.entity.chuangjiariqi}}</div>' +
  188. '</div>'
  189. },
  190. {
  191. name: 'lishishijian',
  192. displayName: '操作时间',
  193. width: '15%',
  194. cellTemplate: '<div>' +
  195. '<div class="ui-grid-cell-contents">{{row.entity.lishishijian}}</div>' +
  196. '</div>'
  197. },
  198. ];
  199. $scope.value = 10;
  200. $scope.decrement = function () {
  201. $scope.value = $scope.value - 1;
  202. };
  203. $scope.record = function () {
  204. api_text.record($rootScope.takes).then(function (data) {
  205. if (data.errno == 0) {
  206. $scope.busy = false;
  207. }
  208. })
  209. };
  210. $scope.parameters = null;
  211. $scope.open = function ($event) {
  212. $event.preventDefault();
  213. $event.stopPropagation();
  214. $scope.opened = !$scope.opened;
  215. };
  216. $scope.endOpen = function ($event) {
  217. $event.preventDefault();
  218. $event.stopPropagation();
  219. $scope.startOpened = false;
  220. $scope.endOpened = !$scope.endOpened;
  221. };
  222. $scope.startOpen = function ($event) {
  223. $event.preventDefault();
  224. $event.stopPropagation();
  225. $scope.endOpened = false;
  226. $scope.startOpened = !$scope.startOpened;
  227. };
  228. $scope.othcode = {};
  229. var items=[];
  230. $scope.selected = {
  231. items: []
  232. };
  233. var wt_data={};
  234. //列表排序
  235. $scope.gridOptions.onRegisterApi = function (gridApi) {
  236. $scope.gridApi = gridApi;
  237. var index = 0;
  238. var oldheader = {};
  239. gridApi.grid.sortColumn = function (gridApi) {
  240. if (oldheader.field) {
  241. if (oldheader.field == gridApi.field) {
  242. // index = 0;
  243. } else {
  244. index = 0;
  245. }
  246. }
  247. index++;
  248. oldheader = gridApi;
  249. var fildata = $scope.memoryfilterData;
  250. if (index % 3 == 0) {
  251. delete $scope.memoryfilterData.incident;
  252. fildata = $scope.memoryfilterData;
  253. } else if (index % 3 == 1) {
  254. if (fildata.incident) {
  255. if (gridApi.field == "acceptDate") {
  256. angular.extend(fildata.incident, { "sort": gridApi.field });
  257. } else {
  258. angular.extend(fildata.incident, { "sort": gridApi.field + " desc , _incident.acceptDate" });
  259. }
  260. } else {
  261. if (gridApi.field == "acceptDate") {
  262. angular.extend(fildata, { 'incident': { "sort": gridApi.field } });
  263. } else {
  264. angular.extend(fildata, { 'incident': { "sort": gridApi.field + " desc , _incident.acceptDate" } });
  265. }
  266. }
  267. } else if (index % 3 == 2) {
  268. if (fildata.incident) {
  269. if (gridApi.field == "acceptDate") {
  270. angular.extend(fildata.incident, { "sort": gridApi.field, "order": "asc" });
  271. } else {
  272. angular.extend(fildata.incident, { "sort": gridApi.field + " asc , _incident.acceptDate" });
  273. }
  274. } else {
  275. if (gridApi.field == "acceptDate") {
  276. angular.extend(fildata, { 'incident': { "sort": gridApi.field, "order": "asc" } });
  277. } else {
  278. angular.extend(fildata.incident, { "sort": gridApi.field + " asc , _incident.acceptDate" });
  279. }
  280. }
  281. // angular.extend(fildata, { 'incident': { "sort": gridApi.field, "order": "asc" } });
  282. }
  283. $scope.refreshData('expand-right', fildata);
  284. }
  285. gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
  286. var filtersData = $scope.memoryfilterData;
  287. filtersData.idx = newPage - 1;
  288. filtersData.sum = pageSize;
  289. $scope.refreshData('expand-right', filtersData);
  290. });
  291. gridApi.core.on.filterChanged($scope, function () {
  292. var grid = this.grid;
  293. if ($rootScope.user.group) {
  294. var filtersData = {
  295. idx: 0,
  296. sum: mun
  297. };
  298. } else {
  299. var filtersData = {
  300. idx: 0,
  301. sum: mun
  302. };
  303. }
  304. angular.forEach(grid.columns, function (item) {
  305. if (item.enableFiltering) {
  306. if (angular.isDefined(item.filters[0].term) && item.filters[0].term != '') {
  307. filtersData = $scope.memoryfilterData
  308. if (angular.isUndefined(filtersData['incident'])) {
  309. filtersData['incident'] = {};
  310. }
  311. if (item.field == 'requester.name') {
  312. filtersData['incident']['requester'] = {};
  313. filtersData.incident.requester['accountName'] = item.filters[0].term;
  314. } else if (item.field == 'handlingPersonnelUser.name') {
  315. filtersData['incident']['handlingPersonnelUser'] = {};
  316. filtersData.incident.handlingPersonnelUser['name'] = item.filters[0].term;
  317. } else if (item.field == 'requester.account') {
  318. filtersData['incident']['requester'] = {};
  319. filtersData.incident.requester['account'] = item.filters[0].term;
  320. } else if (item.field == 'acceptUser.name') {
  321. filtersData['incident']['acceptUser'] = {};
  322. filtersData.incident.acceptUser['name'] = item.filters[0].term;
  323. } else {
  324. filtersData['incident'][item.field] = item.filters[0].term;
  325. }
  326. }
  327. }
  328. });
  329. filtersData.idx = 0;
  330. $scope.memoryfilterData = filtersData;
  331. $scope.refreshData('expand-right', filtersData);
  332. });
  333. };
  334. var items=[];
  335. if ($stateParams.model) {
  336. if (JSON.parse($stateParams.model).searchType && JSON.parse($stateParams.model).searchType != null) {
  337. $scope.searchTypes = JSON.parse($stateParams.model).searchType;
  338. } else {
  339. $scope.searchTypes = "todo";
  340. }
  341. } else {
  342. $scope.searchTypes = "todo";
  343. }
  344. if ($rootScope.user.group) {
  345. var defaultFilterData = {
  346. "idx": 0,
  347. "sum": mun
  348. };
  349. } else {
  350. var defaultFilterData = {
  351. "idx": 0,
  352. "sum": mun
  353. };
  354. }
  355. if (angular.isDefined($rootScope.search) && angular.isDefined($rootScope.search.incident)) {
  356. defaultFilterData['searchType'] = $rootScope.search.incident;
  357. $scope.searchTypes = $rootScope.search.incident;
  358. }
  359. if ($rootScope['cmdbs'] != 'incident') { $rootScope.idx = 1 }
  360. if (angular.isDefined($rootScope.idx) && $rootScope.cmdbs != "false") {
  361. $rootScope['cmdbs'] = 'incident';
  362. defaultFilterData.idx = $rootScope.idx - 1;
  363. } else { $rootScope.cmdbs = ""; }
  364. $scope.ldloading = {};
  365. // console.log($stateParams.idd)
  366. //获取列表数据
  367. var guagua;
  368. var get_danhao={
  369. "idx":0,
  370. "sum":1000
  371. }
  372. $scope.shijian_qu=[];
  373. $scope.biangeng_qu=[];
  374. $scope.myData1=[];
  375. $scope.myData2=[];
  376. $scope.myData3=[];
  377. $scope.myData4=[];
  378. $scope.myData5=[];
  379. $scope.refreshData = function () {
  380. var pdKey = "assetConsumablesHistory";
  381. get_danhao['assetConsumablesHistory']={"assetConsumablesId":$stateParams.idd};
  382. $scope.incident_shuzu=[];
  383. $scope.change_shuzu=[];
  384. $scope.incident_time=[];
  385. $scope.change_time=[];
  386. // 请求操作历史列表获取事件单号和变更单号
  387. api_cmdb3.fetchDataList(pdKey, get_danhao).then(function (data) {
  388. guagua=data.list;
  389. // console.log(data.list);
  390. for(var i=0;i<data.list.length;i++){
  391. if(data.list[i].source==1){
  392. $scope.incident_shuzu.push(data.list[i].sourceId);//获取事件单号数组
  393. $scope.incident_time.push({danhao:data.list[i].sourceId,shijian:data.list[i].time})//获取事件时间单号数组对象
  394. }else if(data.list[i].source==2){
  395. $scope.change_shuzu.push(data.list[i].sourceId);//获取变更单号数组
  396. $scope.change_time.push({danhao:data.list[i].sourceId,shijian:data.list[i].time})//获取变更时间单号数组对象
  397. }
  398. }
  399. // 获取事件数据
  400. api_cmdb3.relation("incident", $scope.incident_shuzu).then(function (data1) {
  401. // console.log(data1.data);
  402. $scope.shijian_data=data1.data;
  403. // console.log($scope.shijian_data);
  404. if($scope.shijian_data!=undefined){
  405. for(var i=0;i<$scope.shijian_data.length;i++){
  406. $scope.shijian_qu.push({danhao:$scope.shijian_data[i].incidentsign,zhuti:$scope.shijian_data[i].title,fenlei:"事件",shenqingren:$scope.shijian_data[i].acceptUser.name,chuliren:$scope.shijian_data[i].handlingPersonnelUser.name,liuchengleixing:"事件流程",chuangjiariqi:$scope.shijian_data[i].acceptDate},)
  407. };
  408. };
  409. for(var i=0;i<$scope.shijian_qu.length;i++){
  410. for(var j=0;j<$scope.incident_time.length;j++){
  411. if($scope.shijian_qu[i].danhao==$scope.incident_time[j].danhao){
  412. $scope.shijian_qu[i]["lishishijian"]=$scope.incident_time[j].shijian;
  413. }
  414. }
  415. // $scope.myData3.push($scope.shijian_qu[i].danhao);
  416. $scope.myData1.push($scope.shijian_qu[i])
  417. }
  418. $scope.gridOptions['totalItems'] = $scope.myData.length;
  419. // $scope.myData=$scope.shijian_qu;
  420. // 获取变更数据
  421. api_cmdb3.relation("change", $scope.change_shuzu).then(function (data2) {
  422. // console.log(data2.data);
  423. $scope.biangeng_data=data2.data;
  424. // console.log($scope.biangeng_data)
  425. if($scope.biangeng_data!=undefined){
  426. for(var i=0;i<$scope.biangeng_data.length;i++){
  427. $scope.biangeng_qu.push({danhao:$scope.biangeng_data[i].changesign,zhuti:$scope.biangeng_data[i].title,fenlei:"变更",shenqingren:$scope.biangeng_data[i].applyPerson.name,chuliren:$scope.biangeng_data[i].responsiblePerson.name,liuchengleixing:"变更流程",chuangjiariqi:$scope.biangeng_data[i].registrationTime},)
  428. }
  429. };
  430. for(var i=0;i<$scope.biangeng_qu.length;i++){
  431. for(var j=0;j<$scope.change_time.length;j++){
  432. if($scope.biangeng_qu[i].danhao==$scope.change_time[j].danhao){
  433. $scope.biangeng_qu[i]["lishishijian"]=$scope.change_time[j].shijian;
  434. }
  435. }
  436. $scope.myData2.push($scope.biangeng_qu[i])
  437. }
  438. //事件单号
  439. for(var i=0;i<$scope.myData1.length;i++){
  440. $scope.myData3.push($scope.myData1[i].danhao)
  441. }
  442. //变更单号
  443. for(var i=0;i<$scope.myData2.length;i++){
  444. $scope.myData3.push($scope.myData2[i].danhao)
  445. }
  446. // 获取数组重复的索引
  447. for(var i=0;i<$scope.myData3.length;i++){
  448. if($scope.myData4.indexOf($scope.myData3[i])!==-1){
  449. $scope.myData5.push($scope.myData4.indexOf($scope.myData3[i]))
  450. }
  451. $scope.myData4.push($scope.myData3[i]);
  452. }
  453. // 事件数据
  454. for(var i=0;i<$scope.myData1.length;i++){
  455. $scope.myData.push($scope.myData1[i])
  456. }
  457. // 变更数据
  458. for(var i=0;i<$scope.myData2.length;i++){
  459. $scope.myData.push($scope.myData2[i])
  460. }
  461. for(var i=0;i<$scope.myData5.length;i++){
  462. delete $scope.myData[$scope.myData5[i]]
  463. }
  464. $scope.gridOptions['totalItems'] = $scope.myData.length;
  465. });
  466. });
  467. });
  468. };
  469. $scope.refreshData();
  470. }])