yundanan.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. _private = {
  2. id:'',
  3. permission: 'n',
  4. htmlContent:[],
  5. personSummaryInfo:[],
  6. personDetailInfo:[],
  7. personHierarchy:[],
  8. personWorkExp:[],
  9. personPositionMember:[],
  10. personDegreeExp:[],
  11. personProjectExp:[],
  12. personPerfResultInfo:[]
  13. };
  14. _self.pageinit=function(){
  15. _private.initEvent();
  16. }
  17. _private.initEvent = function(){
  18. _private.appid = mbos.getRequestParams().appid;
  19. _private.hostname = window.location.origin;
  20. _private.storeEid = mbos.getRequestParams().storeEid;
  21. _private.id = decodeURIComponent(mbos.getRequestParams().dataKey);
  22. if(_private.id){
  23. var success = function(data){
  24. _private.permission = data.permission;
  25. //获取我的档案
  26. _private.fillMyArchiveEvent();
  27. //页面控件初始化
  28. _private.controlEvent();
  29. }
  30. var fail = function(data){
  31. mbos.msgBox.showError(data);
  32. }
  33. mbos.eas.invokeScript("getPersonPermissionByPersonId", [_private.id], success,fail);
  34. }
  35. }
  36. _private.fillMyArchiveEvent = function(){
  37. //填写我的个人信息
  38. _private.fillMyPersonSummaryInfo();
  39. }
  40. _private.fillMyPersonSummaryInfo = function(){
  41. //获取我的信息模板
  42. var template = _private.getMyPersonSummaryInfoTemplate();
  43. //编译模板,暂时不渲染
  44. var compiled_tpl = juicer(template);
  45. //通过服务端函数获取数据,进行渲染,拼接html片段
  46. _private.callPersonSummaryInfoService('getPersonSummaryService',compiled_tpl, _private.htmlContent);
  47. }
  48. _private.getMyPersonSummaryInfoTemplate = function(){
  49. var myPersonalInfoTemplate1 = ['<div class="panel panel-default">',
  50. '<div class="panel-body page-title">',
  51. '<div align="center"><img src="data:image/png;base64,${photo}" alt="..." class="img-circle" style="width:60px;height:60px;border: 5px solid #fff;border-radius: 30px;" onerror="_private.showDefaultImg(this)"></div>',
  52. '<div align="center" style="color:#FFF;margin-top:5px;">',
  53. '<div>${name}</div>',
  54. '<div>${position} - ${dept}</div>',
  55. '</div>',
  56. '</div>',
  57. '<div class="bs-example" data-example-id="simple-nav-pills" id="myTab">',
  58. '<ul class="nav nav-pills">',
  59. '<li role="presentation" style="width:33%"><a href="#contact" id ="con">'+localeResource.contact+'</a></li>',
  60. '<li role="presentation" style="width:34%"><a href="#relation" id="rel">'+localeResource.relation+'</a></li>',
  61. '<li role="presentation" style="width:33%"><a href="#archive" id="arc">'+localeResource.archive+'</a></li>',
  62. '</ul>',
  63. '</div>',
  64. '</div>',
  65. '<div class="tab-content">'].join('');
  66. var myPersonalInfoTemplate2 = ['<div class="panel panel-default">',
  67. '<div class="panel-body page-title">',
  68. '<div align="center"><img src="data:image/png;base64,${photo}" alt="..." class="img-circle" style="width:60px;height:60px;border: 5px solid #fff;border-radius: 30px;" onerror="_private.showDefaultImg(this)"></div>',
  69. '<div align="center" style="margin-top:5px;color:#FFF;">',
  70. '<div>${name}</div>',
  71. '<div>${position} - ${dept}</div>',
  72. '</div>',
  73. '</div>',
  74. '<div class="bs-example" data-example-id="simple-nav-pills" id="myTab">',
  75. '<ul class="nav nav-pills">',
  76. '<li role="presentation" style="width:50%"><a href="#contact" id="con">'+localeResource.contact+'</a></li>',
  77. '<li role="presentation" style="width:50%"><a href="#relation" id="rel">'+localeResource.relation+'</a></li>',
  78. '</ul>',
  79. '</div>',
  80. '</div>',
  81. '<div class="tab-content">'].join('');
  82. var template = myPersonalInfoTemplate2;
  83. if(_private.permission === 'y'){
  84. template = myPersonalInfoTemplate1;
  85. }
  86. return template;
  87. }
  88. _private.callPersonSummaryInfoService = function(serverName, compiled_tpl, html){
  89. var param = [];
  90. param[0] = _private.id;
  91. var success = function(data){
  92. //解析人员信息
  93. _private.personSummaryInfo = _private.parseData(data);
  94. //获取人员照片
  95. _private.getPersonPhoto(compiled_tpl, html);
  96. }
  97. var fail = function(data){
  98. //_private.callPersonSummaryInfoService(serverName,compiled_tpl, html);
  99. mbos.msgBox.showError(localeResource.msg1);
  100. }
  101. mbos.eas.invokeScript(serverName, param, success,fail);
  102. }
  103. _private.getPersonPhoto = function(compiled_tpl, html){
  104. var param = [];
  105. param[0] = _private.id;
  106. var success = function(data){
  107. _private.personSummaryInfo.photo = data.photo;
  108. //渲染数据
  109. var htmlFragment = compiled_tpl.render(_private.personSummaryInfo);
  110. html.push(htmlFragment);
  111. _private.fillMyContactMethod();
  112. }
  113. var fail = function(data){
  114. mbos.msgBox.showError(localeResource.msg2);
  115. }
  116. mbos.eas.invokeScript("getSinglePersonPhotoService", param, success,fail);
  117. }
  118. _private.fillMyContactMethod = function(){
  119. //获取我的信息模板
  120. var template = _private.getMyContactMethodTemplate();
  121. //编译模板,暂时不渲染
  122. var compiled_tpl = juicer(template);
  123. //获取数据,进行渲染,拼接html片段
  124. var htmlFragment = compiled_tpl.render(_private.personSummaryInfo);
  125. _private.htmlContent.push(htmlFragment);
  126. $('#rootpanel').eq(0).empty().append( _private.htmlContent.join(''));
  127. _private.registerListenerEvent('#con');
  128. //填写我的职级关系
  129. //_private.fillMyPositionRelation();
  130. }
  131. _private.getMyContactMethodTemplate = function(){
  132. var myContactMethodTemplate = ['<div class="tab-pane" id="contact">',
  133. '<div class="panel panel-default">',
  134. '<div class="panel-heading">',
  135. ''+localeResource.contactInfo+'',
  136. '</div>',
  137. '<div class="panel-body">',
  138. '<div class="col-xs-4" align="left">'+localeResource.tel+'</div>',
  139. '<div id="cellVal" class="col-xs-6" align="right">${cell}</div>',
  140. '<div id="cell" class="col-xs-2"><span class="glyphicon glyphicon-phone"></span></div>',
  141. '</div>',
  142. '<div class="line"></div>',
  143. '<div class="panel-body">',
  144. '<div class="col-xs-4" align="left">'+localeResource.officePhone+'</div>',
  145. '<div id="officephoneVal"class="col-xs-6" align="right" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">${officephone}</div>',
  146. '<div id="officephone" class="col-xs-2"><span class="glyphicon glyphicon-phone-alt"></span></div>',
  147. '</div>',
  148. '<div class="line"></div>',
  149. '<div class="panel-body">',
  150. '<div class="col-xs-4" align="left">'+localeResource.email+'</div>',
  151. '<div id="emailVal" class="col-xs-6" align="right" style="text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">${email}</div>',
  152. '<div id="email" class="col-xs-2"><span class="glyphicon glyphicon-envelope"></span></div>',
  153. '</div>',
  154. '</div>',
  155. '<div class="panel panel-default">',
  156. '<div class="panel-heading">'+localeResource.tag+'</div>',
  157. '<div class="panel-body" style="max-height:80px;word-wrap:break-word;word-break:break-all;overflow:hidden;">',
  158. '{@each personTags as item}',
  159. '<span class="label label-default">${item.name}</span>&nbsp;&nbsp;',
  160. '{@/each}',
  161. '</div>',
  162. '</div>',
  163. '</div>'].join('');
  164. return myContactMethodTemplate;
  165. }
  166. _private.fillMyPositionRelation = function(){
  167. //获取上级组织模板
  168. var template = _private.getMyUpHierarchyTemplate();
  169. //编译模板,暂时不渲染
  170. var compiled_tpl = juicer(template);
  171. //获取数据,进行渲染,拼接html片段
  172. _private.callPersonUpHierarchyService('getPersonUpHierarchyService',compiled_tpl, _private.htmlContent);
  173. }
  174. _private.getMyUpHierarchyTemplate = function(){
  175. var myUpHierarchyTemplate = ['<div class="tab-pane" id="relation">',
  176. '<div class="panel panel-default">',
  177. '<div class="panel-heading">',
  178. '<span class="badge pull-right">${upCount}</span>'+localeResource.superior+'',
  179. '</div>',
  180. '{@each upHierarchyList as item}',
  181. '<div class="panel-body upHierarchy" data-key="${item.id}">',
  182. '<div class="col-xs-3" align="left"><img src="data:image/png;base64,${item.photo}" alt="..." class="img-circle" style="width:60px;height:60px;border: 5px solid #fff;border-radius: 30px;" onerror="_private.showDefaultImg(this)"></div>',
  183. '<div class="col-xs-9">',
  184. '<div><h5><b>${item.name}</b></h5></div>',
  185. '<div><h6>${item.position} - ${item.dept}</h6></div>',
  186. '</div>',
  187. '</div>',
  188. '<div class="line"></div>',
  189. '{@/each}',
  190. '</div>'].join('');
  191. return myUpHierarchyTemplate
  192. }
  193. _private.callPersonUpHierarchyService = function(serverName, compiled_tpl, html){
  194. var param = [];
  195. param[0] = _private.id;
  196. var personIdList = [];
  197. var success = function(data){
  198. var personIdList = [];
  199. if(data.length > 0){
  200. //去除上级人员的重复数据
  201. data = _private.removeMulitiData(data);
  202. _private.personHierarchy.upHierarchyList = [];
  203. _private.personHierarchy.upCount = data.length;
  204. for(var i in data){
  205. personIdList[i] = data[i].id;
  206. //解析组织信息
  207. var itemData = _private.parseData(data[i]);
  208. _private.personHierarchy.upHierarchyList.push(itemData);
  209. }
  210. }
  211. _private.getUpBatchPersonPhotos(personIdList,compiled_tpl, html);
  212. }
  213. var fail = function(data){
  214. //mbos.msgBox.showError('获取上级组织失败,请联系管理员.');
  215. _private.callPersonUpHierarchyService(serverName,compiled_tpl, html);
  216. }
  217. mbos.eas.invokeScript(serverName, param, success,fail);
  218. }
  219. _private.getUpBatchPersonPhotos = function(personIdList, compiled_tpl, html){
  220. var param = [];
  221. param[0] = personIdList;
  222. var success = function(data){
  223. var upHierarchyList = _private.personHierarchy.upHierarchyList;
  224. for(var i in upHierarchyList){
  225. upHierarchyList[i].photo = data[upHierarchyList[i].id];
  226. }
  227. //渲染数据
  228. var htmlFragment = compiled_tpl.render(_private.personHierarchy);
  229. html.push(htmlFragment);
  230. //填写下级组织
  231. _private.fillPersonDownHierarchy();
  232. }
  233. var fail = function(data){
  234. mbos.msgBox.showError(localeResource.msg3);
  235. }
  236. mbos.eas.invokeScript("getBatchPersonPhotoService", param, success,fail);
  237. }
  238. _private.fillPersonDownHierarchy = function(){
  239. //获取下级组织模板
  240. var template = _private.getMyDownHierarchyTemplate();
  241. //编译模板,暂时不渲染
  242. var compiled_tpl = juicer(template);
  243. //获取数据,进行渲染,拼接html片段
  244. _private.callPersonDownHierarchyService('getPersonDownHierarchyService',compiled_tpl, _private.htmlContent);
  245. }
  246. _private.getMyDownHierarchyTemplate = function(){
  247. var myDownHierarchyTemplate = [ '<div class="panel panel-default">',
  248. '<div class="panel-heading">',
  249. '<span class="badge pull-right">${downCount}</span>'+localeResource.subordinate+'',
  250. '</div>',
  251. '{@each downHierarchyList as item}',
  252. '<div class="panel-body downHierarchy" data-key="${item.id}">',
  253. '<div class="col-xs-3" align="left"><img src="data:image/png;base64,${item.photo}" alt="..." class="img-circle" style="width:60px;height:60px;border: 5px solid #fff;border-radius: 30px;" onerror="_private.showDefaultImg(this)" /></div>',
  254. '<div class="col-xs-9">',
  255. '<div><h5><b>${item.name}</b></h5></div>',
  256. '<div><h6>${item.position} - ${item.dept}</h6></div>',
  257. '</div>',
  258. '</div>',
  259. '<div class="line"></div>',
  260. '{@/each}',
  261. '</div>',
  262. '</div>'].join('');
  263. return myDownHierarchyTemplate
  264. }
  265. _private.callPersonDownHierarchyService = function(serverName, compiled_tpl, html){
  266. var param = [];
  267. param[0] = _private.id;
  268. var personIdList = [];
  269. var success = function(data){
  270. if(data.length > 0){
  271. //去除下级重复人员信息
  272. data = _private.removeMulitiData(data);
  273. _private.personHierarchy.downHierarchyList = [];
  274. _private.personHierarchy.downCount = data.length;
  275. for(var i in data){
  276. personIdList[i] = data[i].id;
  277. //解析组织信息
  278. var itemData = _private.parseData(data[i]);
  279. _private.personHierarchy.downHierarchyList.push(itemData);
  280. }
  281. }
  282. _private.getDownBatchPersonPhotos(personIdList,compiled_tpl, html);
  283. }
  284. var fail = function(data){
  285. //mbos.msgBox.showError('获取下级组织失败,请联系管理员.');
  286. _private.callPersonUpHierarchyService(serverName,compiled_tpl, html);
  287. }
  288. mbos.eas.invokeScript(serverName, param, success,fail);
  289. }
  290. _private.getDownBatchPersonPhotos = function(personIdList,compiled_tpl, html){
  291. var param = [];
  292. param[0] = personIdList;
  293. var success = function(data){
  294. var downHierarchyList = _private.personHierarchy.downHierarchyList;
  295. for(var i in downHierarchyList){
  296. downHierarchyList[i].photo = data[downHierarchyList[i].id];
  297. }
  298. //渲染数据
  299. var htmlFragment = compiled_tpl.render(_private.personHierarchy);
  300. html.push(htmlFragment);
  301. $('#rootpanel').eq(0).empty().append( _private.htmlContent.join(''));
  302. _private.registerListenerEvent('#rel');
  303. //填写我的档案中的经历
  304. //_private.fillMyExperience();
  305. }
  306. var fail = function(data){
  307. mbos.msgBox.showError(localeResource.msg5);
  308. }
  309. mbos.eas.invokeScript("getBatchPersonPhotoService", param, success,fail);
  310. }
  311. _private.fillMyExperience = function(){
  312. //获取下级组织模板
  313. var template = _private.getMyExperienceTemplate();
  314. //编译模板,暂时不渲染
  315. var compiled_tpl = juicer(template);
  316. //获取数据,进行渲染,拼接html片段
  317. _private.callExperienceService('getPersonDetailInfoService',compiled_tpl, _private.htmlContent);
  318. }
  319. _private.getMyExperienceTemplate = function(){
  320. var myDownHierarchyTemplate = ['<div class="tab-pane" id="archive">',
  321. '<div class="panel panel-default">',
  322. '<div class="panel-heading">',
  323. ''+localeResource.empArchive+'',
  324. '</div>',
  325. '<div class="panel-body">',
  326. '<div class="col-xs-5" align="left">'+localeResource.empNum+'</div>',
  327. '<div div class="col-xs-7 text-primary" align="left">${number}</div>',
  328. '</div>',
  329. '<div class="line"></div>',
  330. '<div class="panel-body">',
  331. '<div class="col-xs-5" align="left">'+localeResource.age+'</div>',
  332. '<div div class="col-xs-7 text-primary" align="left">${age}</div>',
  333. '</div>',
  334. '<div class="line"></div>',
  335. '<div class="panel-body">',
  336. '<div class="col-xs-5" align="left">'+localeResource.gender+'</div>',
  337. '<div div class="col-xs-7 text-primary" align="left">${gender}</div>',
  338. '</div>',
  339. '<div class="line"></div>',
  340. '<div class="panel-body">',
  341. '<div class="col-xs-5" align="left">'+localeResource.marital+'</div>',
  342. '<div div class="col-xs-7 text-primary" align="left">${wed}</div>',
  343. '</div>',
  344. '<div class="line"></div>',
  345. '<div class="panel-body">',
  346. '<div class="col-xs-5" align="left">'+localeResource.politics+'</div>',
  347. '<div div class="col-xs-7 text-primary" align="left">${politicalFace}</div>',
  348. '</div>',
  349. '<div class="line"></div>',
  350. '<div class="panel-body">',
  351. '<div class="col-xs-5" align="left">'+localeResource.entryTime+'</div>',
  352. '<div div class="col-xs-7 text-primary" align="left">${enterDate}</div>',
  353. '</div>',
  354. '<div class="line"></div>',
  355. '<div class="panel-body">',
  356. '<div class="col-xs-5" align="left">'+localeResource.grade+'</div>',
  357. '<div div class="col-xs-7 text-primary" align="left">${jobGrade}</div>',
  358. '</div>',
  359. '</div>'].join('');
  360. return myDownHierarchyTemplate
  361. }
  362. _private.callExperienceService = function(serverName, compiled_tpl, html){
  363. var param = [];
  364. param[0] = _private.id;
  365. var success = function(data){
  366. //处理数据为null的情况
  367. for(var i in data){
  368. if(data[i] === null){
  369. data[i] = '';
  370. }
  371. }
  372. _private.personDetailInfo = data;
  373. //渲染数据
  374. var htmlFragment = compiled_tpl.render(_private.personDetailInfo);
  375. html.push(htmlFragment);
  376. //填写我的企业任职经历
  377. _private.fillMyPositionMemberExperience();
  378. }
  379. var fail = function(data){
  380. _private.callExperienceService(serverName,compiled_tpl, html);
  381. //mbos.msgBox.showError('获取个人企业任职经历信息失败,请联系管理员.');
  382. }
  383. mbos.eas.invokeScript(serverName, param, success,fail);
  384. }
  385. _private.fillMyPositionMemberExperience = function(){
  386. //获取职业经历模板
  387. var template = _private.getMyPositionMemberExperienceTemplate();
  388. //编译模板,暂时不渲染
  389. var compiled_tpl = juicer(template);
  390. //获取数据,进行渲染,拼接html片段
  391. _private.callPositionMemberService('getPositionMemberService',compiled_tpl, _private.htmlContent);
  392. }
  393. _private.getMyPositionMemberExperienceTemplate = function(){
  394. var myPositionMemberExperienceTemplate = ['<div class="panel panel-default">',
  395. '<div class="panel-heading">',
  396. ''+localeResource.experience+'',
  397. '</div>',
  398. '{@each positionMemberList as item}',
  399. '<div class="panel-body">',
  400. '<div class="col-xs-5" align="left">${item.beginDate} - {@if item.endDate != "2199年12月"}${item.endDate}{@else}'+localeResource.toDate+'{@/if}</div>',
  401. '<div div class="col-xs-7" align="left">',
  402. '<div><b>${item.dept}</b></div>',
  403. '<div>${item.position}</div>',
  404. '</div>',
  405. '</div>',
  406. '<div class="line"></div>',
  407. '{@/each}',
  408. '</div>'].join('');
  409. return myPositionMemberExperienceTemplate
  410. }
  411. _private.callPositionMemberService = function(serverName, compiled_tpl, html){
  412. var param = [];
  413. param[0] = _private.id;
  414. var success = function(data){
  415. _private.personPositionMember.positionMemberList = data;
  416. //获取数据,进行渲染,拼接html片段
  417. var htmlFragment = compiled_tpl.render(_private.personPositionMember);
  418. _private.htmlContent.push(htmlFragment);
  419. //填写我的工作经历
  420. _private.fillMyWorkExperience();
  421. }
  422. var fail = function(data){
  423. mbos.msgBox.showError(localeResource.msg6);
  424. }
  425. mbos.eas.invokeScript(serverName, param, success,fail);
  426. }
  427. _private.fillMyWorkExperience = function(){
  428. //获取下级组织模板
  429. var template = _private.getMyWorkExperienceTemplate();
  430. //编译模板,暂时不渲染
  431. var compiled_tpl = juicer(template);
  432. //获取数据,进行渲染,拼接html片段
  433. _private.callWorkExperienceService('getWorkExpService',compiled_tpl, _private.htmlContent);
  434. }
  435. _private.getMyWorkExperienceTemplate = function(){
  436. var myWorkExperienceTemplate = ['<div class="panel panel-default">',
  437. '<div class="panel-heading">',
  438. ''+localeResource.socialExperience+'',
  439. '</div>',
  440. '{@each workExpList as item}',
  441. '<div class="panel-body">',
  442. '<div class="col-xs-5" align="left">${item.beginDate} - {@if item.endDate != "2199年12月"}${item.endDate}{@else}'+localeResource.toDate+'{@/if}</div>',
  443. '<div div class="col-xs-7" align="left">',
  444. '<div><b>${item.company}</b></div>',
  445. '<div>${item.position}</div>',
  446. '</div>',
  447. '</div>',
  448. '<div class="line"></div>',
  449. '{@/each}',
  450. '</div>'].join('');
  451. return myWorkExperienceTemplate
  452. }
  453. _private.callWorkExperienceService = function(serverName, compiled_tpl, html){
  454. var param = [];
  455. param[0] = _private.id;
  456. var success = function(data){
  457. _private.personWorkExp.workExpList = _private.parseDataList(data);
  458. //渲染数据
  459. var htmlFragment = compiled_tpl.render(_private.personWorkExp);
  460. _private.htmlContent.push(htmlFragment);
  461. //填写教育经历
  462. _private.fillMyDegreeExperience();
  463. }
  464. var fail = function(data){
  465. mbos.msgBox.showError(localeResource.msg7);
  466. }
  467. mbos.eas.invokeScript(serverName, param, success,fail);
  468. }
  469. _private.fillMyDegreeExperience = function(){
  470. //获取下级组织模板
  471. var template = _private.getMyDegreeExperienceTemplate();
  472. //编译模板,暂时不渲染
  473. var compiled_tpl = juicer(template);
  474. //获取数据,进行渲染,拼接html片段
  475. _private.callDegreeExperienceService('getPersonDegreeService',compiled_tpl, _private.htmlContent);
  476. }
  477. _private.getMyDegreeExperienceTemplate = function(){
  478. var myDegreeExperienceTemplate = ['<div class="panel panel-default">',
  479. '<div class="panel-heading">',
  480. ''+localeResource.education+'',
  481. '</div>',
  482. '{@each degreeExpList as item}',
  483. '<div class="panel-body">',
  484. '<div class="col-xs-5" align="left">{@if item.enrollDate != null}${item.enrollDate}{@else}{@/if} - {@if item.graduateDate != null}${item.graduateDate}{@else}{@/if}</div>',
  485. '<div div class="col-xs-7" align="left">',
  486. '<div><b>${item.graduateSchool}</b></div>',
  487. '<div>${item.diploma} ${item.specialty}</div>',
  488. '</div>',
  489. '</div>',
  490. '<div class="line"></div>',
  491. '{@/each}',
  492. '</div>'].join('');
  493. return myDegreeExperienceTemplate
  494. }
  495. _private.callDegreeExperienceService = function(serverName, compiled_tpl, html){
  496. var param = [];
  497. param[0] = _private.id;
  498. var success = function(data){
  499. _private.personDegreeExp.degreeExpList = _private.parseDataList(data);
  500. //渲染数据
  501. var htmlFragment = compiled_tpl.render(_private.personDegreeExp);
  502. _private.htmlContent.push(htmlFragment);
  503. //填写人员绩效信息
  504. _private.fillMyProjectExperience();
  505. }
  506. var fail = function(data){
  507. mbos.msgBox.showError(localeResource.msg8);
  508. }
  509. mbos.eas.invokeScript(serverName, param, success,fail);
  510. }
  511. _private.fillMyProjectExperience = function(){
  512. //获取项目经验模板
  513. var template = _private.getMyProjectExperienceTemplate();
  514. //编译模板,暂时不渲染
  515. var compiled_tpl = juicer(template);
  516. //获取数据,进行渲染,拼接html片段
  517. _private.callProjectExperienceService('getPersonProjectExperienceService',compiled_tpl, _private.htmlContent);
  518. }
  519. _private.getMyProjectExperienceTemplate = function(){
  520. var myDegreeExperienceTemplate = ['<div class="panel panel-default">',
  521. '<div class="panel-heading">',
  522. ''+localeResource.projectExperience+'',
  523. '</div>',
  524. '{@each projectExpList as item}',
  525. '<div class="panel-body">',
  526. '<div class="col-xs-5" align="left">${item.startDate} - {@if item.endDate != "2199年12月"}${item.endDate}{@else}'+localeResource.toDate+'{@/if}</div>',
  527. '<div div class="col-xs-7" align="left">',
  528. '<div><b>${item.projectName}</b></div>',
  529. '<div>${item.character}</div>',
  530. '</div>',
  531. '</div>',
  532. '<div class="line"></div>',
  533. '{@/each}',
  534. '</div>',
  535. '</div>'].join('');
  536. return myDegreeExperienceTemplate
  537. }
  538. _private.callProjectExperienceService = function(serverName, compiled_tpl, html){
  539. var param = [];
  540. param[0] = _private.id;
  541. var success = function(data){
  542. _private.personProjectExp.projectExpList = _private.parseDataList(data);
  543. //渲染数据
  544. var htmlFragment = compiled_tpl.render( _private.personProjectExp);
  545. _private.htmlContent.push(htmlFragment);
  546. $('#rootpanel').eq(0).empty().append( _private.htmlContent.join(''));
  547. _private.registerListenerEvent('#arc');
  548. }
  549. var fail = function(data){
  550. mbos.msgBox.showError(localeResource.msg9);
  551. }
  552. mbos.eas.invokeScript(serverName, param, success,fail);
  553. }
  554. _private.parseDataList = function(data){
  555. for(var i in data){
  556. var info=data[i];
  557. if(info){
  558. for(var m in info){
  559. if(info[m]==null){
  560. info[m]='';
  561. }
  562. }
  563. }
  564. }
  565. return data;
  566. }
  567. _private.parseData = function(data){
  568. //处理null的情况
  569. for(var i in data){
  570. if(!data[i]){
  571. data[i] = '';
  572. }
  573. }
  574. var positionMemberList = data.positionMemberList;
  575. //先记录第一条任职经历
  576. var position = positionMemberList[0].position;
  577. var dept = positionMemberList[0].dept;
  578. var endDate = positionMemberList[0].endDate;
  579. if(endDate == '2199年12月'){
  580. positionMemberList[0].endDate = localeResource.toDate
  581. }
  582. for(var j=0;j< positionMemberList.length; j++){
  583. if(positionMemberList[j] === null){
  584. positionMemberList[j] = '';
  585. }
  586. if(j > 0){
  587. if(positionMemberList[j].beginDate >= positionMemberList[j-1].beginDate && positionMemberList[j].isPrimary){
  588. //替换最新的任职经历
  589. position = positionMemberList[j].position;
  590. dept = positionMemberList[j].dept;
  591. }
  592. }
  593. }
  594. //增加岗位和部门属性
  595. data.position = position;
  596. data.dept = dept;
  597. return data;
  598. }
  599. _private.removeMulitiData = function(data){
  600. var personIdArray = [];
  601. var personData = [];
  602. for(var i in data){
  603. if(personIdArray.indexOf(data[i].id) == -1 && data[i].id != _private.personSummaryInfo.id){
  604. personIdArray.push(data[i].id);
  605. personData.push(data[i]);
  606. }
  607. }
  608. return personData;
  609. }
  610. _private.showDefaultImg = function(img){
  611. img.src = ['data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAB4CAYAAAAE9le0AAAEcUlEQVR42u2cV27rMBBFuf+1pfdq',
  612. 'I7049haUdw0IMPRkiSocjqLzcT/SbIdHnMYZhs1mUyA/CiwCQBBAAIIAAhAEEIAggACEhQAIAghA',
  613. 'EEAAggACEAQQgCCAIIAABAEEIAggAHGm9XpdfH9/Fx8fH8Xb21vx/v6+/VrfB4gRAC387e1tcXx8',
  614. 'XBwcHOzV0dHR9vdeXl4mCcg1kNVqVTw8PBSHh4eNEPZJf3d3d1d8fX0BZIh+fn6Kx8fH3iDqwAis',
  615. 'AAOko+QP2sxSX8mcvb6+AiRWz8/Po+2Kpt2yWCwA0iYtUkoQVcmEAaRhZ1jCKOVxpwQPPiO1mWoy',
  616. 'X958SsgdTaVy4F2gKKkEyD8ptM0Jo5RyldkDUU6Qy1TV7RKVYWYNRFGOBxilrq+v5wtENSYvu2NX',
  617. 'HnxJFiAqFHqDIT09Pc0TiKqxHoFcXl7OE0juULfJuecu2Ycc/sMjjFK5S/XmQOQ4PQORf5sVEMX7',
  618. 'noGorjYrIF4jLC+RVshRTAQIPgQfQpQ1oTzEY9mklI4EyNSd6OLiYp6ZuprYPALxcKRLtdeR/8h6',
  619. 'HqJTOgqLjoDoafS0S3KHuy7O1L2cGno5LcwOxMO5ut7/8/MTIKXUF5UTiodTQnedi9ZtpJ7bSd30',
  620. '9lr7E/kNjwM9rrrftVMszJfge52ucjcfktKn6HW9+YxJTFApR1HiOCYYmShP0dQkZwx13KuFHJqB',
  621. 'e0n6/swUrg61ZGq0uDG7RlVb+aMpDXtOdk5d5xVaaD31akgQKElf6/u5zzO4yYGbHP6GvO4kV0CU',
  622. 'G1jZ/fPz8+L09HQ7NEQtq3JlhkJcLZActmbJLYqaddGYh3nDLEC0IE15RupdoiBgX4SmXZOzezFY',
  623. '7wiFo9oFOSuwMaeV2jE5wmYzIOpYPDs7G2UIU00SWrA6xTQqnJycdLojxbLuFSx2Rdfzc5mNttes',
  624. 'W1QtYNtTrZ93zfbl36zG3UJqGH1LH20399T5gZjx5r5nLxoysijBhJQwVMLoW4OSWWp7j93Xj70A',
  625. '4OrqyvXFNSFVFDUERuxp3m4nfczvj9UPptxlMkD0T8vmWrV1yiQqaovJvMecTUkVGoccIeWYA5hy',
  626. '0rFP7JjHxPp82qGugYx9zVKME9WixAIZY+dWHf3YucpoQFJ0IsYs9P39/XZh2naTTNoUOuaDh4hq',
  627. 'nxQRtb1vmfW3ZfcpL0mLiQhNgTTVhoba6dhFVhUg10yKEtmxsvnBQFJfQtZ0bVI1p2jyOVq0KXRA',
  628. 'DgaSusFtXyJWNzy6z8T1KZfk2iXBmyOv6ubmptNtdHVRz3K5nEyf8CAginBS/5MqInYxQXX1rKGt',
  629. 'RJZDP2FIecSqa71ao2rKuPWZdguTluNz1fc2BWJ5gWXVFLRVA3bzF+ubI4aardA377C880oZtiCU',
  630. 'anvilZuUB1apo6uqZMbNgXi/QGbKw6MhZwHxL0qWwxyISgVlCyf6X3Qu0kqKAAIQBBAEEIAggAAE',
  631. 'AQQgCCAAQQABCIsAEAQQgCCAAAQBBCAIIABBAEEAmYZ+Acsb6tSP1j3TAAAAAElFTkSuQmCC'].join('');
  632. img.onerror = null;
  633. }
  634. _private.registerListenerEvent = function(id){
  635. $(id).tab('show');//初始化显示哪个tab
  636. $('#myTab a').click(function (e) {
  637. e.preventDefault();//阻止a链接的跳转行为
  638. $(this).tab('show');//显示当前选中的链接及关联的content
  639. if($(this).attr('href') == "#relation"){
  640. if($('#relation').length <= 0){
  641. //填写我的职级关系
  642. _private.fillMyPositionRelation();
  643. }
  644. }else if($(this).attr('href') == "#archive"){
  645. if($('#archive').length <= 0){
  646. //填写我的档案中的经历
  647. _private.fillMyExperience();
  648. }
  649. }
  650. });
  651. $(".upHierarchy").on("click",function(event){
  652. var key = $(this).attr('data-key');
  653. mbos.ui.open({
  654. path:requestParam.path,
  655. name:requestParam.name,
  656. params:{
  657. appid: _private.appid,
  658. eid: _private.eid,
  659. storeEid: mbos.getRequestParams().storeEid,
  660. dataKey: encodeURIComponent(key)
  661. }
  662. });
  663. });
  664. $(".downHierarchy").on("click",function(event){
  665. var key = $(this).attr('data-key');
  666. mbos.ui.open({
  667. path:requestParam.path,
  668. name:requestParam.name,
  669. params:{
  670. appid: _private.appid,
  671. eid: _private.eid,
  672. storeEid: mbos.getRequestParams().storeEid,
  673. dataKey: encodeURIComponent(key)
  674. }
  675. });
  676. });
  677. $("#cell").on("click",function(event){
  678. if($("#cellVal").html()){
  679. window.location.href = 'tel:' + $("#cellVal").html();
  680. }else{
  681. mbos.msgBox.showInfo(localeResource.msg10);
  682. }
  683. });
  684. $("#officephone").on("click",function(event){
  685. if($("#officephoneVal").html()){
  686. window.location.href = 'tel:' + $("#officephoneVal").html();
  687. }else{
  688. mbos.msgBox.showInfo(localeResource.msg11);
  689. }
  690. });
  691. $("#email").on("click",function(event){
  692. if($("#emailVal").html()){
  693. window.location.href = 'mailto:' + $("#emailVal").html();
  694. }else{
  695. mbos.msgBox.showInfo(localeResource.msg12);
  696. }
  697. });
  698. }
  699. _private.controlEvent = function(){
  700. }