Browse Source

定额库debug,树等

zhongzewei 7 năm trước cách đây
mục cha
commit
925324c6ef

+ 69 - 5
public/web/sheet/sheet_common.js

@@ -94,7 +94,7 @@ var sheetCommonObj = {
         var me = this, ch = GC.Spread.Sheets.SheetArea.viewport;
         sheet.suspendPaint();
         sheet.suspendEvent();
-        sheet.setRowCount(data.length + 5);
+        sheet.setRowCount(typeof repositoryGljObj !== 'undefined' && repositoryGljObj.currentOprParent === 1 ? data.length : data.length + 5);
         for (var col = 0; col < setting.header.length; col++) {
             var hAlign = "left", vAlign = "center";
             if (setting.header[col].hAlign) {
@@ -152,6 +152,7 @@ var sheetCommonObj = {
         return rst;
     },
     combineRowData: function(sheet, setting, row, repositoryGljObj) {
+        let me = this;
         var rst = {};
         let comboBoxCellType = sheet.getCellType(row, 5);
         let items = comboBoxCellType.items();
@@ -173,16 +174,20 @@ var sheetCommonObj = {
                         isExist = false;
                         for(let i=0; i< gljList.length; i++){
                             if(gljList[i].code === sheet.getValue(row, col) && sheet.getValue(row, col)!== orgCode){
+                                me.lockAllCells(sheet);
                                 $('#alertText').text("输入的编号已存在,请重新输入!");
                                 $('#codeAlertBtn').click();
-                                sheet.options.isProtected = true;
                                 $('#codAleConfBtn').click(function () {
-                                    sheet.options.isProtected = false;
+                                   // me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
+                                    me.unLockAllCells(sheet);
+                                    me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
                                     sheet.setValue(row, 0, orgCode);
                                     sheet.setActiveCell(row, 0);
                                 });
                                 $('#codAleClose').click(function () {
-                                    sheet.options.isProtected = false;
+                                    //me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
+                                    me.unLockAllCells(sheet);
+                                    me.reLockSomeCodes(sheet, 0, repositoryGljObj.currentCache.length);
                                     sheet.setValue(row, 0, orgCode);
                                     sheet.setActiveCell(row, 0);
                                 });
@@ -217,6 +222,61 @@ var sheetCommonObj = {
     unShieldAllCells: function(sheet) {
         sheet.options.isProtected = false;
     },
+    reLockSomeCodes: function (sheet, beginRow, endRow) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let unLockStyle = new GC.Spread.Sheets.Style();
+        unLockStyle.locked = false;
+        let lockStyle = new GC.Spread.Sheets.Style();
+        lockStyle.locked = true;
+        for(let row = beginRow; row < endRow; row++){
+            sheet.setStyle(row, 0, lockStyle);
+        }
+        for(let row = endRow; row < sheet.getRowCount(); row++){
+            sheet.setStyle(row, 0, unLockStyle);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    unLockAllCells: function (sheet) {
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        sheet.setStyle(-1, 0, defaultStyle);
+        sheet.options.isProtected = false;
+    },
+    lockAllCells: function (sheet) {
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = true;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        for(let i = 0; i < sheet.getRowCount(); i++){
+            sheet.setStyle(i, 0, defaultStyle);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
+    lockSomeCodes: function (sheet, beginRow, endRow) {
+        let defaultStyle = new GC.Spread.Sheets.Style();
+        defaultStyle.locked = false;
+        sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.viewport);
+        let style = new  GC.Spread.Sheets.Style();
+        style.locked = true;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        for(let i = beginRow; i < endRow; i++){
+            sheet.setStyle(i, 0, style);
+        }
+        sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
+    },
     lockCodeCells: function (sheet, rowCount) {
         let sheetRowCount = sheet.getRowCount();
         let defaultStyle = new GC.Spread.Sheets.Style();
@@ -225,10 +285,14 @@ var sheetCommonObj = {
         let style = new GC.Spread.Sheets.Style();
         style.locked = true;
         sheet.setStyle(-1, 0, style);
-        for(let i =rowCount -1; i<sheetRowCount; i++){
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        for(let i =rowCount; i<sheetRowCount; i++){
             sheet.setStyle(i, -1, style);
         }
         sheet.options.isProtected = true;
+        sheet.resumePaint();
+        sheet.resumeEvent();
     },
     lockCells: function(sheet, setting){
         if (setting && setting.view.lockColumns && setting.view.lockColumns.length > 0) {

+ 5 - 3
web/maintain/ration_repository/dinge.html

@@ -14,7 +14,9 @@
     <!--zTree-->
   	<link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css" type="text/css">
-
+    <style type="text/css">
+        .ztree li span.button.add{margin-right:2px;background-position:-144px 0;vertical-align:top;*vertical-align:middle}
+    </style>
 </head>
 
 <body>
@@ -44,11 +46,11 @@
         <div class="content">
             <div class="container-fluid">
                 <div class="row">
-                  <div class="main-side col-lg-3 p-0">
+                  <div class="main-side col-lg-3 p-0" style="width: 100%; height: 100%; overflow: auto">
                       <div class="tab-bar">
                           <a onclick="zTreeOprObj.addRootNode()" class="btn btn-secondary btn-sm">增加根节点</a>
                       </div>
-                    <div class="tab-content" style="width: 100%; height: 100%; overflow: auto">
+                    <div class="tab-content">
                       <ul id="rationChapterTree" class="ztree"></ul>
                     </div>
                   </div>

+ 3 - 0
web/maintain/ration_repository/gongliao.html

@@ -12,6 +12,9 @@
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css" type="text/css">
     <!--zTree-->
   	<link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
+    <style type="text/css">
+        .ztree li span.button.add{margin-right:2px;background-position:-144px 0;vertical-align:top;*vertical-align:middle}
+    </style>
 </head>
 
 <body>

+ 5 - 4
web/maintain/ration_repository/js/main.js

@@ -70,9 +70,10 @@ function getRationLibs(){
         cache:false,
         timeout:5000,
         success:function(result){
+            console.log(result);
             $("tbody tr").html("");
             for(var i=0;i<result.data.length;i++){
-                addLibTag(result.data[i].dispName, result.data[i].ID);
+                addLibTag(result.data[i].dispName, result.data[i].ID, result.data[i].createDate);
                 storageUtil.setSessionCache("RationGrp","repositoryID_" + result.data[i].ID, result.data[i].dispName);
             }
             addEvent_Addressdirect();
@@ -85,7 +86,7 @@ function getRationLibs(){
     })
 }
 
-function addLibTag(string, ID){
+function addLibTag(string, ID, date){
     var $tr = $('<tr><td><a href="#"></a></td><td></td><td><a href="javacript:void(0);" data-toggle="modal" data-target="#edit" title="编辑"><i class="fa fa-pencil-square-o"></i></a> <a href="javacript:void(0);" data-toggle="modal"     data-target="#del" class="text-danger" title="删除"><i class="fa fa-remove"></i></a></td><td style="display:none"></td></tr>')
     var $td0 = $("td:eq(0)",$tr);
     var $td1 = $("td:eq(1)",$tr);
@@ -94,8 +95,8 @@ function addLibTag(string, ID){
     var str = string;
     a.text(str);
     $tdId.text(ID);
-    var date = new Date().Format("yyyy-MM-dd");
-    $td1.text(date);
+    var newDate = date.split(' ')[0];
+    $td1.text(newDate);
     $tr.appendTo("tbody");
 }
 

+ 184 - 36
web/maintain/ration_repository/js/repository_glj.js

@@ -26,8 +26,9 @@ var pageOprObj = {
             repositoryGljObj.getRationGljIds(rationLibId);
             repositoryGljObj.getGljDistType(function () {
                 repositoryGljObj.currentRepositoryId = parseInt(rationLibId);
-                repositoryGljObj.getGljTree(rationLibId);
-                repositoryGljObj.getGljItems(rationLibId);
+                repositoryGljObj.getGljTree(rationLibId, function () {
+                    repositoryGljObj.getGljItems(rationLibId);
+                });
                 sheetCommonObj.shieldAllCells(repositoryGljObj.workBook.getSheet(0), repositoryGljObj.setting);
             });
         }
@@ -115,7 +116,7 @@ var pageOprObj = {
             }
         })
     },
-    getGljTree: function(rationLibId) {
+    getGljTree: function(rationLibId, callback) {
         var me = this;
         $.ajax({
             type:"POST",
@@ -132,6 +133,7 @@ var pageOprObj = {
                     } else {
                         gljTypeTreeOprObj.addRootNode();
                     }
+                    callback();
                 }
             },
             error:function(err){
@@ -153,7 +155,12 @@ var pageOprObj = {
                     me.gljList = result.data;
                     me.workBook.getSheet(0).setRowCount(result.data.length);
                     me.sortGlj();
-                    me.showGljItems(result.data, me.gljCurTypeId);
+                    let rootNode = me.treeObj.getNodes()[0];
+                    if(rootNode && rootNode.isParent && rootNode.isFirstNode){
+                        me.treeObj.selectNode(rootNode);
+                        gljTypeTreeOprObj.onClick(null, 'repositoryTree', rootNode);
+                    }
+                    //me.showGljItems(result.data, me.gljCurTypeId);
                 }
             },
             error:function(err){
@@ -176,17 +183,19 @@ var pageOprObj = {
             }
             sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
             sheetCommonObj.showData(me.workBook.getSheet(0), me.setting, cacheSection, me.distTypeTree);
+
             cacheSection = null;
         }
     },
     buildSheet: function(container) {
         var me = repositoryGljObj;
         me.workBook = sheetCommonObj.buildSheet(container, me.setting, 30, me);
+        me.repositoryGljDelOpr();
         me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
         me.workBook.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
-        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
+        //me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
     },
      onEnterCell: function (sender, args) {
@@ -228,17 +237,24 @@ var pageOprObj = {
                  }
                  else {
                     $('#gljAlertBtn').click();
-                     me.workBook.getSheet(0).options.isProtected = true;
+                     //me.workBook.getSheet(0).options.isProtected = true;
+                     sheetCommonObj.lockAllCells(args.sheet);
                      $('#aleCanceBtn').click(function () {
-                         me.workBook.getSheet(0).options.isProtected = false;
+                        // me.workBook.getSheet(0).options.isProtected = false;
+                         sheetCommonObj.unLockAllCells(args.sheet);
+                         sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                          me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                      });
                      $('#gljAleClose').click(function () {
-                         me.workBook.getSheet(0).options.isProtected = false;
+                        // me.workBook.getSheet(0).options.isProtected = false;
+                         sheetCommonObj.unLockAllCells(args.sheet);
+                         sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                          me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
                      });
                      $('#aleConfBtn').click(function () {
-                         me.workBook.getSheet(0).options.isProtected = false;
+                        // me.workBook.getSheet(0).options.isProtected = false;
+                         sheetCommonObj.unLockAllCells(args.sheet);
+                         sheetCommonObj.reLockSomeCodes(args.sheet, 0, repositoryGljObj.currentCache.length);
                          me.addGljObj = null;
                          for(let col=0; col<me.setting.header.length; col++){
                              let field = me.setting.header[col].dataCode;
@@ -277,8 +293,6 @@ var pageOprObj = {
             updateArr = [], addArr = [], updateBasePrcArr = [];
         me.editingRowIdx = args.row;
         rObj.basePrice = rObj.basePrice ? rObj.basePrice : 0;
-        console.log(`rObj`);
-        console.log(rObj);
         if (me.currentEditingGlj["ID"]) {
             rObj["ID"] = me.currentEditingGlj["ID"];
             rObj.gljClass = me.currentEditingGlj.gljClass;
@@ -334,13 +348,125 @@ var pageOprObj = {
             me.mixUpdateRequest(updateArr, addArr, []);
         }
     },
+     repositoryGljDelOpr: function () {
+        let me = repositoryGljObj;
+         me.workBook.commandManager().register('repositoryGljDel', function () {
+             let sheet = me.workBook.getSheet(0),
+                 updateArr = [], removeArr = [],
+                 tempRemoveArr= [],
+                 refGljCodes = [], //已被引用的工料机
+                 updateBasePrcArr = [],//删除基价单位后重新计算
+                 sels = sheet.getSelections(),
+                 cacheSection = me.currentCache;
+             if(sels.length > 0 && cacheSection.length > 0){
+                 for(let i = 0; i < sels.length; i++){
+                     if(sels[i].colCount === me.setting.header.length){
+                         for(let j = 0; j < sels[i].rowCount; j++){
+                             if(sels[i].row + j < cacheSection.length){
+                                 tempRemoveArr.push({ID: cacheSection[sels[i].row + j].ID, code: cacheSection[sels[i].row + j].code});
+                             }
+                         }
+                     }
+                     else{
+                         let maxCol = sels[i].col + sels[i].colCount - 1;
+                         if(sels[i].col >= 2 && maxCol <= 4){
+                             for(let j = 0; j < sels[i].rowCount; j++){
+                                 if(sels[i].row + j < cacheSection.length){
+                                     let updateObj = cacheSection[sels[i].row + j];
+                                     for(let col = sels[i].col; col <= maxCol; col++){
+                                         if(me.setting.header[col].dataCode === 'basePrice'){
+                                             updateObj[me.setting.header[col].dataCode] = 0;
+                                             updateBasePrcArr.push({gljId: updateObj.ID, gljType: updateObj.gljType, basePrice: 0});
+                                         }
+                                         else{
+                                             updateObj[me.setting.header[col].dataCode] = '';
+                                         }
+                                     }
+                                     updateArr.push(updateObj);
+                                 }
+                             }
+                         }
+                         //编号、名称、类型不可为空
+                         else{
+                             if(sels[i].row < cacheSection.length){
+                                 let text = '', cantNullStr =['编码', '名称', '类型'];
+                                 for(let col = sels[i].col; col <= sels[i].col + sels[i].colCount -1; col++){
+                                     if(cantNullStr.indexOf(me.setting.header[col].headerName) !== -1){
+                                         text += me.setting.header[col].headerName + " ";
+                                     }
+                                 }
+                                 $('#alertText').text(text + "不可为空!");
+                                 $('#codeAlertBtn').click();
+                                 sheet.options.isProtected = true;
+                                 $('#codAleConfBtn').click(function () {
+                                     sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                 });
+                                 $('#codAleClose').click(function () {
+                                     sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                                 });
+                             }
+                         }
+                     }
+                 }
+                 //提取已被引用工料机
+                 if(tempRemoveArr.length > 0){
+                     for(let i = 0; i < tempRemoveArr.length; i++){
+                         if(me.rationGljIds.indexOf(tempRemoveArr[i].ID) !== -1){
+                             refGljCodes.push(tempRemoveArr[i].code);
+                             tempRemoveArr.splice(i--, 1);
+                         }
+                         else{
+                             removeArr.push(tempRemoveArr[i].ID);
+                         }
+                     }
+                 }
+                 //提示
+                 if(refGljCodes.length > 0){
+                     let alertText;
+                     if(refGljCodes.length > 3){
+                         alertText = "编号: " + refGljCodes[0]+" 、" + refGljCodes[1] + " 、" + refGljCodes[2] + "...等工料机已有定额引用,删除失败!";
+                     }
+                     else {
+                         let alertCode = " ";
+                         for(let i=0; i< refGljCodes.length; i++){
+                             alertCode += refGljCodes[i] + " 、";
+                         }
+                         alertText = "编号:" + alertCode + "工料机已有定额引用,删除失败!"
+                     }
+                     $('#alertText').text(alertText);
+                     $('#codeAlertBtn').click();
+                     sheet.options.isProtected = true;
+                     $('#codAleConfBtn').click(function () {
+                         sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                         if(removeArr.length > 0){
+                             me.mixUpdateRequest(updateArr, [], removeArr);
+                         }
+                     });
+                     $('#codAleClose').click(function () {
+                         sheetCommonObj.lockSomeCodes(sheet, 0, cacheSection.length);
+                         me.mixUpdateRequest(updateArr, [], removeArr);
+                     });
+                 }
+                 else if(removeArr.length > 0 || updateArr.length > 0){
+                     me.mixUpdateRequest(updateArr, [], removeArr);
+                     if(updateBasePrcArr.length > 0){
+                         me.updateRationBasePrcRq(updateBasePrcArr);
+                     }
+                 }
+             }
+
+         });
+
+        me.workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
+        me.workBook.commandManager().setShortcutKey('repositoryGljDel', GC.Spread.Commands.Key.del, false, false, false, false);
+     },
      onRangeChanged: function(sender, args) {
          if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
              var me = repositoryGljObj, updateArr = [], removeArr = [], cancelArr = [], isMisCode = true;
              var cacheSection = me.currentCache;
              if (cacheSection) {
                  for (var i = 0; i < args.rowCount; i++) {
-                     var hasUpdate = false, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
+                     let rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
                          isEmpty = sheetCommonObj.chkIfEmpty(rObj, me.setting);
                      if(isEmpty){
                          if(args.row + i < cacheSection.length){
@@ -710,6 +836,9 @@ var pageOprObj = {
                     }
                     else{
                         me.currentCache = me.getCache();
+                        //sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
+                        sheetCommonObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
+                        //sheetCommonObj.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
                     }
                     me.showGljItems(me.gljList, me.gljCurTypeId);
                 }
@@ -796,17 +925,22 @@ var gljTypeTreeOprObj = {
             gljTypeId = treeNode.ID;
         me.gljCurTypeId = treeNode.ID;
         //me.currentCache = me.getCache();
-        me.showGljItems(me.gljList, gljTypeId);
         if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
             me.currentOprParent = 1;
             me.currentCache = me.getParentCache(me.parentNodeIds["_pNodeId_" + treeNode.ID]);
-            sheetCommonObj.lockCodeCells(me.workBook.getSheet(0), me.gljList.length);
+            sheetCommonObj.lockCodeCells(me.workBook.getSheet(0), me.currentCache.length);
+            me.workBook.getSheet(0).setRowCount(me.currentCache.length);
             //sheetCommonObj.shieldAllCells(me.workBook.getSheet(0), me.setting);
         } else {
             me.currentOprParent = 0;
             me.currentCache = me.getCache();
-            sheetCommonObj.unShieldAllCells(me.workBook.getSheet(0));
+            //sheetCommonObj.unShieldAllCells(me.workBook.getSheet(0));
+            /*sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
+            sheetCommonObj.lockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);*/
+            sheetCommonObj.unLockAllCells(me.workBook.getSheet(0));
+            sheetCommonObj.reLockSomeCodes(me.workBook.getSheet(0), 0, me.currentCache.length);
         }
+        me.showGljItems(me.gljList, gljTypeId);
     },
     beforeRename: function(treeId, treeNode, newName, isCancel) {
         if (newName.length == 0) {
@@ -820,6 +954,7 @@ var gljTypeTreeOprObj = {
         gljTypeTreeOprObj.updateNodes(nodes);
     },
     onBeforeRemove: function(treeId, treeNode){
+        let me = this;
         if (treeNode.ParentID == -1 && treeNode.isFirstNode) {
             alert("不允许删除全部!");
             return false;
@@ -929,29 +1064,42 @@ var gljTypeTreeOprObj = {
         })
     },
     addHoverDom: function(treeId, treeNode) {
-        var me = repositoryGljObj, sObj = $("#" + treeNode.tId + "_span");
-        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
-        var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
-        sObj.after(addStr);
-        var btn = $("#addBtn_"+treeNode.tId);
-        if (btn) btn.bind("click", function(){
-            var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, Name: "新增子节点"}, lastNodeId = -1;
-            if (treeNode.items.length > 0) {
-                lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
-            }
-            gljTypeTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
-                if (!(err)) {
-                    var newNodes = [], isSilent = false;
-                    newNodes.push({ repositoryId: rst.data.repositoryId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, Name:"新增子节点",isParent:false, items:[]});
-                    treeNode.isParent = true;
-                    if (me.treeObj) {
-                        me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
-                    } else {
-                        me.treeObj = $.fn.zTree.init($("#rationChapterTree"), gljSetting, newNodes);
-                    }
+        if(typeof treeNode.doing !== 'undefined' && treeNode.doing){
+            return false;
+        }
+        hoverOpr();
+        function hoverOpr(){
+            //console.log(treeNode);
+            var me = repositoryGljObj, sObj = $("#" + treeNode.tId + "_span");
+            if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
+            var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
+            sObj.after(addStr);
+            var btn = $("#addBtn_"+treeNode.tId);
+            if (btn) btn.bind("click", function(){
+                treeNode.doing = true;
+                var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, Name: "新增子节点"}, lastNodeId = -1;
+                if (treeNode.items.length > 0) {
+                    lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
                 }
+                gljTypeTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
+                    if (!(err)) {
+                        var newNodes = [], isSilent = false;
+                        if(treeNode.items.length > 0){
+                            treeNode.items[treeNode.items.length - 1].NextSiblingID = rst.data.ID;
+                        }
+                        newNodes.push({ repositoryId: rst.data.repositoryId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, Name:"新增子节点",isParent:false, items:[]});
+                        treeNode.isParent = true;
+                        if (me.treeObj) {
+                            me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
+                        } else {
+                            me.treeObj = $.fn.zTree.init($("#rationChapterTree"), gljSetting, newNodes);
+                        }
+                        treeNode.doing = false;
+                        hoverOpr();
+                    }
+                });
             });
-        });
+        }
     },
     removeHoverDom: function(treeId, treeNode) {
         $("#addBtn_"+treeNode.tId).unbind().remove();

+ 34 - 25
web/maintain/ration_repository/js/section_tree.js

@@ -162,33 +162,42 @@ var zTreeOprObj = {
         }
     },
     addHoverDom: function(treeId, treeNode) {
-        var me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
-        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
-        var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
-        sObj.after(addStr);
-        var btn = $("#addBtn_"+treeNode.tId);
-        if (btn) btn.bind("click", function(){
-            var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, name: "新增子节点"}, lastNodeId = -1, lastNode = null;
-            if (treeNode.items.length > 0) {
-                lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
-                lastNode = treeNode.items[treeNode.items.length - 1];
-            }
-            zTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
-                if (!(err)) {
-                    var newNodes = [], isSilent = false;
-                    if (lastNode) {
-                        lastNode.NextSiblingID = rst.ID;
-                    }
-                    newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, name:"新增子节点",isParent:false, items:[]});
-                    treeNode.isParent = true;
-                    if (me.treeObj) {
-                        me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
-                    } else {
-                        me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
-                    }
+        if(typeof treeNode.doing !== 'undefined' && treeNode.doing){
+            return false;
+        }
+        hoverOpr();
+        function hoverOpr(){
+            var me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
+            if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
+            var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
+            sObj.after(addStr);
+            var btn = $("#addBtn_"+treeNode.tId);
+            if (btn) btn.bind("click", function(){
+                treeNode.doing = true;
+                var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, name: "新增子节点"}, lastNodeId = -1, lastNode = null;
+                if (treeNode.items.length > 0) {
+                    lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
+                    lastNode = treeNode.items[treeNode.items.length - 1];
                 }
+                zTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
+                    if (!(err)) {
+                        var newNodes = [], isSilent = false;
+                        if (lastNode) {
+                            lastNode.NextSiblingID = rst.ID;
+                        }
+                        newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, name:"新增子节点",isParent:false, items:[]});
+                        treeNode.isParent = true;
+                        if (me.treeObj) {
+                            me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
+                        } else {
+                            me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
+                        }
+                    }
+                    treeNode.doing = false;
+                    hoverOpr();
+                });
             });
-        });
+        }
     },
     removeHoverDom: function(treeId, treeNode) {
         $("#addBtn_"+treeNode.tId).unbind().remove();