Jelajahi Sumber

简历分析

yuanzhi_kuang 5 bulan lalu
induk
melakukan
30b6763caf

+ 633 - 0
js/customer/resumeAnalysis.css

@@ -0,0 +1,633 @@
+/*简历导入模态框样式*/
+.clearfix:before {
+    content: "";
+    display: block;
+    height:0;
+    clear: both;
+    visibility: hidden;
+}
+/*#resumeAnalysisDiv button{
+    border-color: transparent;
+    cursor: pointer;
+}*/
+#resumeAnalysisDiv{
+    float: left;
+}
+#resumeInput-modal {
+    box-sizing:border-box;
+    width: 800px;
+    height: 600px;
+    border-radius: 0; .no-resume
+    box-shadow: 0 3px 20px 0 #9A9A9A;
+    border: none;
+    max-height: 90%;
+    padding-right: 0!important;
+    top: 15%;
+}
+#resumeInput-modal .modal-body {
+    max-height: 800px;
+    padding: 15px 50px;
+    background: #fff;
+    float: left;
+    width: 100%;
+}
+#resumeInput-modal .modal-title {
+    font-size: 0;
+    margin: 0;
+    cursor: move;
+}
+#resumeInput-modal .modal-title-main {
+    display: inline-block;
+    vertical-align: top;
+    font-size:18px;
+    color:#333;
+    margin-top: 6px;
+}
+#resumeInput-modal .modal-title-tip {
+    display: inline-block;
+    margin-left: 20px;
+    margin-bottom: 0;
+    font-size:12px;
+    color:#777777;
+    margin-top: 3px;
+    line-height: 19px;
+
+}
+#resumeInput-modal .modal-header .close {
+    font-size: 24px;
+    background: url(../images/btn_dialog_close.png) center no-repeat;
+    width: 20px;
+    height: 20px;
+    opacity: 0.8;
+}
+#resumeInput-modal .modal-header .min {
+    font-size: 17px;
+    margin-top: 2px;
+    background: none;
+    color: #777;
+    margin-right: 8px;
+    display: none;
+}
+.empty-resume {
+    width: 700px;
+    height: 507px;
+    position: relative;
+    display: none;
+}
+.some-resume-hide {
+    position: absolute;
+    top: 0;
+    left: 0;
+    visibility: hidden;
+}
+.some-resume-hide .upload-resume-wrapper{
+    position: absolute;
+    top: 376px;
+    left:329px;
+    visibility: visible;
+}
+.some-resume-hide .upload-resume-wrapper button {
+    width: 120px;
+    height: 40px;
+    font-size: 16px;
+}
+.some-resume-result {
+    position: absolute;
+    top: 0;
+    left: 0;
+    visibility: hidden;
+}
+.some-resume-result .upload-resume-wrapper{
+    position: absolute;
+    top: 362px;
+    left: 260px;
+    visibility: visible;
+}
+.some-resume-result .upload-resume-wrapper button {
+    width: 100px;
+    height: 30px;
+    border: 1px solid #BDBDBD;
+    background-color: #FFFFFF;
+    font-size: 14px;
+    color: #9A9A9A;
+}
+.some-resume-result.upload-resume-wrapper.upload-btn:hover {
+    color: #388cff;
+    border: 1px solid #388cff;
+}
+.no-resume {
+    position:absolute;
+    left:301px;
+    top:108px;
+}
+.analysis-wrapper {
+    border-bottom: 1px #e5e5e5 solid;
+}
+.analysis-tab {
+    float: left;
+}
+
+.analysis-tab button {
+    border-color: transparent;
+    float: left;
+    padding: 3px 15px 6px 15px;
+    font-size:14px;
+    color:#b9b7b7;
+    cursor: pointer;
+    background: #FFFFFF;
+}
+.analysis-tab .tab-current {
+    font-size:14px;
+    color:#666666;
+    border-bottom:2px solid #388cff;
+}
+
+.analysis-progress {
+    float: right;
+    padding-top: 3px;
+    display: none;
+}
+.progress-wrapper {
+    width: 64px;
+    height: 6px;
+    display: inline-block;
+    background: gray;
+    position: relative;
+    top: -3px;
+    border-radius: 3px;
+}
+.progress-done {
+    background: #388cff;
+    width: 0%;
+    border-radius: 3px;
+    height: 6px;
+}
+.analysis-done-num {
+    color:#388cff;
+}
+
+.analysis-item {
+    overflow: auto;
+    height: 390px;
+    font-size: 0;
+}
+.resume-list {
+    height: 30px;
+    line-height: 30px;
+    margin-bottom: 2px;
+    border: 1px solid #E5E5E5;
+    border-radius: 4px;
+    padding: 0 20px;
+    color: #777;
+    position: relative;
+}
+/* #resume-list-success {
+    padding-top: 20px;
+} */
+.tab-ct {
+    display: none;
+}
+.tab-ct-current {
+    display: block;
+    float: left;
+    width: 100%;
+}
+.resume-name {
+    float: left;
+    width: 80%;
+    font-size: 14px;
+    color: #777777;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+.resume-state {
+    float: right;
+    width: 20%;
+    text-align: right;
+    font-size: 14px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+
+}
+.resume-state-success {
+
+}
+.tab1 {
+    position: relative;
+}
+.upload-resume-wrapper {
+    position: relative;
+    min-height: 75px;
+    margin-top: 3px;
+    float: left;
+    width: 100%;
+}
+
+#resume_upload {
+    opacity: 0;
+    z-index: 100;
+}
+#resume_upload {
+    position: absolute;
+    /* margin-top: 52px; */
+    left: 0;
+    top: 0;
+    width:100px;
+    height:30px;
+}
+.upload-btn{
+    width:100px;
+    height:30px;
+    background:#388cff;
+    color: #FFFFFF;
+    border-color: transparent;
+}
+#inputcontainer {
+    height: 304px;
+    overflow-y: auto;
+    /* margin-top: 60px; */
+    float: left;
+    width: 100%;
+}
+#inputcontainer .uploadify-queue-item {
+    padding: 0;
+    height: 44px;
+    line-height: 44px;
+    max-width: 100%;
+    border-radius:4px;
+    margin-top:200px;
+    margin-bottom: 20px;
+    border: 1px solid #E5E5E5;
+}
+.uploadify-queue-item:hover{
+    border-color: #55B5EC;
+}
+.uploadify-queue-item:hover .cancel{
+    display: block;
+}
+.resume-list .cancel  {
+    display: none;
+    position: absolute;
+    right: 0;
+    cursor: pointer;
+}
+.resume-list .cancel a {
+    background: url(../images/btn_dialog_close.png) center no-repeat;
+    height: 18px;
+    width:18px;
+    display: inline-block;
+    margin-top: 5px;
+    background-size: 10px;
+}
+
+.analysis-failure-ct .resume-list:hover{
+    border-color: #FA6B5B;
+}
+.analysis-failure-ct .resume-list:hover .cancel,
+.analysis-todo-ct .resume-list:hover .cancel
+{
+    display: block;
+}
+.analysis-todo-ct .resume-list:hover{
+    border-color: #388cff;
+}
+
+.button-wrapper {
+    margin-top: 12px;
+    margin-bottom: 12px;
+    text-align: center;
+    float: left;
+    width: 100%;
+}
+.analysis-success-ct .button-wrapper,.analysis-failure-ct .button-wrapper {
+    visibility: hidden;
+}
+
+.left-btn {
+    width: 100px;
+    height: 30px;
+    border: 1px solid #D1DBE1;
+    background-color: #FFFFFF;
+    color: #9A9A9A;
+}
+.right-btn {
+    width: 100px;
+    height: 30px;
+    color: #FFFFFF;
+    background-color: #388cff;
+    margin-left: 40px;
+    margin-right: 40px;
+    border: 1px solid#388cff;
+}
+.left-btn:hover {
+    color: #388cff;
+    border: 1px solid #388cff;
+}
+.left-btn.disabled:hover {
+    color: #BDBDBD;
+    border: 1px solid #BDBDBD;
+}
+
+.right-btn:hover {
+    background-color: #005BAC;
+    border-color:#005BAC;
+}
+.right-btn.disabled:hover {
+    background-color: #F1F1F1;
+    border: 1px solid #BDBDBD;
+}
+.upload-btn:hover , #resume_upload, .upload-btn:hover{
+    background-color: #005BAC;
+}
+#SWFUpload_0:hover {
+    background-color: #005BAC;
+}
+.upload-btn.disabled:hover {
+    background-color: #F1F1F1;
+}
+.disabled {
+    background: #F1F1F1;
+    color: #BDBDBD;
+    cursor: not-allowed;
+    border: 1px solid #BDBDBD;
+}
+
+
+.uploadify-queue-item .fileName {
+    font-size:14px;
+    color:#777777;
+    line-height:14px;
+    margin-left: 20px;
+}
+.uploadify-queue-item .fileName + span {
+    display: none;
+}
+.uploadify-queue-item .uploadify-progress {
+    margin-top: -44px;
+    height: 42px;
+    border-radius: 4px;
+    background: #FFFFFF;
+}
+.uploadify-queue-item .uploadify-progress-bar {
+    height: 41px;
+    border-radius: 50%;
+    background: #FFFFFF;
+    /* border: 1px solid #E5E5E5; */
+}
+
+#resumeInput-modal .modal-dialog{width: 798px; top:48.4%; left:50%; position: absolute; transform:translate(-50%,-50%); -webkit-transform:translate(-50%,-50%);
+-ms-transform:translate(-50%,-50%); -moz-transform:translate(-50%,-50%); -o-transform:translate(-50%,-50%);}
+#resumeInput-modal .modal-header{
+    width: 100%;
+    box-sizing: border-box;
+    height: 60px;
+    background: #EAEBEF;
+    padding: 9px 25px 9px 30px;
+    cursor: move;
+}
+#resumeInput-modal .modal-body form>label.help-block{width: 552px; text-align: left; margin-left: 0px;}
+#resumeInput-modal .modal-footer{text-align: center; border-top: none; padding: 20px 15px 30px; width: 100%;}
+#resumeInput-modal .modal-footer button{width:120px; height:40px; border-color: #388cff;}
+#resumeInput-modal .firstprocedure>a{width:120px; height:40px; border-color: #388cff; line-height: 26px;}
+#resumeInput-modal .modal-footer button a{width: 96px; color: #fff; height: 28px; line-height: 28px; display: inline-block;}
+
+.minimize-analysis {
+    box-sizing: border-box;
+    display: none;
+    position: fixed;
+    width: 70px;
+    height: 70px;
+    border-radius: 50%;
+    bottom: 120px;
+    padding: 5px;
+    background: #ffffff;
+    box-shadow: 0px 0px 40px 5px #d8c9c9;
+    right: 100px;
+}
+.progress-ball {
+    width: 60px;
+    height: 60px;
+    line-height: 60px;
+    text-align: center;
+    border-radius: 50%;
+    background: #388cff;
+    color: #000000;
+    cursor: pointer;
+}
+.mini-doneAmount {
+    color: #FFFFFF;
+}
+.mini-resumeAmount {
+}
+.expansion {
+    display: none;
+    position: absolute;
+    background: #FFFFFF;
+    top: -142px;
+    left: -51px;
+    width:180px;
+    height: 125px;
+    box-shadow: 0px 0px 40px 5px #d8c9c9;
+}
+.expansion:after {
+    content: "";
+    position: absolute;
+    top: 100%;
+    left: 50%;
+    margin-left: -10px;
+    display: block;
+    width: 0;
+    height: 0;
+    border: 7px solid transparent;
+    border-top-color: #FFFFFF;
+}
+.maximize {
+    height: 18px;
+    text-align: right;
+}
+.maximize .maximize-icon {
+    width: 20px;
+    height: 18px;
+    float: right;
+    margin-right: 5px;
+    cursor: pointer;
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/maximize-icon.png) right center no-repeat;
+}
+.min-success, .min-failure, .min-todo {
+    margin: 5px 28px;
+    font-size: 0;
+}
+.min-success {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-success.png) left center no-repeat;
+}
+.min-failure {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-failure.png) left center no-repeat;
+}
+.min-todo {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-todo.png) left center no-repeat;
+}
+.min-success span, .min-failure span, .min-todo span {
+    display: inline-block;
+    font-size: 14px;
+}
+.m-l-22 {
+    margin-left: 22px;
+}
+.failure-font {
+    margin: 0 10px 0 3px;
+    color: #FA6B5B;
+}
+.success-font {
+    margin: 0 10px 0 3px;
+    color: #388cff;
+}
+.todo-font {
+    margin: 0 10px 0 3px;
+}
+.analysis-result {
+    position: absolute;
+    width: 100%;
+    bottom: 5px;
+    text-align: center;
+    font-size: 10px;
+    color: #BDBDBD;
+}
+.result {
+    display: none;
+    position: relative;
+    z-index: 100;
+}
+.all-success, .some-failed {
+    display: none;
+}
+.result img {
+    display: block;
+    width: 245px;
+    height: 197px;
+    margin: 60px auto 30px auto;
+}
+.result-des {
+    font-size: 20px;
+    color: #4F5154;
+    text-align: center;
+}
+.result-btn-wrapper {
+    text-align: center;
+    margin: 60px 0 100px 0;
+}
+.resume-list-wrapper{
+    /* padding-top: 60px; */
+}
+.resume-list-wrapper .no-resume {
+    left: 326px;
+    top: 170px;    
+}
+.no-resume-des {
+    font-size: 20px;
+    color: #4F5154;
+    position: absolute;
+    bottom: 163px;
+    width: 100%;
+    text-align: center;
+    left: 0;
+}
+.resume-list-wrapper .no-resume-des {
+    bottom:105px;
+}
+.analysis-todo-ct .no-resume-des {
+    bottom:163px;
+}
+.continueAnalyze {
+    visibility: hidden;
+}
+.modal-backdrop, .modal-backdrop.fade.in {
+    background: #aaa;
+    opacity: 0.3;
+    filter: alpha(opacity=30);
+}
+#viewLog{
+    position: absolute;
+    right: 0;
+    /* margin-top: -34px; */
+    display: none;
+    cursor: pointer;
+    bottom: 0;
+}
+
+/*显示招聘需求F7*/
+#_resumeAnalysisDiv{
+    width: 220px;
+    display: none;
+    /* margin-left: 110px; */
+    float: left;
+    margin-right: 8px;
+    margin-bottom: 6px;
+}
+#_resumeAnalysisDiv .ui-promptBox-frame{
+    line-height: 28px;
+}
+#_resumeAnalysisDiv input[type="text"]{
+    box-shadow: none;
+    height: 28px!important;
+}
+#_resumeAnalysisDiv4{
+    /*  width: 220px; */
+    float: left;
+    margin-right: 15px;
+    /* margin-bottom: 6px; */
+}
+ 
+#_resumeAnalysisDiv5,#_resumeAnalysisDiv6{
+    width: 220px;
+    height: 30px;
+	margin-right: 8px;
+    margin-top: 6px;
+    margin-bottom: 6px;
+    /* margin-left: 250px; */
+}
+#_resumeAnalysisDiv6 input{
+    width: 100%;
+	height: 100%;
+    /*边框灰色*/
+    border: 1px solid #D1DBE1;
+   
+    /* margin-top:-32px; */
+    /* margin-left: 250px; */
+}
+#_resumeAnalysisDiv2,#_resumeAnalysisDiv3{
+    /*  width: 220px; */
+    float: left;
+    margin-right: 8px;
+    /*     margin-bottom: 6px; */
+}
+
+#_resumeAnalysisDiv2 .ui-promptBox-frame{
+    width: 220px;
+    /* margin-top:-32px; */
+    /* margin-left: 250px; */
+}
+#_resumeAnalysisDiv3 .ui-promptBox-frame,#_resumeAnalysisDiv4 .ui-select-frame{
+    width: 220px;
+    /* margin-top:-32px; */
+    /* margin-left: 480px; */
+}
+.red-font {
+	color: #FF0000;
+}
+.analy-field-line{
+    float: left;
+    width: 100%;
+    position: relative;
+    margin-bottom: 6px;
+    /* padding-right: 100px; */
+    display: flex;
+    flex-wrap: wrap;
+}
+.resume_upload_wrap{
+    position: absolute;
+    float: right;
+    right: -30px;
+    top: 0;
+}

