sysShareRightsController.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. var shareRightsApp = angular.module('shareRightsApp', [ 'baseServices' ]);
  2. shareRightsApp.controller('shareRightsCtrl',['$scope','BaseService','ShareRightsService','$timeout','$filter',function($scope,BaseService,ShareRightsService,$timeout,$filter){
  3. var service = ShareRightsService;
  4. service.init($scope);
  5. $scope.resetShareItem = function(){
  6. $scope.shareRights.shareItem = {
  7. type:$scope.shareRights.shareItem.type
  8. }
  9. }
  10. $scope.setShareRule = function(index){
  11. if($scope.shareRights.isAll==1){
  12. $.ligerDialog.warn('全部分享模式下不需要设置此项',"提示信息");
  13. return ;
  14. }
  15. if(!$scope.shareRights.source.ids){
  16. $.ligerDialog.warn('请选择具体的【共享原】',"提示信息");
  17. return;
  18. }
  19. switch($scope.shareRights.shareItem.type){
  20. case "roleDF":
  21. case "formDTDF":
  22. case "onLineFormDF":
  23. case "offLineFormDF":
  24. service.setShareRule($scope,index);
  25. break;
  26. }
  27. };
  28. $scope.save = function(){
  29. if($scope.form.valid()){
  30. if($scope.shareRights.isAll==1)
  31. $scope.shareRights.shares = "";
  32. if(!$scope.shareRights.source.ids){
  33. $.ligerDialog.warn('请选择具体的【共享原】',"提示信息");
  34. return;
  35. }
  36. if(!$scope.shareRights.shareItem.names){
  37. $.ligerDialog.warn('请选择具体的【共享条目】',"提示信息");
  38. return;
  39. }
  40. if(!$scope.shareRights.target.ids){
  41. if($scope.shareRights.target.v!='everyone'&&$scope.shareRights.target.v!='script'){
  42. $.ligerDialog.warn('请选择具体的【共享目标】',"提示信息");
  43. return;
  44. }
  45. }
  46. $scope.shareRights.source = JSON.stringify($scope.shareRights.source);
  47. $scope.shareRights.target = JSON.stringify($scope.shareRights.target);
  48. service.delShareItem($scope.shareRights.shareItem,true);
  49. $scope.shareRights.shareItem.ids = $scope.shareRights.shareItem.ids.join(",");
  50. $scope.shareRights.shareItem.names = $scope.shareRights.shareItem.names.join(",");
  51. $scope.shareRights.shareItem = JSON.stringify($scope.shareRights.shareItem);
  52. BaseService.post(__ctx +'/platform/share/sysShareRights/save.ht',{"sysShareRights":JSON.stringify($scope.shareRights)},function(data){
  53. if(data.result){
  54. $.ligerDialog.confirm(data.message + " ,是否继续操作", "提示信息",function(rtn) {
  55. if (rtn) {
  56. window.location.href = window.location.href;
  57. } else {
  58. window.location.href = __ctx+"/platform/share/sysShareRights/list.ht";
  59. }
  60. });
  61. }else
  62. $.ligerDialog.error(data.message,"提示信息");
  63. });
  64. }else
  65. $.ligerDialog.error("表单验证不成功","提示信息");
  66. };
  67. $scope.remove = function(i,$event){
  68. $scope.shareRights.shareItem.names.splice(i,1);
  69. var id = $scope.shareRights.shareItem.ids.splice(i,1);
  70. delete $scope.shareRights.shareItem["v_"+id]
  71. $event.stopPropagation();
  72. }
  73. $scope.chooseShareObject =function(){
  74. if(!$scope.shareRights.source||!$scope.shareRights.source.ids){
  75. $.ligerDialog.warn('请先设置【共享原】',"提示信息");
  76. return;
  77. }
  78. if(!$scope.shareRights.shareItem.type){
  79. $.ligerDialog.warn('请先设置【共享类型】',"提示信息");
  80. return;
  81. }
  82. switch($scope.shareRights.shareItem.type){
  83. case "formDTDF":
  84. case "onLineFormDF":
  85. FormDialog({
  86. condition:"?dataTemplate=true&isMutl=true",
  87. callback : function(ids, names, tableId) {
  88. service.getPermissionData(ids,$scope);
  89. $scope.shareRights.shareItem['ids']=ids.split(",");
  90. $scope.shareRights.shareItem['names']=names.split(",");
  91. $scope.$digest();
  92. }});
  93. break;
  94. case "offLineFormDF":
  95. CommonDialog("bdsjqxgx",function(data){
  96. //data返回 Object { ORGNAME = "参数值", ORGTYPE = "参数值"},多个则返回 Object 数组
  97. var ids = [],names=[];
  98. for(var i in data){
  99. if(data[i].id){
  100. ids.push(data[i].id);
  101. names.push(data[i].tablename);
  102. }
  103. }
  104. service.getPermissionData(ids.join(","),$scope);
  105. $scope.shareRights.shareItem['ids']=ids;
  106. $scope.shareRights.shareItem['names']=names;
  107. $scope.$digest();
  108. });
  109. break;
  110. }
  111. }
  112. }]);
  113. shareRightsApp.controller('shareItemCtrl',['$scope','BaseService','ShareRightsService','$timeout','$filter','$compile',function($scope,BaseService,ShareRightsService,$timeout,$filter,$compile){
  114. var v = dialog.get('v'),service = ShareRightsService;
  115. $scope.display = service.mergeField(v?v.display:"",service.parseJson(display));//v?v.display:service.parseJson(display);
  116. $scope.manager = service.mergeField(v?v.manager:"",service.parseJson(manager));//v?v.manager:service.parseJson(manager);
  117. $scope.filter =service.mergeField(v?v.filter:"",service.parseJson(filter));//v?v.filter:service.parseJson(filter);
  118. $scope.exports = service.mergeField(v?v.exports:"",service.parseJson(exports));//v?v.exports:service.parseJson(exports);
  119. var tab = "";
  120. $scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
  121. if(!tab){
  122. tab =$("#tab").ligerTab({});
  123. $('[type="checkbox"]').each(function(){
  124. var val = getValByScope($(this));
  125. if(val==true||val=="true")
  126. $(this)[0].checked = "checked";
  127. })
  128. }
  129. });
  130. $scope.isEmpty = function(o){
  131. return $.isEmptyObject(o);
  132. }
  133. $scope.save = function(){
  134. dialog.get('sucCall')({
  135. display:$scope.display,
  136. manager:$scope.manager,
  137. filter :$scope.filter ,
  138. exports:$scope.exports
  139. });
  140. dialog.close();
  141. }
  142. }]);
  143. shareRightsApp.service('ShareRightsService', ['$http','$jsonToFormData','BaseService', function($http,$jsonToFormData,BaseService) {
  144. var service = {
  145. init:function($scope){
  146. $scope.shareRights = sr?parseToJson(sr.replaceAll("\"{","\'{").replaceAll("}\"","}\'")):{};
  147. $scope.allTypes = parseToJson(allTypes);
  148. if(!$.isEmptyObject($scope.shareRights)&&$scope.shareRights.shareItem){
  149. $scope.shareRights.source = parseToJson($scope.shareRights.source);
  150. $scope.shareRights.target = parseToJson($scope.shareRights.target);
  151. $scope.shareRights.shareItem = parseToJson($scope.shareRights.shareItem);
  152. $scope.shareRights.shareItem.ids = $scope.shareRights.shareItem.ids.split(",");
  153. $scope.shareRights.shareItem.names = $scope.shareRights.shareItem.names.split(",");
  154. }
  155. $scope.form = $("#sysShareRightsForm").form();
  156. window.setTimeout(function(){
  157. $scope.form.valid();
  158. },1000);
  159. },
  160. parseJson:function(str) {
  161. var json = parseToJson(str.replaceAll("\"{","\'{").replaceAll("}\"","}\'"));
  162. return this.delFalseEl(json);
  163. },
  164. delFalseEl : function(json){
  165. for(var i in json ){
  166. json[i] = typeof(json[i])=='object'?json[i]:parseToJson(json[i]);
  167. if(json[i].r == false||json[i].r == "false")
  168. delete json[i]
  169. }
  170. return json;
  171. },
  172. delAllFalseEl : function(data){
  173. for(var i in data){
  174. this.delFalseEl(data[i]);
  175. }
  176. },
  177. delShareItem : function(shareItem,notAll){
  178. var ids = shareItem.ids;
  179. for(var i in shareItem){
  180. if(i.indexOf("v_")==0){
  181. if(notAll){
  182. var id = i.substring(2);
  183. if($.inArray(id,ids)==-1)
  184. delete shareItem[i]
  185. }else
  186. delete shareItem[i]
  187. }
  188. }
  189. },
  190. getSourceType:function(v){
  191. var sourceType = 0;
  192. switch(v){
  193. case "user":
  194. sourceType = 0;
  195. break;
  196. case "role":
  197. sourceType = 1;
  198. break;
  199. case "org":
  200. sourceType = 2;
  201. break;
  202. case "pos":
  203. sourceType = 3;
  204. break;
  205. }
  206. return sourceType;
  207. },
  208. getPermissionData:function(ruleIds,$scope){
  209. var params = {
  210. ruleIds:ruleIds,
  211. ids:$scope.shareRights.source.ids,
  212. sourceType:service.getSourceType($scope.shareRights.source.v),
  213. shareType:$scope.shareRights.shareItem.type
  214. }
  215. BaseService.post(__ctx +'/platform/share/sysShareRights/getPermissionByRuleIds.ht',params,function(data){
  216. $scope._permissions = $scope._permissions || {};
  217. if(typeof data == "string")
  218. return;
  219. for(var i in data){
  220. service.delAllFalseEl(data[i]);
  221. $scope._permissions[i] = $.extend( true, {},data[i]);
  222. $scope._permissions[i].ids = $scope.shareRights.source.ids;
  223. if(!$scope.shareRights.shareItem[i]){
  224. $scope.shareRights.shareItem[i] = $.extend( true, {},data[i]);
  225. $scope.shareRights.shareItem[i].ids = $scope.shareRights.source.ids;
  226. }
  227. }
  228. });
  229. },
  230. setShareRule : function($scope,index){
  231. var service = this ,
  232. ruleId = $scope.shareRights.shareItem.ids[index],
  233. params = {
  234. ruleId:ruleId,
  235. ids:$scope.shareRights.source.ids,
  236. sourceType:service.getSourceType($scope.shareRights.source.v),
  237. shareType:$scope.shareRights.shareItem.type,
  238. hasPermission : false,
  239. callBack : function(obj){
  240. service.delShareItem($scope.shareRights.shareItem);
  241. $scope.shareRights.shareItem["v_"+ruleId] = obj;
  242. $scope.shareRights.shareItem["v_"+ruleId].ids = $scope.shareRights.source.ids;
  243. }
  244. }
  245. if($scope.shareRights.shareItem["v_"+ruleId]){
  246. if($scope.shareRights.shareItem["v_"+ruleId].ids == params.ids)
  247. params.v_ = $.extend( true, {},$scope.shareRights.shareItem["v_"+ruleId]);
  248. }else if($scope._permissions){
  249. if($scope._permissions["v_"+ruleId].ids == params.ids)
  250. params.v_ = $.extend( true, {},$scope._permissions["v_"+ruleId]);
  251. }
  252. if(params.v_)
  253. params.hasPermission = true;
  254. var url= __ctx +'/platform/share/sysShareRights/items.ht?ruleId='+params.ruleId+"&ids="+params.ids+"&sourceType="+params.sourceType+"&shareType="+params.shareType+"&hasPermission="+params.hasPermission;
  255. DialogUtil.open({
  256. title : "共享条目",
  257. url : url,
  258. height : 350,
  259. width : 550,
  260. isResize : false,
  261. pwin : window,
  262. v : params.v_,
  263. sucCall:params.callBack
  264. });
  265. },
  266. mergeField : function(source,target){
  267. if(!source) return target;
  268. for(var i in target){
  269. if(source[i]){
  270. source[i].desc=target[i].desc;
  271. }else
  272. source[i] = target[i];
  273. }
  274. for(var i in source)
  275. if(!target[i]) delete source[i];
  276. return source;
  277. }
  278. }
  279. return service;
  280. }])