| 
					
				 | 
			
			
				@@ -19,19 +19,12 @@ var pageOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             jobContentOprObj.radiosChange(jobContentOprObj.radios, jobContentOprObj.tableAll, jobContentOprObj.tablePartial); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#addConBtn').click(jobContentOprObj.bindAddConBtn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#updateConBtn').click(jobContentOprObj.bindUpdateConBtn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $('#txtareaAll').bind('change', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let met = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let jobContent = $(met).val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $(met).attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for(let i = 0, len = jobContentOprObj.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    updateCodes.push(jobContentOprObj.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                jobContentOprObj.updateJobContent(me.rationLibId, jobContentOprObj.getUpdateArr(updateCodes, jobContent), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    $(met).attr('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    jobContentOprObj.currentJobContent = jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            jobContentOprObj.bindAllEvents($('#txtareaAll')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //fz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            annotationOprObj.radiosChange(annotationOprObj.radios, annotationOprObj.fzTableAll, annotationOprObj.fzTablePartial); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $('#fzAddConBtn').click(annotationOprObj.bindAddConBtn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $('#fzUpdateConBtn').click(annotationOprObj.bindUpdateConBtn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            annotationOprObj.bindAllEvents($('#fzTxtareaAll')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -347,15 +340,22 @@ var zTreeOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         explanatoryOprObj.setAttribute(explanatoryOprObj.currentTreeNode ? explanatoryOprObj.currentTreeNode : treeNode, treeNode, treeNode.explanation, treeNode.ruleText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         explanatoryOprObj.clickUpdate($('#explanationShow'), $('#ruleTextShow')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         explanatoryOprObj.showText($('#explanationShow'), $('#ruleTextShow'), treeNode.explanation, treeNode.ruleText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //job 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         jobContentOprObj.currentSituation = typeof treeNode.jobContentSituation !== 'undefined'? treeNode.jobContentSituation : jobContentOprObj.situations.NONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        jobContentOprObj.setAttribute(jobContentOprObj.currentTreeNode ? jobContentOprObj.currentTreeNode : treeNode, treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        jobContentOprObj.clickUpdate($('#txtareaAll')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //fz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        annotationOprObj.currentSituation = typeof treeNode.annotationSituation !== 'undefined'? treeNode.annotationSituation : annotationOprObj.situations.NONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        annotationOprObj.clickUpdate($('#fzTxtareaAll')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var sectionID = treeNode.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!(treeNode.items) || treeNode.items.length == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            jobContentOprObj.setRadiosDisabled(false, jobContentOprObj.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rationOprObj.workBook.getSheet(0).clearSelection(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rationOprObj.getRationItems(sectionID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             jobContentOprObj.setRadiosDisabled(true, jobContentOprObj.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             jobContentOprObj.hideTable($('#tableAll'), $('#tablePartial')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            annotationOprObj.setRadiosDisabled(true, annotationOprObj.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            annotationOprObj.hideTable($('#fzTableAll'), $('#fzTablePartial')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetCommonObj.cleanSheet(rationOprObj.workBook.getSheet(0), rationOprObj.setting, -1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetCommonObj.shieldAllCells(rationOprObj.workBook.getSheet(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -459,8 +459,10 @@ let explanatoryOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //工作内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    situations: {ALL: 'ALL', PARTIAL: 'PARTIAL', NONE: 'NONE'},//所有ALL(包括未定义本项工作内容)、部分PARTIA,不可用NONE(非章节树最底层节点时) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    situations: {ALL: 'ALL', PARTIAL: 'PARTIAL', NONE: 'NONE'},//所有ALL(包括未定义本项工作内容)、部分PARTIA,不可用NONE(无定额时) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     currentSituation: null,//本项适用情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    currentTreeNode: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    preTreeNode: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     radios: $("input[name = 'optionsRadios']"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     tableAll: $('#tableAll'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     tablePartial: $('#tablePartial'), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -469,21 +471,32 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     currentRationItems: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     addCon: $('#addCon'),//勾选编码模态框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     updateCon: $('#updateCon'),//编辑编码模态框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //获取本项适用情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getSituation: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let rst = me.situations.ALL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(rationItems.length > 1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for(let i = 0, len = rationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for(let j = i + 1, len = rationItems.length; j < len; j++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(typeof rationItems[i].jobContent !== 'undefined' && rationItems[i].jobContent !== rationItems[j].jobContent){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        rst = me.situations.PARTIAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setAttribute: function (preNode, currentNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.preTreeNode = preNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.currentTreeNode = currentNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    clickUpdate: function (txtarea) {//解决编辑完后在未失去焦点的时候直接定额章节树 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(txtarea.is(':focus')){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let jobContent = txtarea.val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(jobContent !== me.currentJobContent){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.preTreeNode.jobContent = jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.unbindEvents(txtarea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                txtarea.blur(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(let i = 0, len = me.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateCodes.push(me.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.currentRationItems[i].jobContent = jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.updateJobContent(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, jobContent), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.bindAllEvents(txtarea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                txtarea.blur(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     getGroup: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = [];//rst = [{jobContent: String, items: Array}] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -584,21 +597,6 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.buildEditableCodesCon(me.currentRationItems, me.updateCon, me.getUpdateCodes(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //更新显示的编码table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    updateCodesTable: function (table, codes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        table.empty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        table.append("<a href data-toggle='modal' data-target='#editBianmaQ' class='m-0'>编辑编码</a>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        table.children().bind('click', function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.currentOprTr = table.parent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.currentJobContent = $(me.currentOprTr.children()[2]).children().val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.onclickFuncEdit($(this)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for(let i = 0, len = codes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let $p = $("<p class='m-0'>" + codes[i] + "</p>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            table.append($p[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //获取编码td中的编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     getUpdateCodes: function (jq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -691,7 +689,7 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             radios[0].checked = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             radios[1].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#txtareaAll').val(me.currentRationItems.length > 0 ? me.currentRationItems[0].jobContent : ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            me.currentJobContent = me.currentRationItems[0].jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentJobContent = me.currentRationItems.length > 0 ? me.currentRationItems[0].jobContent : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.tableAll.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.tablePartial.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -746,21 +744,6 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sortRationItems: function (rationItems, field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        rationItems.sort(function (a, b) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let rst = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if(a[field] > b[field]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if (a[field] < b[field]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addCodeNode: function (container, codeNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        container.append(codeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setTextareaHeight: function (textarea, nodesCount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const perHeight = 21.6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         textarea.height(nodesCount * 21.6); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -777,12 +760,30 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    unbindEvetns: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bindAllEvents: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        txtarea.bind('change', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let met = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let jobContent = $(met).val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $(met).attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(let i = 0, len = me.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateCodes.push(me.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.currentRationItems[i].jobContent = jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentJobContent = jobContent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateJobContent(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, jobContent), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $(met).attr('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unbindEvents: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         txtarea.unbind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //定额工作内容相关操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rationJobContentOpr: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = jobContentOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setRadiosDisabled(me.currentRationItems.length > 0 ? false : true, me.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.setRadiosChecked(me.currentSituation, me.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         me.buildTablePartial(me.tablePartial, me.getGroup(rationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -844,7 +845,7 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dataType: 'json', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             success: function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if(!result.error){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    me.updateRationItem(me.currentRationItems, updateArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.updateRationItem(jobContentOprObj.currentRationItems, updateArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -859,9 +860,415 @@ let jobContentOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dataType: 'json', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             success: function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if(!result.error){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let annotationOprObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    situations: {ALL: 'ALL', PARTIAL: 'PARTIAL', NONE: 'NONE'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    currentSituation: null,//本项适用情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    radios: $("input[name = 'fzRadios']"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fzTableAll: $('#fzTableAll'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    fzTablePartial: $('#fzTablePartial'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    currentOprTr: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    currentAnnotation: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addCon: $('#fzAddCon'),//勾选编码模态框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateCon: $('#fzUpdateCon'),//编辑编码模态框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    clickUpdate: function (txtarea) {//解决编辑完后在未失去焦点的时候直接定额章节树 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(txtarea.is(':focus')){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let annotation = txtarea.val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(annotation !== me.currentAnnotation){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jobContentOprObj.preTreeNode.annotation = annotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.unbindEvents(txtarea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                txtarea.blur(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(let i = 0, len = jobContentOprObj.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateCodes.push(jobContentOprObj.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    jobContentOprObj.currentRationItems[i].annotation = annotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.updateAnnotation(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, annotation), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.bindAllEvents(txtarea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                txtarea.blur(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getGroup: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = [];//rst = [{jobContent: String, items: Array}] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = rationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(typeof rationItems[i].annotation !== 'undefined' && rationItems[i].annotation.toString().trim().length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let isExist = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(let j = 0, jLen = rst.length; j < jLen; j++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(rst[j].annotation === rationItems[i].annotation){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        isExist = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        rst[j].items.push(rationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(!isExist){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst.push({annotation: rationItems[i].annotation, items: [rationItems[i].code]}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hideTable: function (tableAll, tablePartial) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(tableAll){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tableAll.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(tablePartial){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tablePartial.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //建table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildTablePartial: function (table, group) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        table.empty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $thead = $("<thead><tr><th></th><th>编码</th><th>附注</th>/tr></thead>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $tbody = $("<tbody></tbody>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let count = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = group.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let $newTr = me.getNewTr($tbody, group[i].items, group[i].annotation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $tbody.append($newTr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            count++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $trEnd = $("<tr><td>"+ count +"</td><td><a href data-toggle='modal' data-target='#fzEditBianma' class='m-0'>点击勾选编码</a></td><td><textarea class='form-control'></textarea></td></tr>");//勾选行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $($trEnd.children().children()[0]).bind('click', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.onclickFuncAdd($(this)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentOprTr = $trEnd; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentAnnotation = $(me.currentOprTr.children()[2]).children().val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $tbody.append($trEnd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        table.append($thead); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        table.append($tbody); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //新增一行tr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getNewTr: function (tbody, codes, jobContent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let count = tbody.children().length > 0 ? tbody.children().length : 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $textTd = $("<td></td>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $textarea = $("<textarea class='form-control'></textarea>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $textarea.val(jobContent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $textTd.append($textarea); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $tr = $("<tr><td>" + count + "</td><td><a href data-toggle='modal' data-target='#fzEditBianmaQ' class='m-0'>编辑编码</a></td></tr>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $tr.children().children().bind('click', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentOprTr = $tr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentAnnotation = $(me.currentOprTr.children()[2]).children().val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.onclickFuncEdit($(this)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //文本变化; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $textarea.bind('change', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let codes = me.getUpdateCodes($($(this).parent().parent().children()[1]).children()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let annotation = $(this).val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateAnnotation(pageOprObj.rationLibId, me.getUpdateArr(codes, annotation), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(annotation.trim().length === 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.buildTablePartial(me.fzTablePartial, me.getGroup(jobContentOprObj.currentRationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $tr.append($textTd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = codes.length; i < len; i ++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let $p = $("<p class='m-0'>" + codes[i] + "</p>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $tr.children()[1].append($p[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setTextareaHeight($textarea, codes.length + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return $tr[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onclickFuncAdd: function (obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let txtarea = $(obj.parent().parent().children().children()[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let annotation = txtarea.val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(annotation.trim().length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let codesObj = me.getAddCodes(jobContentOprObj.currentRationItems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.buildCheckCodesCon(me.addCon, codesObj.checkedCodes, codesObj.disabledCodes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            obj.attr('data-target', '#fzEditBianma'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            obj.attr('data-target', ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alert("附注不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onclickFuncEdit: function (obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.buildEditableCodesCon(jobContentOprObj.currentRationItems, me.updateCon, me.getUpdateCodes(obj)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //获取编码td中的编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getUpdateCodes: function (jq) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let nodes = jq.parent().children(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 1, len = nodes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst.push(nodes[i].textContent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //建一个编码checkbox Div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildCodeOption: function (code, attr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $div = $("<div class='col'><label class='form-check-label'><input class='form-check-input' type='checkbox' value= "+ code +"> "+ code +"</label></div>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let $checkBox = $div.children().children(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(attr){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $checkBox.attr(attr, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return $div; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //建修改编码弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildEditableCodesCon: function (rationItems, container, codes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let codeDivs = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        container.empty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = codes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            codeDivs.push({code: codes[i], attr: 'checked'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = rationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(codes.indexOf(rationItems[i].code) === -1){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(typeof rationItems[i].annotation !== 'undefined' && rationItems[i].annotation.toString().trim().length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    codeDivs.push({code: rationItems[i].code, attr: 'disabled'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    codeDivs.push({code: rationItems[i].code, attr: ''}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        codeDivs.sort(function (a, b) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let rst = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(a.code > b.code) rst = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if(a.code < b.code) rst = -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = codeDivs.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            container.append(me.buildCodeOption(codeDivs[i].code, codeDivs[i].attr)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //建勾选编码弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buildCheckCodesCon: function (container, checkedCodes, disabledCodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        container.empty(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = checkedCodes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let $codeDiv = me.buildCodeOption(checkedCodes[i], 'checked'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            container.append($codeDiv); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = disabledCodes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let $codeDiv = me.buildCodeOption(disabledCodes[i], 'disabled'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            container.append($codeDiv); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getAddCodes: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = {checkedCodes: [], disabledCodes: []}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = rationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(typeof rationItems[i].annotation !== 'undefined' && rationItems[i].annotation.toString().trim().length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst.disabledCodes.push(rationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst.checkedCodes.push(rationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //获取选择后的编码窗口的编码及状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getCodesAfterS: function (checkNodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = {checked: [], unchecked: []}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = checkNodes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(checkNodes[i].checked){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst.checked.push(checkNodes[i].value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if(!checkNodes[i].checked && !checkNodes[i].disabled){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst.unchecked.push(checkNodes[i].value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setRadiosChecked: function (situation, radios) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(situation === me.situations.ALL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[0].checked = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[1].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $('#fzTxtareaAll').val(jobContentOprObj.currentRationItems.length > 0 ? jobContentOprObj.currentRationItems[0].annotation : ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentAnnotation = jobContentOprObj.currentRationItems.length > 0 ? jobContentOprObj.currentRationItems[0].annotation : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTableAll.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTablePartial.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if(situation === me.situations.PARTIAL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[0].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[1].checked = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTableAll.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTablePartial.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else if(situation === me.situations.NONE){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[0].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[1].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTableAll.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.fzTablePartial.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //radios是否可用,只有在定额章节树的底层节点才可用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setRadiosDisabled: function (val, radios) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me =annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(val){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[0].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            radios[1].checked = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentSituation = me.situations.NONE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        radios.attr('disabled', val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    radiosChange: function (radios, tableAll, tablePartial) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        radios.change(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let val = $("input[name = 'fzRadios']:checked").val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let selectedNode = zTreeOprObj.treeObj.getSelectedNodes()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateAnnoSituation(pageOprObj.rationLibId, selectedNode.ID, val, function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                selectedNode.annotationSituation = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.currentSituation = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(val === me.situations.ALL){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for(let i = 0, len = jobContentOprObj.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        updateCodes.push(jobContentOprObj.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.updateAnnotation(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, ''), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        me.currentAnnotation = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        $('#fzTxtareaAll').val(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tableAll.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        tablePartial.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.buildTablePartial(me.fzTablePartial, me.getGroup(jobContentOprObj.currentRationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tableAll.hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tablePartial.show(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setTextareaHeight: function (textarea, nodesCount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const perHeight = 21.6; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        textarea.height(nodesCount * 21.6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bindEvents: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        txtarea.bind('change', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let annotation = txtarea.val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let jqNodes = txtarea.parent().parent().children()[1].children; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let updateCodes = me.getUpdateCodes(jqNodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            txtarea.attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateAnnotation(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, annotation), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                txtarea.attr('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bindAllEvents: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        txtarea.bind('change', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let met = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let annotation = $(met).val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $(met).attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let updateCodes = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(let i = 0, len = jobContentOprObj.currentRationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateCodes.push(jobContentOprObj.currentRationItems[i].code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jobContentOprObj.currentRationItems[i].annotation = annotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.currentAnnotation = annotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateAnnotation(pageOprObj.rationLibId, me.getUpdateArr(updateCodes, annotation), function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $(met).attr('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unbindEvents: function (txtarea) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        txtarea.unbind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //定额工作内容相关操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    rationAnnotationOpr: function (rationItems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setRadiosDisabled(rationItems.length > 0 ? false : true, me.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.setRadiosChecked(me.currentSituation, me.radios); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.buildTablePartial(me.fzTablePartial, me.getGroup(rationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getUpdateArr: function (updateCodes, annotation) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = updateCodes.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst.push({code: updateCodes[i], annotation: annotation}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bindAddConBtn: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let codesObj = me.getCodesAfterS(me.addCon.children().children().children()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let $tbody = $('#fzTablePartial tbody'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let lastEle = $tbody[0].lastElementChild; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let txtare = lastEle.lastElementChild.children[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(me.currentAnnotation.trim().length > 0){//工作内容不为空才可添加编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let updateArr = me.getUpdateArr(codesObj.checked, me.currentAnnotation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.updateAnnotation(pageOprObj.rationLibId, updateArr, function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.buildTablePartial(me.fzTablePartial, me.getGroup(jobContentOprObj.currentRationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $(txtare).val(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alert("附注不能为空!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bindUpdateConBtn: function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let codesObj = me.getCodesAfterS(me.updateCon.children().children().children()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let updateC = me.getUpdateArr(codesObj.checked, me.currentAnnotation), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateUnC = me.getUpdateArr(codesObj.unchecked, ''), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateArr = updateC.concat(updateUnC); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.updateAnnotation(pageOprObj.rationLibId, updateArr, function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                me.buildTablePartial(me.fzTablePartial, me.getGroup(jobContentOprObj.currentRationItems)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //更新缓存的定额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateRationItem: function (rationItems, updateArr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let i = 0, len = rationItems.length; i < len; i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(let j = 0, jLen = updateArr.length; j < jLen; j++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(rationItems[i].code === updateArr[j].code){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rationItems[i].annotation = updateArr[j].annotation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateAnnotation: function (repId, updateArr, callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $.ajax({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type: 'post', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            url: 'api/updateAnnotation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data: {lastOpr: userAccount, repId: repId, updateArr: JSON.stringify(updateArr)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dataType: 'json', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            success: function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(!result.error){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.updateRationItem(jobContentOprObj.currentRationItems, updateArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateAnnoSituation: function (repId, nodeId, situation, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = annotationOprObj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $.ajax({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type: 'post', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            url: 'api/updateAnnoSituation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data: {lastOpr: userAccount, repId: repId, nodeId: nodeId, situation: situation}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dataType: 'json', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            success: function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(!result.error){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 |