+ 234 - 0
js/customer/resumeAnalysis.html

@@ -0,0 +1,234 @@
+<!-- <div id="_resumeAnalysisDiv" style="opacity:0"> -->
+	<!-- <input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height" > -->
+<!-- 	<div class="photoCtrlBox" style="overflow:hidden">
+		<div style="float:left;margin-left:15px">
+			<span style="margin-left:-15px">招聘需求:</span>&nbsp;&nbsp;
+			<div style="margin-left:45px;margin-top:-20px;margin-bottom:15px;width:200px">
+				<input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height">
+			</div>
+		</div>
+		<div style="float:left;margin-left:15px;">
+			<span id="resumeAnalysisErrorMesg" style="margin-left:-15px;color:red;"></span>
+		</div>
+	</div>
+	<div class="photoCtrlBox">
+	   <div id="upload"></div>
+	</div>
+	<div style="margin-top:25px">
+	<span><p>(支持的文件格式:txt,html,doc,docx,pdf,wps,rtf,eml,msg,mht)大小不能超过2M</p></span>
+	</div>
+ -->
+<!-- </div> -->
+
+<!-- 简历导入模态框(Modal) -->
+<div class="modal hide fade" id="resumeInput-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+    <div class="modal-header">
+        <button type="button" class="close" id="closeAnalyzeDialog" data-dismiss="modal" aria-hidden="true">
+            <!-- &times; -->
+        </button>
+        <button type="button" class="close min" data-dismiss="modal" aria-hidden="true">
+            一&nbsp;&nbsp;
+        </button>
+        <h4 class="modal-title">
+            <p class="modal-title-main">导入本地简历</p>
+            <p class="modal-title-tip">
+                我们支持多种格式:DOC,DOCX,TXT,PDF,MSG,WPS,JPG,PNG,GIF,RTF<br/>
+                (
+			<span class="red-font">为保证解析效果,请尽量上传招聘网站标准格式简历。</span>
+	      	最多可上传100份简历,单份文件最大不超过20M)
+            </p>
+        </h4>
+    </div>
+    <div class="modal-body">   
+        <div class="some-resume"><!-- some-resume-hide -->
+            <div class="analysis-wrapper clearfix">
+                <div class="analysis-tab clearfix">
+                    <button class="analysis-todo tab-current">待解析(<span class="todoAmount">0</span>)</button>
+                    <button class="analysis-success">解析成功(<span class="successedAmount">0</span>)</button>
+                    <button class="analysis-failure">解析失败(<span class="failedAmount">0</span>)</button>
+                </div>
+                <div class="analysis-progress">
+                    <div class="progress-wrapper">
+                        <div class="progress-done"></div>
+                    </div>
+                    <span class="analysis-done-num doneAmount">0</span> /
+                    <span class="analysis-resume-num resumeAmount">0</span>
+                </div>                    
+            </div>
+            <div class="tab-ct tab-ct-current analysis-todo-ct">
+                <div class="upload-resume-wrapper">
+                    <div class="analy-field-line">
+                        <div id="_resumeAnalysisDiv">
+                            <input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height">
+                        </div>
+                        <div id="_resumeAnalysisDiv2">
+                            <input type="text" id="resumeSource" name="resumeSource" class="input-height">
+                        </div>
+                        <div class="shrTooltip">
+                            <div class="icon" style="display: inline;">
+                                <img id="tipsImg1" src="/shr/styles/images/tips.png"
+                                     onmouseover="document.getElementById('tipsImg1').src='/shr/styles/images/tips_gray.png'"
+                                     onmouseout="document.getElementById('tipsImg1').src='/shr/styles/images/tips.png'">
+                            </div>
+                            <div class="content" style="right:25px;left:auto">
+                                1、如果选择了简历来源(内部推荐人可关键的简历来源为内部推荐),那么导入的简历都为该简历来源的;<br>
+                                2、如果没有选择简历来源,导入的简历根据简历解析结果取值;<br>
+                                3、如果没有选择简历来源即选择内部推荐人,系统默认当前简历为内部推荐简历。<br>
+                            </div>
+                        </div>
+                        <div id="_resumeAnalysisDiv3">
+                            <input type="text" id="interRecommendation" name="interRecommendation" class="input-height">
+                        </div>
+                        <div id="_resumeAnalysisDiv4" class="selectwrap">
+                            <input type="text" id="sourceType" name="sourceType" placeholder="选择简历来源类型">
+                        </div>
+                        <div id="_resumeAnalysisDiv5" class="selectwrap">
+                            <label>
+                                <input type="checkbox" id ="isKeyTalent" name="isKeyTalent" value="true"> 是否重点人才
+                            </label>
+                        </div>
+                        
+                        <div id="_resumeAnalysisDiv6" class="selectwrap">
+                            <input type="text" id="phoneModify" name="phoneModify" placeholder="手机号修订">
+                        </div>
+                    </div>
+                    <div class="resume_upload_wrap">
+                        <input type="file" name="resume_upload" id="resume_upload" multiple>
+                        <button type="button" class="upload-btn">添加简历</button>
+                        <div class="shrTooltip">
+                            <div class="icon" style="display: inline;">
+                                <img id="tipsImg" src="/shr/styles/images/tips.png"
+                                     onmouseover="document.getElementById('tipsImg').src='/shr/styles/images/tips_gray.png'"
+                                     onmouseout="document.getElementById('tipsImg').src='/shr/styles/images/tips.png'">
+                            </div>
+                            <div class="content" style="right:25px;left:auto">
+                                1.请检查云服务注册及连接页面,刷新是否异常。如果是token的问题,刷新后可正常解析。<br>
+                                2、如果还是无法解析,请运维人员在客户端中手动延长FStopTime(表数据: t_cds_cloudserviceconfig 的 字段 FStopTime)。<br>
+                                3、若上述两种方式还是无法解析,请提单给金蝶研发处理。<br>
+                            </div>
+                        </div>
+                    </div>
+                    <a id="viewLog">查看解析结果</a>
+                </div>
+                <div id="inputcontainer"></div>
+                <div class="button-wrapper">
+                    <button type="button" id="startAnalyze" class="right-btn">
+                        开始解析
+                    </button>
+                    <button type="button" id="clearResumeList" class="left-btn">
+                        清空
+                    </button>
+                    
+                </div>                          
+            </div>
+            <div class="tab-ct analysis-success-ct">
+                <div class="analysis-item" id="resume-list-success"></div>
+                <div class="button-wrapper">
+                    <button type="button" id="closeAnalyze" class="right-btn">
+                        关闭
+                    </button>
+                </div>    
+            </div>  
+            <div class="tab-ct analysis-failure-ct">
+                <div class=" analysis-item" id="resume-list-failure">  
+                </div>      
+                <div class="button-wrapper">
+                    <button type="button" id="clearFailedResume" class="left-btn">
+                        清空
+                    </button>
+                    <button type="button" id="restartUpload" class="right-btn">
+                        重新解析
+                    </button>
+                </div>    
+            </div>                  
+        </div> 
+        <div class="empty-resume">
+            <img class="no-resume" src="/shr/addon/recuritment/web/images/noResume.png" alt="">
+            <div  class="no-resume-des">您还未添加简历,请点击添加</div>
+        </div>
+        <div class="result">
+            <div class="all-success">
+                <img src="/shr/addon/recuritment/web//images/analysis-result.png" alt="">
+                <div class="result-des">
+                        已为您解析简历 <span class="resumeAmount" style="color:#59cc88"></span> 份,
+                        成功 <span class="successedAmount"></span> 份                             
+                </div>
+                <div class="result-btn-wrapper">
+                    <button class="left-btn continueAnalyze">继续上传</button>
+                    <button id="check_succeeded" class="check-result right-btn">返回查看</button>
+                </div>
+            </div>
+            <div class="some-failed">
+                <img src="/shr/addon/recuritment/web//images/analysis-result.png" alt="">
+                <div class="result-des">
+                    已为您解析简历 <span class="resumeAmount"></span> 份,
+                    成功 <span class="successedAmount" style="color:#59cc88"></span> 份,
+                    失败 <span class="failedAmount" style="color:#fb887b"></span> 份,
+                </div>
+                <div class="result-btn-wrapper">
+                    <button class="left-btn continueAnalyze">继续上传</button>
+                    <button id="check_failed" class="check-result right-btn">返回查看</button>
+                </div>
+            </div>
+        </div>
+	</div>
+</div>
+<div class="minimize-analysis">
+    <div class="progress-ball">
+        <span class="mini-doneAmount doneAmount">0</span>
+        /
+        <span class="mini-resumeAmount resumeAmount">0</span>
+    </div>
+    <div class="expansion">
+        <div class="maximize">
+            <div class="maximize-icon"></div>
+        </div>  
+        <div class="min-failure">
+            <span class="m-l-22 ">解析失败</span>
+            <span class="failure-font failedAmount">0</span>
+            <span>个</span>
+        </div>  
+        <div class="min-success">
+            <span class="m-l-22">解析成功</span>
+            <span class="success-font successedAmount">0</span>
+            <span>个</span>
+        </div>
+        <div class="min-todo">
+            <span class="m-l-22">等待解析</span>
+            <span class="todo-font todoAmount">0</span>
+            <span>个</span>
+        </div>
+        <div class="analysis-result">解析中...</div>
+    </div> 
+</div>
+<!-- handlebars 模板 -->
+<script id="handlebars-template" type="text/x-handlebars-template">
+    {{#if resumes}}
+    <div class="resume-list-wrapper">
+	    {{#each resumes}}
+            <div class="resume-list clearfix">
+                <span class="resume-name" title="{{resumeName}}">{{resumeName}}</span>
+                {{#with taskState}}
+                {{#analyzeSucceed value }}
+                <span class="resume-state resume-state-success">
+                    <img src='/shr/addon/recuritment/web/images/analyse-success-icon.png' alt="" />
+                </span>
+                {{else}}
+                <span class="resume-state resume-state-failure" title="{{formatState value}}">{{formatState value}}
+                </span>
+                <!-- <span class="resume-state resume-state-failure">{{../info}}</span> -->
+                {{/analyzeSucceed}}
+                {{/with}}
+                <span class="cancel">
+                    <a href="javascript:;" resume-id="{{id}}"></a>
+                </span>
+            </div>
+	    {{/each}}
+    </div>
+    {{else}}
+    <div class="resume-list-wrapper">
+        <img class="no-resume" src="/shr/addon/recuritment/web/images/noResume.png" alt="">
+        <div class="no-resume-des">{{des}}</div>
+    </div>
+    {{/if}}
+</script>

+ 787 - 0
js/customer/resumeAnalysis.js

@@ -0,0 +1,787 @@
+//var interval = 0;
+//var code, code1, code2, code3;
+var SUCCESS_CODE = 0;
+/**
+ *@description 简历解析
+ */
+function resumeAnalysis(that) {
+	// 简历解析状态
+	var ANALYSIS_TODO = 1;		//待解析 SAVED 1
+	var ANALYSIS_SUCCESS = 7;	//解析成功 FINISHED 7
+	var ANALYSIS_FAIL = 8;		//解析失败 ERROR 8
+	// 简历解析任务状态
+	var NOT_START = 1;			//上传简历 SAVED 1
+	var SUBMITED = 2; 			//提交解析 SUBMITED 2
+	var EXECUTING = 4;			//开始解析 RUNNING 4
+	var FINISHED = 7;			//解析完成 FINISHED 7
+	var TIMEOUT = 9;			//解析超时 TIMEOUT 9
+	// 任务ID
+	var taskId = "";
+	var targetId = '';
+	//上次解析结束任务
+	var lastTaskId = "";
+	var lastAffirm = false;
+	
+	var isDialogShow = false;
+	
+	var analyzeTodoList = [];
+	var analyzeSucceedList = [];
+	var analyzeFailList = [];
+
+	var analysisProgressTimer;
+	var pageUIPK='';
+
+	// 模态框
+	var analysisModal = {
+		show: false,
+		init: function() {
+			analyzeTodoList = [];
+			analyzeSucceedList = [];
+			analyzeFailList = [];	
+			analysisModal.analysisTab($('.analysis-success'));
+			analysisModal.analysisTab($('.analysis-failure'));
+			analysisModal.analysisTab($('.analysis-todo'));	
+			
+			$('.doneAmount').text(0);
+			$('.resumeAmount').text(0);
+			$('.failedAmount').text(0);
+			$('.successedAmount').text(0);
+			$('.todoAmount').text(0);
+		},
+		hidePanel: function() {
+			$('.analysis-panel').hide();
+		},
+		showAnalysisPanel: function() {
+			this.hidePanel();
+			$('.some-resume').show();
+			$('.some-resume').removeClass('some-resume-hide');
+		},
+		compileResumeList: function(id, data) {
+			var myTemplate = Handlebars.compile($("#handlebars-template").html());
+			Handlebars.registerHelper("analyzeSucceed", function (x, options) {
+				if (x === ANALYSIS_SUCCESS) {
+					return options.fn(this);
+				} else {
+					return options.inverse(this);
+				}
+			})
+			Handlebars.registerHelper("formatState", function (state, options) {
+				if (state === ANALYSIS_TODO) {
+					return '待解析';
+				} else if (state === ANALYSIS_SUCCESS) {
+					return state;
+				} else if (state === ANALYSIS_FAIL) {
+					return options.data.root.resumes[options.data.index].info;
+				} else {
+					return '解析失败';
+				}
+			})
+			if(data.resumes.length == 0) {
+				switch(id) {
+					case 'inputcontainer':
+						data = {
+							resumes:false,
+							des:'你没有待解析的简历哦'
+						}
+						$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+						break;
+					case 'resume-list-success':
+						data = {
+							resumes:false,
+							des:'你还没有解析成功的简历哦'
+						}
+						break;
+					case 'resume-list-failure':
+						data = {
+							resumes:false,
+							des:'恭喜,你没有解析失败的简历哦'
+						}
+				}
+			}else{
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+			}
+			$('#' + id).html(myTemplate(data));
+		},
+		analysisTab: function(dom) {
+			var tabClassName = $(dom).attr('class').replace(' tab-current', '');
+			switch (tabClassName) {
+				case 'analysis-todo':
+					this.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
+					break;
+				case 'analysis-success':
+					this.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
+					break;
+				case 'analysis-failure':
+					this.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
+					break;
+				default:
+					break;
+			}   
+			// tab 样式
+			$('.analysis-tab button').removeClass('tab-current');
+			$(dom).addClass('tab-current');
+			// tab-ct 样式
+			var tabClassName = $(dom).attr('class').replace(' tab-current', '');
+			$('.tab-ct-current').removeClass('tab-ct-current');
+			$('.' + tabClassName + '-ct').addClass('tab-ct-current');   
+			
+			$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+
+		},
+		startAnalyze: function() {
+			var param = {taskId: taskId};
+			
+			var val = $("#recuritmentDemand").shrPromptBox("getValue");
+			if(val){
+				targetId = val.id;
+				param = {
+					targetId: targetId,
+					taskId: taskId
+				};
+			}else{
+				var meg = '';
+				if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'||pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'||pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+					meg = '请选择招聘需求';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'||pageUIPK=='com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+					meg = '请选择目标简历夹';
+				}
+				shr.showWarning({
+					message: meg,
+					hideAfter: 3
+				})
+				return false;
+			}
+			//简历来源
+			var _resumeSource = $("#resumeSource").shrPromptBox("getValue");
+			if(_resumeSource && _resumeSource.id){
+			    param.resumeSourceId=_resumeSource.id;
+			}
+
+			val = $("#interRecommendation").shrPromptBox("getValue");
+			if(!val&&pageUIPK=='com.kingdee.shr.recuritment.app.RecommendRecord.list'){
+			    meg = '请选择内部推荐人';
+				shr.showWarning({
+    				message: meg,
+    				hideAfter: 3
+    			})
+    			return false;
+			}
+			if(_resumeSource&&_resumeSource.name=="内部推荐"&&!val){
+			    meg = '选择内部推荐必须选择内部推荐人';
+				shr.showWarning({
+    				message: meg,
+    				hideAfter: 3
+    			})
+    			return false;
+			}
+			if(val && val.id){
+			    param.interRecommendationId=val.id;
+			}
+			val = $("#sourceType").shrSelect('getValue').value;
+			if(val){
+			    param.sourceType=val;
+			}
+
+			$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+			
+			that.remoteCall({
+				method: 'resumeAnalysis',
+				param: param,
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						$('.analysis-progress,.modal-header .min').show();
+						$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+						$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+						$("#recuritmentDemand").shrPromptBox("disable");
+						$("#interRecommendation").shrPromptBox("disable");
+						$("#resumeSource").shrPromptBox("disable");
+						$("#sourceType").shrSelect("disable");
+						initCntroller.getAnalysisProgress();
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+
+
+		},
+		clearTodo: function() {
+			var resumeId = [];
+			for(var i = 0; i < analyzeTodoList.length; i++){
+				resumeId.push(analyzeTodoList[i].id);
+			}
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds:resumeId.join(',')
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						$('.todoAmount').text(0);
+						analyzeTodoList = []
+						analysisModal.analysisTab($('.analysis-todo'));
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+		},
+		clearFailed: function() {
+			var resumeId = [];
+			for(var i = 0; i < analyzeFailList.length; i++){
+				resumeId.push(analyzeFailList[i].id);
+			}
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds:resumeId.join(',')
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						analyzeFailList = [];
+						analysisModal.analysisTab($('.analysis-failure'));
+						$('.failedAmount').text(0);		
+						$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+			
+		},
+		deleteResume: function(){
+			var resumeId = $(this).find('a').attr('resume-id');
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds: resumeId
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						if($('.tab-ct-current').hasClass('analysis-failure-ct')){
+							for(var i = 0; i < analyzeFailList.length; i++ ){
+								if(analyzeFailList[i].id == resumeId){
+									analyzeFailList.splice(i, 1);
+									break;
+								}
+							}
+							analysisModal.analysisTab($('.analysis-failure'));
+							$('.failedAmount').text(analyzeFailList.length);	
+							if(analyzeFailList.length == 0)	{
+								$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+							}
+						}else if($('.tab-ct-current').hasClass('analysis-todo-ct')){
+							for(var i = 0; i < analyzeTodoList.length; i++ ){
+								if(analyzeTodoList[i].id == resumeId){
+									analyzeTodoList.splice(i, 1);
+									break;
+								}
+							}
+							analysisModal.analysisTab($('.analysis-todo'));
+							$('.todoAmount').text(analyzeTodoList.length);
+						}
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+		},
+		restartAnalyze: function() {
+			if(analyzeFailList.length === 0) {
+				shr.showWarning({
+					message: '您没有解析错误的简历哦',
+					hideAfter: 5
+				})
+				return
+			}
+			$.block.show();
+			that.remoteCall({
+				method: 'resumeAnalysisAgain',
+				param: {
+					taskId: lastTaskId
+				},
+				success: function(res) {
+					$.block.hide();
+					$('.analysis-progress,.modal-header .min').show();
+					initCntroller.getAnalysisProgress(); 
+					analysisModal.analysisTab($('.analysis-todo'));
+					$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+					$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+				}
+			})
+		},
+		checkResult: function(dom) {
+			var id = $(dom).attr('id');
+			$('.some-resume').removeClass('some-resume-result');
+			$('.result').hide();
+			$('.continueAnalyze').css({
+				'visibility':'hidden',
+				'z-index': '1'
+			});
+			// $('#resume_upload').css('left','0px');
+			$('.upload-btn').css('visibility','visible');
+			if(id === 'check_succeeded') {
+				analysisModal.analysisTab($('.analysis-success'));
+			} else {
+				analysisModal.analysisTab($('.analysis-failure'));	
+			}
+            if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
+                analysisModal.lastAffirmChange();
+            }
+		},
+		close: function() {
+			$('#resumeInput-modal').modal('hide');
+			jQuery("#grid").trigger("reloadGrid");//重新加载表格內的数据
+		},
+		minimize: function() {
+			isDialogShow = false;
+			if(lastTaskId){
+				$('.minimize-analysis').hide();
+			}else{
+				$('.minimize-analysis').show();
+			}
+		},
+		setProgressNum: function(data) {
+			$('.doneAmount').text(data.doneAmount);
+			$('.resumeAmount').text(data.resumeAmount);
+			$('.failedAmount').text(data.failedAmount);
+			$('.successedAmount').text(data.successedAmount);
+			$('.todoAmount').text(data.nonExecuteAmount);
+			if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+                $('.result-des-extra').text('解析成功后,将为您通知对应招聘职位的负责HR!');
+			}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+                $('.result-des-extra').text('简历解析成功进入简历库后,有对应权限的人员可查看并使用该简历!');
+    		}
+		},
+		lastAffirmChange: function(){
+			that.remoteCall({
+				method: 'affirmSmartImportTaskResult',
+				param: {
+					taskId: lastTaskId
+				},
+				success: function(res) {
+					console.log(res);
+				}
+			})
+		}
+	};
+	
+	// 最小化进度球
+	var minimizeBall = {
+		show: false,
+		toggleExpansion: function() {
+			$('.expansion').toggle();
+		},
+		maximize: function() {
+			$('#resumeInput-modal').modal('show');
+			$('.minimize-analysis').hide();
+		}
+	}
+
+	// 初始化
+	var initCntroller = {
+		getSmartImportTaskSchedule: function(data) {
+			if(data){
+				lastTaskId = data.lastTaskId;
+				lastAffirm = data.lastAffirm;
+				taskId = data.id;
+				analyzeTodoList = data.nonExecuteDetails;
+				analyzeSucceedList = data.successDetails;
+				analyzeFailList = data.failDetails;
+			}else{
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();	//如果没有数据时,F7和查看日志按钮显示
+			}
+			analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList.reverse() });
+			analysisModal.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
+			analysisModal.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
+			if(data){
+				analysisModal.setProgressNum(data);
+			}
+			
+			if(!data || data.taskState === NOT_START){
+				clearInterval(analysisProgressTimer);
+				return;
+			}
+			//待解析大于0
+			if(analyzeTodoList.length > 0){
+				$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+				$('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
+			}
+			
+			//解析过程中初始化进度
+			if(data && data.taskState && (data.taskState.value === SUBMITED || data.taskState.value === EXECUTING)){
+				//控制带解析页面按钮不可使用
+				$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+				$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+				//显示进度条
+				$('.progress-done').css('width', data.doneAmount / data.resumeAmount * 100 + '%');
+				$('.analysis-result').text('解析中...');
+				$('.min-todo').show();
+				
+				//显示进度球
+				if(!isDialogShow){
+					$('.minimize-analysis').show();	
+				}
+			}
+			//解析完成
+			if(data.lastTaskState){  	
+				clearInterval(analysisProgressTimer);
+				//进度条隐藏
+				$('.analysis-progress,.modal-header .min').hide();
+				
+				//按钮控制
+				$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+				$('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
+
+				//显示结果页面
+				$('.some-resume').addClass('some-resume-result');
+				$('.result').show();
+				$('.analysis-result').text('解析完成');
+				$('.min-todo').hide();
+
+				analysisModal.analysisTab($('.analysis-todo'));
+				if(analyzeSucceedList.length !== 0) {
+					$('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
+				}
+				if(analyzeFailList.length !== 0) {
+					$('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
+				}
+				if(data.resumeAmount === data.successedAmount) {
+					$('.all-success').show();
+					$('.some-failed').hide();
+					$('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
+				} else {
+					$('.some-failed').show();
+					$('.all-success').hide();
+					$('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
+				}
+				$('.analysis-progress,.modal-header .min').hide();
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').hide();
+				$('.continueAnalyze').css({
+					'visibility':'visible',
+					'z-index': '205'
+				});
+				// $('#resume_upload').css('left','1000px');
+				$('.upload-btn').css('visibility','hidden');
+				$("#recuritmentDemand").shrPromptBox("enable");
+				$("#interRecommendation").shrPromptBox("enable");
+				$("#resumeSource").shrPromptBox("enable");
+				$("#sourceType").shrSelect("enable");
+			}
+			if(lastAffirm){
+				$('.minimize-analysis').hide();
+				$('.some-resume').removeClass('some-resume-result');
+				$('.result').hide();
+				// $('#resume_upload').css('left','0px');
+				$('.upload-btn').css('visibility','visible');
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+			}
+		},
+		getAnalysisProgress: function() {
+			that.remoteCall({
+				method: 'getSmartImportTaskSchedule',
+				param: {
+					// taskId: taskId
+				},
+				success: function(res) {
+					var data = res.data
+					if (res.code !== '0') {
+						return false;
+					}
+					initCntroller.getSmartImportTaskSchedule(data);
+				}
+			})
+
+			clearInterval(analysisProgressTimer);
+			analysisProgressTimer = setInterval(function () {
+				that.remoteCall({
+					method: 'getSmartImportTaskSchedule',
+					param: {
+						// taskId: taskId
+					},
+					success: function(res) {
+						var data = res.data
+						if (res.code !== '0') {
+							return false;
+						}
+						isEnd = data.isEnd;
+						if(!res.data.taskState){
+							res.data.taskState = [];
+							res.data.taskState.value = NOT_START;
+						}
+						initCntroller.getSmartImportTaskSchedule(data);
+					}
+				})
+			}, 3000);
+		},
+		initFileUpload: function() {
+			pageUIPK = shr.getUrlRequestParam("uipk");
+			var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume";
+			$('#resume_upload').fileupload({
+				url:uploadUrl,
+				autoUpload:true,
+				recalculateProgress:false,
+				add: function(e,data) {
+					console.log(data)
+					var maxNumberOfFiles = 100;
+					//DOC,DOCX,TXT,PDF,MSG,WPS,JPG,PNG,GIF,RTF
+					var acceptFileTypes = /(\.|\/)(doc|docx|txt|pdf|msg|wps|jpg|png|gif|rtf)$/i;
+					var maxSize = 1024 * 20 * 1024
+					var todoAmount = parseInt($('.analysis-todo .todoAmount').text());
+					var flag = true;
+					if(!acceptFileTypes.test(data.files[0].name)) {
+						shr.showWarning({
+							message:'您上传的文件类型['+data.files[0].name+']不符合安全要求,系统不允许上传,请您上传常用office类、图片等文件',
+							hideAfter:5
+						});	
+						flag = false;
+					}
+					if(maxNumberOfFiles <= todoAmount) {
+						shr.showWarning({
+							message:'一次解析数量不能超过' + maxNumberOfFiles + '份',
+							hideAfter:3
+						});	
+						return false;						
+					}
+					if(maxSize <= data.files[0].size) {
+						shr.showWarning({
+							message:data.files[0].name + ' 文件超过20M',
+							hideAfter:3
+						});		
+						flag = false;											
+					}
+					if(data.files[0].size==0){
+						shr.showWarning({
+							message:'文件内容不能为空 ',
+							hideAfter:3
+						});	
+						return false;
+					}
+					if(flag){
+						$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+
+						$('.todoAmount').text(todoAmount + 1);
+						$('.resumeAmount').text(data.files.length);
+						var targetIdVal = '';
+						if(!$('#_resumeAnalysisDiv').is(':hidden')){
+							var val = $("#recuritmentDemand").shrPromptBox("getValue");
+							if(val){
+								targetIdVal = '&targetId=' + encodeURIComponent(val.id);
+							}
+						}
+						var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume" + targetIdVal;
+						$(this).fileupload('option', 'url', uploadUrl);
+						$.block.show( {
+							text : '操作中,请稍候...'
+						});
+						data.submit();
+					}
+				},
+				start: function(e) {
+					console.log('start');
+				},
+				progress: function(e, data) {
+					console.log('progress')
+				},
+				progressall: function(e, data) {
+					console.log('progressall')
+					console.log(data);
+				},
+				done: function(e,data) {
+					$('.analysis-todo-ct .resume-list').on('mouseover',function () {
+						if($('#startAnalyze').hasClass('disabled')) {
+							return
+						}
+						$(this).find('.cancel').show();
+						$(this).css('border-color','#55B5EC');
+					})
+					$('.analysis-todo-ct .resume-list').on('mouseleave',function() {
+						$(this).find('.cancel').hide();
+						$(this).css('border-color','#E5E5E5');
+					})
+
+					var res = data.result;
+					if(res.code == '0'){
+						var data = res.data;
+						taskId = data.id;
+						analyzeTodoList.unshift(data.nonExecuteDetails[0]);
+						analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
+					}else{
+						shr.showWarning({
+							message: res.mesg,
+							hideAfter: 3
+						})
+						$.block.hide();
+                        $('.todoAmount').text(parseInt($('.analysis-todo .todoAmount').text()) - 1);
+						return;
+					}
+					if(parseFloat($('.analysis-todo .todoAmount').text()) == analyzeTodoList.length){
+						$.block.hide();
+					}
+				}
+			});
+		},
+		createResumeAnalysisTask: function (cb) {
+			var _this = this
+			that.remoteCall({
+				method: 'createResumeAnalysisTask',
+				param: {},
+				success: function(res) {
+					if (res.code === '0') {
+						taskId = res.data.id;
+						cb()
+					} else {
+						cb()
+					}
+				}
+			})
+		},
+		initPage: function() {
+			var _this = this
+			_this.initSourceTypeSelect();
+			
+			$('#resumeInput-modal').draggable();
+			// $('#resumeInput-modal').modal({backdrop:"static"});	//单击背景弹框不关闭,但弹框会默认打开,所以要写在弹框打开之前的位置
+			_this.getAnalysisProgress();
+
+		},
+		initSourceTypeSelect: function(){
+			if($('#sourceType').attr('ctrlrole')) return false;
+			var opts = [{
+				alias: "主动搜索",
+				value: "1",
+			},{
+				alias: "主动投递",
+				value: "2",
+			},{
+				alias: "推荐/竞聘",
+				value: "3",
+			}]
+			$('#sourceType').shrSelect({
+				'id': 'sourceType',
+                'data':opts,	//选项
+                'value': '',	//默认选中项
+                'onChange':function(){
+					//设置来源类型
+					shr.remoteCall({
+						method: 'setSmartImportChooseSourceType',
+						param: {
+							targetId: $("#sourceType").shrSelect('getValue').value
+						},
+						success: function(res) {
+							console.log(res);
+						}
+					})
+				}
+			})
+			$('#sourceType').bind("keyup.shrSelect", function( event ) {
+				if(event.keyCode == 8 || event.keyCode == 46) {
+					$('#sourceType').trigger('change');
+				}
+			})
+		},
+		addEventListener: function() {
+			// 关闭简历解析对话框
+			$('#closeAnalyze, #closeAnalyzeDialog').die('click').live('click',analysisModal.close);
+			// 最小化
+			$('.min').die('click').live('click',analysisModal.minimize);
+			// 解析状态切换
+			$('.analysis-tab button').die('click').live('click', function() {
+				analysisModal.analysisTab(this);
+			} ); 				           
+			// 清空待解析简历
+			$('#clearResumeList').die('click').live('click',analysisModal.clearTodo);
+			// 开始解析
+			$('#startAnalyze').die('click').live('click',function() {
+				analysisModal.startAnalyze();
+			});
+			// 查看解析结果
+			$('.check-result').die('click').live('click',function() {
+				analysisModal.checkResult(this);
+			});
+			// 继续添加,解析简历
+			$('.continueAnalyze').die('click').live('click',function() {
+				$('.continueAnalyze').css({
+					'visibility':'hidden',
+					'z-index': '1'
+				});
+				// $('#resume_upload').css('left','0px');
+				$('.upload-btn').css('visibility','visible');
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').show();
+
+				$('.result').hide();
+				$('.some-resume').removeClass('some-resume-result');
+				$('.analysis-progress,.modal-header .min').hide();
+                if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
+                    analysisModal.lastAffirmChange();
+                }
+				// $('#resume_upload').click();//根据最新需求,继续添加只切换页签,不上传简历
+			});
+			// 清空失败简历
+			$('#clearFailedResume').die('click').live('click',analysisModal.clearFailed);
+			// 重新解析
+			$('#restartUpload').die('click').live('click',analysisModal.restartAnalyze);
+			// 关闭
+			// $('#resumeInput-modal').on('hidden.bs.modal', analysisModal.init);
+			// 最大化
+			$('#resumeInput-modal').die('click').live('show.bs.modal',function(){
+				isDialogShow = true;
+				$('#resumeInput-modal').removeClass('hide');
+				$('.minimize-analysis').hide();
+			});
+			// 最小化状态下展示进度详情
+			$('.progress-ball').die('click').live('click',minimizeBall.toggleExpansion);
+			// 最小化时点击最大化按钮
+			$('.maximize-icon').on('click',minimizeBall.maximize);
+			// 单条删除简历
+			$('.cancel').die('click').live('click',analysisModal.deleteResume);
+			$('#viewLog').die('click').live('click',function(){
+				var uipk = '';
+				if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'){
+					uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.resume.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'){
+					uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.archives.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'){
+				    uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.recommendResume.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+                    uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadResume.list';
+                }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+					uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPrise.list';
+				}
+				var params ={
+					uipk: uipk
+				};
+				var url = shr.getContextPath() + shr.dynamicURL + '?' + $.param(params)+ "&inFrame=true";
+				window.open(url,'_blank');
+			});
+		}
+	}
+		
+	return {
+			init: function() {
+				initCntroller.initFileUpload();
+				initCntroller.initPage();
+				initCntroller.addEventListener();
+			}
+	}
+}

+ 608 - 0
js/备份/resumeAnalysis.css_备份

@@ -0,0 +1,608 @@
+/*简历导入模态框样式*/
+.clearfix:before {
+    content: "";
+    display: block;
+    height:0;
+    clear: both;
+    visibility: hidden;
+}
+/*#resumeAnalysisDiv button{
+    border-color: transparent;
+    cursor: pointer;
+}*/
+#resumeAnalysisDiv{
+    float: left;
+}
+#resumeInput-modal {
+    box-sizing:border-box;
+    width: 800px;
+    height: 568px;
+    border-radius: 0;
+    box-shadow: 0 3px 20px 0 #9A9A9A;
+    border: none;
+    max-height: 90%;
+    padding-right: 0!important;
+    top: 15%;
+}
+#resumeInput-modal .modal-body {
+    max-height: 800px;
+    padding: 15px 50px;
+    background: #fff;
+    float: left;
+    width: 100%;
+}
+#resumeInput-modal .modal-title {
+    font-size: 0;
+    margin: 0;
+    cursor: move;
+}
+#resumeInput-modal .modal-title-main {
+    display: inline-block;
+    vertical-align: top;
+    font-size:18px;
+    color:#333;
+    margin-top: 6px;
+}
+#resumeInput-modal .modal-title-tip {
+    display: inline-block;
+    margin-left: 20px;
+    margin-bottom: 0;
+    font-size:12px;
+    color:#777777;
+    margin-top: 3px;
+    line-height: 19px;
+
+}
+#resumeInput-modal .modal-header .close {
+    font-size: 24px;
+    background: url(../images/btn_dialog_close.png) center no-repeat;
+    width: 20px;
+    height: 20px;
+    opacity: 0.8;
+}
+#resumeInput-modal .modal-header .min {
+    font-size: 17px;
+    margin-top: 2px;
+    background: none;
+    color: #777;
+    margin-right: 8px;
+    display: none;
+}
+.empty-resume {
+    width: 700px;
+    height: 507px;
+    position: relative;
+    display: none;
+}
+.some-resume-hide {
+    position: absolute;
+    top: 0;
+    left: 0;
+    visibility: hidden;
+}
+.some-resume-hide .upload-resume-wrapper{
+    position: absolute;
+    top: 376px;
+    left:329px;
+    visibility: visible;
+}
+.some-resume-hide .upload-resume-wrapper button {
+    width: 120px;
+    height: 40px;
+    font-size: 16px;
+}
+.some-resume-result {
+    position: absolute;
+    top: 0;
+    left: 0;
+    visibility: hidden;
+}
+.some-resume-result .upload-resume-wrapper{
+    position: absolute;
+    top: 362px;
+    left: 260px;
+    visibility: visible;
+}
+.some-resume-result .upload-resume-wrapper button {
+    width: 100px;
+    height: 30px;
+    border: 1px solid #BDBDBD;
+    background-color: #FFFFFF;
+    font-size: 14px;
+    color: #9A9A9A;
+}
+.some-resume-result.upload-resume-wrapper.upload-btn:hover {
+    color: #388cff;
+    border: 1px solid #388cff;
+}
+.no-resume {
+    position:absolute;
+    left:301px;
+    top:108px;
+}
+.analysis-wrapper {
+    border-bottom: 1px #e5e5e5 solid;
+}
+.analysis-tab {
+    float: left;
+}
+
+.analysis-tab button {
+    border-color: transparent;
+    float: left;
+    padding: 3px 15px 6px 15px;
+    font-size:14px;
+    color:#b9b7b7;
+    cursor: pointer;
+    background: #FFFFFF;
+}
+.analysis-tab .tab-current {
+    font-size:14px;
+    color:#666666;
+    border-bottom:2px solid #388cff;
+}
+
+.analysis-progress {
+    float: right;
+    padding-top: 3px;
+    display: none;
+}
+.progress-wrapper {
+    width: 64px;
+    height: 6px;
+    display: inline-block;
+    background: gray;
+    position: relative;
+    top: -3px;
+    border-radius: 3px;
+}
+.progress-done {
+    background: #388cff;
+    width: 0%;
+    border-radius: 3px;
+    height: 6px;
+}
+.analysis-done-num {
+    color:#388cff;
+}
+
+.analysis-item {
+    overflow: auto;
+    height: 390px;
+    font-size: 0;
+}
+.resume-list {
+    height: 30px;
+    line-height: 30px;
+    margin-bottom: 2px;
+    border: 1px solid #E5E5E5;
+    border-radius: 4px;
+    padding: 0 20px;
+    color: #777;
+    position: relative;
+}
+/* #resume-list-success {
+    padding-top: 20px;
+} */
+.tab-ct {
+    display: none;
+}
+.tab-ct-current {
+    display: block;
+    float: left;
+    width: 100%;
+}
+.resume-name {
+    float: left;
+    width: 80%;
+    font-size: 14px;
+    color: #777777;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+.resume-state {
+    float: right;
+    width: 20%;
+    text-align: right;
+    font-size: 14px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+
+}
+.resume-state-success {
+
+}
+.tab1 {
+    position: relative;
+}
+.upload-resume-wrapper {
+    position: relative;
+    min-height: 75px;
+    margin-top: 10px;
+    float: left;
+    width: 100%;
+}
+
+#resume_upload {
+    opacity: 0;
+    z-index: 100;
+}
+#resume_upload {
+    position: absolute;
+    /* margin-top: 52px; */
+    left: 0;
+    top: 0;
+    width:100px;
+    height:30px;
+}
+.upload-btn{
+    width:100px;
+    height:30px;
+    background:#388cff;
+    color: #FFFFFF;
+    border-color: transparent;
+}
+#inputcontainer {
+    height: 304px;
+    overflow-y: auto;
+    /* margin-top: 60px; */
+    float: left;
+    width: 100%;
+}
+#inputcontainer .uploadify-queue-item {
+    padding: 0;
+    height: 44px;
+    line-height: 44px;
+    max-width: 100%;
+    border-radius:4px;
+    margin-top:200px;
+    margin-bottom: 20px;
+    border: 1px solid #E5E5E5;
+}
+.uploadify-queue-item:hover{
+    border-color: #55B5EC;
+}
+.uploadify-queue-item:hover .cancel{
+    display: block;
+}
+.resume-list .cancel  {
+    display: none;
+    position: absolute;
+    right: 0;
+    cursor: pointer;
+}
+.resume-list .cancel a {
+    background: url(../images/btn_dialog_close.png) center no-repeat;
+    height: 18px;
+    width:18px;
+    display: inline-block;
+    margin-top: 5px;
+    background-size: 10px;
+}
+
+.analysis-failure-ct .resume-list:hover{
+    border-color: #FA6B5B;
+}
+.analysis-failure-ct .resume-list:hover .cancel,
+.analysis-todo-ct .resume-list:hover .cancel
+{
+    display: block;
+}
+.analysis-todo-ct .resume-list:hover{
+    border-color: #388cff;
+}
+
+.button-wrapper {
+    margin-top: 12px;
+    margin-bottom: 12px;
+    text-align: center;
+    float: left;
+    width: 100%;
+}
+.analysis-success-ct .button-wrapper,.analysis-failure-ct .button-wrapper {
+    visibility: hidden;
+}
+
+.left-btn {
+    width: 100px;
+    height: 30px;
+    border: 1px solid #D1DBE1;
+    background-color: #FFFFFF;
+    color: #9A9A9A;
+}
+.right-btn {
+    width: 100px;
+    height: 30px;
+    color: #FFFFFF;
+    background-color: #388cff;
+    margin-left: 40px;
+    margin-right: 40px;
+    border: 1px solid#388cff;
+}
+.left-btn:hover {
+    color: #388cff;
+    border: 1px solid #388cff;
+}
+.left-btn.disabled:hover {
+    color: #BDBDBD;
+    border: 1px solid #BDBDBD;
+}
+
+.right-btn:hover {
+    background-color: #005BAC;
+    border-color:#005BAC;
+}
+.right-btn.disabled:hover {
+    background-color: #F1F1F1;
+    border: 1px solid #BDBDBD;
+}
+.upload-btn:hover , #resume_upload, .upload-btn:hover{
+    background-color: #005BAC;
+}
+#SWFUpload_0:hover {
+    background-color: #005BAC;
+}
+.upload-btn.disabled:hover {
+    background-color: #F1F1F1;
+}
+.disabled {
+    background: #F1F1F1;
+    color: #BDBDBD;
+    cursor: not-allowed;
+    border: 1px solid #BDBDBD;
+}
+
+
+.uploadify-queue-item .fileName {
+    font-size:14px;
+    color:#777777;
+    line-height:14px;
+    margin-left: 20px;
+}
+.uploadify-queue-item .fileName + span {
+    display: none;
+}
+.uploadify-queue-item .uploadify-progress {
+    margin-top: -44px;
+    height: 42px;
+    border-radius: 4px;
+    background: #FFFFFF;
+}
+.uploadify-queue-item .uploadify-progress-bar {
+    height: 41px;
+    border-radius: 50%;
+    background: #FFFFFF;
+    /* border: 1px solid #E5E5E5; */
+}
+
+#resumeInput-modal .modal-dialog{width: 798px; top:48.4%; left:50%; position: absolute; transform:translate(-50%,-50%); -webkit-transform:translate(-50%,-50%);
+-ms-transform:translate(-50%,-50%); -moz-transform:translate(-50%,-50%); -o-transform:translate(-50%,-50%);}
+#resumeInput-modal .modal-header{
+    width: 100%;
+    box-sizing: border-box;
+    height: 60px;
+    background: #EAEBEF;
+    padding: 9px 25px 9px 30px;
+    cursor: move;
+}
+#resumeInput-modal .modal-body form>label.help-block{width: 552px; text-align: left; margin-left: 0px;}
+#resumeInput-modal .modal-footer{text-align: center; border-top: none; padding: 20px 15px 30px; width: 100%;}
+#resumeInput-modal .modal-footer button{width:120px; height:40px; border-color: #388cff;}
+#resumeInput-modal .firstprocedure>a{width:120px; height:40px; border-color: #388cff; line-height: 26px;}
+#resumeInput-modal .modal-footer button a{width: 96px; color: #fff; height: 28px; line-height: 28px; display: inline-block;}
+
+.minimize-analysis {
+    box-sizing: border-box;
+    display: none;
+    position: fixed;
+    width: 70px;
+    height: 70px;
+    border-radius: 50%;
+    bottom: 120px;
+    padding: 5px;
+    background: #ffffff;
+    box-shadow: 0px 0px 40px 5px #d8c9c9;
+    right: 100px;
+}
+.progress-ball {
+    width: 60px;
+    height: 60px;
+    line-height: 60px;
+    text-align: center;
+    border-radius: 50%;
+    background: #388cff;
+    color: #000000;
+    cursor: pointer;
+}
+.mini-doneAmount {
+    color: #FFFFFF;
+}
+.mini-resumeAmount {
+}
+.expansion {
+    display: none;
+    position: absolute;
+    background: #FFFFFF;
+    top: -142px;
+    left: -51px;
+    width:180px;
+    height: 125px;
+    box-shadow: 0px 0px 40px 5px #d8c9c9;
+}
+.expansion:after {
+    content: "";
+    position: absolute;
+    top: 100%;
+    left: 50%;
+    margin-left: -10px;
+    display: block;
+    width: 0;
+    height: 0;
+    border: 7px solid transparent;
+    border-top-color: #FFFFFF;
+}
+.maximize {
+    height: 18px;
+    text-align: right;
+}
+.maximize .maximize-icon {
+    width: 20px;
+    height: 18px;
+    float: right;
+    margin-right: 5px;
+    cursor: pointer;
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/maximize-icon.png) right center no-repeat;
+}
+.min-success, .min-failure, .min-todo {
+    margin: 5px 28px;
+    font-size: 0;
+}
+.min-success {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-success.png) left center no-repeat;
+}
+.min-failure {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-failure.png) left center no-repeat;
+}
+.min-todo {
+    background: #FFFFFF url(/shr/addon/recuritment/web/images/analysis-todo.png) left center no-repeat;
+}
+.min-success span, .min-failure span, .min-todo span {
+    display: inline-block;
+    font-size: 14px;
+}
+.m-l-22 {
+    margin-left: 22px;
+}
+.failure-font {
+    margin: 0 10px 0 3px;
+    color: #FA6B5B;
+}
+.success-font {
+    margin: 0 10px 0 3px;
+    color: #388cff;
+}
+.todo-font {
+    margin: 0 10px 0 3px;
+}
+.analysis-result {
+    position: absolute;
+    width: 100%;
+    bottom: 5px;
+    text-align: center;
+    font-size: 10px;
+    color: #BDBDBD;
+}
+.result {
+    display: none;
+    position: relative;
+    z-index: 100;
+}
+.all-success, .some-failed {
+    display: none;
+}
+.result img {
+    display: block;
+    width: 245px;
+    height: 197px;
+    margin: 60px auto 30px auto;
+}
+.result-des {
+    font-size: 20px;
+    color: #4F5154;
+    text-align: center;
+}
+.result-btn-wrapper {
+    text-align: center;
+    margin: 60px 0 100px 0;
+}
+.resume-list-wrapper{
+    /* padding-top: 60px; */
+}
+.resume-list-wrapper .no-resume {
+    left: 326px;
+    top: 158px;    
+}
+.no-resume-des {
+    font-size: 20px;
+    color: #4F5154;
+    position: absolute;
+    bottom: 163px;
+    width: 100%;
+    text-align: center;
+    left: 0;
+}
+.resume-list-wrapper .no-resume-des {
+    bottom:105px;
+}
+.analysis-todo-ct .no-resume-des {
+    bottom:163px;
+}
+.continueAnalyze {
+    visibility: hidden;
+}
+.modal-backdrop, .modal-backdrop.fade.in {
+    background: #aaa;
+    opacity: 0.3;
+    filter: alpha(opacity=30);
+}
+#viewLog{
+    position: absolute;
+    right: 0;
+    /* margin-top: -34px; */
+    display: none;
+    cursor: pointer;
+    bottom: 0;
+}
+
+/*显示招聘需求F7*/
+#_resumeAnalysisDiv{
+    width: 220px;
+    display: none;
+    /* margin-left: 110px; */
+    float: left;
+    margin-right: 8px;
+    margin-bottom: 6px;
+}
+#_resumeAnalysisDiv .ui-promptBox-frame{
+    line-height: 28px;
+}
+#_resumeAnalysisDiv input[type="text"]{
+    box-shadow: none;
+    height: 28px!important;
+}
+#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4{
+    /* width: 220px; */
+    float: left;
+    margin-right: 8px;
+    /*     margin-bottom: 6px; */
+}
+#_resumeAnalysisDiv2 .ui-promptBox-frame{
+    width: 220px;
+    /* margin-top:-32px; */
+    /* margin-left: 250px; */
+}
+#_resumeAnalysisDiv3 .ui-promptBox-frame,#_resumeAnalysisDiv4 .ui-select-frame{
+    width: 220px;
+    /* margin-top:-32px; */
+    /* margin-left: 480px; */
+}
+.red-font {
+	color: #FF0000;
+}
+.analy-field-line{
+    float: left;
+    width: 100%;
+    position: relative;
+    margin-bottom: 6px;
+    /* padding-right: 100px; */
+    display: flex;
+    flex-wrap: wrap;
+}
+.resume_upload_wrap{
+    position: absolute;
+    float: right;
+    right: -30px;
+    top: 0;
+}

