| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | 
							- /**
 
-  * Created by Zhong on 2017/12/20.
 
-  */
 
- //附注
 
- 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.data.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></td><td><textarea class='form-control' disabled='disabled' style='background: white'></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' disabled='disabled' style='background: white'></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 = sectionTreeObj.tree.selected;
 
-             me.updateAnnoSituation(pageOprObj.rationLibId, selectedNode.getID(), val, function () {
 
-                 selectedNode.data.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();
 
-                     }
 
-                 }
 
-             }
 
-         })
 
-     }
 
- };
 
 
  |