meansCtrl_1.js 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907
  1. 'use strict';
  2. /**
  3. * controller for User Profile Example
  4. */
  5. // "$aside", "toaster", "api_bpm_domain", "api_configure_data", "api_cmdb", "api_configure_form",
  6. app.controller('meansCtrl', ["$rootScope","$scope","$http", "$state", "$timeout","$injector",'$parse', "$interval", "$modal","$stateParams", "$aside", "SweetAlert", "toaster", "FileUploader","i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_bpm_domain", "api_configure_data", "api_cmdb", "api_configure_form", function ($rootScope, $scope,$http, $state, $timeout,$parse,$injector, $interval, $modal,$stateParams, $aside, SweetAlert, toaster,FileUploader, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular,api_bpm_domain, api_configure_data, api_cmdb, api_configure_form) {
  7. $scope.langs=i18nService.getAllLangs();
  8. $scope.lang = 'zh-cn';
  9. i18nService.setCurrentLang($scope.lang);
  10. $scope.show=function(j){
  11. if(j>2){
  12. if(j%30==27||j%30==28||j%30==29){
  13. return true;
  14. }
  15. }
  16. }
  17. // $scope.heights = (document.body.scrollWidth-245)*12/100;
  18. $scope.stamp=function(){
  19. var modalInstance = $modal.open({
  20. templateUrl: 'assets/views/means/tpl/uuidprint.html',
  21. controller: function($scope,$modalInstance,scope ){
  22. $(".qrcanvas").empty();
  23. $scope.stampable=true;
  24. $scope.selected=scope.selected;
  25. setInterval(function(){
  26. if($scope.stampable){
  27. $scope.stampable=false;
  28. angular.forEach(scope.selected.items,function(item){
  29. function $(selector) {
  30. return document.querySelector(selector);
  31. }
  32. $scope.q= $('.qrcanvas');
  33. var canvas;
  34. var colorIn = "#191970";
  35. var colorOut = "#cd5c5c";
  36. var colorFore = "#4169e1";
  37. var colorBack = "#ffffff";
  38. var options = {
  39. cellSize: 4,
  40. foreground: [
  41. // foreground color
  42. {style: colorFore},
  43. // outer squares of the positioner
  44. {row: 0, rows: 7, col: 0, cols: 7, style: colorOut},
  45. {row: -7, rows: 7, col: 0, cols: 7, style: colorOut},
  46. {row: 0, rows: 7, col: -7, cols: 7, style: colorOut},
  47. // inner squares of the positioner
  48. {row: 2, rows: 3, col: 2, cols: 3, style: colorIn},
  49. {row: -5, rows: 3, col: 2, cols: 3, style: colorIn},
  50. {row: 2, rows: 3, col: -5, cols: 3, style: colorIn},
  51. ],
  52. background: colorBack,
  53. data: item.uuid,
  54. typeNumber: 1,
  55. };
  56. var effect = 'none';
  57. if (effect !== 'none') {
  58. options.effect = {key: effect, value: 1};
  59. if (effect === 'image') {
  60. options.background = [colorBack, effectImg];
  61. }
  62. }
  63. options.reuseCanvas = canvas;
  64. canvas = qrgen.canvas(options);
  65. $scope.q.appendChild(canvas);
  66. angular.element("canvas").addClass("canvasclass")
  67. // for(var i=0;i<$scope.selected.items.length;i++){
  68. // if(i>0&&i%4==0&&item.id==$scope.selected.items[i].id){
  69. // var par = document.getElementsByTagName('canvas')[i];
  70. // par.class='cancaspadd';
  71. // document.body.appendChild(canvas);
  72. // }
  73. // }
  74. })
  75. for(var i=0;i<$scope.selected.items.length;i++){
  76. if(i>2){
  77. if(i%30==27||i%30==28||i%30==29){
  78. document.getElementsByTagName('canvas')[i].setAttribute("class", "cancaspadd");
  79. }
  80. }
  81. }
  82. }
  83. },500);
  84. $scope.ok = function() {
  85. $modalInstance.dismiss('');
  86. };
  87. },
  88. resolve: {
  89. scope: function(){
  90. return $scope;
  91. },
  92. }
  93. });
  94. modalInstance.result.then(function() {
  95. })
  96. }
  97. // $scope.printDiv = function() {
  98. // $(".qrcanvas").empty();
  99. // angular.forEach($scope.selected.items,function(item){
  100. // function $(selector) {
  101. // return document.querySelector(selector);
  102. // }
  103. // $scope.q= $('.qrcanvas');
  104. // var canvas;
  105. // var colorIn = "#191970";
  106. // var colorOut = "#cd5c5c";
  107. // var colorFore = "#4169e1";
  108. // var colorBack = "#ffffff";
  109. // var options = {
  110. // cellSize: 4,
  111. // foreground: [
  112. // // foreground color
  113. // {style: colorFore},
  114. // // outer squares of the positioner
  115. // {row: 0, rows: 7, col: 0, cols: 7, style: colorOut},
  116. // {row: -7, rows: 7, col: 0, cols: 7, style: colorOut},
  117. // {row: 0, rows: 7, col: -7, cols: 7, style: colorOut},
  118. // // inner squares of the positioner
  119. // {row: 2, rows: 3, col: 2, cols: 3, style: colorIn},
  120. // {row: -5, rows: 3, col: 2, cols: 3, style: colorIn},
  121. // {row: 2, rows: 3, col: -5, cols: 3, style: colorIn},
  122. // ],
  123. // background: colorBack,
  124. // data: item.uuid,
  125. // typeNumber: 1,
  126. // };
  127. // var effect = 'none';
  128. // if (effect !== 'none') {
  129. // options.effect = {key: effect, value: 1};
  130. // if (effect === 'image') {
  131. // options.background = [colorBack, effectImg];
  132. // }
  133. // }
  134. // // $scope.q.tital=item.uuid;
  135. // // $scope.q.textContent=item.uuid;
  136. // options.reuseCanvas = canvas;
  137. // canvas = qrgen.canvas(options);
  138. // // canvas.outerText=item.uuid;
  139. // // $scope.q.innerHTML=$scope.q.innerHTML+"<div class='col-md-2'>"+item.uuid+"</div>"
  140. // $scope.q.appendChild(canvas);
  141. // angular.element("canvas").addClass("canvasclass")
  142. // // for(var i=0;i<$scope.selected.items.length;i++){
  143. // // if(i>0&&i%4==0&&item.id==$scope.selected.items[i].id){
  144. // // var par = document.getElementsByTagName('canvas')[i];
  145. // // par.class='cancaspadd';
  146. // // document.body.appendChild(canvas);
  147. // // }
  148. // // }
  149. // })
  150. // for(var i=0;i<$scope.selected.items.length;i++){
  151. // if(i>2){
  152. // if(i%30==27||i%30==28||i%30==29){
  153. // document.getElementsByTagName('canvas')[i].setAttribute("class", "cancaspadd");
  154. // }
  155. // // document.getElementsByTagName('canvas')[i].setAttribute("class", "cancaspadd");
  156. // // angular.element("canvas")[i].addClass("cancaspadd")
  157. // }
  158. // }
  159. // }
  160. var loginUser=$rootScope.user;
  161. $scope.gridOptions = {};
  162. $scope.gridOptions.data = 'myData';
  163. $scope.gridOptions.enableColumnResizing = true;
  164. $scope.gridOptions.enableFiltering = true;
  165. $scope.gridOptions.enableGridMenu = true;
  166. $scope.gridOptions.enableRowSelection = true;
  167. $scope.gridOptions.showGridFooter = false;
  168. $scope.gridOptions.showColumnFooter = true;
  169. $scope.gridOptions.fastWatch = true;
  170. $scope.gridOptions.useExternalFiltering=true;
  171. $scope.gridOptions.useExternalPagination = true;
  172. $scope.gridOptions.paginationPageSizes =[10, 20, 50,100];
  173. $scope.gridOptions.paginationPageSize = 10;
  174. $scope.gridOptions.multiSelect = true;
  175. var mun=$scope.gridOptions.paginationPageSize;
  176. $scope.gridOptions.rowIdentity = function(row) {
  177. return row.id;
  178. };
  179. $scope.gridOptions.getRowIdentity = function(row) {
  180. return row.id;
  181. };
  182. $scope.gridOptions.columnDefs = [
  183. { name:'操作', width:50,enableFiltering:false, cellTemplate:'<div class="links cl-effect-1">' +
  184. '<a ng-click="grid.appScope.onClick(row.entity)" tooltip="修改" tooltip-placement="left"><i class="fa fa-pencil-square-o"></i></a>'+
  185. '</div>' },
  186. { name:'uuid',enableSorting: false, displayName:'内部编码', width:150,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.uuid}}</div>'},
  187. { name:'name',enableSorting: false, displayName:'资产名称', width:100,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.name}}</div>'},
  188. { name:'dept',enableSorting: false, displayName:'资产类型', width:100,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.title}}</div>'},
  189. { name:'state',enableSorting: false, displayName:'资产状态', width:100,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.status}}</div>'},
  190. { name:'placeBasehw',enableSorting: false, displayName:'资产地点', width:120,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.placeBasehw}}</div>'},
  191. { name:'createtime',enableSorting: false, displayName:'创建时间', width:120,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.createtime}}</div>'},
  192. { name:'plantime',enableSorting: false, displayName:'预计报废时间', width:120,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.plantime}}</div>'},
  193. { name:'props.meansmanager',enableSorting: false, displayName:'管理员', width:80,enableFiltering:false,cellTemplate:'<div class="uigrid" ng-click="grid.appScope.onview(row.entity)">{{row.entity.props.meansmanager}}</div>'},
  194. ];
  195. $scope.gridOptions.rowTemplate= "<div ng-click=\"onview(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>";
  196. // $scope.configdata;
  197. // var width = $scope.width = 650;
  198. // var height = $scope.height = 400;
  199. // var apple_selected, tree, treedata_avm, treedata_geography;
  200. //修改
  201. $scope.onClick = function(row){
  202. // $scope.classify="basehwntwsv";
  203. var data={"model":row};
  204. $state.go('app.means.bill',{formKey:'means_edit',service:'api_cmdb','model':JSON.stringify(data)})
  205. };
  206. //查看
  207. $scope.onview = function(row){
  208. var data={"model":row};
  209. $state.go('app.means.view',{formKey:'means_edit',service:'api_cmdb','model':JSON.stringify(data)})
  210. };
  211. // if(configdata&&configdata.length>0){redrawSvg(configdata)};
  212. // $scope.gridOptions.onRegisterApi = function(gridApi){
  213. // $scope.gridApi = gridApi;
  214. // gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
  215. // var filtersData = $scope.memoryfilterData;
  216. // filtersData.idx=newPage-1;
  217. // filtersData.sum=pageSize;
  218. // $rootScope['idxchange']=newPage-1;
  219. // $scope.refreshData('expand-right',filtersData);
  220. // // $scope.refreshData('expand-right', {"assignee":$rootScope.user.id, "candidateGroups":$rootScope.user.group[0].id, "idx":newPage-1,"sum":pageSize});
  221. // });
  222. // $scope.gridOptions.onRegisterApi = function(gridApi) {
  223. // $scope.gridApi = gridApi;
  224. // gridApi.selection.on.rowSelectionChanged($scope, function(data) {
  225. // //$scope.selected.item = data.entity;
  226. // $scope.entity = angular.copy(data.entity);
  227. // $scope.ciId = data.entity.id;
  228. // //TODO
  229. // vm.model=$scope.vm.model=decodeCIModel($scope.entity);
  230. // angular.forEach($scope.vm.tabs, function(tab){
  231. // tab.form.model = vm.model;
  232. // });
  233. // //decodeVMTabForm($scope.entity, vm.tabs);
  234. // //console.log(data);
  235. // });
  236. // };
  237. $scope.gridOptions.onRegisterApi = function(gridApi) {
  238. $scope.gridApi = gridApi;
  239. gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
  240. var filtersData = $scope.memoryfilterData;
  241. filtersData.idx=newPage-1;
  242. filtersData.sum=pageSize;
  243. $scope.refreshData('expand-right',filtersData);
  244. // $scope.refreshData('expand-right', {"assignee":$rootScope.user.id, "candidateGroups":$rootScope.user.group[0].id, "idx":newPage-1,"sum":pageSize});
  245. });
  246. gridApi.selection.on.rowSelectionChanged($scope, function(scope){
  247. var j=0;
  248. for(var i=0;i<=scope.grid.appScope.selected.items.length;i++){
  249. if(scope.grid.appScope.selected.items[i]==scope.entity){
  250. j++;
  251. break;
  252. }
  253. }
  254. // console.log("j="+j)
  255. if(j==1){
  256. scope.grid.appScope.selected.items.splice(i,1);
  257. }else{
  258. scope.grid.appScope.selected.items.push(scope.entity)
  259. }
  260. });
  261. };
  262. $scope.searchSolution = function(type,key){
  263. $scope.gridApi.grid.options.paginationCurrentPage=1;
  264. var memoryfilterData = {
  265. "idx":0,
  266. "sum":mun
  267. };
  268. angular.extend($scope.memoryfilterData,memoryfilterData);
  269. $scope.memoryfilterData['searchCriteria'] = type;
  270. $scope.memoryfilterData['keys'] = key;
  271. // $scope.memoryfilterData=defaultFilterData;
  272. // api_cmdb.searchkey(defaultFilterData.type,defaultFilterData.key,defaultFilterData.idx,defaultFilterData.sum).then(function(data){
  273. // var myData = Restangular.stripRestangular(data);
  274. // if(myData.data&&myData.status==200){
  275. // $scope.gridOptions.totalItems = myData.total;
  276. // $scope.myData = myData.data;
  277. // }
  278. // });
  279. $scope.refreshData('expand-right',$scope.memoryfilterData);
  280. }
  281. $scope.onChangestatus= function(searchType){
  282. // defaultFilterData['status'] = searchType;
  283. $scope.gridApi.grid.options.paginationCurrentPage=1;
  284. var memoryfilterData = {
  285. "idx":0,
  286. "sum":mun
  287. };
  288. angular.extend($scope.memoryfilterData,memoryfilterData);
  289. $scope.memoryfilterData['status']=searchType;
  290. $scope.refreshData('expand-right', $scope.memoryfilterData);
  291. }
  292. this.selectRowFunction = function(data) {
  293. $scope.ciId = data.id;
  294. console.log(data);
  295. };
  296. //树形图
  297. var apple_selected, tree, treedata_avm, treedata_geography;
  298. $scope.my_tree_handler = function (branch) {
  299. //var _ref;
  300. var classify=$scope.classify=branch.prefix.toLowerCase()+branch.sign;
  301. api_cmdb.query({'sign':classify}).then(function(data){
  302. var myData = Restangular.stripRestangular(data);
  303. // console.log(myData.data.node);
  304. if(myData.data&&myData.status==200){
  305. var ret = myData.data;
  306. redrawSvg(myData);
  307. }
  308. });
  309. };
  310. $scope.my_data = [];
  311. function convertListToTree(data, treeMap){
  312. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  313. var root = null; //Initially set our loop to null
  314. var parentNode = null;
  315. //loop over data
  316. for(var i = 0; i < data.length; i++) {
  317. var datum = data[i];
  318. //each node will have children, so let's give it a "children" poperty
  319. datum.children = [];
  320. //add an entry for this node to the map so that any future children can
  321. //lookup the parent
  322. idToNodeMap[datum.id] = datum;
  323. //Does this node have a parent?
  324. if(typeof datum.parent === "undefined" || datum.parent == null) {
  325. //Doesn't look like it, so this node is the root of the tree
  326. root = datum;
  327. treeMap[datum.id] = root;
  328. } else {
  329. //This node has a parent, so let's look it up using the id
  330. parentNode = idToNodeMap[datum.parent.id];
  331. //We don't need this property, so let's delete it.
  332. delete datum.parent;
  333. //Let's add the current node as a child of the parent node.
  334. parentNode.children.push(datum);
  335. }
  336. }
  337. return root;
  338. }
  339. function convertParentToChildList(data){
  340. var treeMap = {};
  341. var list=[];
  342. convertListToTree(data, treeMap);
  343. angular.forEach(treeMap,function(item){
  344. list.push(item);
  345. });
  346. return list;
  347. }
  348. $scope.my_tree = tree = {};
  349. $scope.try_async_load = function () {
  350. $scope.my_data = [];
  351. $scope.select_treedata = [];
  352. $scope.doing_async = true;
  353. api_configure_data.fetchDataList('ciclassify',{'idx':0,'sum':100}).then(function(result){
  354. //console.log(result['list']);
  355. $scope.select_treedata = $scope.my_data = convertParentToChildList(result['list']);
  356. $scope.doing_async = false;
  357. // tree.expand_all();
  358. //console.log(treelist);
  359. });
  360. };
  361. $scope.select_treedata = [];
  362. $scope.propTypeOptions = [];
  363. $scope.try_async_load();
  364. $scope.onFilterremove = function(item){
  365. console.log(item)
  366. }
  367. $scope.onFilterCallback = function(item){
  368. //console.log(item);
  369. if(angular.isDefined(item.children)&&item.children.length>=1){
  370. //not valid
  371. }else{
  372. var tempclassify=item.prefix.toLowerCase()+item.sign;
  373. $scope.gridApi.grid.options.paginationCurrentPage=1;
  374. $scope.cifilter_classic=tempclassify;
  375. var memoryfilterData = {
  376. "sign":tempclassify,
  377. "idx":0,
  378. "sum":mun
  379. }
  380. angular.extend($scope.memoryfilterData,memoryfilterData)
  381. // $scope.memoryfilterData=memoryfilterData;
  382. $scope.refreshData('expand-right',$scope.memoryfilterData);
  383. // api_configure_form.renderTabForm(tempclassify).then(function(data){
  384. // var myData = Restangular.stripRestangular(data);
  385. // $scope.propTypeOptions = myData;
  386. // });
  387. }
  388. }
  389. //关系下载模版
  390. api_configure_data.fetchDataList('ciedgetype',{'idx':0,'sum':100}).then(function(response){
  391. if(response){
  392. $scope.linktypeOptions = response.list;
  393. // angular.forEach($scope.linktypeOptions,function(item){
  394. // if(item.type==$scope.modelData.name){
  395. // $scope.modelData.linkName=item;
  396. // }
  397. // })
  398. }
  399. })
  400. $scope.rela={};
  401. $scope.onChange=function(rela){
  402. $scope.rela=rela;
  403. }
  404. $scope.getdown=function(){
  405. if(angular.isDefined($scope.rela)&&angular.isDefined($scope.rela.type)){
  406. var type=2;
  407. // api_configure_data.fetchDataList('ciedgetype',{'idx':0,'sum':100}).then(function(data){
  408. // if(data.status==200){
  409. // var myData = Restangular.stripRestangular(data).list;
  410. // for(var i=0;i<myData.length;i++){
  411. $http({
  412. url : api_configure_data.downModels(type,$scope.rela.id,$scope.rela.label).getRequestedUrl(),
  413. method : 'GET',
  414. headers : {
  415. // 'Content-type' : 'application/xls',
  416. 'Accept': '*/*'
  417. },
  418. responseType : 'arraybuffer'
  419. }).success(function(data, status, headers, config) {
  420. var file = new Blob([ data ], {
  421. type : 'application/octet-stream'
  422. // type : 'application/vnd.ms-excel'
  423. });
  424. //trick to download store a file having its URL
  425. var fileURL = URL.createObjectURL(file);
  426. var a = document.createElement('a');
  427. a.href = fileURL;
  428. a.target = '_blank';
  429. a.download = "关系属性.xlsx";
  430. document.body.appendChild(a);
  431. a.click();
  432. }).error(function(data, status, headers, config) {
  433. console.log(data);
  434. });
  435. // break;
  436. // }
  437. // }
  438. // })
  439. }else{
  440. SweetAlert.swal({
  441. title: "未选择资产关系!",
  442. text: "请选择资产关系",
  443. type: "error"
  444. })
  445. }
  446. }
  447. //资产关系导入
  448. var importUploader = $scope.importUploader = new FileUploader({
  449. url:api_cmdb.importData().getRequestedUrl()
  450. });
  451. importUploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/ , filter, options) {
  452. console.info('onWhenAddingFileFailed', item, filter, options);
  453. };
  454. importUploader.onAfterAddingFile = function(fileItem) {
  455. console.info('onAfterAddingFile', fileItem);
  456. };
  457. importUploader.onAfterAddingAll = function(addedFileItems) {
  458. console.info('onAfterAddingAll', addedFileItems);
  459. };
  460. importUploader.onProgressItem = function(fileItem, progress) {
  461. console.info('onProgressItem', fileItem, progress);
  462. };
  463. importUploader.onProgressAll = function(progress) {
  464. console.info('onProgressAll', progress);
  465. };
  466. importUploader.onSuccessItem = function(fileItem, response, status, headers) {
  467. if(response.status==200){
  468. SweetAlert.swal({
  469. title: "导入成功!",
  470. confirmButtonColor: "#007AFF",
  471. type: "success"
  472. },function(){
  473. $scope.ldloading.expand_right = false;
  474. });
  475. console.info('onSuccessItem', fileItem, response, status, headers);
  476. }else{
  477. SweetAlert.swal({
  478. title: "导入失败!",
  479. text: response.error,
  480. type: "error"
  481. },function(){
  482. $scope.ldloading.expand_right = false;
  483. });
  484. }
  485. };
  486. importUploader.onErrorItem = function(fileItem, response, status, headers) {
  487. console.info('onErrorItem', fileItem, response, status, headers);
  488. SweetAlert.swal({
  489. title: "系统错误!",
  490. text: "系统错误,请稍候重试!",
  491. type: "error"
  492. },function(){
  493. $scope.ldloading.expand_right = false;
  494. });
  495. };
  496. importUploader.onCancelItem = function(fileItem, response, status, headers) {
  497. console.info('onCancelItem', fileItem, response, status, headers);
  498. };
  499. importUploader.onCompleteItem = function(fileItem, response, status, headers) {
  500. console.info('onCompleteItem', fileItem, response, status, headers);
  501. };
  502. importUploader.onCompleteAll = function() {
  503. console.info('onCompleteAll');
  504. };
  505. $scope.import = function(style){
  506. $scope.ldloading[style.replace('-', '_')] = true;
  507. importUploader.onBeforeUploadItem = function(item) {
  508. angular.extend(item.headers,$rootScope.getSession());
  509. item.formData.push({'filename':item.file.name});
  510. console.info('onBeforeUploadItem', item);
  511. };
  512. importUploader.uploadAll();
  513. }
  514. //添加
  515. $scope.addData = function(size){
  516. $state.go('app.means.editor',{formKey:'means_editor',service:'api_bpm_data'});
  517. }
  518. //导出模版
  519. $scope.download=function(classfy){
  520. if(angular.isDefined(classfy)){
  521. var type=1;
  522. api_configure_data.fetchDataList('ciclassify',{'idx':0,'sum':100}).then(function(data){
  523. if(data.status==200){
  524. var myData = Restangular.stripRestangular(data).list;
  525. for(var i=0;i<myData.length;i++){
  526. if((myData[i].prefix.toLowerCase()+myData[i].sign)==classfy){
  527. $http({
  528. url : api_configure_data.downModels(type,myData[i].id,myData[i].label).getRequestedUrl(),
  529. method : 'GET',
  530. headers : {
  531. // 'Content-type' : 'application/xls',
  532. 'Accept': '*/*'
  533. },
  534. responseType : 'arraybuffer'
  535. }).success(function(data, status, headers, config) {
  536. var file = new Blob([ data ], {
  537. type : 'application/octet-stream'
  538. // type : 'application/vnd.ms-excel'
  539. });
  540. //trick to download store a file having its URL
  541. var fileURL = URL.createObjectURL(file);
  542. var a = document.createElement('a');
  543. a.href = fileURL;
  544. a.target = '_blank';
  545. a.download = "资产属性.xlsx";
  546. document.body.appendChild(a);
  547. a.click();
  548. }).error(function(data, status, headers, config) {
  549. console.log(data);
  550. });
  551. break;
  552. }
  553. }
  554. }
  555. })
  556. }else{
  557. SweetAlert.swal({
  558. title: "未选择资产分类!",
  559. text: "请选择资产分类",
  560. type: "error"
  561. })
  562. }
  563. }
  564. //导出
  565. $scope.export = function(classfy,style){
  566. if(angular.isDefined(classfy)){
  567. $scope.ldloading[style.replace('-', '_')] = true;
  568. api_configure_data.fetchDataList('ciclassify',{'idx':0,'sum':100}).then(function(data){
  569. if(data.status==200){
  570. var myData = Restangular.stripRestangular(data).list;
  571. for(var i=0;i<myData.length;i++){
  572. if((myData[i].prefix.toLowerCase()+myData[i].sign)==classfy){
  573. $http({
  574. url : api_cmdb.exportData(myData[i].label,myData[i].id).getRequestedUrl(),
  575. method : 'GET',
  576. headers : {
  577. // 'Content-type' : 'application/xls',
  578. 'Accept': '*/*'
  579. },
  580. responseType : 'arraybuffer'
  581. }).success(function(data, status, headers, config) {
  582. $scope.ldloading.zoom_in = false;
  583. var file = new Blob([ data ], {
  584. type : 'application/octet-stream'
  585. // type : 'application/vnd.ms-excel'
  586. });
  587. //trick to download store a file having its URL
  588. var fileURL = URL.createObjectURL(file);
  589. var a = document.createElement('a');
  590. a.href = fileURL;
  591. a.target = '_blank';
  592. a.download = myData[i].label+'.xlsx';
  593. document.body.appendChild(a);
  594. a.click();
  595. }).error(function(data, status, headers, config) {
  596. $scope.ldloading.zoom_in = false;
  597. console.log(data);
  598. });
  599. break;
  600. }
  601. }
  602. }
  603. })
  604. }else{
  605. SweetAlert.swal({
  606. title: "未选择资产分类!",
  607. text: "请选择资产分类",
  608. type: "error"
  609. })
  610. }
  611. }
  612. // }
  613. //导入
  614. var importUploader = $scope.importUploader = new FileUploader({
  615. url:api_cmdb.importData().getRequestedUrl()
  616. });
  617. importUploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/ , filter, options) {
  618. console.info('onWhenAddingFileFailed', item, filter, options);
  619. };
  620. importUploader.onAfterAddingFile = function(fileItem) {
  621. console.info('onAfterAddingFile', fileItem);
  622. };
  623. importUploader.onAfterAddingAll = function(addedFileItems) {
  624. console.info('onAfterAddingAll', addedFileItems);
  625. };
  626. importUploader.onProgressItem = function(fileItem, progress) {
  627. console.info('onProgressItem', fileItem, progress);
  628. };
  629. importUploader.onProgressAll = function(progress) {
  630. console.info('onProgressAll', progress);
  631. };
  632. importUploader.onSuccessItem = function(fileItem, response, status, headers) {
  633. if(response.status==200){
  634. SweetAlert.swal({
  635. title: "导入成功!",
  636. confirmButtonColor: "#007AFF",
  637. type: "success"
  638. },function(){
  639. $scope.ldloading.expand_right = false;
  640. });
  641. console.info('onSuccessItem', fileItem, response, status, headers);
  642. }else{
  643. SweetAlert.swal({
  644. title: "导入失败!",
  645. text: response.error,
  646. type: "error"
  647. },function(){
  648. $scope.ldloading.expand_right = false;
  649. });
  650. }
  651. };
  652. importUploader.onErrorItem = function(fileItem, response, status, headers) {
  653. console.info('onErrorItem', fileItem, response, status, headers);
  654. SweetAlert.swal({
  655. title: "系统错误!",
  656. text: "系统错误,请稍候重试!",
  657. type: "error"
  658. },function(){
  659. $scope.ldloading.expand_right = false;
  660. });
  661. };
  662. importUploader.onCancelItem = function(fileItem, response, status, headers) {
  663. console.info('onCancelItem', fileItem, response, status, headers);
  664. };
  665. importUploader.onCompleteItem = function(fileItem, response, status, headers) {
  666. console.info('onCompleteItem', fileItem, response, status, headers);
  667. };
  668. importUploader.onCompleteAll = function() {
  669. console.info('onCompleteAll');
  670. };
  671. $scope.import = function(style){
  672. $scope.ldloading[style.replace('-', '_')] = true;
  673. importUploader.onBeforeUploadItem = function(item) {
  674. angular.extend(item.headers,$rootScope.getSession());
  675. item.formData.push({'filename':item.file.name});
  676. console.info('onBeforeUploadItem', item);
  677. };
  678. importUploader.uploadAll();
  679. }
  680. $scope.removeData = function(){
  681. var rmvList = $scope.selected.items.id;
  682. // angular.forEach($scope.selected.items,function(item){
  683. // rmvList.push(item.id);
  684. // });
  685. // if(rmvList.length>0){
  686. api_cmdb.put($scope.selected.items,rmvList).then(function(response){
  687. if(response.status==200){
  688. SweetAlert.swal({
  689. title: "删除成功!",
  690. type: "success",
  691. confirmButtonColor: "#007AFF"
  692. },function(){
  693. $scope.myData = _.reject($scope.myData, function(o) { return _.includes(rmvList,o.id); });
  694. $scope.selected = {
  695. items:[]
  696. };
  697. });
  698. }else{
  699. SweetAlert.swal({
  700. title: "操作异常!",
  701. text: "系统异常,请稍后重试,或者联系管理员!",
  702. type: "error"
  703. });
  704. }
  705. })
  706. // }
  707. }
  708. $scope.selected = {
  709. items:[]
  710. }
  711. $scope.editted = {
  712. items:[]
  713. }
  714. // $scope.stamp = function(){
  715. // var modalInstance = $modal.open({
  716. // templateUrl: 'assets/views/means/tpl/uuidprint.html',
  717. // controller: function($scope,$modalInstance ){
  718. // // $scope.stamp = function(){
  719. // $scope.stampable=true;
  720. // setInterval(function(){
  721. // if($scope.stampable){
  722. // $scope.stampable=false;
  723. // // $scope.selected=scope.selected;
  724. // angular.forEach($scope.selected.items,function(item){
  725. // function $(selector) {
  726. // return document.querySelector(selector);
  727. // }
  728. // $scope.q= $('#qrcanvas');
  729. // var canvas;
  730. // var colorIn = "#191970";
  731. // var colorOut = "#cd5c5c";
  732. // var colorFore = "#4169e1";
  733. // var colorBack = "#ffffff";
  734. // var options = {
  735. // cellSize: 6,
  736. // foreground: [
  737. // // foreground color
  738. // {style: colorFore},
  739. // // outer squares of the positioner
  740. // {row: 0, rows: 7, col: 0, cols: 7, style: colorOut},
  741. // {row: -7, rows: 7, col: 0, cols: 7, style: colorOut},
  742. // {row: 0, rows: 7, col: -7, cols: 7, style: colorOut},
  743. // // inner squares of the positioner
  744. // {row: 2, rows: 3, col: 2, cols: 3, style: colorIn},
  745. // {row: -5, rows: 3, col: 2, cols: 3, style: colorIn},
  746. // {row: 2, rows: 3, col: -5, cols: 3, style: colorIn},
  747. // ],
  748. // background: colorBack,
  749. // data: item.uuid,
  750. // typeNumber: 1,
  751. // };
  752. // var effect = 'none';
  753. // if (effect !== 'none') {
  754. // options.effect = {key: effect, value: 1};
  755. // if (effect === 'image') {
  756. // options.background = [colorBack, effectImg];
  757. // }
  758. // }
  759. // options.reuseCanvas = canvas;
  760. // canvas = qrgen.canvas(options);
  761. // $scope.q.appendChild(canvas);
  762. // })
  763. // }else{
  764. // }
  765. // },500);
  766. // $scope.ok = function() {
  767. // $modalInstance.close($scope.entity);
  768. // };
  769. // $scope.cancel = function() {
  770. // $modalInstance.dismiss('cancel');
  771. // };
  772. // },
  773. // size:'lg',
  774. // resolve: {
  775. // $scope: function(){
  776. // return $scope;
  777. // }
  778. // }
  779. // })
  780. // };
  781. var defaultFilterData = {
  782. // "assignee":2,
  783. // "sign":"basehwitndl",
  784. "idx":0,
  785. "sum":mun
  786. };
  787. $scope.memoryfilterData = {
  788. // "assignee":2,
  789. // "sign":"basehwitndl",
  790. "idx":0,
  791. "sum":mun
  792. }
  793. $scope.ldloading = {};
  794. var pdKey = $state.current.pdKey;
  795. $scope.refreshData = function(style,filterData){
  796. if(angular.isUndefined(filterData)){
  797. filterData = defaultFilterData;
  798. }
  799. $scope.myData = [];
  800. // $scope.gridOptions['sum']=filterData.sum;
  801. api_cmdb.query(filterData).then(function(data){
  802. // $scope.callsPending--;
  803. var myData = Restangular.stripRestangular(data);
  804. $scope.gridOptions['totalItems'] = data.total;
  805. $scope.myData = myData.data.node;
  806. },function(){
  807. });
  808. };
  809. $scope.refreshData('expand-right', defaultFilterData);
  810. }]);
  811. app.controller('MeansOperCtrl', ['$rootScope','$http', '$scope', function ($rootScope,$http, $scope) {
  812. // console.log('$rootScope.user3='+JSON.stringify($scope.item));
  813. // if( $scope.item.handlerUser!=null){
  814. // if ($rootScope.user.id==$scope.item.handlerUser.id) {
  815. // $scope.item.chaozuoPower=true;
  816. // }
  817. // }
  818. $scope.look = function(){
  819. $scope.colobject.grid.appScope.lookFunction($scope.item);
  820. // console.log('$scope.item='+JSON.stringify($scope.item));
  821. }
  822. $scope.edit = function(){
  823. $scope.colobject.grid.appScope.selectRowFunction($scope.item);
  824. console.log('$scope.item='+JSON.stringify($scope.item));
  825. // $scope.doEdit($scope.item.id);
  826. }
  827. }]);
  828. app.directive('meansoperator', function () {
  829. return {
  830. restrict: 'E',
  831. scope:
  832. {
  833. item: '=',
  834. colobject: '='
  835. },
  836. controller: 'MeansOperCtrl',
  837. template: '<div class="links cl-effect-1">' +
  838. '<a ng-click="look()" tooltip="查看" tooltip-placement="left"><i class="ti-eye"></i></a>'+
  839. '<a ng-click="edit()" tooltip="修改" tooltip-placement="left"><i class="fa fa-pencil-square-o"></i></a>'+
  840. '</div>'
  841. };
  842. });