knowledgecateCtrl.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. app.controller('knowledgecateCtrl', ["$rootScope","$scope", "$state", "$timeout", "$interval", "SweetAlert", "$modal", "FileUploader", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular","api_bpm_data","api_solution", function ($rootScope, $scope, $state, $timeout, $interval, SweetAlert, $modal, FileUploader, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_bpm_data, api_solution) {
  2. $scope.langs=i18nService.getAllLangs();
  3. $scope.lang = 'zh-cn';
  4. var loginUser = $rootScope.user;
  5. // $scope.gridOptions = {};
  6. // $scope.gridOptions.data = 'myData';
  7. // $scope.gridOptions.enableColumnResizing = true;
  8. // $scope.gridOptions.enableFiltering = false;
  9. // $scope.gridOptions.enableGridMenu = false;
  10. // $scope.gridOptions.enableRowSelection = true;
  11. // $scope.gridOptions.showGridFooter = true;
  12. // $scope.gridOptions.showColumnFooter = false;
  13. // $scope.gridOptions.fastWatch = true;
  14. // $scope.gridOptions.useExternalPagination = true;
  15. // $scope.gridOptions.paginationPageSizes = [10];
  16. // $scope.gridOptions.paginationPageSize = 10;
  17. // $scope.gridOptions.multiSelect = true;
  18. var apple_selected, tree, treedata_avm, treedata_geography;
  19. //$scope.selectedTreeNode = {};ssss
  20. var i=0;
  21. $scope.out=[];
  22. $scope.outdata=[];
  23. var systemtype=[];
  24. $scope.addcate=false;
  25. $scope.changecate=false;
  26. // $scope.refreshListData = function(){
  27. // var data ={"idx":0,"sum":1000};
  28. // api_bpm_data.fetchDataList('incidentcategory',data).then(function(response){
  29. // if(response){
  30. // if(response.status=200){
  31. // $scope.outdata = response.list;
  32. // }
  33. // }
  34. // })
  35. // }
  36. // $scope.refreshListData();
  37. $scope.addType = function(element){
  38. $scope.addcate=true
  39. $scope.changecate=false
  40. // var modalInstance = $modal.open({
  41. // templateUrl: 'assets/views/system/tpl/systemclose.html',
  42. // controller: function($scope, $modalInstance, api_bpm_data){
  43. // // api_bpm_data.fetchDataList('closecode',filterData).then(function(data){
  44. // // var myData = Restangular.stripRestangular(data);
  45. // // }
  46. // }
  47. // });
  48. }
  49. $scope.remove = function(element){
  50. var filedata=[element.id]
  51. api_solution.rmModels('solutionType',filedata).then(function(response){
  52. if(response){
  53. if(response.status==200){
  54. $scope.try_async_load()
  55. SweetAlert.swal({
  56. title:"删除成功!",
  57. type:"success"
  58. },function(){
  59. $scope.$apply($scope.my_data);
  60. })
  61. }else{
  62. SweetAlert.swal({
  63. title:"删除失败!",
  64. text: response.msg+"!",
  65. type:"error"
  66. })
  67. }
  68. }
  69. });
  70. }
  71. var childdata={} ;
  72. $scope.subdata={};
  73. $scope.my_tree_handler = function (branch) {
  74. $scope.changecate=true;
  75. $scope.addcate=false;
  76. // console.log($scope.tree_data)
  77. filterData.treeIds = branch.id;
  78. for(var i=0;i<$scope.parentdata.length;i++){
  79. if(branch.id==$scope.parentdata[i].id){
  80. $scope.subdata=$scope.parentdata[i];
  81. }
  82. }
  83. // console.log($scope.parentdata)
  84. // $scope.subdata=branch
  85. // for(var i=0;i<$scope.parentdata.length;i++){
  86. // for(var j=0;j<$scope.parentdata.length;j++){
  87. // if($scope.parentdata[i].pid!=0&&$scope.parentdata[i].id==branch.id){
  88. // if($scope.parentdata[i].pid==$scope.parentdata[j].id){
  89. // $scope.subdata['parent']=$scope.parentdata[j];
  90. // }
  91. // }
  92. // }
  93. // }
  94. // if(branch.children.length>0){
  95. // // angular.forEach($scope.parentdata,function(item, index){
  96. // // if(branch.id==item.id){
  97. // // $scope.subdata['parent']=item;
  98. // // }
  99. // // });
  100. // for(var i=0;i<$scope.parentdata.length;i++){
  101. // if(branch.children.id){
  102. // }
  103. // }
  104. // }else{
  105. // }
  106. $scope.selectedTreeNode = branch;
  107. $scope.output = branch ;
  108. convertchildToTree(branch);
  109. // console.log($scope.subdata)
  110. var eqflag = false;
  111. angular.forEach($scope.outdata,function(item){
  112. if(item.id==$scope.output.id) eqflag = true;
  113. });
  114. if(eqflag){
  115. }else{
  116. $scope.outdata.push({
  117. 'name': $scope.output.label,
  118. 'id' : $scope.output.id
  119. });
  120. var postData = {
  121. typeList:[]
  122. };
  123. if($scope.outdata.length>0){
  124. angular.forEach($scope.outdata, function(data){
  125. postData.typeList.push({id:data.id});
  126. })
  127. }
  128. // api_solution.findSolutionTypesUser(postData).then(function(response){
  129. // //Restangular.
  130. // $scope.userdata = response.data;
  131. // });
  132. }
  133. };
  134. function convertchildToTree(datum){
  135. // $scope.subdata={};
  136. // console.log($scope.parentdata)
  137. // if(datum.children.length==0){
  138. // angular.forEach($scope.parentdata,function(item, index){
  139. // if(datum.id==item.id) return $scope.subdata=item;
  140. // });
  141. // }else{
  142. // $scope.subdata={id:datum.id,typeName:datum.label}
  143. // }
  144. }
  145. function convertListToTree(data, treeMap){
  146. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  147. var root = null; //Initially set our loop to null
  148. var parentNode = null;
  149. //loop over data
  150. for(var i = 0; i < data.length; i++) {
  151. var datum = data[i];
  152. //each node will have children, so let's give it a "children" poperty
  153. datum.children = [];
  154. //add an entry for this node to the map so that any future children can
  155. //lookup the parent
  156. idToNodeMap[datum.id] = datum;
  157. //Does this node have a parent?
  158. if(typeof datum.parent === "undefined" || datum.parent == null) {
  159. //Doesn't look like it, so this node is the root of the tree
  160. root = datum;
  161. treeMap[datum.id] = root;
  162. } else {
  163. //This node has a parent, so let's look it up using the id
  164. parentNode = idToNodeMap[datum.parent];
  165. //We don't need this property, so let's delete it.
  166. delete datum.parent;
  167. //Let's add the current node as a child of the parent node.
  168. parentNode.children.push(datum);
  169. }
  170. }
  171. return root;
  172. }
  173. function convertParentToChildList(data){
  174. var treeMap = {};
  175. var list=[];
  176. convertListToTree(data, treeMap);
  177. angular.forEach(treeMap,function(item){
  178. list.push(item);
  179. });
  180. return list;
  181. }
  182. // $scope.onFilterCallback = function(item){
  183. // $scope.addcategory.parent=item.label;
  184. // }
  185. $scope.parentdata={};
  186. $scope.try_async_load = function () {
  187. $scope.my_data = [];
  188. $scope.doing_async = true;
  189. var data ={"idx":0,"sum":1000};
  190. api_solution.findSolutionTypeActions(loginUser.id).then(function(response){
  191. if(response&&response.status==200){
  192. var data = response.data;
  193. // console.log('data='+JSON.stringify(data));
  194. var objects = [];
  195. $scope.parentdata=data;
  196. for (var i = 0; i < data.length; i++) {
  197. var object = {};
  198. object.id = data[i].id;
  199. if(data[i].pid != 0){
  200. object.parent = data[i].pid;
  201. }
  202. // if (object.parent == 0) {
  203. // object.parent = "#";
  204. // }
  205. object.label = data[i].typeName;
  206. object.actions = data[i].actions; //权限部分
  207. object.group = "1";
  208. object.user = "2";
  209. object.state = {
  210. "opened": true
  211. };
  212. object.typeName = "type";
  213. // if()
  214. // if (object.actions.indexOf("2") >= 0) { //知识库类型 具有增加权限--系统管理员
  215. // $scope.showAddSolutionType = true;
  216. // }
  217. // if (object.actions.indexOf("5") >= 0) { //知识库类型 具有授权权限--系统管理员
  218. // $scope.showReviewKnowledgeType = true;
  219. // }
  220. objects.push(object);
  221. }
  222. $scope.my_data = convertParentToChildList(objects);
  223. $scope.tree_data = angular.copy($scope.my_data);
  224. if($scope.my_data.length>0){
  225. $scope.doing_async = false;
  226. }
  227. }else{
  228. SweetAlert.swal({
  229. title: "系统错误!",
  230. text: "请刷新重试!",
  231. type: "error"
  232. });
  233. }
  234. });
  235. };
  236. // $scope.parentpid={}
  237. // $scope.onFilterCallback = function(item){
  238. // $scope.parentpid=item
  239. // }
  240. $scope.cancel = function() {
  241. $scope.userdata=[];
  242. $scope.outdata=[];
  243. };
  244. //修改
  245. $scope.submitchange= function(formdata) {
  246. angular.forEach($scope.my_data, function(data){
  247. if(formdata.id==data.id){
  248. data.category=formdata.category;
  249. }
  250. })
  251. if(angular.isDefined(formdata.parent_uid)){
  252. filedata={'solutionType':{"id":formdata.id,'typeName':formdata.label}}
  253. }else{
  254. filedata={'solutionType':{"id":formdata.id,"pid":0,'typeName':formdata.label}};
  255. }
  256. // var paret="";
  257. // if(angular.isDefined(formdata.parent)){
  258. // paret=formdata.parent.id
  259. // filedata={"incidentcategory":{"id":formdata.id,"category":formdata.category,"parent":{"id":paret}}}
  260. // }else{filedata={"incidentcategory":{"id":formdata.id,"category":formdata.category}}}
  261. api_solution.updModel('solutionType',filedata).then(function(response){
  262. if(response){
  263. if(response.status==200){
  264. $scope.try_async_load()
  265. SweetAlert.swal({
  266. title:"修改成功!",
  267. type:"success"
  268. },function(){
  269. $scope.$apply($scope.my_data);
  270. })
  271. }else{
  272. SweetAlert.swal({
  273. title:"修改失败!",
  274. type:"error"
  275. })
  276. }
  277. }
  278. });
  279. };
  280. //新增
  281. $scope.submitadd= function(formdata) {
  282. var paret={}
  283. var filedata={}
  284. if(angular.isDefined(formdata.parent)){
  285. filedata={'solutionType':{"pid":formdata.parent.id,'typeName':formdata.category}}
  286. }else{
  287. filedata={'solutionType':{"pid":0,'typeName':formdata.category}};
  288. }
  289. // var filedata={"incidentcategory":{"category":formdata.category,"parent":{"id":paret}}}
  290. api_solution.addModel('solutionType',filedata).then(function(response){
  291. if(response){
  292. if(response.status==200){
  293. $scope.userdata=[];
  294. $scope.outdata=[];
  295. $scope.try_async_load();
  296. SweetAlert.swal({
  297. title:"增加成功!",
  298. type:"success"
  299. })
  300. }else{
  301. SweetAlert.swal({
  302. title:"增加失败!",
  303. type:"error"
  304. })
  305. }
  306. }
  307. });
  308. };
  309. $scope.try_async_load();
  310. // $scope.ldloading={};
  311. var filterData = {
  312. key:'null',
  313. status:0,
  314. pageIndex:0,
  315. pageSum:10,
  316. //treeIds:'[]',
  317. userId:loginUser.id
  318. }
  319. }]);