+ 225 - 0
js/备份/resumeAnalysis_备份.html

@@ -0,0 +1,225 @@
+<!-- <div id="_resumeAnalysisDiv" style="opacity:0"> -->
+	<!-- <input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height" > -->
+<!-- 	<div class="photoCtrlBox" style="overflow:hidden">
+		<div style="float:left;margin-left:15px">
+			<span style="margin-left:-15px">招聘需求:</span>&nbsp;&nbsp;
+			<div style="margin-left:45px;margin-top:-20px;margin-bottom:15px;width:200px">
+				<input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height">
+			</div>
+		</div>
+		<div style="float:left;margin-left:15px;">
+			<span id="resumeAnalysisErrorMesg" style="margin-left:-15px;color:red;"></span>
+		</div>
+	</div>
+	<div class="photoCtrlBox">
+	   <div id="upload"></div>
+	</div>
+	<div style="margin-top:25px">
+	<span><p>(支持的文件格式:txt,html,doc,docx,pdf,wps,rtf,eml,msg,mht)大小不能超过2M</p></span>
+	</div>
+ -->
+<!-- </div> -->
+
+<!-- 简历导入模态框(Modal) -->
+<div class="modal hide fade" id="resumeInput-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+    <div class="modal-header">
+        <button type="button" class="close" id="closeAnalyzeDialog" data-dismiss="modal" aria-hidden="true">
+            <!-- &times; -->
+        </button>
+        <button type="button" class="close min" data-dismiss="modal" aria-hidden="true">
+            一&nbsp;&nbsp;
+        </button>
+        <h4 class="modal-title">
+            <p class="modal-title-main">导入本地简历</p>
+            <p class="modal-title-tip">
+                我们支持多种格式:DOC,DOCX,TXT,PDF,MSG,WPS,JPG,PNG,GIF,RTF<br/>
+                (
+			<span class="red-font">为保证解析效果,请尽量上传招聘网站标准格式简历。</span>
+	      	最多可上传100份简历,单份文件最大不超过20M)
+            </p>
+        </h4>
+    </div>
+    <div class="modal-body">   
+        <div class="some-resume"><!-- some-resume-hide -->
+            <div class="analysis-wrapper clearfix">
+                <div class="analysis-tab clearfix">
+                    <button class="analysis-todo tab-current">待解析(<span class="todoAmount">0</span>)</button>
+                    <button class="analysis-success">解析成功(<span class="successedAmount">0</span>)</button>
+                    <button class="analysis-failure">解析失败(<span class="failedAmount">0</span>)</button>
+                </div>
+                <div class="analysis-progress">
+                    <div class="progress-wrapper">
+                        <div class="progress-done"></div>
+                    </div>
+                    <span class="analysis-done-num doneAmount">0</span> /
+                    <span class="analysis-resume-num resumeAmount">0</span>
+                </div>                    
+            </div>
+            <div class="tab-ct tab-ct-current analysis-todo-ct">
+                <div class="upload-resume-wrapper">
+                    <div class="analy-field-line">
+                        <div id="_resumeAnalysisDiv">
+                            <input type="text" id="recuritmentDemand" name="recuritmentDemand" class="input-height">
+                        </div>
+                        <div id="_resumeAnalysisDiv2">
+                            <input type="text" id="resumeSource" name="resumeSource" class="input-height">
+                        </div>
+                        <div class="shrTooltip">
+                            <div class="icon" style="display: inline;">
+                                <img id="tipsImg1" src="/shr/styles/images/tips.png"
+                                     onmouseover="document.getElementById('tipsImg1').src='/shr/styles/images/tips_gray.png'"
+                                     onmouseout="document.getElementById('tipsImg1').src='/shr/styles/images/tips.png'">
+                            </div>
+                            <div class="content" style="right:25px;left:auto">
+                                1、如果选择了简历来源(内部推荐人可关键的简历来源为内部推荐),那么导入的简历都为该简历来源的;<br>
+                                2、如果没有选择简历来源,导入的简历根据简历解析结果取值;<br>
+                                3、如果没有选择简历来源即选择内部推荐人,系统默认当前简历为内部推荐简历。<br>
+                            </div>
+                        </div>
+                        <div id="_resumeAnalysisDiv3">
+                            <input type="text" id="interRecommendation" name="interRecommendation" class="input-height">
+                        </div>
+                        <div id="_resumeAnalysisDiv4" class="selectwrap">
+                            <input type="text" id="sourceType" name="sourceType" placeholder="选择简历来源类型">
+                        </div>
+                    </div>
+                    <div class="resume_upload_wrap">
+                        <input type="file" name="resume_upload" id="resume_upload" multiple>
+                        <button type="button" class="upload-btn">添加简历</button>
+                        <div class="shrTooltip">
+                            <div class="icon" style="display: inline;">
+                                <img id="tipsImg" src="/shr/styles/images/tips.png"
+                                     onmouseover="document.getElementById('tipsImg').src='/shr/styles/images/tips_gray.png'"
+                                     onmouseout="document.getElementById('tipsImg').src='/shr/styles/images/tips.png'">
+                            </div>
+                            <div class="content" style="right:25px;left:auto">
+                                1.请检查云服务注册及连接页面,刷新是否异常。如果是token的问题,刷新后可正常解析。<br>
+                                2、如果还是无法解析,请运维人员在客户端中手动延长FStopTime(表数据: t_cds_cloudserviceconfig 的 字段 FStopTime)。<br>
+                                3、若上述两种方式还是无法解析,请提单给金蝶研发处理。<br>
+                            </div>
+                        </div>
+                    </div>
+                    <a id="viewLog">查看解析结果</a>
+                </div>
+                <div id="inputcontainer"></div>
+                <div class="button-wrapper">
+                    <button type="button" id="startAnalyze" class="right-btn">
+                        开始解析
+                    </button>
+                    <button type="button" id="clearResumeList" class="left-btn">
+                        清空
+                    </button>
+                    
+                </div>                          
+            </div>
+            <div class="tab-ct analysis-success-ct">
+                <div class="analysis-item" id="resume-list-success"></div>
+                <div class="button-wrapper">
+                    <button type="button" id="closeAnalyze" class="right-btn">
+                        关闭
+                    </button>
+                </div>    
+            </div>  
+            <div class="tab-ct analysis-failure-ct">
+                <div class=" analysis-item" id="resume-list-failure">  
+                </div>      
+                <div class="button-wrapper">
+                    <button type="button" id="clearFailedResume" class="left-btn">
+                        清空
+                    </button>
+                    <button type="button" id="restartUpload" class="right-btn">
+                        重新解析
+                    </button>
+                </div>    
+            </div>                  
+        </div> 
+        <div class="empty-resume">
+            <img class="no-resume" src="/shr/addon/recuritment/web/images/noResume.png" alt="">
+            <div  class="no-resume-des">您还未添加简历,请点击添加</div>
+        </div>
+        <div class="result">
+            <div class="all-success">
+                <img src="/shr/addon/recuritment/web//images/analysis-result.png" alt="">
+                <div class="result-des">
+                        已为您解析简历 <span class="resumeAmount" style="color:#59cc88"></span> 份,
+                        成功 <span class="successedAmount"></span> 份                             
+                </div>
+                <div class="result-btn-wrapper">
+                    <button class="left-btn continueAnalyze">继续上传</button>
+                    <button id="check_succeeded" class="check-result right-btn">返回查看</button>
+                </div>
+            </div>
+            <div class="some-failed">
+                <img src="/shr/addon/recuritment/web//images/analysis-result.png" alt="">
+                <div class="result-des">
+                    已为您解析简历 <span class="resumeAmount"></span> 份,
+                    成功 <span class="successedAmount" style="color:#59cc88"></span> 份,
+                    失败 <span class="failedAmount" style="color:#fb887b"></span> 份,
+                </div>
+                <div class="result-btn-wrapper">
+                    <button class="left-btn continueAnalyze">继续上传</button>
+                    <button id="check_failed" class="check-result right-btn">返回查看</button>
+                </div>
+            </div>
+        </div>
+	</div>
+</div>
+<div class="minimize-analysis">
+    <div class="progress-ball">
+        <span class="mini-doneAmount doneAmount">0</span>
+        /
+        <span class="mini-resumeAmount resumeAmount">0</span>
+    </div>
+    <div class="expansion">
+        <div class="maximize">
+            <div class="maximize-icon"></div>
+        </div>  
+        <div class="min-failure">
+            <span class="m-l-22 ">解析失败</span>
+            <span class="failure-font failedAmount">0</span>
+            <span>个</span>
+        </div>  
+        <div class="min-success">
+            <span class="m-l-22">解析成功</span>
+            <span class="success-font successedAmount">0</span>
+            <span>个</span>
+        </div>
+        <div class="min-todo">
+            <span class="m-l-22">等待解析</span>
+            <span class="todo-font todoAmount">0</span>
+            <span>个</span>
+        </div>
+        <div class="analysis-result">解析中...</div>
+    </div> 
+</div>
+<!-- handlebars 模板 -->
+<script id="handlebars-template" type="text/x-handlebars-template">
+    {{#if resumes}}
+    <div class="resume-list-wrapper">
+	    {{#each resumes}}
+            <div class="resume-list clearfix">
+                <span class="resume-name" title="{{resumeName}}">{{resumeName}}</span>
+                {{#with taskState}}
+                {{#analyzeSucceed value }}
+                <span class="resume-state resume-state-success">
+                    <img src='/shr/addon/recuritment/web/images/analyse-success-icon.png' alt="" />
+                </span>
+                {{else}}
+                <span class="resume-state resume-state-failure" title="{{formatState value}}">{{formatState value}}
+                </span>
+                <!-- <span class="resume-state resume-state-failure">{{../info}}</span> -->
+                {{/analyzeSucceed}}
+                {{/with}}
+                <span class="cancel">
+                    <a href="javascript:;" resume-id="{{id}}"></a>
+                </span>
+            </div>
+	    {{/each}}
+    </div>
+    {{else}}
+    <div class="resume-list-wrapper">
+        <img class="no-resume" src="/shr/addon/recuritment/web/images/noResume.png" alt="">
+        <div class="no-resume-des">{{des}}</div>
+    </div>
+    {{/if}}
+</script>

+ 787 - 0
js/备份/resumeAnalysis——备份.js

@@ -0,0 +1,787 @@
+//var interval = 0;
+//var code, code1, code2, code3;
+var SUCCESS_CODE = 0;
+/**
+ *@description 简历解析
+ */
+function resumeAnalysis(that) {
+	// 简历解析状态
+	var ANALYSIS_TODO = 1;		//待解析 SAVED 1
+	var ANALYSIS_SUCCESS = 7;	//解析成功 FINISHED 7
+	var ANALYSIS_FAIL = 8;		//解析失败 ERROR 8
+	// 简历解析任务状态
+	var NOT_START = 1;			//上传简历 SAVED 1
+	var SUBMITED = 2; 			//提交解析 SUBMITED 2
+	var EXECUTING = 4;			//开始解析 RUNNING 4
+	var FINISHED = 7;			//解析完成 FINISHED 7
+	var TIMEOUT = 9;			//解析超时 TIMEOUT 9
+	// 任务ID
+	var taskId = "";
+	var targetId = '';
+	//上次解析结束任务
+	var lastTaskId = "";
+	var lastAffirm = false;
+	
+	var isDialogShow = false;
+	
+	var analyzeTodoList = [];
+	var analyzeSucceedList = [];
+	var analyzeFailList = [];
+
+	var analysisProgressTimer;
+	var pageUIPK='';
+
+	// 模态框
+	var analysisModal = {
+		show: false,
+		init: function() {
+			analyzeTodoList = [];
+			analyzeSucceedList = [];
+			analyzeFailList = [];	
+			analysisModal.analysisTab($('.analysis-success'));
+			analysisModal.analysisTab($('.analysis-failure'));
+			analysisModal.analysisTab($('.analysis-todo'));	
+			
+			$('.doneAmount').text(0);
+			$('.resumeAmount').text(0);
+			$('.failedAmount').text(0);
+			$('.successedAmount').text(0);
+			$('.todoAmount').text(0);
+		},
+		hidePanel: function() {
+			$('.analysis-panel').hide();
+		},
+		showAnalysisPanel: function() {
+			this.hidePanel();
+			$('.some-resume').show();
+			$('.some-resume').removeClass('some-resume-hide');
+		},
+		compileResumeList: function(id, data) {
+			var myTemplate = Handlebars.compile($("#handlebars-template").html());
+			Handlebars.registerHelper("analyzeSucceed", function (x, options) {
+				if (x === ANALYSIS_SUCCESS) {
+					return options.fn(this);
+				} else {
+					return options.inverse(this);
+				}
+			})
+			Handlebars.registerHelper("formatState", function (state, options) {
+				if (state === ANALYSIS_TODO) {
+					return '待解析';
+				} else if (state === ANALYSIS_SUCCESS) {
+					return state;
+				} else if (state === ANALYSIS_FAIL) {
+					return options.data.root.resumes[options.data.index].info;
+				} else {
+					return '解析失败';
+				}
+			})
+			if(data.resumes.length == 0) {
+				switch(id) {
+					case 'inputcontainer':
+						data = {
+							resumes:false,
+							des:'你没有待解析的简历哦'
+						}
+						$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+						break;
+					case 'resume-list-success':
+						data = {
+							resumes:false,
+							des:'你还没有解析成功的简历哦'
+						}
+						break;
+					case 'resume-list-failure':
+						data = {
+							resumes:false,
+							des:'恭喜,你没有解析失败的简历哦'
+						}
+				}
+			}else{
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+			}
+			$('#' + id).html(myTemplate(data));
+		},
+		analysisTab: function(dom) {
+			var tabClassName = $(dom).attr('class').replace(' tab-current', '');
+			switch (tabClassName) {
+				case 'analysis-todo':
+					this.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
+					break;
+				case 'analysis-success':
+					this.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
+					break;
+				case 'analysis-failure':
+					this.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
+					break;
+				default:
+					break;
+			}   
+			// tab 样式
+			$('.analysis-tab button').removeClass('tab-current');
+			$(dom).addClass('tab-current');
+			// tab-ct 样式
+			var tabClassName = $(dom).attr('class').replace(' tab-current', '');
+			$('.tab-ct-current').removeClass('tab-ct-current');
+			$('.' + tabClassName + '-ct').addClass('tab-ct-current');   
+			
+			$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+
+		},
+		startAnalyze: function() {
+			var param = {taskId: taskId};
+			
+			var val = $("#recuritmentDemand").shrPromptBox("getValue");
+			if(val){
+				targetId = val.id;
+				param = {
+					targetId: targetId,
+					taskId: taskId
+				};
+			}else{
+				var meg = '';
+				if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'||pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'||pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+					meg = '请选择招聘需求';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'||pageUIPK=='com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+					meg = '请选择目标简历夹';
+				}
+				shr.showWarning({
+					message: meg,
+					hideAfter: 3
+				})
+				return false;
+			}
+			//简历来源
+			var _resumeSource = $("#resumeSource").shrPromptBox("getValue");
+			if(_resumeSource && _resumeSource.id){
+			    param.resumeSourceId=_resumeSource.id;
+			}
+
+			val = $("#interRecommendation").shrPromptBox("getValue");
+			if(!val&&pageUIPK=='com.kingdee.shr.recuritment.app.RecommendRecord.list'){
+			    meg = '请选择内部推荐人';
+				shr.showWarning({
+    				message: meg,
+    				hideAfter: 3
+    			})
+    			return false;
+			}
+			if(_resumeSource&&_resumeSource.name=="内部推荐"&&!val){
+			    meg = '选择内部推荐必须选择内部推荐人';
+				shr.showWarning({
+    				message: meg,
+    				hideAfter: 3
+    			})
+    			return false;
+			}
+			if(val && val.id){
+			    param.interRecommendationId=val.id;
+			}
+			val = $("#sourceType").shrSelect('getValue').value;
+			if(val){
+			    param.sourceType=val;
+			}
+
+			$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+			
+			that.remoteCall({
+				method: 'resumeAnalysis',
+				param: param,
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						$('.analysis-progress,.modal-header .min').show();
+						$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+						$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+						$("#recuritmentDemand").shrPromptBox("disable");
+						$("#interRecommendation").shrPromptBox("disable");
+						$("#resumeSource").shrPromptBox("disable");
+						$("#sourceType").shrSelect("disable");
+						initCntroller.getAnalysisProgress();
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+
+
+		},
+		clearTodo: function() {
+			var resumeId = [];
+			for(var i = 0; i < analyzeTodoList.length; i++){
+				resumeId.push(analyzeTodoList[i].id);
+			}
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds:resumeId.join(',')
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						$('.todoAmount').text(0);
+						analyzeTodoList = []
+						analysisModal.analysisTab($('.analysis-todo'));
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+		},
+		clearFailed: function() {
+			var resumeId = [];
+			for(var i = 0; i < analyzeFailList.length; i++){
+				resumeId.push(analyzeFailList[i].id);
+			}
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds:resumeId.join(',')
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						analyzeFailList = [];
+						analysisModal.analysisTab($('.analysis-failure'));
+						$('.failedAmount').text(0);		
+						$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+			
+		},
+		deleteResume: function(){
+			var resumeId = $(this).find('a').attr('resume-id');
+			that.remoteCall({
+				method: 'deleteUploadResume',
+				param: {
+					deleteResumeIds: resumeId
+				},
+				success: function(response) {
+					if(response.code == SUCCESS_CODE) {
+						if($('.tab-ct-current').hasClass('analysis-failure-ct')){
+							for(var i = 0; i < analyzeFailList.length; i++ ){
+								if(analyzeFailList[i].id == resumeId){
+									analyzeFailList.splice(i, 1);
+									break;
+								}
+							}
+							analysisModal.analysisTab($('.analysis-failure'));
+							$('.failedAmount').text(analyzeFailList.length);	
+							if(analyzeFailList.length == 0)	{
+								$('#restartUpload').parent('.button-wrapper').css('visibility','hidden');
+							}
+						}else if($('.tab-ct-current').hasClass('analysis-todo-ct')){
+							for(var i = 0; i < analyzeTodoList.length; i++ ){
+								if(analyzeTodoList[i].id == resumeId){
+									analyzeTodoList.splice(i, 1);
+									break;
+								}
+							}
+							analysisModal.analysisTab($('.analysis-todo'));
+							$('.todoAmount').text(analyzeTodoList.length);
+						}
+					}
+					if(response.code != 0) {
+						shr.showError({
+							message:response.mesg,
+							hideAfter:3
+						});
+						return 	false;
+					}
+				}
+			})
+		},
+		restartAnalyze: function() {
+			if(analyzeFailList.length === 0) {
+				shr.showWarning({
+					message: '您没有解析错误的简历哦',
+					hideAfter: 5
+				})
+				return
+			}
+			$.block.show();
+			that.remoteCall({
+				method: 'resumeAnalysisAgain',
+				param: {
+					taskId: lastTaskId
+				},
+				success: function(res) {
+					$.block.hide();
+					$('.analysis-progress,.modal-header .min').show();
+					initCntroller.getAnalysisProgress(); 
+					analysisModal.analysisTab($('.analysis-todo'));
+					$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+					$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+				}
+			})
+		},
+		checkResult: function(dom) {
+			var id = $(dom).attr('id');
+			$('.some-resume').removeClass('some-resume-result');
+			$('.result').hide();
+			$('.continueAnalyze').css({
+				'visibility':'hidden',
+				'z-index': '1'
+			});
+			// $('#resume_upload').css('left','0px');
+			$('.upload-btn').css('visibility','visible');
+			if(id === 'check_succeeded') {
+				analysisModal.analysisTab($('.analysis-success'));
+			} else {
+				analysisModal.analysisTab($('.analysis-failure'));	
+			}
+            if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
+                analysisModal.lastAffirmChange();
+            }
+		},
+		close: function() {
+			$('#resumeInput-modal').modal('hide');
+			jQuery("#grid").trigger("reloadGrid");//重新加载表格內的数据
+		},
+		minimize: function() {
+			isDialogShow = false;
+			if(lastTaskId){
+				$('.minimize-analysis').hide();
+			}else{
+				$('.minimize-analysis').show();
+			}
+		},
+		setProgressNum: function(data) {
+			$('.doneAmount').text(data.doneAmount);
+			$('.resumeAmount').text(data.resumeAmount);
+			$('.failedAmount').text(data.failedAmount);
+			$('.successedAmount').text(data.successedAmount);
+			$('.todoAmount').text(data.nonExecuteAmount);
+			if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+                $('.result-des-extra').text('解析成功后,将为您通知对应招聘职位的负责HR!');
+			}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+                $('.result-des-extra').text('简历解析成功进入简历库后,有对应权限的人员可查看并使用该简历!');
+    		}
+		},
+		lastAffirmChange: function(){
+			that.remoteCall({
+				method: 'affirmSmartImportTaskResult',
+				param: {
+					taskId: lastTaskId
+				},
+				success: function(res) {
+					console.log(res);
+				}
+			})
+		}
+	};
+	
+	// 最小化进度球
+	var minimizeBall = {
+		show: false,
+		toggleExpansion: function() {
+			$('.expansion').toggle();
+		},
+		maximize: function() {
+			$('#resumeInput-modal').modal('show');
+			$('.minimize-analysis').hide();
+		}
+	}
+
+	// 初始化
+	var initCntroller = {
+		getSmartImportTaskSchedule: function(data) {
+			if(data){
+				lastTaskId = data.lastTaskId;
+				lastAffirm = data.lastAffirm;
+				taskId = data.id;
+				analyzeTodoList = data.nonExecuteDetails;
+				analyzeSucceedList = data.successDetails;
+				analyzeFailList = data.failDetails;
+			}else{
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();	//如果没有数据时,F7和查看日志按钮显示
+			}
+			analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList.reverse() });
+			analysisModal.compileResumeList('resume-list-success', { resumes: analyzeSucceedList });
+			analysisModal.compileResumeList('resume-list-failure', { resumes: analyzeFailList });
+			if(data){
+				analysisModal.setProgressNum(data);
+			}
+			
+			if(!data || data.taskState === NOT_START){
+				clearInterval(analysisProgressTimer);
+				return;
+			}
+			//待解析大于0
+			if(analyzeTodoList.length > 0){
+				$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+				$('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
+			}
+			
+			//解析过程中初始化进度
+			if(data && data.taskState && (data.taskState.value === SUBMITED || data.taskState.value === EXECUTING)){
+				//控制带解析页面按钮不可使用
+				$('#startAnalyze, #clearResumeList').attr('disabled', 'true').addClass('disabled');
+				$('.upload-btn').attr('disabled', 'true').addClass('disabled').css('z-index', '200');
+				//显示进度条
+				$('.progress-done').css('width', data.doneAmount / data.resumeAmount * 100 + '%');
+				$('.analysis-result').text('解析中...');
+				$('.min-todo').show();
+				
+				//显示进度球
+				if(!isDialogShow){
+					$('.minimize-analysis').show();	
+				}
+			}
+			//解析完成
+			if(data.lastTaskState){  	
+				clearInterval(analysisProgressTimer);
+				//进度条隐藏
+				$('.analysis-progress,.modal-header .min').hide();
+				
+				//按钮控制
+				$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+				$('.upload-btn').removeAttr('disabled').removeClass('disabled').css('z-index', '1');
+
+				//显示结果页面
+				$('.some-resume').addClass('some-resume-result');
+				$('.result').show();
+				$('.analysis-result').text('解析完成');
+				$('.min-todo').hide();
+
+				analysisModal.analysisTab($('.analysis-todo'));
+				if(analyzeSucceedList.length !== 0) {
+					$('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
+				}
+				if(analyzeFailList.length !== 0) {
+					$('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
+				}
+				if(data.resumeAmount === data.successedAmount) {
+					$('.all-success').show();
+					$('.some-failed').hide();
+					$('.analysis-success-ct .button-wrapper').css('visibility', 'visible');
+				} else {
+					$('.some-failed').show();
+					$('.all-success').hide();
+					$('.analysis-failure-ct .button-wrapper').css('visibility', 'visible');
+				}
+				$('.analysis-progress,.modal-header .min').hide();
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').hide();
+				$('.continueAnalyze').css({
+					'visibility':'visible',
+					'z-index': '205'
+				});
+				// $('#resume_upload').css('left','1000px');
+				$('.upload-btn').css('visibility','hidden');
+				$("#recuritmentDemand").shrPromptBox("enable");
+				$("#interRecommendation").shrPromptBox("enable");
+				$("#resumeSource").shrPromptBox("enable");
+				$("#sourceType").shrSelect("enable");
+			}
+			if(lastAffirm){
+				$('.minimize-analysis').hide();
+				$('.some-resume').removeClass('some-resume-result');
+				$('.result').hide();
+				// $('#resume_upload').css('left','0px');
+				$('.upload-btn').css('visibility','visible');
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.shrTooltip, #viewLog').show();
+			}
+		},
+		getAnalysisProgress: function() {
+			that.remoteCall({
+				method: 'getSmartImportTaskSchedule',
+				param: {
+					// taskId: taskId
+				},
+				success: function(res) {
+					var data = res.data
+					if (res.code !== '0') {
+						return false;
+					}
+					initCntroller.getSmartImportTaskSchedule(data);
+				}
+			})
+
+			clearInterval(analysisProgressTimer);
+			analysisProgressTimer = setInterval(function () {
+				that.remoteCall({
+					method: 'getSmartImportTaskSchedule',
+					param: {
+						// taskId: taskId
+					},
+					success: function(res) {
+						var data = res.data
+						if (res.code !== '0') {
+							return false;
+						}
+						isEnd = data.isEnd;
+						if(!res.data.taskState){
+							res.data.taskState = [];
+							res.data.taskState.value = NOT_START;
+						}
+						initCntroller.getSmartImportTaskSchedule(data);
+					}
+				})
+			}, 3000);
+		},
+		initFileUpload: function() {
+			pageUIPK = shr.getUrlRequestParam("uipk");
+			var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume";
+			$('#resume_upload').fileupload({
+				url:uploadUrl,
+				autoUpload:true,
+				recalculateProgress:false,
+				add: function(e,data) {
+					console.log(data)
+					var maxNumberOfFiles = 100;
+					//DOC,DOCX,TXT,PDF,MSG,WPS,JPG,PNG,GIF,RTF
+					var acceptFileTypes = /(\.|\/)(doc|docx|txt|pdf|msg|wps|jpg|png|gif|rtf)$/i;
+					var maxSize = 1024 * 20 * 1024
+					var todoAmount = parseInt($('.analysis-todo .todoAmount').text());
+					var flag = true;
+					if(!acceptFileTypes.test(data.files[0].name)) {
+						shr.showWarning({
+							message:'您上传的文件类型['+data.files[0].name+']不符合安全要求,系统不允许上传,请您上传常用office类、图片等文件',
+							hideAfter:5
+						});	
+						flag = false;
+					}
+					if(maxNumberOfFiles <= todoAmount) {
+						shr.showWarning({
+							message:'一次解析数量不能超过' + maxNumberOfFiles + '份',
+							hideAfter:3
+						});	
+						return false;						
+					}
+					if(maxSize <= data.files[0].size) {
+						shr.showWarning({
+							message:data.files[0].name + ' 文件超过20M',
+							hideAfter:3
+						});		
+						flag = false;											
+					}
+					if(data.files[0].size==0){
+						shr.showWarning({
+							message:'文件内容不能为空 ',
+							hideAfter:3
+						});	
+						return false;
+					}
+					if(flag){
+						$('#startAnalyze, #clearResumeList').removeAttr('disabled').removeClass('disabled');
+
+						$('.todoAmount').text(todoAmount + 1);
+						$('.resumeAmount').text(data.files.length);
+						var targetIdVal = '';
+						if(!$('#_resumeAnalysisDiv').is(':hidden')){
+							var val = $("#recuritmentDemand").shrPromptBox("getValue");
+							if(val){
+								targetIdVal = '&targetId=' + encodeURIComponent(val.id);
+							}
+						}
+						var uploadUrl = shr.getContextPath() + "/dynamic.do?uipk=" + pageUIPK + "&method=uploadResume" + targetIdVal;
+						$(this).fileupload('option', 'url', uploadUrl);
+						$.block.show( {
+							text : '操作中,请稍候...'
+						});
+						data.submit();
+					}
+				},
+				start: function(e) {
+					console.log('start');
+				},
+				progress: function(e, data) {
+					console.log('progress')
+				},
+				progressall: function(e, data) {
+					console.log('progressall')
+					console.log(data);
+				},
+				done: function(e,data) {
+					$('.analysis-todo-ct .resume-list').on('mouseover',function () {
+						if($('#startAnalyze').hasClass('disabled')) {
+							return
+						}
+						$(this).find('.cancel').show();
+						$(this).css('border-color','#55B5EC');
+					})
+					$('.analysis-todo-ct .resume-list').on('mouseleave',function() {
+						$(this).find('.cancel').hide();
+						$(this).css('border-color','#E5E5E5');
+					})
+
+					var res = data.result;
+					if(res.code == '0'){
+						var data = res.data;
+						taskId = data.id;
+						analyzeTodoList.unshift(data.nonExecuteDetails[0]);
+						analysisModal.compileResumeList('inputcontainer', { resumes: analyzeTodoList });
+					}else{
+						shr.showWarning({
+							message: res.mesg,
+							hideAfter: 3
+						})
+						$.block.hide();
+                        $('.todoAmount').text(parseInt($('.analysis-todo .todoAmount').text()) - 1);
+						return;
+					}
+					if(parseFloat($('.analysis-todo .todoAmount').text()) == analyzeTodoList.length){
+						$.block.hide();
+					}
+				}
+			});
+		},
+		createResumeAnalysisTask: function (cb) {
+			var _this = this
+			that.remoteCall({
+				method: 'createResumeAnalysisTask',
+				param: {},
+				success: function(res) {
+					if (res.code === '0') {
+						taskId = res.data.id;
+						cb()
+					} else {
+						cb()
+					}
+				}
+			})
+		},
+		initPage: function() {
+			var _this = this
+			_this.initSourceTypeSelect();
+			
+			$('#resumeInput-modal').draggable();
+			// $('#resumeInput-modal').modal({backdrop:"static"});	//单击背景弹框不关闭,但弹框会默认打开,所以要写在弹框打开之前的位置
+			_this.getAnalysisProgress();
+
+		},
+		initSourceTypeSelect: function(){
+			if($('#sourceType').attr('ctrlrole')) return false;
+			var opts = [{
+				alias: "主动搜索",
+				value: "1",
+			},{
+				alias: "主动投递",
+				value: "2",
+			},{
+				alias: "推荐/竞聘",
+				value: "3",
+			}]
+			$('#sourceType').shrSelect({
+				'id': 'sourceType',
+                'data':opts,	//选项
+                'value': '',	//默认选中项
+                'onChange':function(){
+					//设置来源类型
+					shr.remoteCall({
+						method: 'setSmartImportChooseSourceType',
+						param: {
+							targetId: $("#sourceType").shrSelect('getValue').value
+						},
+						success: function(res) {
+							console.log(res);
+						}
+					})
+				}
+			})
+			$('#sourceType').bind("keyup.shrSelect", function( event ) {
+				if(event.keyCode == 8 || event.keyCode == 46) {
+					$('#sourceType').trigger('change');
+				}
+			})
+		},
+		addEventListener: function() {
+			// 关闭简历解析对话框
+			$('#closeAnalyze, #closeAnalyzeDialog').die('click').live('click',analysisModal.close);
+			// 最小化
+			$('.min').die('click').live('click',analysisModal.minimize);
+			// 解析状态切换
+			$('.analysis-tab button').die('click').live('click', function() {
+				analysisModal.analysisTab(this);
+			} ); 				           
+			// 清空待解析简历
+			$('#clearResumeList').die('click').live('click',analysisModal.clearTodo);
+			// 开始解析
+			$('#startAnalyze').die('click').live('click',function() {
+				analysisModal.startAnalyze();
+			});
+			// 查看解析结果
+			$('.check-result').die('click').live('click',function() {
+				analysisModal.checkResult(this);
+			});
+			// 继续添加,解析简历
+			$('.continueAnalyze').die('click').live('click',function() {
+				$('.continueAnalyze').css({
+					'visibility':'hidden',
+					'z-index': '1'
+				});
+				// $('#resume_upload').css('left','0px');
+				$('.upload-btn').css('visibility','visible');
+				$('#_resumeAnalysisDiv,#_resumeAnalysisDiv2,#_resumeAnalysisDiv3,#_resumeAnalysisDiv4,.upload-resume-wrapper .shrTooltip, #viewLog').show();
+
+				$('.result').hide();
+				$('.some-resume').removeClass('some-resume-result');
+				$('.analysis-progress,.modal-header .min').hide();
+                if(lastTaskId !=null && lastTaskId !="") {//确认智能导入结果最近导入任务不为空
+                    analysisModal.lastAffirmChange();
+                }
+				// $('#resume_upload').click();//根据最新需求,继续添加只切换页签,不上传简历
+			});
+			// 清空失败简历
+			$('#clearFailedResume').die('click').live('click',analysisModal.clearFailed);
+			// 重新解析
+			$('#restartUpload').die('click').live('click',analysisModal.restartAnalyze);
+			// 关闭
+			// $('#resumeInput-modal').on('hidden.bs.modal', analysisModal.init);
+			// 最大化
+			$('#resumeInput-modal').die('click').live('show.bs.modal',function(){
+				isDialogShow = true;
+				$('#resumeInput-modal').removeClass('hide');
+				$('.minimize-analysis').hide();
+			});
+			// 最小化状态下展示进度详情
+			$('.progress-ball').die('click').live('click',minimizeBall.toggleExpansion);
+			// 最小化时点击最大化按钮
+			$('.maximize-icon').on('click',minimizeBall.maximize);
+			// 单条删除简历
+			$('.cancel').die('click').live('click',analysisModal.deleteResume);
+			$('#viewLog').die('click').live('click',function(){
+				var uipk = '';
+				if(pageUIPK == 'com.kingdee.shr.recuritment.resumeScreening'){
+					uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.resume.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.talentPool'){
+					uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.archives.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.RecommendRecord.list'){
+				    uipk = 'com.kingdee.shr.recuritment.app.SmartImportTask.recommendResume.list';
+				}else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadDemand.list'){
+                    uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadResume.list';
+                }else if(pageUIPK == 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPriseArchives.list'){
+					uipk = 'com.kingdee.shr.recuritment.app.ResumeBaseRec.selfUploadEnterPrise.list';
+				}
+				var params ={
+					uipk: uipk
+				};
+				var url = shr.getContextPath() + shr.dynamicURL + '?' + $.param(params)+ "&inFrame=true";
+				window.open(url,'_blank');
+			});
+		}
+	}
+		
+	return {
+			init: function() {
+				initCntroller.initFileUpload();
+				initCntroller.initPage();
+				initCntroller.addEventListener();
+			}
+	}
+}