resumeAnalysis——备份.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787
  1. //var interval = 0;
  2. //var code, code1, code2, code3;
  3. var SUCCESS_CODE = 0;
  4. /**
  5. *@description 简历解析
  6. */
  7. function resumeAnalysis(that) {
  8. // 简历解析状态
  9. var ANALYSIS_TODO = 1; //待解析 SAVED 1
  10. var ANALYSIS_SUCCESS = 7; //解析成功 FINISHED 7
  11. var ANALYSIS_FAIL = 8; //解析失败 ERROR 8
  12. // 简历解析任务状态
  13. var NOT_START = 1; //上传简历 SAVED 1
  14. var SUBMITED = 2; //提交解析 SUBMITED 2
  15. var EXECUTING = 4; //开始解析 RUNNING 4
  16. var FINISHED = 7; //解析完成 FINISHED 7
  17. var TIMEOUT = 9; //解析超时 TIMEOUT 9
  18. // 任务ID
  19. var taskId = "";
  20. var targetId = '';
  21. //上次解析结束任务
  22. var lastTaskId = "";
  23. var lastAffirm = false;
  24. var isDialogShow = false;
  25. var analyzeTodoList = [];
  26. var analyzeSucceedList = [];
  27. var analyzeFailList = [];
  28. var analysisProgressTimer;
  29. var pageUIPK='';
  30. // 模态框
  31. var analysisModal = {
  32. show: false,
  33. init: function() {
  34. analyzeTodoList = [];
  35. analyzeSucceedList = [];
  36. analyzeFailList = [];
  37. analysisModal.analysisTab($('.analysis-success'));
  38. analysisModal.analysisTab($('.analysis-failure'));
  39. analysisModal.analysisTab($('.analysis-todo'));
  40. $('.doneAmount').text(0);
  41. $('.resumeAmount').text(0);
  42. $('.failedAmount').text(0);
  43. $('.successedAmount').text(0);
  44. $('.todoAmount').text(0);
  45. },
  46. hidePanel: function() {
  47. $('.analysis-panel').hide();
  48. },
  49. showAnalysisPanel: function() {
  50. this.hidePanel();
  51. $('.some-resume').show();
  52. $('.some-resume').removeClass('some-resume-hide');
  53. },
  54. compileResumeList: function(id, data) {
  55. var myTemplate = Handlebars.compile($("#handlebars-template").html());
  56. Handlebars.registerHelper("analyzeSucceed", function (x, options) {
  57. if (x === ANALYSIS_SUCCESS) {
  58. return options.fn(this);
  59. } else {
  60. return options.inverse(this);
  61. }
  62. })
  63. Handlebars.registerHelper("formatState", function (state, options) {
  64. if (state === ANALYSIS_TODO) {
  65. return '待解析';
  66. } else if (state === ANALYSIS_SUCCESS) {
  67. return state;
  68. } else if (state === ANALYSIS_FAIL) {
  69. return options.data.root.resumes[options.data.index].info;
  70. } else {
  71. return '解析失败';
  72. }
  73. })
  74. if(data.resumes.length == 0) {
  75. switch(id) {
  76. case 'inputcontainer':
  77. data = {
  78. resumes:false,
  79. des:'你没有待解析的简历哦'
  80. }
  81. $('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
  82. break;
  83. case 'resume-list-success':
  84. data = {
  85. resumes:false,
  86. des:'你还没有解析成功的简历哦'
  87. }
  88. break;
  89. case 'resume-list-failure':
  90. data = {
  91. resumes:false,
  92. des:'恭喜,你没有解析失败的简历哦'
  93. }
  94. }
  95. }else{
  96. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
  97. }
  98. $('#' + id).html(myTemplate(data));
  99. },
  100. analysisTab: function(dom) {
  101. var tabClassName = $(dom).attr('class').replace(' tab-current', '');
  102. switch (tabClassName) {
  103. case 'analysis-todo':
  104. this.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
  105. break;
  106. case 'analysis-success':
  107. this.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
  108. break;
  109. case 'analysis-failure':
  110. this.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
  111. break;
  112. default:
  113. break;
  114. }
  115. // tab 样式
  116. $('.analysis-tab button').removeClass('tab-current');
  117. $(dom).addClass('tab-current');
  118. // tab-ct 样式
  119. var tabClassName = $(dom).attr('class').replace(' tab-current', '');
  120. $('.tab-ct-current').removeClass('tab-ct-current');
  121. $('.' + tabClassName + '-ct').addClass('tab-ct-current');
  122. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
  123. },
  124. startAnalyze: function() {
  125. var param = {taskId: taskId};
  126. var val = $("#recuritmentDemand").shrPromptBox("getValue");
  127. if(val){
  128. targetId = val.id;
  129. param = {
  130. targetId: targetId,
  131. taskId: taskId
  132. };
  133. }else{
  134. var meg = '';
  135. if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'||pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'||pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
  136. meg = '请选择招聘需求';
  137. }else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'||pageUIPK=='com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
  138. meg = '请选择目标简历夹';
  139. }
  140. shr.showWarning({
  141. message: meg,
  142. hideAfter: 3
  143. })
  144. return false;
  145. }
  146. //简历来源
  147. var _resumeSource = $("#resumeSource").shrPromptBox("getValue");
  148. if(_resumeSource && _resumeSource.id){
  149. param.resumeSourceId=_resumeSource.id;
  150. }
  151. val = $("#interRecommendation").shrPromptBox("getValue");
  152. if(!val&&pageUIPK=='com.kingdee.shr.recuritment.app.RecommendRecord.list'){
  153. meg = '请选择内部推荐人';
  154. shr.showWarning({
  155. message: meg,
  156. hideAfter: 3
  157. })
  158. return false;
  159. }
  160. if(_resumeSource&&_resumeSource.name=="内部推荐"&&!val){
  161. meg = '选择内部推荐必须选择内部推荐人';
  162. shr.showWarning({
  163. message: meg,
  164. hideAfter: 3
  165. })
  166. return false;
  167. }
  168. if(val && val.id){
  169. param.interRecommendationId=val.id;
  170. }
  171. val = $("#sourceType").shrSelect('getValue').value;
  172. if(val){
  173. param.sourceType=val;
  174. }
  175. $('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
  176. that.remoteCall({
  177. method: 'resumeAnalysis',
  178. param: param,
  179. success: function(response) {
  180. if(response.code == SUCCESS_CODE) {
  181. $('.analysis-progress,.modal-header .min').show();
  182. $('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
  183. $('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
  184. $("#recuritmentDemand").shrPromptBox("disable");
  185. $("#interRecommendation").shrPromptBox("disable");
  186. $("#resumeSource").shrPromptBox("disable");
  187. $("#sourceType").shrSelect("disable");
  188. initCntroller.getAnalysisProgress();
  189. }
  190. if(response.code != 0) {
  191. shr.showError({
  192. message:response.mesg,
  193. hideAfter:3
  194. });
  195. return false;
  196. }
  197. }
  198. })
  199. },
  200. clearTodo: function() {
  201. var resumeId = [];
  202. for(var i = 0; i < analyzeTodoList.length; i++){
  203. resumeId.push(analyzeTodoList[i].id);
  204. }
  205. that.remoteCall({
  206. method: 'deleteUploadResume',
  207. param: {
  208. deleteResumeIds:resumeId.join(',')
  209. },
  210. success: function(response) {
  211. if(response.code == SUCCESS_CODE) {
  212. $('.todoAmount').text(0);
  213. analyzeTodoList = []
  214. analysisModal.analysisTab($('.analysis-todo'));
  215. }
  216. if(response.code != 0) {
  217. shr.showError({
  218. message:response.mesg,
  219. hideAfter:3
  220. });
  221. return false;
  222. }
  223. }
  224. })
  225. },
  226. clearFailed: function() {
  227. var resumeId = [];
  228. for(var i = 0; i < analyzeFailList.length; i++){
  229. resumeId.push(analyzeFailList[i].id);
  230. }
  231. that.remoteCall({
  232. method: 'deleteUploadResume',
  233. param: {
  234. deleteResumeIds:resumeId.join(',')
  235. },
  236. success: function(response) {
  237. if(response.code == SUCCESS_CODE) {
  238. analyzeFailList = [];
  239. analysisModal.analysisTab($('.analysis-failure'));
  240. $('.failedAmount').text(0);
  241. $('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
  242. }
  243. if(response.code != 0) {
  244. shr.showError({
  245. message:response.mesg,
  246. hideAfter:3
  247. });
  248. return false;
  249. }
  250. }
  251. })
  252. },
  253. deleteResume: function(){
  254. var resumeId = $(this).find('a').attr('resume-id');
  255. that.remoteCall({
  256. method: 'deleteUploadResume',
  257. param: {
  258. deleteResumeIds: resumeId
  259. },
  260. success: function(response) {
  261. if(response.code == SUCCESS_CODE) {
  262. if($('.tab-ct-current').hasClass('analysis-failure-ct')){
  263. for(var i = 0; i < analyzeFailList.length; i++ ){
  264. if(analyzeFailList[i].id == resumeId){
  265. analyzeFailList.splice(i, 1);
  266. break;
  267. }
  268. }
  269. analysisModal.analysisTab($('.analysis-failure'));
  270. $('.failedAmount').text(analyzeFailList.length);
  271. if(analyzeFailList.length == 0) {
  272. $('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
  273. }
  274. }else if($('.tab-ct-current').hasClass('analysis-todo-ct')){
  275. for(var i = 0; i < analyzeTodoList.length; i++ ){
  276. if(analyzeTodoList[i].id == resumeId){
  277. analyzeTodoList.splice(i, 1);
  278. break;
  279. }
  280. }
  281. analysisModal.analysisTab($('.analysis-todo'));
  282. $('.todoAmount').text(analyzeTodoList.length);
  283. }
  284. }
  285. if(response.code != 0) {
  286. shr.showError({
  287. message:response.mesg,
  288. hideAfter:3
  289. });
  290. return false;
  291. }
  292. }
  293. })
  294. },
  295. restartAnalyze: function() {
  296. if(analyzeFailList.length === 0) {
  297. shr.showWarning({
  298. message: '您没有解析错误的简历哦',
  299. hideAfter: 5
  300. })
  301. return
  302. }
  303. $.block.show();
  304. that.remoteCall({
  305. method: 'resumeAnalysisAgain',
  306. param: {
  307. taskId: lastTaskId
  308. },
  309. success: function(res) {
  310. $.block.hide();
  311. $('.analysis-progress,.modal-header .min').show();
  312. initCntroller.getAnalysisProgress();
  313. analysisModal.analysisTab($('.analysis-todo'));
  314. $('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
  315. $('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
  316. }
  317. })
  318. },
  319. checkResult: function(dom) {
  320. var id = $(dom).attr('id');
  321. $('.some-resume').removeClass('some-resume-result');
  322. $('.result').hide();
  323. $('.continueAnalyze').css({
  324. 'visibility':'hidden',
  325. 'z-index': '1'
  326. });
  327. // $('#resume_upload').css('left','0px');
  328. $('.upload-btn').css('visibility','visible');
  329. if(id === 'check_succeeded') {
  330. analysisModal.analysisTab($('.analysis-success'));
  331. } else {
  332. analysisModal.analysisTab($('.analysis-failure'));
  333. }
  334. if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
  335. analysisModal.lastAffirmChange();
  336. }
  337. },
  338. close: function() {
  339. $('#resumeInput-modal').modal('hide');
  340. jQuery("#grid").trigger("reloadGrid");//重新加载表格內的数据
  341. },
  342. minimize: function() {
  343. isDialogShow = false;
  344. if(lastTaskId){
  345. $('.minimize-analysis').hide();
  346. }else{
  347. $('.minimize-analysis').show();
  348. }
  349. },
  350. setProgressNum: function(data) {
  351. $('.doneAmount').text(data.doneAmount);
  352. $('.resumeAmount').text(data.resumeAmount);
  353. $('.failedAmount').text(data.failedAmount);
  354. $('.successedAmount').text(data.successedAmount);
  355. $('.todoAmount').text(data.nonExecuteAmount);
  356. if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
  357. $('.result-des-extra').text('解析成功后,将为您通知对应招聘职位的负责HR!');
  358. }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
  359. $('.result-des-extra').text('简历解析成功进入简历库后,有对应权限的人员可查看并使用该简历!');
  360. }
  361. },
  362. lastAffirmChange: function(){
  363. that.remoteCall({
  364. method: 'affirmSmartImportTaskResult',
  365. param: {
  366. taskId: lastTaskId
  367. },
  368. success: function(res) {
  369. console.log(res);
  370. }
  371. })
  372. }
  373. };
  374. // 最小化进度球
  375. var minimizeBall = {
  376. show: false,
  377. toggleExpansion: function() {
  378. $('.expansion').toggle();
  379. },
  380. maximize: function() {
  381. $('#resumeInput-modal').modal('show');
  382. $('.minimize-analysis').hide();
  383. }
  384. }
  385. // 初始化
  386. var initCntroller = {
  387. getSmartImportTaskSchedule: function(data) {
  388. if(data){
  389. lastTaskId = data.lastTaskId;
  390. lastAffirm = data.lastAffirm;
  391. taskId = data.id;
  392. analyzeTodoList = data.nonExecuteDetails;
  393. analyzeSucceedList = data.successDetails;
  394. analyzeFailList = data.failDetails;
  395. }else{
  396. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show(); //如果没有数据时,F7和查看日志按钮显示
  397. }
  398. analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList.reverse() });
  399. analysisModal.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
  400. analysisModal.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
  401. if(data){
  402. analysisModal.setProgressNum(data);
  403. }
  404. if(!data || data.taskState === NOT_START){
  405. clearInterval(analysisProgressTimer);
  406. return;
  407. }
  408. //待解析大于0
  409. if(analyzeTodoList.length > 0){
  410. $('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
  411. $('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
  412. }
  413. //解析过程中初始化进度
  414. if(data && data.taskState && (data.taskState.value === SUBMITED || data.taskState.value === EXECUTING)){
  415. //控制带解析页面按钮不可使用
  416. $('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
  417. $('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
  418. //显示进度条
  419. $('.progress-done').css('width', data.doneAmount / data.resumeAmount * 100 + '%');
  420. $('.analysis-result').text('解析中...');
  421. $('.min-todo').show();
  422. //显示进度球
  423. if(!isDialogShow){
  424. $('.minimize-analysis').show();
  425. }
  426. }
  427. //解析完成
  428. if(data.lastTaskState){
  429. clearInterval(analysisProgressTimer);
  430. //进度条隐藏
  431. $('.analysis-progress,.modal-header .min').hide();
  432. //按钮控制
  433. $('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
  434. $('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
  435. //显示结果页面
  436. $('.some-resume').addClass('some-resume-result');
  437. $('.result').show();
  438. $('.analysis-result').text('解析完成');
  439. $('.min-todo').hide();
  440. analysisModal.analysisTab($('.analysis-todo'));
  441. if(analyzeSucceedList.length !== 0) {
  442. $('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
  443. }
  444. if(analyzeFailList.length !== 0) {
  445. $('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
  446. }
  447. if(data.resumeAmount === data.successedAmount) {
  448. $('.all-success').show();
  449. $('.some-failed').hide();
  450. $('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
  451. } else {
  452. $('.some-failed').show();
  453. $('.all-success').hide();
  454. $('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
  455. }
  456. $('.analysis-progress,.modal-header .min').hide();
  457. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').hide();
  458. $('.continueAnalyze').css({
  459. 'visibility':'visible',
  460. 'z-index': '205'
  461. });
  462. // $('#resume_upload').css('left','1000px');
  463. $('.upload-btn').css('visibility','hidden');
  464. $("#recuritmentDemand").shrPromptBox("enable");
  465. $("#interRecommendation").shrPromptBox("enable");
  466. $("#resumeSource").shrPromptBox("enable");
  467. $("#sourceType").shrSelect("enable");
  468. }
  469. if(lastAffirm){
  470. $('.minimize-analysis').hide();
  471. $('.some-resume').removeClass('some-resume-result');
  472. $('.result').hide();
  473. // $('#resume_upload').css('left','0px');
  474. $('.upload-btn').css('visibility','visible');
  475. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
  476. }
  477. },
  478. getAnalysisProgress: function() {
  479. that.remoteCall({
  480. method: 'getSmartImportTaskSchedule',
  481. param: {
  482. // taskId: taskId
  483. },
  484. success: function(res) {
  485. var data = res.data
  486. if (res.code !== '0') {
  487. return false;
  488. }
  489. initCntroller.getSmartImportTaskSchedule(data);
  490. }
  491. })
  492. clearInterval(analysisProgressTimer);
  493. analysisProgressTimer = setInterval(function () {
  494. that.remoteCall({
  495. method: 'getSmartImportTaskSchedule',
  496. param: {
  497. // taskId: taskId
  498. },
  499. success: function(res) {
  500. var data = res.data
  501. if (res.code !== '0') {
  502. return false;
  503. }
  504. isEnd = data.isEnd;
  505. if(!res.data.taskState){
  506. res.data.taskState = [];
  507. res.data.taskState.value = NOT_START;
  508. }
  509. initCntroller.getSmartImportTaskSchedule(data);
  510. }
  511. })
  512. }, 3000);
  513. },
  514. initFileUpload: function() {
  515. pageUIPK = shr.getUrlRequestParam("uipk");
  516. var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume";
  517. $('#resume_upload').fileupload({
  518. url:uploadUrl,
  519. autoUpload:true,
  520. recalculateProgress:false,
  521. add: function(e,data) {
  522. console.log(data)
  523. var maxNumberOfFiles = 100;
  524. //DOC,DOCX,TXT,PDF,MSG,WPS,JPG,PNG,GIF,RTF
  525. var acceptFileTypes = /(\.|\/)(doc|docx|txt|pdf|msg|wps|jpg|png|gif|rtf)$/i;
  526. var maxSize = 1024 * 20 * 1024
  527. var todoAmount = parseInt($('.analysis-todo .todoAmount').text());
  528. var flag = true;
  529. if(!acceptFileTypes.test(data.files[0].name)) {
  530. shr.showWarning({
  531. message:'您上传的文件类型['+data.files[0].name+']不符合安全要求,系统不允许上传,请您上传常用office类、图片等文件',
  532. hideAfter:5
  533. });
  534. flag = false;
  535. }
  536. if(maxNumberOfFiles <= todoAmount) {
  537. shr.showWarning({
  538. message:'一次解析数量不能超过' + maxNumberOfFiles + '份',
  539. hideAfter:3
  540. });
  541. return false;
  542. }
  543. if(maxSize <= data.files[0].size) {
  544. shr.showWarning({
  545. message:data.files[0].name + ' 文件超过20M',
  546. hideAfter:3
  547. });
  548. flag = false;
  549. }
  550. if(data.files[0].size==0){
  551. shr.showWarning({
  552. message:'文件内容不能为空 ',
  553. hideAfter:3
  554. });
  555. return false;
  556. }
  557. if(flag){
  558. $('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
  559. $('.todoAmount').text(todoAmount + 1);
  560. $('.resumeAmount').text(data.files.length);
  561. var targetIdVal = '';
  562. if(!$('#_resumeAnalysisDiv').is(':hidden')){
  563. var val = $("#recuritmentDemand").shrPromptBox("getValue");
  564. if(val){
  565. targetIdVal = '&targetId=' + encodeURIComponent(val.id);
  566. }
  567. }
  568. var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume" + targetIdVal;
  569. $(this).fileupload('option', 'url', uploadUrl);
  570. $.block.show( {
  571. text : '操作中,请稍候...'
  572. });
  573. data.submit();
  574. }
  575. },
  576. start: function(e) {
  577. console.log('start');
  578. },
  579. progress: function(e, data) {
  580. console.log('progress')
  581. },
  582. progressall: function(e, data) {
  583. console.log('progressall')
  584. console.log(data);
  585. },
  586. done: function(e,data) {
  587. $('.analysis-todo-ct .resume-list').on('mouseover',function () {
  588. if($('#startAnalyze').hasClass('disabled')) {
  589. return
  590. }
  591. $(this).find('.cancel').show();
  592. $(this).css('border-color','#55B5EC');
  593. })
  594. $('.analysis-todo-ct .resume-list').on('mouseleave',function() {
  595. $(this).find('.cancel').hide();
  596. $(this).css('border-color','#E5E5E5');
  597. })
  598. var res = data.result;
  599. if(res.code == '0'){
  600. var data = res.data;
  601. taskId = data.id;
  602. analyzeTodoList.unshift(data.nonExecuteDetails[0]);
  603. analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
  604. }else{
  605. shr.showWarning({
  606. message: res.mesg,
  607. hideAfter: 3
  608. })
  609. $.block.hide();
  610. $('.todoAmount').text(parseInt($('.analysis-todo .todoAmount').text()) - 1);
  611. return;
  612. }
  613. if(parseFloat($('.analysis-todo .todoAmount').text()) == analyzeTodoList.length){
  614. $.block.hide();
  615. }
  616. }
  617. });
  618. },
  619. createResumeAnalysisTask: function (cb) {
  620. var _this = this
  621. that.remoteCall({
  622. method: 'createResumeAnalysisTask',
  623. param: {},
  624. success: function(res) {
  625. if (res.code === '0') {
  626. taskId = res.data.id;
  627. cb()
  628. } else {
  629. cb()
  630. }
  631. }
  632. })
  633. },
  634. initPage: function() {
  635. var _this = this
  636. _this.initSourceTypeSelect();
  637. $('#resumeInput-modal').draggable();
  638. // $('#resumeInput-modal').modal({backdrop:"static"}); //单击背景弹框不关闭,但弹框会默认打开,所以要写在弹框打开之前的位置
  639. _this.getAnalysisProgress();
  640. },
  641. initSourceTypeSelect: function(){
  642. if($('#sourceType').attr('ctrlrole')) return false;
  643. var opts = [{
  644. alias: "主动搜索",
  645. value: "1",
  646. },{
  647. alias: "主动投递",
  648. value: "2",
  649. },{
  650. alias: "推荐/竞聘",
  651. value: "3",
  652. }]
  653. $('#sourceType').shrSelect({
  654. 'id': 'sourceType',
  655. 'data':opts, //选项
  656. 'value': '', //默认选中项
  657. 'onChange':function(){
  658. //设置来源类型
  659. shr.remoteCall({
  660. method: 'setSmartImportChooseSourceType',
  661. param: {
  662. targetId: $("#sourceType").shrSelect('getValue').value
  663. },
  664. success: function(res) {
  665. console.log(res);
  666. }
  667. })
  668. }
  669. })
  670. $('#sourceType').bind("keyup.shrSelect", function( event ) {
  671. if(event.keyCode == 8 || event.keyCode == 46) {
  672. $('#sourceType').trigger('change');
  673. }
  674. })
  675. },
  676. addEventListener: function() {
  677. // 关闭简历解析对话框
  678. $('#closeAnalyze, #closeAnalyzeDialog').die('click').live('click',analysisModal.close);
  679. // 最小化
  680. $('.min').die('click').live('click',analysisModal.minimize);
  681. // 解析状态切换
  682. $('.analysis-tab button').die('click').live('click', function() {
  683. analysisModal.analysisTab(this);
  684. } );
  685. // 清空待解析简历
  686. $('#clearResumeList').die('click').live('click',analysisModal.clearTodo);
  687. // 开始解析
  688. $('#startAnalyze').die('click').live('click',function() {
  689. analysisModal.startAnalyze();
  690. });
  691. // 查看解析结果
  692. $('.check-result').die('click').live('click',function() {
  693. analysisModal.checkResult(this);
  694. });
  695. // 继续添加,解析简历
  696. $('.continueAnalyze').die('click').live('click',function() {
  697. $('.continueAnalyze').css({
  698. 'visibility':'hidden',
  699. 'z-index': '1'
  700. });
  701. // $('#resume_upload').css('left','0px');
  702. $('.upload-btn').css('visibility','visible');
  703. $('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').show();
  704. $('.result').hide();
  705. $('.some-resume').removeClass('some-resume-result');
  706. $('.analysis-progress,.modal-header .min').hide();
  707. if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
  708. analysisModal.lastAffirmChange();
  709. }
  710. // $('#resume_upload').click();//根据最新需求,继续添加只切换页签,不上传简历
  711. });
  712. // 清空失败简历
  713. $('#clearFailedResume').die('click').live('click',analysisModal.clearFailed);
  714. // 重新解析
  715. $('#restartUpload').die('click').live('click',analysisModal.restartAnalyze);
  716. // 关闭
  717. // $('#resumeInput-modal').on('hidden.bs.modal', analysisModal.init);
  718. // 最大化
  719. $('#resumeInput-modal').die('click').live('show.bs.modal',function(){
  720. isDialogShow = true;
  721. $('#resumeInput-modal').removeClass('hide');
  722. $('.minimize-analysis').hide();
  723. });
  724. // 最小化状态下展示进度详情
  725. $('.progress-ball').die('click').live('click',minimizeBall.toggleExpansion);
  726. // 最小化时点击最大化按钮
  727. $('.maximize-icon').on('click',minimizeBall.maximize);
  728. // 单条删除简历
  729. $('.cancel').die('click').live('click',analysisModal.deleteResume);
  730. $('#viewLog').die('click').live('click',function(){
  731. var uipk = '';
  732. if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'){
  733. uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.resume.list';
  734. }else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'){
  735. uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.archives.list';
  736. }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'){
  737. uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.recommendResume.list';
  738. }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
  739. uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadResume.list';
  740. }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
  741. uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPrise.list';
  742. }
  743. var params ={
  744. uipk: uipk
  745. };
  746. var url = shr.getContextPath() + shr.dynamicURL + '?' + $.param(params)+ "&inFrame=true";
  747. window.open(url,'_blank');
  748. });
  749. }
  750. }
  751. return {
  752. init: function() {
  753. initCntroller.initFileUpload();
  754. initCntroller.initPage();
  755. initCntroller.addEventListener();
  756. }
  757. }
  758. }