app.js 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104
  1. var baseApp = angular.module('baseApp',['components','pascalprecht.translate']);
  2. /**
  3. * 国际化配置
  4. */
  5. baseApp.config(['$translateProvider',function($translateProvider){
  6. $translateProvider.useLoader('translateCustomLoader')
  7. .preferredLanguage(__lang)
  8. .fallbackLanguage(__lang);
  9. }])
  10. /**
  11. * 转换成html
  12. * 例子
  13. * <span ng-bind-html="item.status | trust_as_html"></span>
  14. */
  15. .filter("trust_as_html",['$sce',function($sce){
  16. return function(text){
  17. return $sce.trustAsHtml(text);
  18. }
  19. }])
  20. /**
  21. * 转换附件格式的显示信息
  22. * 例子
  23. * <span ng-bind-html="item.status | trust_as_html"></span>
  24. */
  25. .filter("turn_to_subdata",['$sce',function($sce){
  26. return function(text){
  27. if(text&&text.indexOf(HT.FILE_QUOTES)>=0){
  28. var jsonArr=eval(text.replaceAll(HT.FILE_QUOTES,"\""));
  29. text="";
  30. for(var i=jsonArr.length;i--;){
  31. text+=String.format('<span onclick="alert({0});">{1}</span>',"'"+jsonArr[i].id+"'",jsonArr[i].name);
  32. }
  33. }
  34. return $sce.trustAsHtml(text);
  35. }
  36. }])
  37. /**
  38. * 页面日期格式
  39. * 例子:
  40. * 1.{item.createtime |date_format}} 默认的
  41. * 2.{item.createtime |date_format:'yyyy-MM-dd'}} 按指定格式
  42. */
  43. .filter("date_format",function(){
  44. return function(text,format){
  45. return HT.date(text,format);
  46. }
  47. })
  48. //流程任务审批
  49. .controller('taskInfoCtrl',['$scope','baseService',function($scope,baseService){
  50. //表单流程类型:0.新建流程表单、1.任务流程表单、2.流程实例表单
  51. var formFlowType = HT.getStorage("formFlowType"),
  52. defId = HT.getStorage("defId"),
  53. taskId = HT.getStorage("taskId"),
  54. runId = HT.getStorage("runId"),
  55. //所有按钮
  56. allButtons = {'1':{'type':'1','name':$i18n$.FLOW.COMPLETE,'icon':'icon-checkmark'},
  57. '2':{'type':'2','name':$i18n$.FLOW.OPPOSE,'icon':'icon-mail-reply'},
  58. '3':{'type':'3','name':$i18n$.FLOW.ABSTENT,'icon':'icon-minus-square'},
  59. '5':{'type':'5','name':$i18n$.FLOW.BACK,'icon':'icon-arrow-back'},
  60. '6':{'type':'6','name':$i18n$.FLOW.ASSIGNEE,'icon':'icon-arrow-forward'},
  61. '16':{'type':'16','name':$i18n$.FLOW.COMMU,'icon':'icon-comment'},
  62. '18':{'type':'18','name':$i18n$.FLOW.FEEDBACK,'icon':'icon-back'},
  63. "42":{type:"42",icon:"icon-bell-o",name:$i18n$.FLOW.REMINDER},
  64. "43":{type:"43",icon:"icon-arrow-loop-outline",name:$i18n$.FLOW.RECOVER},
  65. 'more':{"type":"more","name":$i18n$.FLOW.MORE,"icon":"icon-eject2","subbnt":[]}};
  66. $scope.buttons = [];
  67. $scope.showfooter=false;
  68. $scope.initButtons = function(){
  69. var detail_type = HT.getStorage("detail_type",true),
  70. buttonAry =[];
  71. if (detail_type == "undertake") {
  72. return;
  73. }else if(detail_type=="launch"){
  74. if(HT.getStorage("flow_status",true)!="1") return;
  75. var b= HT.getStorage("buttonsAry");
  76. b = b.split(",");
  77. angular.forEach(b, function(item){
  78. if(item==42||item==43)
  79. buttonAry.push(item);
  80. });
  81. if(buttonAry.length <= 0)
  82. buttonAry =[43];
  83. }else{
  84. buttonAry= HT.getStorage("buttonsAry");
  85. buttonAry = buttonAry.split(",");
  86. }
  87. var ary = [],
  88. moreBnt = {};
  89. angular.forEach(buttonAry, function(item){
  90. var button = allButtons[item];
  91. if (!button)
  92. return true;
  93. ary.push(button);
  94. // if(ary.length < 3){
  95. // ary.push(button);
  96. // }
  97. // else if(ary.length == 3){
  98. // moreBnt = {"type":"more","name":"更多","icon":"icon-eject2","subbnt":[]};
  99. // ary.push(moreBnt);
  100. // }
  101. // else{
  102. // moreBnt.subbnt.push(button);
  103. // }
  104. });
  105. $scope.buttons = ary;
  106. if($scope.buttons.length>0){
  107. $scope.showfooter=true;
  108. $scope.$digest();
  109. HT.changePopHeight("form",-$$("footer").offsetHeight);
  110. }
  111. };
  112. $scope.changeTap = function(button){
  113. switch(button.type){
  114. case "1":
  115. HT.setStorage("flow_type",1);
  116. break;
  117. case "2":
  118. HT.setStorage("flow_type",2);
  119. break;
  120. case "3":
  121. HT.setStorage("flow_type",3);
  122. break;
  123. case "4":
  124. HT.setStorage("flow_type",5);
  125. break;
  126. case "5":
  127. HT.setStorage("flow_type",5);
  128. break;
  129. case "6":
  130. HT.setStorage("flow_type",6);
  131. break;
  132. case "16":
  133. HT.setStorage("flow_type",16);
  134. break;
  135. case "18":
  136. HT.setStorage("flow_type",18);
  137. break;
  138. case "42":
  139. HT.setStorage("flow_type",42);
  140. break;
  141. case "43":
  142. HT.setStorage("flow_type",43);
  143. break;
  144. }
  145. uexWindow.evaluatePopoverScript("","form","isFormValid()");
  146. };
  147. }])
  148. .controller('flowCtrl',['$scope','baseService',function($scope,baseService){
  149. $scope.flowType=HT.getStorage("flow_type");
  150. $scope.title=$i18n$.FLOW.COMPLETE;
  151. $scope.param ={};
  152. $scope.showWrongMsg=function(){
  153. var msg=HT.getStorage("wrongmsg",true);
  154. baseService.openDialog({
  155. title: $i18n$.COMMON.ERROR_MSG,
  156. html: msg,
  157. digest:true,
  158. marTop:30,
  159. buttons: [{
  160. label: $i18n$.COMMON.OK,
  161. callback: function(){
  162. baseService.closeDialog();
  163. }
  164. }]
  165. });
  166. }
  167. switch($scope.flowType){
  168. case "1" : //同意
  169. $scope.title=$i18n$.FLOW.COMPLETE;
  170. $scope.onlymsg=true;
  171. $scope.opinionValidate="";
  172. $scope.param.voteAgree =1;
  173. $scope.param.back =0;
  174. $scope.param.msg =$i18n$.FLOW.APPROVAL_SUCCESS;
  175. break;
  176. case "2" :
  177. $scope.title=$i18n$.FLOW.OPPOSE;
  178. $scope.onlymsg=true;
  179. $scope.param.voteAgree =2;
  180. $scope.param.back =0;
  181. $scope.param.msg =$i18n$.FLOW.OPPOSE_SUCCESS;
  182. break;
  183. case "3" ://弃权
  184. $scope.title=$i18n$.FLOW.ABSTENT;
  185. $scope.onlymsg=true;
  186. $scope.param.voteAgree =0;
  187. $scope.param.back =0;
  188. $scope.param.msg =$i18n$.FLOW.ABSTENT_SUCCESS;
  189. break;
  190. case "5" ://驳回都是驳回发起人
  191. $scope.title=$i18n$.FLOW.BACK;
  192. $scope.onlymsg=true;
  193. $scope.param.voteAgree =3;
  194. $scope.param.back =2;
  195. $scope.param.msg =$i18n$.FLOW.BACK_SUCCESS;
  196. break;
  197. case "16" : //沟通
  198. $scope.title=$i18n$.FLOW.COMMU;
  199. $scope.name=$i18n$.FLOW.COMMUNICATOR;
  200. $scope.reasontitle=$i18n$.FLOW.COMMU_REASON;
  201. $scope.reasonplaceholder=$i18n$.FLOW.ENTER_COMMU_REASON_PLEASE;
  202. $scope.onlymsg=false;
  203. $scope.param.voteAgree =15;
  204. $scope.param.msg =$i18n$.FLOW.COMMU_SUCCESS;
  205. // $scope.param.cmpNames = "万年飞";
  206. // $scope.param.cmpIds = "130000015589254";
  207. break;
  208. case "18" : //沟通反馈
  209. $scope.title=$i18n$.FLOW.FEEDBACK;
  210. $scope.reasontitle=$i18n$.FLOW.FEEDBACK_OPINION;
  211. $scope.reasonplaceholder=$i18n$.FLOW.ENTER_FEEDBACK_OPINION_PLEASE;
  212. $scope.onlymsg=true;
  213. $scope.param.voteAgree =20;
  214. $scope.param.msg =$i18n$.FLOW.FEEDBACK_SUCCESS;
  215. // $scope.param.cmpNames = "万年飞";
  216. // $scope.param.cmpIds = "130000015589254";
  217. break;
  218. case "6" ://转办
  219. $scope.title=$i18n$.FLOW.ASSIGNEE;
  220. $scope.name=$i18n$.FLOW.ASSIGNEES;
  221. $scope.reasontitle=$i18n$.FLOW.ASSIGNEE_REASON;
  222. $scope.reasonplaceholder=$i18n$.FLOW.ENTER_ASSIGNEE_REASON_PLEASE;
  223. $scope.onlymsg=false;
  224. $scope.param.voteAgree =21;
  225. $scope.param.msg =$i18n$.FLOW.ASSIGNEE_SUCCESS;
  226. // $scope.param.cmpNames = "郭梦恬";
  227. // $scope.param.cmpIds = "10000000571790";
  228. break;
  229. case "42"://催办
  230. $scope.title=$i18n$.FLOW.REMINDER;
  231. $scope.onlymsg=true;
  232. $scope.param.voteAgree =42;
  233. // $scope.param.back =0;
  234. $scope.param.msg =$i18n$.FLOW.REMINDER_SUCCESS;
  235. break;
  236. case "43" ://撤销
  237. $scope.title=$i18n$.FLOW.RECOVER;
  238. $scope.onlymsg=true;
  239. $scope.param.voteAgree =17;
  240. // $scope.param.back =0;
  241. $scope.param.msg =$i18n$.FLOW.RECOVER_SUCCESS;
  242. break;
  243. }
  244. /**
  245. * 保存
  246. */
  247. $scope.save = function (){
  248. switch($scope.flowType){
  249. case "2" :
  250. case "3" ://弃权
  251. case "5" ://驳回都是驳回发起人
  252. if(HT.isEmpty($scope.param.voteContent)){
  253. HT.hideModal();
  254. HT.alert($i18n$.FLOW.INPUT_OPINION);
  255. return false
  256. }
  257. break;
  258. case "16" : //沟通
  259. if(HT.isEmpty($scope.param.cmpIds)){
  260. HT.hideModal();
  261. HT.alert($i18n$.FLOW.SELET_COMM);
  262. return false
  263. }
  264. if(HT.isEmpty($scope.param.voteContent)){
  265. HT.hideModal();
  266. HT.alert($i18n$.FLOW.INPUT_OPINION);
  267. return false
  268. }
  269. break;
  270. case "18" : //沟通反馈
  271. if(HT.isEmpty($scope.param.voteContent)){
  272. HT.hideModal();
  273. HT.alert($i18n$.FLOW.INPUT_OPINION);
  274. return false
  275. }
  276. break;
  277. case "6" ://转办
  278. if(HT.isEmpty($scope.param.cmpIds)){
  279. HT.hideModal();
  280. HT.alert($i18n$.FLOW.SELET_ASSIGNEE);
  281. return false
  282. }
  283. break;
  284. case "42"://催办
  285. if(HT.isEmpty($scope.param.voteContent)){
  286. HT.hideModal();
  287. HT.alert($i18n$.FLOW.INPUT_OPINION);
  288. return false
  289. }
  290. break;
  291. case "43" ://撤销
  292. if(HT.isEmpty($scope.param.voteContent)){
  293. HT.hideModal();
  294. HT.alert($i18n$.FLOW.INPUT_OPINION);
  295. return false
  296. }
  297. break;
  298. }
  299. HT.setStorageJSON("param", $scope.param);
  300. return true;
  301. }
  302. }]
  303. )
  304. //表单form
  305. .controller('formCtrl',['$scope','baseService','$compile','$http',function($scope,baseService,$compile,$http){
  306. //表单流程类型:0.新建流程表单、1.任务流程表单、2.流程实例表单
  307. var formFlowType = HT.getStorage("formFlowType"),
  308. defId = HT.getStorage("defId"),
  309. taskId = HT.getStorage("taskId"),
  310. runId = HT.getStorage("runId"),
  311. toastID = "flow_complete";
  312. actDefId = HT.getStorage("actDefId");
  313. $scope.openSubPopver = function(tagetId){
  314. if($scope.$$childTail.isOnlyRead) return;
  315. HT.openSubPopver(tagetId);
  316. };
  317. $scope.editSubTableCol = function(subTableId,index){
  318. if($scope.$$childTail.isOnlyRead) return;
  319. var tagetScope=HT.$($$(subTableId)).scope();
  320. // tagetScope.item=$scope.sub[subTableId][index];
  321. angular.extend(tagetScope.item,$scope.sub[subTableId][index]);
  322. tagetScope.item.___index=index;
  323. $scope.openSubPopver(subTableId);
  324. };
  325. /**
  326. * 获取新建流程表单
  327. */
  328. $scope.getStartFlowForm = function(){
  329. //1.取得当前的表单ID
  330. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/startFlowForm.ht',
  331. {defId:defId},function(data){
  332. $scope.getFormTempteByData(data);
  333. },{__notshowtoast:true});
  334. }
  335. /**
  336. * 获取任务的表单
  337. */
  338. $scope.getTaskForm = function(){
  339. //1.取得当前的表单ID
  340. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getTaskForm.ht',
  341. {taskId:taskId},function(data){
  342. $scope.getFormTempteByData(data);
  343. },{__notshowtoast:true});
  344. }
  345. /**
  346. * 获取流程实例的表单
  347. */
  348. $scope.getProcessForm = function(){
  349. //1.取得当前的表单ID
  350. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getProcessForm.ht',
  351. {runId:runId},function(data){
  352. $scope.getFormTempteByData(data);
  353. },{__notshowtoast:true});
  354. }
  355. /**
  356. * 通过数据获取表单模板及数据
  357. */
  358. $scope.getFormTempteByData = function(data){
  359. if(!data.success){
  360. HT.$($$("ngNullPage")).children().eq(1).html($i18n$.FORM.BIND_FORM);
  361. uexWindow.evaluateScript("newFlow_add",0,"HT.hideModal()");
  362. return;
  363. }
  364. var mobileFormId = data.mobileFormId;
  365. if(HT.isEmpty(mobileFormId)){//没有取到表单都是实时取表单模板
  366. $scope.formContent = data.template;
  367. $scope.getFormData();
  368. return;
  369. }
  370. //2.如果存在取出模板
  371. $scope.getLocalStorageTemplate(mobileFormId,function(formTemlate){
  372. if(!formTemlate || HT.isEmpty(formTemlate) || formTemlate.length <= 0){
  373. //3.不存在去数据库取
  374. $scope.getFormTempte({mobileFormId:mobileFormId});
  375. }else{
  376. //4.检查模板是否是最新版本
  377. $scope.checkFormVersion({mobileFormId:mobileFormId,formTemlate:formTemlate});
  378. }
  379. });
  380. }
  381. /**
  382. * 检查版本
  383. */
  384. $scope.checkFormVersion = function(conf){
  385. var mobileFormId=conf.mobileFormId,
  386. f = conf.formTemlate,
  387. guid = "",
  388. template ="",
  389. length = 0;
  390. if(f){
  391. guid = f.guid?f.guid:"";
  392. template = f.template;
  393. if(template)
  394. length = template.length;
  395. }
  396. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/checkFormVersion.ht',
  397. {mobileFormId:mobileFormId,guid:guid,length:length},function(data){
  398. if(!data.success){
  399. HT.toast(data.msg);
  400. return;
  401. }
  402. var nguid = data.guid?data.guid:"",
  403. nlength = data.length;
  404. if (nguid != guid || nlength !== length) {//版本错误
  405. $scope.setLocalStorageTemplate(data, mobileFormId);
  406. }else {
  407. $scope.setFormContentAndgetFormData(template);
  408. }
  409. },{__notshowtoast:true});
  410. }
  411. /**
  412. * 获取表单模板
  413. */
  414. $scope.getFormTempte = function(conf){
  415. var mobileFormId=conf.mobileFormId;
  416. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getFormTemplate.ht',
  417. {mobileFormId:mobileFormId},function(data){
  418. if(!data.success){
  419. HT.toast(data.msg);
  420. return;
  421. }
  422. $scope.setLocalStorageTemplate(data,mobileFormId);
  423. },{__notshowtoast:true});
  424. };
  425. /**
  426. * 设置表单页面并且获取数据
  427. * @param {Object} template
  428. */
  429. $scope.setFormContentAndgetFormData = function(template){
  430. $scope.formContent = template;
  431. //取数据
  432. $scope.getFormData();
  433. initHtml();
  434. }
  435. /**
  436. * 根据数据设置模板的缓存
  437. *
  438. */
  439. $scope.setLocalStorageTemplate = function(data,formid){
  440. var template = data.template,
  441. form = {};
  442. form.formid=formid;
  443. form.template = template;
  444. form.guid = data.guid?data.guid:"";
  445. if(HT.isMobile()){//手机
  446. try{
  447. HT.addUpdateCacheTemplate(form,function(data){
  448. $scope.setFormContentAndgetFormData(template);
  449. });
  450. } catch (e) {
  451. $scope.setFormContentAndgetFormData(template);
  452. }
  453. }else{
  454. $scope.setFormContentAndgetFormData(template);
  455. }
  456. }
  457. /**
  458. * 获取缓存的数据
  459. *
  460. */
  461. $scope.getLocalStorageTemplate = function(formid,callback){
  462. if(HT.isMobile()){
  463. try{
  464. HT.getCacheTemplate(formid,function(data){
  465. if (data && data.length > 0) {
  466. data[0].template = data[0].template.replaceAll(HT.FILE_QUOTES,"\"").replaceAll("#@@#","'");
  467. callback(data[0]);
  468. }
  469. else
  470. callback(false);
  471. });
  472. } catch (e) {
  473. callback(false);
  474. }
  475. }else{
  476. //pc存
  477. callback(false);
  478. }
  479. }
  480. /**
  481. * 根据表单的流程类型正在获取表单数据
  482. */
  483. $scope.getFormData = function(){
  484. //取数据
  485. if(formFlowType == 0){
  486. $scope.getStartFlowFormData();
  487. }else if(formFlowType == 1){
  488. $scope.getTaskFormData();
  489. }else if(formFlowType == 2){
  490. $scope.getProcessFormData();
  491. }
  492. }
  493. /**
  494. * 获取新建表单数据
  495. */
  496. $scope.getStartFlowFormData = function(conf){
  497. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getStartFlowData.ht',
  498. {defId:defId},function(data){
  499. if(data.success){
  500. var formData = data.data;
  501. if(HT.isMobile()){
  502. HT.getCacheDraft(defId,function(drafts){
  503. if(drafts&&drafts.length>0){
  504. var draft =drafts[0];
  505. if(!HT.isEmpty(draft) && !HT.isEmpty(draft.data) ){
  506. baseService.openDialog({
  507. title: $i18n$.COMMON.WARN,
  508. html: $i18n$.FLOW.IS_LOAD_DRAFT_DATA,
  509. digest:true,
  510. inline:true,
  511. buttons: [{
  512. label: $i18n$.COMMON.YES,
  513. marTop:30,
  514. forecolor:"red",
  515. callback: function(){
  516. formData = JSON.parse(draft.data);
  517. $scope.updateStartFlowFormData(data,formData);
  518. baseService.closeDialog();
  519. }
  520. },{
  521. label: $i18n$.COMMON.CLEAR,
  522. marTop:30,
  523. callback: function(){
  524. HT.deleteCacheDraft(defId);
  525. baseService.closeDialog();
  526. $scope.updateStartFlowFormData(data,formData);
  527. }
  528. },{
  529. label: $i18n$.COMMON.NO,
  530. callback: function(){
  531. baseService.closeDialog();
  532. $scope.updateStartFlowFormData(data,formData);
  533. }
  534. }]
  535. });
  536. }
  537. }else{
  538. $scope.updateStartFlowFormData(data,formData);
  539. }
  540. });
  541. }else{
  542. //数据
  543. $scope.updateStartFlowFormData(data,formData);
  544. }
  545. }else{
  546. HT.toast(data.msg);
  547. }
  548. },{___colseid:"newFlow_add",__notshowtoast:true});
  549. }
  550. $scope.updateStartFlowFormData = function (data,formData){
  551. //数据
  552. angular.extend($scope,formData);
  553. //权限permission.field.xxx
  554. angular.extend($scope,data.permission);
  555. initHtml();
  556. if(!$scope.$$phase) $scope.$digest();
  557. //联动
  558. HT.gangedSet({scope:$scope,gangedSet:data.gangedSet});
  559. }
  560. /**
  561. * 获取任务表单数据
  562. */
  563. $scope.getTaskFormData = function(conf){
  564. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getTaskFormData.ht',
  565. {taskId:taskId},function(data){
  566. if(data.success){
  567. //数据
  568. angular.extend($scope,data.data);
  569. //权限
  570. angular.extend($scope,data.permission);
  571. //按钮
  572. HT.setStorage("buttonsAry",data.buttons);
  573. angular.extend($scope,data.actDefId);
  574. angular.extend($scope,data.defId);
  575. initHtml();
  576. setTimeout(function(){
  577. uexWindow.evaluateScript("",0,"initButtons()");
  578. },100);
  579. }else{
  580. HT.toastInWindow("", "", data.msg, 2000);
  581. initHtml();
  582. }
  583. },{___colseid:"taskInfo",__notshowtoast:true});
  584. };
  585. /**
  586. * 获取流程实例表单数据
  587. */
  588. $scope.getProcessFormData = function (conf){
  589. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/getProcessFormData.ht',
  590. {runId:runId},function(data){
  591. if(data.success){
  592. //数据
  593. angular.extend($scope,data.data);
  594. //权限
  595. angular.extend($scope,data.permission);
  596. //按钮
  597. HT.setStorage("buttonsAry",data.buttons);
  598. setTimeout(function(){
  599. uexWindow.evaluateScript("",0,"initButtons()");
  600. },100);
  601. }else{
  602. HT.toast(data.msg);
  603. }
  604. },{___colseid:"taskInfo",__notshowtoast:true});
  605. }
  606. //初始表单处理
  607. $scope.init = function(){
  608. if(formFlowType == 0){ //新建流程表单
  609. $scope.getStartFlowForm();
  610. }else if(formFlowType == 1){//任务流程表单
  611. $scope.getTaskForm();
  612. }else if(formFlowType == 2){//流程实例表单
  613. $scope.getProcessForm();
  614. }
  615. }
  616. /**
  617. * 完成任务(包含同意【1,0】、驳回【3,1】、驳回发起人【3,2】、反对【2,0】、弃权【0、0】)
  618. * 沟通【15】、沟通反馈【20】、转办【21】、转办取消【22】、 代理【26】、 取消代理【27】、 撤销 【17】、催办【42】
  619. * 如果一个值的是voteAgree,2个值的第一个是voteAgree,另外一个是back
  620. */
  621. $scope.complete = function(conf){
  622. /**
  623. * @param {} param 参数说明
  624. * voteAgree : 投票状态。如果不传,默认同意(1)
  625. * 0=弃权, 1=同意,2=反对, 3=驳回
  626. * 4=追回, 5=会签通过,6=会签不通过,34=重新提交;
  627. * back : 驳回。如果不传,默认不进行驳回(0)
  628. * 0. 不进行驳回 1,驳回,2,驳回发起人。【沟通、沟通反馈、转办、代理不需要传入这个参数】;
  629. * cmpIds : 沟通人ID或转办人ID或代理人ID;
  630. * cmpNames : 沟通人姓名或转办人姓名或代理人姓名;
  631. * voteContent : 意见
  632. * msg : 成功后的提示消息。默认是提交成功。
  633. *
  634. */
  635. var param = HT.getStorageJSON("param",true);
  636. if(!param)
  637. param ={};
  638. var voteAgree = param.voteAgree?param.voteAgree:1,
  639. url = "",isValidateForm =false;
  640. try{
  641. if(conf&&(voteAgree==0||voteAgree==1||voteAgree==2||voteAgree==3||voteAgree==1000)&&conf.valid&&!$scope.valid({withoutdom:document.querySelectorAll(".scrollerH")})){
  642. HT.showmsg(baseService,$i18n$.FORM.FORM_VALID_ERROR)
  643. uexWindow.evaluateScript("newFlow_add",0,"HT.hideModal()");
  644. return;
  645. }
  646. }catch(e){
  647. HT.showmsg(baseService,$i18n$.FORM.BIND_FORM)
  648. uexWindow.evaluateScript("newFlow_add",0,"HT.hideModal()");
  649. return ;
  650. }
  651. switch (voteAgree) {
  652. case 0:
  653. case 1:
  654. case 2:
  655. case 3:
  656. url = __ctx+'/mobile/bpm/bpmMobileTask/complete.ht';
  657. param.actDefId = $scope.actDefId;
  658. param.defId = $scope.defId;
  659. // businessKey
  660. // formKey
  661. //获取表单是数据
  662. param.formData = $scope.getScopeFormData();
  663. param.taskId= taskId;
  664. isValidateForm = true;
  665. break;
  666. case 15://沟通
  667. url = __ctx+'/mobile/bpm/bpmMobileTask/toStartCommunication.ht';
  668. param.taskId= taskId;
  669. break;
  670. case 17://撤销
  671. url = __ctx+'/mobile/bpm/bpmMobileTask/recover.ht';
  672. param.runId= runId;
  673. break;
  674. case 20://沟通反馈
  675. url = __ctx+'/mobile/bpm/bpmMobileTask/saveOpinion.ht';
  676. param.taskId= taskId;
  677. break;
  678. case 21://转办
  679. url = __ctx+'/mobile/bpm/bpmMobileTask/assignSave.ht';
  680. param.taskId= taskId;
  681. break;
  682. case 22://取消转办
  683. case 27://取消代理
  684. url = __ctx+'/mobile/bpm/bpmMobileTask/cancelTaskExe.ht';
  685. param.taskId= taskId;
  686. break;
  687. case 42://催办
  688. url = __ctx+'/mobile/bpm/bpmMobileTask/urgeSubmit.ht';
  689. param.runId= runId;
  690. break;
  691. case 1000://新建流程 启动
  692. url = __ctx+'/mobile/bpm/bpmMobileTask/startFlow.ht';
  693. param.defId= defId;
  694. param.actDefId= actDefId;
  695. param.formData = $scope.getScopeFormData();
  696. isValidateForm = true;
  697. toastID = "newFlow_add";
  698. default:
  699. break;
  700. }
  701. param.msg = param.msg?param.msg:$i18n$.FORM.SUBMIT_SUCCESS;
  702. var httpId = new Date().getTime().toString();
  703. httpId=httpId.substring(httpId.length-3,httpId.length);
  704. window.setTimeout(function(){
  705. HT.toastInWindow(toastID, "", $i18n$.FORM.WAITTING_MSG, 0);
  706. }, 1);
  707. uexXmlHttpMgr.open(httpId,'post',url,30000);
  708. for (k in param) {
  709. if (!HT.isEmpty(param[k])) {
  710. var o = param[k];
  711. if(typeof param[k]=="object"){
  712. o = JSON.stringify(param[k])
  713. }
  714. uexXmlHttpMgr.setPostData(httpId, '0', k, o);
  715. }
  716. }
  717. uexXmlHttpMgr.send(httpId);
  718. uexXmlHttpMgr.onData = function(inOpCode,inStatus,inResult){
  719. HT.closeToastInWindow(toastID, "");
  720. if(inStatus == 1){
  721. var data=eval(inResult);
  722. if(data.success){
  723. HT.setStorage("__voteAgree",voteAgree);
  724. if(formFlowType ==0){
  725. uexWindow.evaluatePopoverScript("newFlow_add","form","HT.toast('"+param.msg+"')");
  726. setTimeout(function(){
  727. uexWindow.evaluatePopoverScript("index","mytask","reload();");
  728. uexWindow.evaluatePopoverScript("newFlow_add","form","HT.goback(-1);");
  729. uexWindow.evaluateScript("newFlow_add",0,"HT.goback(-1);");
  730. uexWindow.evaluateScript("index",0,"pendingCount();");
  731. },500)
  732. }else{
  733. uexWindow.evaluateScript("flow_complete",0,"HT.toast('"+param.msg+"')");
  734. uexWindow.evaluatePopoverScript("index","mytask","reload();");
  735. uexWindow.evaluateScript("index",0,"pendingCount()");
  736. if(voteAgree==17||voteAgree==42){
  737. uexWindow.evaluatePopoverScript("index","myLaunch","reload();");
  738. }
  739. window.setTimeout(function(){
  740. uexWindow.evaluateScript("flow_complete","0","HT.goback(-1);");
  741. uexWindow.evaluateScript("taskInfo",0,"HT.goback(-1);");
  742. },1200)
  743. }
  744. }else{
  745. var msg=data.msg.replaceAll('\"','').replaceAll(',',' ').replaceAll("\n","");
  746. if (formFlowType == 0) {
  747. baseService.openDialog({
  748. title: $i18n$.COMMON.WARN,
  749. html: msg.substring(0,60),
  750. marTop:30,
  751. digest:true,
  752. buttons: [{
  753. label: $i18n$.COMMON.CANCEL,
  754. callback: function(){
  755. baseService.closeDialog();
  756. uexWindow.evaluateScript("newFlow_add",0,"HT.hideModal();");
  757. }
  758. }]
  759. })
  760. }else{
  761. HT.setStorage("wrongmsg",msg);
  762. uexWindow.evaluateScript("flow_complete", 0, "showWrongmsg()");
  763. }
  764. }
  765. window.setTimeout(function(){
  766. uexWindow.evaluateScript("flow_complete",0,"HT.hideModal()");
  767. uexWindow.evaluateScript("newFlow_add",0,"HT.hideModal();");
  768. },100)
  769. uexXmlHttpMgr.close(httpId);
  770. }
  771. }
  772. };
  773. $scope.backNewFlow = function(){
  774. if (HT.$($$("ngNullPage")).hasClass("uhide")) {
  775. baseService.openDialog({
  776. title: $i18n$.COMMON.WARN,
  777. html: $i18n$.FLOW.IS_SAVE_DRAFT_DATA,
  778. digest: true,
  779. inline: true,
  780. buttons: [{
  781. label: $i18n$.COMMON.OK,
  782. marTop: 30,
  783. forecolor: "red",
  784. callback: function(){
  785. baseService.closeDialog();
  786. var d = {
  787. main: $scope.main ? $scope.main : {},
  788. sub: $scope.sub ? $scope.sub : {},
  789. opinion: $scope.opinion ? $scope.opinion : []
  790. };
  791. var draft = {
  792. defId: defId,
  793. data: d
  794. };
  795. HT.addUpdateCacheDraft(draft);
  796. uexWindow.evaluateScript("newFlow_add", 0, "back()");
  797. }
  798. }, {
  799. label: $i18n$.COMMON.CANCEL,
  800. callback: function(){
  801. baseService.closeDialog();
  802. uexWindow.evaluateScript("newFlow_add", 0, "back()");
  803. }
  804. }]
  805. });
  806. }
  807. else {
  808. uexWindow.evaluateScript("newFlow_add", 0, "back()");
  809. }
  810. }
  811. /**
  812. * 获取表单数据
  813. */
  814. $scope.getScopeFormData = function(){
  815. var formData = {},
  816. fields = $scope.main?$scope.main:{},
  817. subdata = $scope.sub?$scope.sub:{},
  818. opinion = $scope.opinion?$scope.opinion:[],
  819. main = {
  820. fields: fields
  821. },
  822. sub = [];
  823. if (!HT.isObjNull(subdata)) {
  824. for (i in subdata) {
  825. var s = {};
  826. s.tableName = i;
  827. s.fields = subdata[i];
  828. sub.push(s);
  829. }
  830. }
  831. formData.main = main;
  832. formData.sub = sub;
  833. formData.opinion = opinion;
  834. return formData;
  835. }
  836. $scope.showWrongMsg=function(msg){
  837. HT.showmsg(baseService,msg);
  838. }
  839. }])
  840. /**
  841. * 审批历史
  842. */
  843. .controller('formhistoryCtrl',['$scope','baseService',function($scope,baseService){
  844. $scope.init=function(){
  845. var formFlowType = HT.getStorage("formFlowType"),
  846. taskId = HT.getStorage("taskId"),
  847. runId = HT.getStorage("runId"),
  848. params = {};
  849. if(formFlowType == 1)
  850. params.taskId = taskId;
  851. else
  852. params.runId = runId;
  853. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/taskOpinions.ht',
  854. params,function(data){
  855. $scope.lists = data.results;
  856. initHtml();
  857. });
  858. }
  859. $scope.displayDetail = function(user){
  860. HT.userInfo(baseService,user,'formhistory');
  861. };
  862. }])
  863. /**
  864. * 待办事宜
  865. */
  866. .controller('myTaskCtrl', ['$scope','baseService', function($scope,baseService){
  867. $scope.showType=true;//HT.getStorage("__showType");
  868. //查询
  869. $scope.search = function(isSearch){
  870. baseService.pageList(__ctx + '/mobile/bpm/bpmMobileTask/pendingMatters.ht', {
  871. userId: __curUserId,
  872. 'Q_subject_SUPL': $scope.keywords,
  873. pageBean:$scope.pageBean
  874. }, function(data){
  875. $scope.tasks = data.results;
  876. $scope.issearched=$scope.keywords?true:false;
  877. },{pageLists:$scope.tasks,isSearch:isSearch});
  878. };
  879. $scope.taskInfo = function(task){
  880. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/isAllowMobile.ht',
  881. {taskId:task.id},function(data){
  882. if(!data.success){
  883. HT.alert(data.msg);
  884. uexWindow.evaluatePopoverScript("index","mytask","reload();");
  885. uexWindow.evaluateScript("index",0,"pendingCount()");
  886. }else{
  887. if(data.type == 1){
  888. HT.alert(data.msg);
  889. }else{
  890. HT.setStorage("formFlowType",1);
  891. HT.setStorage("taskId",task.id);
  892. HT.goToHtml("taskInfo");
  893. }
  894. }
  895. },{__notshowtoast:true});
  896. };
  897. }])
  898. /**
  899. * 历史-我的承接
  900. */
  901. .controller('myUndertakeCtrl', ['$scope','baseService', function($scope,baseService){
  902. //查询
  903. $scope.search = function(isSearch){
  904. if(!HT.getStorage("__firstToMyUndertake",true)){
  905. baseService.pageList(__ctx + '/mobile/bpm/bpmMobileTask/myUndertake.ht', {
  906. userId: __curUserId,
  907. 'Q_subject_SUPL': $scope.keywords,
  908. pageBean:$scope.pageBean
  909. }, function(data){
  910. $scope.lists = data.results;
  911. $scope.issearched=$scope.keywords?true:false;
  912. },{pageLists:$scope.lists,isSearch:isSearch});
  913. }
  914. };
  915. $scope.processRunInfo = function(processRun){
  916. //判断是否有任务
  917. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/hashTask.ht',
  918. {actInstId:processRun.actInstId},function(data){
  919. if(data.success){
  920. var isTask = data.isTask;
  921. HT.setStorage("formFlowType",data.isTask?1:2);
  922. if(isTask){
  923. var task = data.task;
  924. HT.setStorage("taskId",task.id);
  925. }else{
  926. HT.setStorage("runId",processRun.runId);
  927. }
  928. HT.setStorage("detail_type","undertake");
  929. HT.goToHtml("taskInfo");
  930. }else{
  931. HT.alert(data.msg);
  932. }
  933. });
  934. };
  935. }
  936. ])
  937. /**
  938. * 历史-我的发起
  939. */
  940. .controller('myLaunchCtrl', ['$scope','baseService', function($scope,baseService){
  941. //查询
  942. $scope.search = function(isSearch){
  943. if (!HT.getStorage("__firstToMyLaunch", true)) {
  944. baseService.pageList(__ctx + '/mobile/bpm/bpmMobileTask/myLaunch.ht', {
  945. userId: __curUserId,
  946. 'Q_subject_SUPL': $scope.keywords,
  947. pageBean: $scope.pageBean
  948. }, function(data){
  949. $scope.lists = data.results;
  950. $scope.issearched = $scope.keywords ? true : false;
  951. }, {
  952. pageLists: $scope.lists,
  953. isSearch: isSearch
  954. });
  955. }
  956. };
  957. $scope.processRunInfo = function(processRun){
  958. //判断是否有任务
  959. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/hashTask.ht',
  960. {actInstId:processRun.actInstId},function(data){
  961. if(data.success){
  962. var isTask = data.isTask;
  963. HT.setStorage("formFlowType",data.isTask?1:2);
  964. if(isTask){
  965. var task = data.task;
  966. HT.setStorage("taskId",task.id);
  967. }else{
  968. HT.setStorage("runId",processRun.runId);
  969. }
  970. HT.setStorage("detail_type","launch");
  971. HT.setStorage("flow_status",processRun.status);
  972. HT.goToHtml("taskInfo");
  973. }else{
  974. HT.alert(data.msg);
  975. }
  976. });
  977. };
  978. }
  979. ])
  980. /**
  981. * 流程代理
  982. */
  983. .controller('agentFlowCtrl',['$scope','baseService',function($scope,baseService){
  984. //查询
  985. $scope.search = function(isSearch){
  986. baseService.pageList(__ctx + '/mobile/bpm/bpmMobileAgent/list.ht', {
  987. userId: __curUserId,
  988. 'Q_subject_SUPL': $scope.keywords,
  989. pageBean:$scope.pageBean
  990. }, function(data){
  991. $scope.lists = data.results;
  992. },{pageLists:$scope.lists,isSearch:isSearch});
  993. };
  994. $scope.angentFlow = function(agentSetting){
  995. //条件代理
  996. if(agentSetting.authtype=='2'){
  997. uexWindow.toast(1,5,$i18n$.AGENT_SETTING.SET_CONDITIONAL_AT_PC,1000);
  998. return;
  999. }
  1000. HT.setStorage("agentSettingId",agentSetting.id);
  1001. HT.goToHtml("agentFlow_setting");
  1002. };
  1003. $scope.updStatus = function(agentSetting,me){
  1004. var status = agentSetting.enabled==1?0:1;
  1005. agentSetting.enabled = status;
  1006. baseService.post(__ctx+'/mobile/bpm/bpmMobileAgent/updStatus.ht',
  1007. {id:agentSetting.id,status:status},function(data){
  1008. if(!data.success){
  1009. angular.element(me).next().next().checked= (status==1?null:'checked');
  1010. agentSetting.enabled = (status==1?0:1);
  1011. HT.alert(data.msg);
  1012. return;
  1013. }
  1014. });
  1015. };
  1016. $scope.confirmDelete=function(id,$index){
  1017. baseService.openDialog({
  1018. title: $i18n$.COMMON.WARN,
  1019. html: $i18n$.AGENT_SETTING.IS_DELETE_AGENT,
  1020. digest:true,
  1021. inline:true,
  1022. buttons: [{
  1023. label: $i18n$.COMMON.OK,
  1024. marTop:30,
  1025. forecolor:"red",
  1026. callback: function(){
  1027. baseService.post(__ctx+'/mobile/bpm/bpmMobileAgent/del.ht',
  1028. {id:id},function(data){
  1029. if(!data.success){
  1030. HT.alert(data.msg);
  1031. return;
  1032. }else{
  1033. for (var i in $scope.lists) {
  1034. if ($scope.lists[i].id == id) {
  1035. $scope.lists.splice(i, 1);
  1036. }
  1037. }
  1038. HT.toastInWindow("", "", $i18n$.COMMON.DEL_SUCCESS, 1500,0);
  1039. baseService.closeDialog();
  1040. }
  1041. });
  1042. }
  1043. },{
  1044. label: $i18n$.COMMON.CANCEL,
  1045. callback: function(){
  1046. baseService.closeDialog();
  1047. }
  1048. }]
  1049. });
  1050. }
  1051. }])
  1052. /**
  1053. * 流程代理设定
  1054. */
  1055. .controller('agentFlowSettingCtrl',['$scope','baseService',function($scope,baseService){
  1056. $scope.agentSetting ={
  1057. authtype:"0",
  1058. enabled:"1"
  1059. };
  1060. $scope.$watch('agentSetting.authtype', function(newVal, oldVal) {
  1061. if (newVal !== oldVal) {
  1062. uexWindow.evaluateScript("agentFlow_setting",0,"rtClick("+$scope.agentSetting.authtype+")");
  1063. }
  1064. }, true);
  1065. $scope.init = function(){
  1066. var id = HT.getStorage("agentSettingId",true);
  1067. baseService.post(__ctx+'/mobile/bpm/bpmMobileAgent/edit.ht',
  1068. {id:id},function(data){
  1069. if(!data.success){
  1070. HT.alert(data.msg);
  1071. return;
  1072. }
  1073. $scope.agentSetting =data.agentSetting;
  1074. $scope.agentSetting.agent = $scope.agentSetting.agent||{};
  1075. //部分代理
  1076. if($scope.agentSetting.authtype=="1"){
  1077. var agentDefList = $scope.agentSetting.agentDefList;
  1078. if(agentDefList&&agentDefList.length>0){
  1079. var flows = [];
  1080. angular.forEach(agentDefList,function(agentDef){
  1081. flows.push({defKey:agentDef.flowkey,subject:agentDef.flowname});
  1082. });
  1083. HT.setStorageJSON("selectedFlow",flows);
  1084. }
  1085. }
  1086. $scope.valid();
  1087. });
  1088. }
  1089. $scope.toNext = function(){
  1090. var v = $scope.valid();
  1091. uexWindow.evaluateScript("agentFlow_setting",0,"HT.hideModal()");
  1092. if(!v){
  1093. HT.showmsg(baseService,$i18n$.FORM.FORM_VALID_ERROR);
  1094. return;
  1095. }
  1096. HT.goToHtml("choseFlow");
  1097. }
  1098. //保存
  1099. $scope.save = function(){
  1100. var v = $scope.valid();
  1101. uexWindow.evaluateScript("agentFlow_setting",0,"HT.hideModal()");
  1102. if(!v){
  1103. HT.showmsg(baseService,$i18n$.FORM.FORM_VALID_ERROR);
  1104. return;
  1105. }
  1106. var flows = HT.getStorageJSON("selectedFlow",true),
  1107. agentSetting = $scope.agentSetting,
  1108. json ={
  1109. id:agentSetting.id,
  1110. authid:agentSetting.authid,
  1111. createtime:HT.date(agentSetting.createtime),
  1112. startdate:HT.date(agentSetting.startdate),
  1113. enddate:HT.date(agentSetting.enddate),
  1114. enabled:agentSetting.enabled,
  1115. authtype:agentSetting.authtype,
  1116. agentid:agentSetting.agent.userId
  1117. },
  1118. agentDefList = [];
  1119. if(flows&&flows.length>0){
  1120. angular.forEach(flows,function(flow){
  1121. agentDefList.push({flowkey:flow.defKey,flowname:flow.subject});
  1122. });
  1123. json.agentDefList = agentDefList;
  1124. }
  1125. baseService.post(__ctx+'/mobile/bpm/bpmMobileAgent/save.ht',
  1126. {json:json},function(data){
  1127. if(!data.success){
  1128. HT.alert(data.msg);
  1129. return;
  1130. }
  1131. uexWindow.evaluatePopoverScript("agentFlow","agentFlow_content","reload();")
  1132. HT.toast($i18n$.COMMON.ADD_SUCCESS);
  1133. window.setTimeout(function(){
  1134. uexWindow.evaluateScript("choseFlow","0","HT.goback(-1);")
  1135. uexWindow.evaluateScript("agentFlow_setting_content","0","HT.goback(-1)");
  1136. uexWindow.evaluateScript("agentFlow_setting","0","HT.goback(-1)");
  1137. },1200)
  1138. });
  1139. }
  1140. }])
  1141. /**
  1142. * 部分代理中选择代理流程
  1143. */
  1144. .controller('choseFlowCtrl',['$scope','baseService',function($scope,baseService){
  1145. $scope.lists = [];
  1146. $scope.ischange="";
  1147. $scope.remove = function($index){
  1148. $scope.lists.splice($index,1);
  1149. }
  1150. $scope.save = function(){
  1151. var lists = $scope.lists;
  1152. if(lists.length <=0){
  1153. HT.alert($i18n$.AGENT_SETTING.ADD_FLOW);
  1154. return;
  1155. }
  1156. HT.setStorageJSON("selectedFlow",$scope.lists);
  1157. uexWindow.evaluatePopoverScript("agentFlow_setting","agentFlow_setting_content","save()");
  1158. }
  1159. $scope.$watch("ischange",function(newVal,oldVal){
  1160. if(newVal){
  1161. var lists = HT.getStorageJSON("selectedFlow",true);
  1162. if(!lists||lists.length==0)return;
  1163. $scope.lists = lists;
  1164. $scope.ischange="";
  1165. }
  1166. })
  1167. $scope.ischange=true;
  1168. }])
  1169. /**
  1170. * 流程选择器
  1171. */
  1172. .controller('flowSelectorCtrl',['$scope','baseService',function($scope,baseService){
  1173. var choseItem = [];
  1174. $scope.flows = [];
  1175. $scope.defkey="";
  1176. //查询
  1177. $scope.search = function(isSearch){
  1178. baseService.pageList(__ctx + '/mobile/bpm/bpmMobileAgent/selector.ht', {
  1179. "Q_subject_SUPL": $scope.keywords,
  1180. pageBean:$scope.pageBean
  1181. }, function(data){
  1182. if (data) {
  1183. $scope.flows = data.results;
  1184. $scope.issearched=$scope.keywords?true:false;
  1185. }
  1186. },{pageLists:$scope.flows,isSearch:isSearch});
  1187. };
  1188. $scope.mergeArray = function(a,b){
  1189. if(!angular.isArray(a)||!angular.isArray(b))return;
  1190. for(var i=0;i<a.length;i++){
  1191. for(var j=0;j<b.length;j++){
  1192. if(a[i].defKey==b[j].defKey){
  1193. a.splice(i,1);
  1194. break;
  1195. }
  1196. }
  1197. }
  1198. for(var i=0;i<b.length;i++){
  1199. a.push(b[i]);
  1200. }
  1201. return a;
  1202. }
  1203. $scope.complete = function(){
  1204. var keyAry = $scope.defkey.split(','),
  1205. defKey = '',
  1206. oldLists =[],
  1207. currentLists;
  1208. if(!keyAry||keyAry.length==0) return;
  1209. angular.forEach($scope.flows,function(flow){
  1210. defKey = flow.defKey;
  1211. if(keyAry.indexOf(defKey) > -1){
  1212. choseItem.push(flow);
  1213. }
  1214. });
  1215. oldLists = HT.getStorageJSON("selectedFlow",true);
  1216. if(!oldLists) oldLists = [];
  1217. currentLists = $scope.mergeArray(oldLists,choseItem);
  1218. HT.setStorageJSON("selectedFlow",currentLists);
  1219. uexWindow.evaluatePopoverScript("choseFlow","choseFlow_content","HT.reload();");
  1220. uexWindow.evaluateScript("flow_selector",0,"HT.goback(-1);");
  1221. HT.goToHtml("choseFlow");
  1222. }
  1223. }])
  1224. .controller('mytimeEventCtrl', ['$scope','baseService', function($scope,baseService){
  1225. $scope.update = function(cb){
  1226. baseService.mytimeSwitch = true;
  1227. }
  1228. }])
  1229. .controller('mytimeCtrl', ['$scope','baseService', function($scope,baseService){
  1230. $scope.service = baseService;
  1231. $scope.$watch('service', function(newVal, oldVal) {
  1232. if (newVal !== oldVal) {
  1233. if(baseService.mytimeSwitch){
  1234. baseService.mytimeSwitch = false;
  1235. $scope.update();
  1236. }
  1237. }
  1238. }, true);
  1239. $scope.update = function(cb){
  1240. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/myAvgTime.ht',
  1241. {userId: __curUserId},function(data){
  1242. var json = {},
  1243. avg_hour = 0,
  1244. avg_minute = 0,
  1245. org_avg_hour=0,
  1246. org_avg_minute=0,
  1247. level = 0,
  1248. org_level=0,
  1249. avg_order =0,
  1250. task_count=0,
  1251. count = 0;
  1252. if(data){
  1253. var avg_time = HT.parseInt(data.AVG_TIME),
  1254. org_avg_time = data.ORG_AVG_TIME;
  1255. avg_order=data.AVG_ORDER;
  1256. count =data.COUNT;
  1257. task_count =data.TASK_COUNT;
  1258. if(avg_time>0){
  1259. avg_hour = HT.parseInt(avg_time/3600000);
  1260. avg_minute = HT.parseInt(avg_time/60000)-avg_hour*60;
  1261. }
  1262. if(org_avg_time>0){
  1263. org_avg_hour = HT.parseInt(org_avg_time/3600000);
  1264. org_avg_minute = HT.parseInt(org_avg_time/60000)-org_avg_hour*60;
  1265. }
  1266. org_level = org_avg_time == avg_time?0:(org_avg_time >avg_time?1:-1);
  1267. if(avg_hour <=4)
  1268. level = 5;
  1269. else if(avg_hour <=8)
  1270. level = 4;
  1271. else if(avg_hour <=24)
  1272. level = 3;
  1273. else if(avg_hour <=48)
  1274. level = 2;
  1275. else if(avg_hour <=72)
  1276. level = 1;
  1277. }
  1278. json = {
  1279. avg_time:avg_hour+$i18n$.MY_TIME.HOUR+avg_minute+$i18n$.MY_TIME.MINUTE,
  1280. org_avg_time:org_avg_hour+$i18n$.MY_TIME.HOUR+org_avg_minute+$i18n$.MY_TIME.MINUTE,
  1281. avg_order:avg_order,
  1282. count:count,
  1283. task_count: task_count,//任务数
  1284. level:level,
  1285. org_level:org_level
  1286. }
  1287. $scope.mytime = json;
  1288. });
  1289. }
  1290. $scope.update();
  1291. }
  1292. ])
  1293. /**
  1294. * 新建流程
  1295. */
  1296. .controller('newFlowCtrl', ['$scope','baseService', function($scope, baseService){
  1297. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/newProcess.ht',
  1298. {userId:__curUserId},function(data){
  1299. $scope.lists = data.results;
  1300. $scope.issearched=true;
  1301. });
  1302. $scope.startFlow = function(bpmDefinition){
  1303. HT.setStorage("defId",bpmDefinition.defId);
  1304. HT.setStorage("actDefId",bpmDefinition.actDefId);
  1305. HT.setStorage("formFlowType",0);
  1306. HT.goToHtml('newFlow_add');
  1307. }
  1308. }])
  1309. .controller('indexCtrl',['$scope','$compile','baseService','$translate',function($scope,$compile,baseService,$translate){
  1310. $scope.searchClass="ion-search";
  1311. $scope.maintitle=true;
  1312. $scope.historytitle=false;
  1313. $scope.pendingCount="";
  1314. HT.addIndexFooter($scope,$compile);
  1315. $scope.getPendingCount = function(){
  1316. baseService.post(__ctx+'/mobile/bpm/bpmMobileTask/pendingMattersCount.ht',
  1317. {userId:__curUserId},function(data){
  1318. $scope.pendingCount = data.count;
  1319. });
  1320. }
  1321. $scope.getPendingCount();
  1322. $scope.showSearch = function(me,i,title){
  1323. if(i=="mytask"){
  1324. $scope.plusClass="icon-plus5";//
  1325. $scope.ltClass="";
  1326. $scope.ltName="";
  1327. $scope.maintitle=true;
  1328. HT.$($$("indexTab")).addClass("uhide");
  1329. $scope.historytitle=false;
  1330. $$("ifooter_"+i).checked=true;
  1331. uexWindow.evaluatePopoverScript("","contactCommon","cancelDel()");
  1332. }else if(i=="contactCommon"){
  1333. $scope.plusClass = "icon-user-add2";
  1334. $scope.ltClass = "contactMge";
  1335. $scope.ltName = $i18n$.NEW_FLOW.MANAGEMENT;
  1336. $scope.maintitle = true;
  1337. HT.setStorage("isfromform","false");
  1338. HT.setStorage("multi","1");
  1339. HT.$($$("indexTab")).addClass("uhide");
  1340. $$("ifooter_"+i).checked=true;
  1341. }else if(i=="myLaunch"){
  1342. $scope.plusClass="";
  1343. $scope.ltClass="";
  1344. $scope.ltName="";
  1345. $scope.maintitle=false;
  1346. HT.$($$("indexTab")).removeClass("uhide");
  1347. $$("ifooter_"+i).checked=true;
  1348. if(HT.$($$("indexTab")).children().children().eq(0).hasClass("ubb2")){
  1349. i="myUndertake";
  1350. }
  1351. uexWindow.evaluatePopoverScript("","contactCommon","cancelDel()");
  1352. }else{
  1353. $scope.maintitle = true;
  1354. $scope.plusClass="";
  1355. $scope.ltClass="";
  1356. $scope.ltName="";
  1357. HT.$($$("indexTab")).addClass("uhide");
  1358. $$("ifooter_"+i).checked=true;
  1359. uexWindow.evaluatePopoverScript("","contactCommon","cancelDel()");
  1360. }
  1361. $scope.rtName ="";
  1362. $translate(title).then(function(translation){
  1363. $scope.title = translation;
  1364. });
  1365. HT.openPopFrame(i);
  1366. }
  1367. var isCheckedAll = 0;
  1368. $scope.rtClick= function(){
  1369. if($scope.plusClass=="icon-plus5"){
  1370. HT.goToHtml('newFlow');
  1371. }else if($scope.plusClass=="icon-user-add2"){
  1372. $scope.ltClass = "contactMge";
  1373. $scope.ltName = $i18n$.NEW_FLOW.MANAGEMENT;
  1374. contact.cancel();
  1375. HT.setStorage(HT_LS.selectorSelected,"[]");
  1376. HT.setStorage(HT_LS.activeWin,"contactCommon");
  1377. HT.setStorage("isfromform","false");
  1378. HT.setStorage("isMulti",1);
  1379. uexWindow.open("contactAll",0,"contactAll.html",0,"","",0);
  1380. }else if($scope.plusClass=="contactSelAll"){
  1381. if(isCheckedAll==0)
  1382. isCheckedAll=1;
  1383. else
  1384. isCheckedAll=0;
  1385. uexWindow.evaluatePopoverScript("","contactCommon","selAllUserChb('"+isCheckedAll+"')");
  1386. }
  1387. }
  1388. $scope.ltClick = function(){
  1389. if ($scope.ltClass == "contactMge") {
  1390. $scope.ltClass ="contactDel";
  1391. $scope.ltName =$i18n$.NEW_FLOW.DEL;
  1392. $scope.plusClass="contactSelAll";
  1393. $scope.rtName =$i18n$.NEW_FLOW.CHECK_ALL;
  1394. contact.commonMge();
  1395. }else if ($scope.ltClass == "contactDel") {
  1396. $scope.ltClass = "contactMge";
  1397. $scope.ltName = $i18n$.NEW_FLOW.MANAGEMENT;
  1398. $scope.plusClass="icon-user-add2";
  1399. $scope.rtName ="";
  1400. contact.del();
  1401. }
  1402. }
  1403. // 推送回调
  1404. $scope.pushCallBack = function(type){
  1405. uexWidget.cbGetPushInfo=function(opId,dataType,data){
  1406. var json = JSON.parse(data);
  1407. $scope.getPendingCount();
  1408. if(!type){
  1409. HT.toTaskInfo(baseService, json.taskid);
  1410. }else{
  1411. uexWindow.cbConfirm=function(opId,dataType,data){
  1412. if (data == 1) {
  1413. HT.toTaskInfo(baseService, json.taskid);
  1414. }
  1415. }
  1416. uexWindow.confirm("待办事项",json.content,["取消","查看"]);
  1417. }
  1418. }
  1419. uexWidget.getPushInfo();
  1420. }
  1421. $scope.title=$i18n$.TITLE.MY_TODO;
  1422. $scope.plusClass="icon-plus5";
  1423. }])
  1424. .controller('contactOrgCtrl', ['$scope', 'baseService', function($scope,baseService){
  1425. $scope.keywords="";
  1426. $scope.getOrg = function(o,fullname,length,type,isNavi,isRefresh){
  1427. var param = {
  1428. orgid: o.id,
  1429. username:fullname,
  1430. type:type,
  1431. isRefresh:isRefresh,
  1432. orgCount: $scope.orgCount,
  1433. start:length+1
  1434. };
  1435. baseService.pageList1(__ctx + '/mobile/contact/bpmMobileContact/_list.ht', param, function(data){
  1436. var ds = data.results;
  1437. if(ds.length>0){
  1438. var us = [];
  1439. if(type==1&&$scope.users!=null){
  1440. us = $scope.users;
  1441. }
  1442. for(var i=0;i<ds.length;i++){
  1443. us.push(ds[i]);
  1444. }
  1445. $scope.users = us;
  1446. $scope.userCount = data.userCount;
  1447. $scope.orgCount = data.orgCount!=null?data.orgCount:"0";
  1448. if (!isRefresh) {
  1449. HT.setSeletorNavi(o,isNavi,head,$scope);
  1450. }
  1451. if (__orgScroll) {
  1452. setTimeout(function(){
  1453. __orgScroll.refresh();
  1454. if (type == 1) {
  1455. __orgScroll.scrollTo(0, -__orgScroll.scrollerH, 0);
  1456. }
  1457. HT.checkSelected();
  1458. }, 200);
  1459. }
  1460. }else if(ds.length==0&&type==0){
  1461. $scope.users = [];
  1462. }
  1463. },{})
  1464. }
  1465. // 初始化
  1466. $scope.navis = [];
  1467. var head = {id: "0",name: $i18n$.ORG.ALL};
  1468. $scope.headNavi = head;
  1469. $scope.prevNavi = head;
  1470. $scope.isMulti = HT.getStorage("isMulti");
  1471. $scope.isfromform = HT.getStorage("isfromform")=="false"?false:true;
  1472. $scope.getOrg({id:0},"",0,2);
  1473. $scope.clickOrg = function(o){
  1474. $scope._disOrgClick=true;
  1475. $scope.getChooseUser();
  1476. $scope.getOrg(o,"",0,2);
  1477. setTimeout(function(){
  1478. $scope._disOrgClick=false;
  1479. }, 800);
  1480. }
  1481. $scope.navi = function(o){
  1482. $scope.getChooseUser();
  1483. $scope.getOrg(o, "", 0, 2, 1);
  1484. }
  1485. $scope.addToFrequentUser = function(){
  1486. $scope.getChooseUser();
  1487. HT.addContact();
  1488. }
  1489. $scope.getChooseUser = function(){
  1490. var choseItem = HT.getChoseItem($scope.users);
  1491. var multi = HT.getStorage("isMulti");
  1492. if(multi!="1"){
  1493. if(choseItem.length>0)
  1494. HT.setStorageJSON(HT_LS.selectorSelected, choseItem);
  1495. }else{
  1496. var sels = HT.mergeUsers(HT.getStorageJSON(HT_LS.selectorSelected), choseItem, $scope.users);
  1497. HT.setStorageJSON(HT_LS.selectorSelected, sels);
  1498. }
  1499. }
  1500. $scope.showSelected = function(){
  1501. $scope.getChooseUser();
  1502. HT.setStorage(HT_LS.selectorToSelected,"1");
  1503. uexWindow.open("contactSelected",0,"contactSelected.html",0,"","",0);
  1504. }
  1505. //查询
  1506. $scope.search = function(){
  1507. var search = $scope.keywords;
  1508. var o = $scope.lastNavi;
  1509. if(o==null){
  1510. o = $scope.headNavi;
  1511. }
  1512. $scope.getOrg(o,search.trim(),0,0);
  1513. $scope.issearched=$scope.keywords?true:false;
  1514. }
  1515. }])
  1516. // 已选联系人
  1517. .controller('contactSelectedCtrl', ['$scope', function($scope){
  1518. var us = HT.getStorageJSON(HT_LS.selectorSelected);
  1519. $scope.users= us;
  1520. $scope.remove=function($index){
  1521. $scope.users.splice($index,1);
  1522. HT.setStorageJSON(HT_LS.selectorSelected,$scope.users);
  1523. }
  1524. }])
  1525. // 常用联系人
  1526. .controller('contactCommonCtrl', ['$scope','baseService', function($scope,baseService){
  1527. $scope.keywords="";
  1528. $scope.initUsers = function(){
  1529. HT.getAllFrequent(function(rs){
  1530. if(rs){
  1531. var us = [];
  1532. if(rs.length>0){
  1533. var zms = [];
  1534. angular.forEach(rs, function(u){
  1535. var zm = makePy(u.name)[0].substring(0,1);
  1536. u.fk = zm+"0";
  1537. u.position = u.position!=null?u.position:"";
  1538. us.push(u);
  1539. if (zms.indexOf(zm) == undefined) {
  1540. zms.push(zm);
  1541. }
  1542. });
  1543. angular.forEach(zms, function(zm){
  1544. var groupName = zm.substring(0, 1);
  1545. us.push({
  1546. id: zm,
  1547. name: groupName,
  1548. fk: groupName,
  1549. t: 1
  1550. });
  1551. });
  1552. }
  1553. $scope.users = us;
  1554. var isMulti = HT.getStorage("isMulti");
  1555. $scope.isMulti = isMulti;
  1556. var isfromform = HT.getStorage("isfromform");
  1557. $scope.isfromform = isfromform;
  1558. var chbHide = true;
  1559. var radHide = true;
  1560. if (isMulti == "0" && isfromform == "true") {
  1561. chbHide = true;
  1562. radHide = false;
  1563. }
  1564. else if (isMulti == "1" && isfromform == "true") {
  1565. chbHide = false;
  1566. radHide = true;
  1567. }
  1568. $scope.chbHide = chbHide;
  1569. $scope.radHide = radHide;
  1570. $scope.zmArea = true;
  1571. $scope.$digest();
  1572. __myScroll = new iScroll('wrapper', {
  1573. vScrollbar: false
  1574. });
  1575. }
  1576. });
  1577. }
  1578. // 删除常用联系人
  1579. $scope.del = function(){
  1580. var choseItem = [];
  1581. var userChbs = angular.element(document.getElementsByName("userChb"));
  1582. for(var i=0;i<userChbs.length;i++){
  1583. var u = angular.element(userChbs[i]);
  1584. if(u.prop("checked")){
  1585. var o = u.val().split("_");
  1586. choseItem.push({
  1587. id:o[0],
  1588. name:o[1]
  1589. });
  1590. }
  1591. }
  1592. if (choseItem.length == 0) {
  1593. hideUserChb();
  1594. return;
  1595. }
  1596. var ids ="";
  1597. angular.forEach(choseItem,function(user){
  1598. ids+=user.id+","
  1599. });
  1600. ids = ids.length>0?ids.substring(0,ids.length-1):"";
  1601. var sql = "delete from frequent_contacts where id in("+ids+") and refid='"+__curUserId+"'";
  1602. HT.openDataBase();
  1603. HT.executeSql(sql,function(rs){
  1604. $scope.initUsers();
  1605. });
  1606. }
  1607. $scope.confirmDelete=function(id){
  1608. baseService.openDialog({
  1609. title: $i18n$.COMMON.WARN,
  1610. html: $i18n$.AGENT_SETTING.IS_DELETE_COMMON,
  1611. digest:true,
  1612. inline:true,
  1613. buttons: [{
  1614. label: $i18n$.COMMON.OK,
  1615. marTop:30,
  1616. forecolor:"red",
  1617. callback: function(){
  1618. var sql = "delete from frequent_contacts where id in("+id+") and refid='"+__curUserId+"'";
  1619. HT.openDataBase();
  1620. HT.executeSql(sql,function(rs){
  1621. $scope.initUsers();
  1622. });
  1623. baseService.closeDialog();
  1624. }
  1625. },{
  1626. label: $i18n$.COMMON.CANCEL,
  1627. callback: function(){
  1628. baseService.closeDialog();
  1629. }
  1630. }]
  1631. });
  1632. }
  1633. $scope.getChooseUser = function(){
  1634. var userChbs = angular.element(document.getElementsByName("userChb"));
  1635. var choseItem = [];
  1636. for(var i=0;i<userChbs.length;i++){
  1637. var u = angular.element(userChbs[i]);
  1638. if(u.prop("checked")){
  1639. var o = u.val().split("_");
  1640. choseItem.push({
  1641. id:o[0],
  1642. name:o[1],
  1643. });
  1644. }
  1645. }
  1646. var multi = HT.getStorage("isMulti");
  1647. if(multi!="1"){
  1648. if(choseItem.length>0)
  1649. HT.setStorageJSON(HT_LS.selectorSelected, choseItem);
  1650. }else{
  1651. var sels = HT.mergeUsers(HT.getStorageJSON(HT_LS.selectorSelected), choseItem, $scope.users);
  1652. HT.setStorageJSON(HT_LS.selectorSelected, sels);
  1653. }
  1654. }
  1655. }])
  1656. .controller('loginCtrl',['$scope','baseService','$translate',function($scope,baseService,$translate){
  1657. $scope.user ={
  1658. username:'admin',//217107
  1659. password:'sf#ecp123'
  1660. }
  1661. //登陆处理
  1662. $scope.login = function(user){
  1663. if (HT.isEmpty(user)){
  1664. HT.alert($i18n$.LOGIN.USERNAME_OR_PASSWORD);
  1665. return;
  1666. }
  1667. if (HT.isEmpty(user.username)&& HT.isEmpty(user.password)) {
  1668. HT.alert($i18n$.LOGIN.USERNAME_OR_PASSWORD);
  1669. return;
  1670. }
  1671. baseService.post(__ctx+'/mobile/system/mobileLogin.ht',
  1672. {username:user.username,password:user.password,lang:__lang},function(data){
  1673. if(data.success){
  1674. var curUserInfo = {},user = data.user;
  1675. // 用户ID
  1676. curUserInfo.userId = user.userId;
  1677. // 账号
  1678. curUserInfo.account = user.account;
  1679. //用户名
  1680. curUserInfo.fullname = user.fullname;
  1681. //组织ID
  1682. curUserInfo.orgId = user.orgId;
  1683. //组织名称
  1684. curUserInfo.orgName = user.orgName;
  1685. //权限
  1686. curUserInfo.rights = user.rights;
  1687. //设置当前登陆信息
  1688. try {
  1689. uexWidget.setPushInfo(curUserInfo.account, curUserInfo.fullname);
  1690. }
  1691. catch (e) {
  1692. }
  1693. HT.setStorageJSON("__curUserInfo",curUserInfo);
  1694. HT.goToHtml("index");
  1695. }else{
  1696. HT.alert(data.msg);
  1697. }
  1698. },{___waitmsg:$i18n$.LOGIN.LOGINING+"·····"});
  1699. };
  1700. $scope.hasLogin = false;
  1701. $scope.json = "";
  1702. $scope.loadByOtherAppHandler = function(){
  1703. if (!$scope.json){
  1704. __hasLogin = false;
  1705. if(HT.isAndroid()){//安卓的系统
  1706. HT.toastInWindow("","","从移动门户获取授权",2000,0);
  1707. uexLoadAPP.cbGetTokenSuccess = function(action,data,userId,Token){
  1708. var result = "成功获得! " + "action:" + action + " data:" + data + " userId:" + userId + " Token:" + Token;
  1709. alert(result);
  1710. };
  1711. uexLoadAPP.getToken();
  1712. }
  1713. }
  1714. else{
  1715. var data = $scope.json.data;
  1716. var token = JSON.parse(data).token;
  1717. if(HT.isEmpty(token)){
  1718. __hasLogin = false;
  1719. HT.toastInWindow("","","传入的参数不对",2000,0);
  1720. uexWindow.close(-1);
  1721. uexLoadAPP.getToken();
  1722. return;
  1723. }
  1724. var casToken = {
  1725. token:token
  1726. };
  1727. $scope.toLogin(casToken);
  1728. }
  1729. }
  1730. //健全登录信息
  1731. $scope.toLogin = function(casToken){
  1732. baseService.post(__ctx+'/mobile/mdmapps/mdmMobileData/getUserInfo.ht',
  1733. {cas_token:casToken},function(data){
  1734. if(data.success){
  1735. var curUserInfo = {},user = data.user;
  1736. // 用户ID
  1737. curUserInfo.userId = user.userId;
  1738. // 账号
  1739. curUserInfo.account = user.account;
  1740. //用户名
  1741. curUserInfo.fullname = user.fullname;
  1742. //组织ID
  1743. curUserInfo.orgId = user.orgId;
  1744. //组织名称
  1745. curUserInfo.orgName = user.orgName;
  1746. //权限
  1747. curUserInfo.rights = user.rights;
  1748. //设置当前登陆信息
  1749. uexWidget.setPushInfo(curUserInfo.account,curUserInfo.fullname);
  1750. HT.setStorageJSON("__curUserInfo",curUserInfo);
  1751. HT.setStorageJSON("otherAppParams", $scope.json);
  1752. HT.goToHtml("index");
  1753. }else{
  1754. HT.toastInWindow("","","认证失败,重新从移动门户获取授权",2000,0);
  1755. uexLoadAPP.openLogin();
  1756. }
  1757. },{___waitmsg:"登录中·····"});
  1758. }
  1759. $scope.plusClass="icon-plus5";
  1760. }])
  1761. /**
  1762. * 国际化
  1763. * @param {Object} $scope
  1764. * @param {Object} $translate
  1765. * @param {Object} baseService
  1766. */
  1767. .controller('languageCtrl', ['$scope', '$translate','baseService', function($scope, $translate,baseService){
  1768. $scope.languages = [{
  1769. 'value': 'zh_cn',
  1770. 'lable': '简体中文',
  1771. 'langkey':$i18n$_zh_cn
  1772. }, {
  1773. 'value': 'zh_tw',
  1774. 'lable': '繁體中文',
  1775. 'langkey':$i18n$_zh_tw
  1776. }, {
  1777. 'value': 'en_us',
  1778. 'lable': 'English',
  1779. 'langkey':$i18n$_en_us
  1780. }];
  1781. $scope.lang = {
  1782. l: __lang
  1783. };
  1784. $scope.save = function(){
  1785. var lang = $scope.lang.l;
  1786. baseService.post(__ctx+'/mobile/system/lang/changLang.ht',
  1787. {lang:lang},function(data){
  1788. angular.forEach($scope.languages,function(language){
  1789. if(language.value ==lang){
  1790. $i18n$ = language.langkey;
  1791. HT.setStorage("__lang", lang);
  1792. $translate.use(lang);
  1793. HT.toast($i18n$.LANGUAGE.CHANG_LANG);
  1794. HT.clearPages("index");
  1795. uexWindow.evaluateScript("setting",0,"HT.goback(-1)");
  1796. window.setTimeout(function(){
  1797. HT.goToHtml("index");
  1798. HT.goback(-1);
  1799. },1200)
  1800. }
  1801. });
  1802. });
  1803. }
  1804. }
  1805. ])
  1806. .controller('selectorCtrl',['$scope',function($scope){
  1807. // 定位人员选择器回填
  1808. }])
  1809. /**
  1810. * 更多
  1811. */
  1812. .controller('moreCtrl',['$scope','baseService',function($scope,baseService){
  1813. $scope.fullname = __curUserInfo?__curUserInfo.fullname:$i18n$.MORE.NOT_LOGIN;
  1814. //获取用户信息
  1815. $scope.userInfo = function(){
  1816. HT.goToHtml('userInfo');
  1817. }
  1818. $scope.newFlow = function(){
  1819. HT.goToHtml('newFlow');
  1820. }
  1821. $scope.agentFlow = function(){
  1822. HT.goToHtml('agentFlow');
  1823. }
  1824. $scope.mytime = function(){
  1825. HT.goToHtml('mytime');
  1826. }
  1827. $scope.setting = function(){
  1828. HT.goToHtml('setting');
  1829. }
  1830. $scope.logout = function(){
  1831. baseService.post(__ctx+'/mobile/system/mobileLogout.ht',
  1832. {},function(data){
  1833. HT.toast($i18n$.MORE.LOGOUT_SUCCESS);
  1834. uexWindow.evaluateScript("login",0,"HT.goback(-1);");
  1835. window.setTimeout(function(){
  1836. HT.goToHtml("login");
  1837. uexWindow.evaluateScript("index",0,"HT.goback(-1);");
  1838. },1200);
  1839. });
  1840. }
  1841. }])
  1842. /**
  1843. * 用户信息
  1844. */
  1845. .controller('userInfoCtrl',['$scope','baseService',function($scope,baseService){
  1846. $scope.user ={};
  1847. $scope.init = function(){
  1848. baseService.post(__ctx+'/mobile/system/user/get.ht',
  1849. {userId:__curUserId},function(data){
  1850. $scope.user = data.user;
  1851. });
  1852. };
  1853. $scope.init();
  1854. }])
  1855. .controller('subTableCtrl',['$scope','baseService',function($scope,baseService){
  1856. $scope.item = {};
  1857. }])
  1858. .controller('orgCtrl', ['$scope', 'baseService', function($scope,baseService){
  1859. $scope.keywords = "" ;
  1860. var getOrg = function(o,isNavi,orgName){
  1861. var param = {
  1862. orgid: o.id,
  1863. orgName:orgName
  1864. };
  1865. baseService.post(__ctx + '/mobile/contact/bpmMobileContact/orglist.ht', param, function(data){
  1866. if(data.results&&data.results.length>0){
  1867. $scope.orgs = data.results;
  1868. HT.setSeletorNavi(o,isNavi,head,$scope);
  1869. }
  1870. if(orgScroll){
  1871. setTimeout(function(){
  1872. orgScroll.refresh();
  1873. HT.checkSelected();
  1874. }, 200);
  1875. }
  1876. })
  1877. }
  1878. // 初始化
  1879. $scope.navis = [];
  1880. var head = {id: "0",name: $i18n$.ORG.ALL};
  1881. $scope.headNavi = head;
  1882. $scope.prevNavi = head;
  1883. $scope.isMulti = HT.getStorage("isMulti");
  1884. getOrg(head);
  1885. $scope.clickOrg = function(o){
  1886. $scope._disOrgClick=true;
  1887. $scope.getChooseOrg();
  1888. getOrg(o,0);
  1889. setTimeout(function(){
  1890. $scope._disOrgClick=false;
  1891. }, 800);
  1892. }
  1893. $scope.navi = function(o){
  1894. $scope.getChooseOrg();
  1895. getOrg(o,1);
  1896. }
  1897. $scope.addToOrg = function(){
  1898. $scope.getChooseOrg();
  1899. HT.goback('-1');
  1900. }
  1901. $scope.getChooseOrg = function(){
  1902. var choseItem = HT.getChoseItem($scope.orgs);
  1903. var multi = HT.getStorage("isMulti");
  1904. if(multi!="1"){
  1905. if(choseItem.length>0)
  1906. HT.setStorageJSON(HT_LS.selectorSelected, choseItem);
  1907. }else{
  1908. var sels = HT.mergeUsers(HT.getStorageJSON(HT_LS.selectorSelected), choseItem, $scope.orgs);
  1909. HT.setStorageJSON(HT_LS.selectorSelected, sels);
  1910. }
  1911. }
  1912. $scope.showSelected = function(){
  1913. $scope.getChooseOrg();
  1914. HT.setStorage(HT_LS.selectorToSelected,"1");
  1915. uexWindow.open("orgSelected",0,"orgSelected.html",0,"","",0);
  1916. }
  1917. //查询
  1918. $scope.search = function(){
  1919. var o = $scope.lastNavi;
  1920. if(o==null){
  1921. o = $scope.headNavi;
  1922. }
  1923. getOrg(o,0,$scope.keywords);
  1924. };
  1925. }])
  1926. // 已选组织
  1927. .controller('orgSelectedCtrl', ['$scope', function($scope){
  1928. $scope.orgs = HT.getStorageJSON(HT_LS.selectorSelected);
  1929. $scope.remove=function($index){
  1930. $scope.orgs.splice($index,1);
  1931. HT.setStorageJSON(HT_LS.selectorSelected,$scope.orgs);
  1932. }
  1933. }])
  1934. .controller('testCtrl', ['$scope', function($scope){
  1935. $scope.enddate="1990-10-11";
  1936. }])
  1937. .controller('aboutCtrl', ['$scope', function($scope){
  1938. $scope.version=__version;
  1939. $scope.help=function(){
  1940. HT.goToHtml("help");
  1941. }
  1942. $scope.feedback=function(){
  1943. HT.goToHtml("feedback");
  1944. }
  1945. $scope.checkupdate=function(){
  1946. $scope.hasNewVersion="已是最新版本";
  1947. }
  1948. }])
  1949. /**
  1950. * 设置
  1951. */
  1952. .controller('settingCtrl', ['$scope', function($scope){
  1953. var setting = HT.getStorageJSON("SETTING");
  1954. if(HT.isEmpty(setting)){
  1955. setting = {
  1956. openService:1,
  1957. synchTime:"3",
  1958. harassMode:1,
  1959. sound:1,
  1960. shock:1,
  1961. quit:1
  1962. };
  1963. }
  1964. $scope.setting = setting;
  1965. $scope.updSetting = function(){
  1966. HT.setStorageJSON("SETTING",$scope.setting);
  1967. }
  1968. $scope.remove = function(type){
  1969. uexWindow.cbConfirm = function(opId, dataType, data){
  1970. if(data==0){
  1971. switch (type) {
  1972. case 1://清除表单
  1973. HT.clearCacheTemplate(function(){
  1974. HT.alert($i18n$.SETTING.CLEAR_FORMSUCCESS);
  1975. });
  1976. break;
  1977. case 2://清除联系人
  1978. HT.clearFrequent(function(){
  1979. uexWindow.evaluatePopoverScript("index","contactCommon","HT.reload()");
  1980. HT.alert($i18n$.SETTING.CLEAR_CONTACT_SUCCESS);
  1981. });
  1982. break;
  1983. case 3://清除流程草稿
  1984. HT.clearCacheDraft(function(){
  1985. HT.alert($i18n$.SETTING.CLEAR_DRAFT_SUCCESS);
  1986. });
  1987. break;
  1988. default:
  1989. break;
  1990. }
  1991. }
  1992. }
  1993. uexWindow.confirm($i18n$.COMMON.WARN, $i18n$.SETTING.CONFIRM_CLEAR, [$i18n$.COMMON.OK, $i18n$.COMMON.CANCEL]);
  1994. };
  1995. $scope.language = function(){
  1996. HT.goToHtml("language");
  1997. };
  1998. $scope.about = function(){
  1999. HT.goToHtml("about");
  2000. };
  2001. $scope.version = function(){
  2002. HT.alert(__version);
  2003. };
  2004. $scope.features = function(){
  2005. HT.goToHtml("features");
  2006. };
  2007. $scope.feedback = function(){
  2008. alert($i18n$.FEEDBACK.FEEDBACK_SUCCESS);
  2009. };
  2010. }])
  2011. ;