浏览代码

解决一些bug

zhongzewei 8 年之前
父节点
当前提交
0eec04423f

+ 30 - 15
modules/bills_lib/models/bills_lib_interfaces.js

@@ -717,12 +717,18 @@ billsLibDao.prototype.updateBillsArr = function(updateData, callback){
 };
 
 billsLibDao.prototype.pasteBills = function(pData, callback){
-    let datas = pData.datas;
+    let datas = pData.datas,
+        billsLibId = pData.billsLibId;
     async.each(datas, function(data, cb){
-        Bills.update({billsLibId: data.billsLibId, ID: data.ID, deleted: false}, {$set: {code: data.code, name: data.name, unit: data.unit, ruleText: data.ruleText}}, function(err){
+        let needSet = {};
+        for(let i in data){
+           needSet[i] = data[i];
+        }
+        Bills.update({billsLibId: billsLibId, ID: data.ID, deleted: false}, {$set: needSet}, function (err) {
             if(err){
                 cb(err);
-            }else {
+            }
+            else {
                 cb(null);
             }
         });
@@ -1428,22 +1434,29 @@ billsLibDao.prototype.getItemCharacter = function(gdata, callback){
 billsLibDao.prototype.createItemCharacter = function(cItemData, callback){
     let data = cItemData.data;
     let billsLibId = cItemData.billsLibId;
-    let serialNo = cItemData.serialNo;
+    let code = cItemData.code;
     let newItemCharacter;
-    let id = cItemData.id;
-    newItemCharacter = {
-        id: id,
-        billsLibId: billsLibId,
-        content: data,
-        code: serialNo,
-        deleted: false
-    }
-    ItemCharacter.create(newItemCharacter, function(err){
+    counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_items, 1, function (err, result) {
         if(err){
-            callback(1, "Error", null);
+            callback(0, 'Error', null);
         }
         else{
-            callback(0, "", id);
+            let newItemId = result.value.sequence_value;
+            newItemCharacter = {
+                id: newItemId,
+                billsLibId: billsLibId,
+                content: data,
+                code: code,
+                deleted: false
+            }
+            ItemCharacter.create(newItemCharacter, function(err){
+                if(err){
+                    callback(1, "Error", null);
+                }
+                else{
+                    callback(0, "", newItemId);
+                }
+            });
         }
     });
 };
@@ -1773,9 +1786,11 @@ billsLibDao.prototype.pasteValues = function(data, callback) {
     }
     async.parallel(functions, function(err, datas){
         if(err){
+            console.log(`errfinal`);
             callback(1, 'Error', null);
         }
         else {
+            console.log('noerror');
             callback(0, '', datas);
         }
     });

+ 2 - 2
web/maintain/bills_lib/html/neirong.html

@@ -196,7 +196,7 @@
             buildAllJobs(spreadAllJobs, totalJobsSetting);
         });
         function buildAllJobs(spreadAllJobs, setting){
-            setSheet.initSheet(spreadAllJobs, setting);
+            setSheet.initSheet(spreadAllJobs, setting, false);
             myKey.downKey(spreadAllJobs);
             myKey.enterKey(spreadAllJobs);
             TREE_SHEET_HELPER.loadSheetHeader(setting, spreadAllJobs.getActiveSheet());
@@ -288,7 +288,7 @@
                     }
                 }
                 let encapDatas = tools.encapTotalJobsDatas(sheet, totalJobs, uncrossedDatas, crossedDatas);
-                if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
+                if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length >0){
                     jobsAjax.pasteJobs(encapDatas, function(datas){
                         pasteController.pasteJobsFront(sheet, totalJobs,datas);
                     });

+ 44 - 38
web/maintain/bills_lib/html/qingdan.html

@@ -257,30 +257,40 @@
     });
 
     function nodeOpration(controller, totalJobs, totalItems){
+        let btnInsert = $('#insert');
+        let btnDelete = $('#delete');
+        let btnUpLevel = $('#upLevel');
+        let btnDownLevel = $('#downLevel');
+        let btnUpMove = $('#upMove');
+        let btnDownMove = $('#downMove');
         dbController.editData(controller);
-        $('#insert').click(function(){
-            dbController.insert(controller);
-            tools.clearData(jobsSpread.getActiveSheet());
-            tools.clearData(itemsSpread.getActiveSheet());
+        btnInsert.click(function(){
+            if(btnInsert.attr('doing')){
+            }
+            else {
+                dbController.insert(controller, btnInsert);
+                tools.clearData(jobsSpread.getActiveSheet());
+                tools.clearData(itemsSpread.getActiveSheet());
+            }
         });
-        $('#delete').click(function(){
-            dbController.delete(controller, totalJobs, totalItems);
+        btnDelete.click(function(){
+            dbController.delete(controller, btnDelete, totalJobs, totalItems);
             //controller.delete();
         });
-        $('#upLevel').click(function(){
-            dbController.upLevel(controller);
+        btnUpLevel.click(function(){
+            dbController.upLevel(controller, btnUpLevel);
             //controller.upLevel();
         });
-        $('#downLevel').click(function(){
-            dbController.downLevel(controller);
+        btnDownLevel.click(function(){
+            dbController.downLevel(controller, btnDownLevel);
             //controller.downLevel();
         });
-        $('#upMove').click(function(){
-            dbController.upMove(controller);
+        btnUpMove.click(function(){
+            dbController.upMove(controller, btnUpMove);
             //controller.upMove();
         });
-        $('#downMove').click(function(){
-            dbController.downMove(controller);
+        btnDownMove.click(function(){
+            dbController.downMove(controller, btnDownMove);
             //controller.downMove();
         });
     }
@@ -288,7 +298,7 @@
 
     function showBillsSheet(datas, jobsSheet, itemsSheet, setting) {
         let billsSpread = new GC.Spread.Sheets.Workbook($('#spreadBills')[0], {sheetCount: 1});
-        setSheet.initSheet(billsSpread, setting);
+        setSheet.initSheet(billsSpread, setting, true);
         myKey.delKey(billsSpread);
         billsTree.loadDatas(datas);
         let controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), setting);
@@ -459,43 +469,39 @@
             let datas = [], field;
             let orgRow = args.cellRange.row, orgCol = args.cellRange.col, rowCount = args.cellRange.rowCount, colCount = args.cellRange.colCount;
             let maxRow = orgRow + rowCount - 1, maxCol = orgCol + colCount -1;
-            //let id =  controller.tree.selected.getID();
             let markRow = orgRow, colLen = sheet.getColumnCount(GC.Spread.Sheets.SheetArea.viewport);
-            //test
             let validDatas = tools.getValidDatas(sheet, setting, args);
-            for(let i=orgRow, j=0; i<= maxRow; i++, j++){
+            for(let i =orgRow, j=0; i<= maxRow; i++, j++){
                 let id = sheet.getTag(i, 0);
                 if(id && j< validDatas.length){
-                    for(let k=0; k<colLen; k++){
+                    validDatas[j].ID = id;
+                    for(let k =orgCol; k<= maxCol; k++){
                         setting.cols.forEach(function(col, colIdx){
                             if(colIdx === k){
-                                field = col.data.field;
+                                if(validDatas[j][col.data.field]){
+                                    sheet.setValue(i, k, validDatas[j][col.data.field]);
+                                    sheetBillsDatas.datasIdx['rowIdx'+ i][col.data.field] = validDatas[j][col.data.field];
+                                }
+                                else {
+                                    sheet.setValue(i, k, '');
+                                    sheetBillsDatas.datasIdx['rowIdx'+ i][col.data.field] = '';
+                                }
                             }
                         });
-                        sheet.setValue(i, k, validDatas[j][field]);
                     }
-                    validDatas[j].billsLibId = billsLibId;
-                    validDatas[j].ID = id;
-                    datas.push(validDatas[j]);
-
                 }
-                else if(i< controller.tree.items.length && j>= validDatas.length) {
+                else if(i < controller.tree.items.length && j>= validDatas.length){
                     //reshow orgDatas
-                    sheetBillsDatas.forEach(function(rowData){
-                        if(rowData.rowIdx === i){
-                            sheet.setValue(i, 0, rowData.code + '');
-                            sheet.setValue(i, 1, rowData.name);
-                            sheet.setValue(i, 2, rowData.unit + '');
-                            sheet.setValue(i, 3, rowData.ruleText);
-                        }
-                    });
+                    sheet.setValue(i, 0, sheetBillsDatas.datasIdx['rowIdx'+ i].code + '');
+                    sheet.setValue(i, 1, sheetBillsDatas.datasIdx['rowIdx'+ i].name);
+                    sheet.setValue(i, 2, sheetBillsDatas.datasIdx['rowIdx'+ i].unit);
+                    sheet.setValue(i, 3, sheetBillsDatas.datasIdx['rowIdx'+ i].ruleText);
                 }
                 else {
                     sheet.clear(i, 0, 1, sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport,GC.Spread.Sheets.StorageType.data);
                 }
             }
-            billsAjax.pasteBills(datas);
-            sheetBillsDatas = tools.getsheetDatas(sheet, 'bills', controller);
+            billsAjax.pasteBills(billsLibId, validDatas);
             setSheet.setMaxRowCount(sheet, sheetBillsDatas);
         });
     }
@@ -614,7 +620,7 @@
 
 
     function buildJobs(jobsSpread, setting){
-        setSheet.initSheet(jobsSpread, setting);
+        setSheet.initSheet(jobsSpread, setting, false);
        // setSheet.setMaxRowCount(jobsSpread.getActiveSheet(), 10);
         myKey.downKey(jobsSpread);
         myKey.enterKey(jobsSpread);
@@ -622,7 +628,7 @@
     }
 
     function buildItems(itemsSpread, setting){
-        setSheet.initSheet(itemsSpread, setting);
+        setSheet.initSheet(itemsSpread, setting, false);
        // setSheet.setMaxRowCount(itemsSpread.getActiveSheet(), 10);
         myKey.downKey(itemsSpread);
         myKey.enterKey(itemsSpread);

+ 24 - 10
web/maintain/bills_lib/html/tezheng.html

@@ -203,7 +203,7 @@
             buildEigenvalue(spreadVal, eigenValueSetting);
   		});
         function buildAllItems(spread, setting){
-            setSheet.initSheet(spread, setting);
+            setSheet.initSheet(spread, setting, false);
             myKey.downKey(spread);
             myKey.enterKey(spread);
             TREE_SHEET_HELPER.loadSheetHeader(setting, spread.getActiveSheet());
@@ -238,7 +238,7 @@
         }
 
         function buildEigenvalue(spread, setting){
-            setSheet.initSheet(spread, setting);
+            setSheet.initSheet(spread, setting, false);
             setSheet.setMaxRowCount(spread.getActiveSheet(), 10);
            // setSheet.setEditCol(spread.getActiveSheet(), 1);
             myKey.downKey(spread);
@@ -281,6 +281,7 @@
             if(selectedId){
                 let valueArr = valueController.getValues(totalItems, selectedId);
                 if(valueArr.length > 0){
+                    setSheet.setMaxRowCount(sheet, valueArr);
                     tools.reshowValue(sheet, valueArr, setting, true);
                 }
             }
@@ -370,25 +371,30 @@
                         }
                     }
                 }
-                for(let i=0; i< pasteDatas.length; i++){
+                console.log(`pasteDatas`);
+                console.log(pasteDatas);
+                let uniqDatas = tools.uniqObjArr(pasteDatas);
+                console.log(`uniqDatas`);
+                console.log(uniqDatas);
+                for(let i=0; i< uniqDatas.length; i++){
                     let crossedData;
                     let flag = true;
                     valueDatas.forEach(function(orgData){
-                        if(pasteDatas[i].rowIdx === orgData.rowIdx && pasteDatas[i].colIdx === orgData.colIdx){
+                        if(uniqDatas[i].rowIdx === orgData.rowIdx && uniqDatas[i].colIdx === orgData.colIdx){
                             flag = false;
                             crossedData = {
                                 billsLibId: billsLibId,
-                                rowIdx: pasteDatas[i].rowIdx,
-                                colIdx: pasteDatas[i].colIdx,
-                                field: pasteDatas[i].field,
+                                rowIdx: uniqDatas[i].rowIdx,
+                                colIdx: uniqDatas[i].colIdx,
+                                field: uniqDatas[i].field,
                                 orgId: orgData.id,
-                                data: pasteDatas[i].data,
+                                data: uniqDatas[i].data,
                                 type: 'Update'
                             }
                         }
                     });
                     if(flag){
-                        uncrossedDatas.push(pasteDatas[i]);
+                        uncrossedDatas.push(uniqDatas[i]);
                     }
                     else{
                         crossedDatas.push(crossedData);
@@ -397,11 +403,19 @@
                 let encapDatas = tools.encapValues(sheet, totalItems, uncrossedDatas, crossedDatas);
                 if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
                     itemsAjax.pasteValues(encapDatas, function(datas){
+                        console.log(datas);
+                        console.log(`enterCb`);
                         pasteController.pasteValueFront(sheet, totalItems, datas);
                     });
                 }
                 else{
-                    tools.reshowValue(sheet, valuesArr, eigenValueSetting, true);
+                    let valuesArr = valueController.getValues(totalItems, selectedId);
+                    if(valuesArr.length > 0){
+                        tools.reshowValue(sheet, valuesArr, eigenValueSetting, true);
+                    }
+                    else {
+                        tools.clearData(sheet);
+                    }
                 }
             });
         }

+ 7 - 4
web/maintain/bills_lib/scripts/bills_lib_ajax.js

@@ -286,11 +286,11 @@ var billsAjax = {
             }
         });
     },
-    pasteBills: function(datas){
+    pasteBills: function(billsLibId, datas){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteBills',
-            data: {data: JSON.stringify({datas: datas})},
+            data: {data: JSON.stringify({billsLibId: billsLibId, datas: datas})},
             dataType: 'json',
             success: function(result){
 
@@ -443,13 +443,16 @@ var itemsAjax = {
             }
         });
     },
-    createItemCharacter: function(billsLibId,  data, serialNo, id){
+    createItemCharacter: function(billsLibId,  data, code, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/createItemCharacter',
-            data: {data: JSON.stringify({billsLibId: billsLibId, data: data, serialNo: serialNo, id: id})},
+            data: {data: JSON.stringify({billsLibId: billsLibId, data: data, code: code})},
             dataType: 'json',
             success: function(result){
+                if(!result.error && callback){
+                    callback(result.data);
+                }
             }
         });
     },

+ 142 - 73
web/maintain/bills_lib/scripts/db_controller.js

@@ -2,7 +2,8 @@
  * Created by vian on 2017/4/12.
  */
 var dbController = {
-    insert: function(controller){
+    insert: function(controller, btn){
+        tools.btnClose(btn);
         if(controller.tree.items.length === 0){
             controller.tree.maxNodeID(0);
             let newNodeId = controller.tree.newNodeID();
@@ -11,6 +12,7 @@ var dbController = {
                 controller.tree.selected.jobs = new Array();
                 controller.tree.selected.items = new Array();
                 controller.sheet.setTag(controller.tree.selected.serialNo(), 0, newNodeId);
+                tools.btnAction(btn);
             });
         }
         else {
@@ -25,6 +27,7 @@ var dbController = {
                     controller.tree.selected.items = new Array();
                     controller.sheet.setTag(controller.tree.selected.serialNo(), 0, newNodeId);
                     sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                    tools.btnAction(btn);
                 });
             }
             else {
@@ -38,12 +41,14 @@ var dbController = {
                     controller.tree.selected.items = new Array();
                     controller.sheet.setTag(controller.tree.selected.serialNo(), 0, newNodeId);
                     sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                    tools.btnAction(btn);
                 });
             }
         }
     },
 
-    upLevel: function(controller){
+    upLevel: function(controller, btn){
+        tools.btnClose(btn);
         var node = controller.tree.selected;
         var ids = [];
         var updateData = [];
@@ -91,13 +96,15 @@ var dbController = {
                     console.log(`enter upL`);
                     controller.upLevel();
                     sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                    tools.btnAction(btn);
                 });
                 //rechargeController.createRecharge(controller.tree.selected);
             }
         }
     },
 
-    downLevel: function(controller){
+    downLevel: function(controller, btn){
+        tools.btnClose(btn);
         var node = controller.tree.selected;
         var updateData = [];
         if(node){
@@ -126,13 +133,15 @@ var dbController = {
                 billsAjax.downLevel(billsLibId, updateData, function(){
                     controller.downLevel();
                     sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                    tools.btnAction(btn);
                 });
                 //rechargeController.createRecharge(controller.tree.selected);
             }
         }
     },
 
-    delete: function(controller, totalJobs, totalItems){
+    delete: function(controller, btn, totalJobs, totalItems){
+        tools.btnClose(btn);
         var node = controller.tree.selected;
         var deleteIds = [];
         var getDeleteIds = function(node){
@@ -178,11 +187,13 @@ var dbController = {
             sheetDatas = tools.getsheetDatas(jobsSheet, 'jobs');
             sheetItemsDatas = tools.getsheetDatas(itemsSheet, 'items');
             sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+            tools.btnAction(btn);
             //to solve refresh after deleted
         });
     },
 
-    upMove: function(controller){
+    upMove: function(controller, btn){
+        tools.btnClose(btn);
         var node = controller.tree.selected;
         var updateData = [];
         if(node){
@@ -207,12 +218,14 @@ var dbController = {
                 billsAjax.upMove(billsLibId, updateData, function(){
                     controller.upMove();
                     sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                    tools.btnAction(btn);
                 });
             }
         }
     },
 
-    downMove: function(controller){
+    downMove: function(controller, btn){
+        tools.btnClose(btn);
         var node = controller.tree.selected;
         var updateData = [];
         if(node){
@@ -240,6 +253,7 @@ var dbController = {
                 billsAjax.downMove(billsLibId, updateData);
                 controller.downMove();
                 sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                tools.btnAction(btn);
             }
         }
     },
@@ -253,10 +267,12 @@ var dbController = {
                     if(args.col === idx){
                         field = col.data.field;
                         node.data[field] = args.editingText;
+                        sheetBillsDatas.datasIdx['rowIdx'+ args.row][field] = args.editingText;
+                        console.log(sheetBillsDatas);
                     }
                 });
                 billsAjax.updateBills(billsLibId, updateId, field, args.editingText);
-                sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
+                //sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
             }
             else {
                 args.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).value('');
@@ -401,6 +417,16 @@ var createObj = {
 };
 
 var tools = {
+    btnClose: function (btn) {
+        btn.css("opacity", "0.2");
+        btn.addClass("disabled");
+        btn.attr('doing', true);
+    },
+    btnAction: function (btn) {
+        btn.css("opacity", "");
+        btn.removeClass("disabled");
+        btn.removeAttr('doing');
+    },
     isExist: function (totalArr, field, newData, orgData){
         var isExist = false;
         if(totalArr.length > 0){
@@ -447,9 +473,15 @@ var tools = {
         }
     },
 
+    isEmptyObj: function(obj){
+        let t;
+        for(t in obj)
+             return !1;
+        return !0;
+    },
+
     reSetCell: function(sheet, rowIdx, colIdx, value, id){
         if(value && colIdx!== null){
-            console.log(`enterResetCell`);
             sheet.getCell(rowIdx, colIdx, GC.Spread.Sheets.SheetArea.viewport).value(value);
         }
         sheet.setTag(rowIdx, 0, id);
@@ -493,21 +525,45 @@ var tools = {
         const colLen = 4;
         let orgRow = args.cellRange.row, orgCol = args.cellRange.col, rowCount = args.cellRange.rowCount, colCount = args.cellRange.colCount;
         let maxRow = orgRow + rowCount - 1, maxCol = orgCol + colCount -1;
-        for(let i=orgRow; i<= maxRow; i++){
+        for(let i =orgRow; i<=maxRow; i++){
+            let validData = {};
+            for(let j= orgCol; j<=maxCol; j++){
+                let value = sheet.getValue(i, j);
+                if(value){
+                    setting.cols.forEach(function(col, colIdx){
+                        if(colIdx === j){
+                            validData[col.data.field] = value;
+                        }
+                    });
+                }
+            }
+            if(!tools.isEmptyObj(validData)){
+                validDatas.push(validData);
+            }
+        }
+
+
+
+        //---------------------------------------
+        /*for(let i=orgRow; i<= maxRow; i++){
             if(tools.getValidRow(sheet, i)){
+                console.log(`validRow: ${i}`);
                 let validData = {code: '', name: '', unit: '', ruleText: ''};
-                for(var j=0; j<colLen; j++){
+                for(var j=orgCol; j<=maxCol; j++){
                     let field;
                     setting.cols.forEach(function(col, colIdx){
                         if(colIdx === j){
                             field = col.data.field;
+                            if(sheet.getValue(i, j)){
+                                validData[field] = sheet.getValue(i, j);
+                            }
                         }
                     });
-                    validData[field] = sheet.getValue(i, j);
+                    //validData[field] = sheet.getValue(i, j);
                 }
                 validDatas.push(validData);
             }
-        }
+        }*/
         return validDatas;
     },
 
@@ -531,38 +587,6 @@ var tools = {
         }
     },
 
-    /*delteSheets: function(controller, totalJobs, totalItems, jobsSheet, itemsSheet){
-        var delJobs = controller.tree.selected.jobs;
-        var delItems = controller.tree.selected.items;
-        var delJobsIds = [];
-        var delItemsIds = [];
-        if(delJobs.length > 0){
-            delJobs.forEach(function(obj){
-                obj.job.count --;
-                if(obj.job.count <=0){
-                    totalJobs.jobsArr.splice(totalJobs.jobsArr.indexOf(obj), 1);
-                    delJobsIds.push(obj.job.data.id)
-                }
-            });
-            jobsAjax.deleteJobContent(delJobsIds);
-            tools.clearData(jobsSheet);
-            tools.orderReshowData(jobsSheet, controller.tree.selected.jobs, jobsSetting, 'job', true);
-        }
-        if(delItems.length > 0){
-            delItems.forEach(function(obj){
-                obj.item.count --;
-                if(obj.item.count <=0){
-                    totalItems.itemsArr.splice(totalItems.itemsArr.indexOf(obj), 1);
-                    delItemsIds.push(obj.item.data.id)
-                }
-            });
-            itemsAjax.deleteItemCharacter(delItemsIds);
-            tools.clearData(itemsSheet);
-            tools.orderReshowData(itemsSheet, controller.tree.selected.items, itemsSetting, 'item', true);
-        }
-        controller.delete();
-
-    },*/
     delteSheets: function(controller, totalJobs, totalItems, jobsSheet, itemsSheet){
         var delJobs = controller.tree.selected.jobs;
         var delItems = controller.tree.selected.items;
@@ -698,7 +722,13 @@ var tools = {
     reshowValue: function(sheet, arr, setting, isResort){
         tools.clearData(sheet);
         if(isResort){
-            tools.resort(arr, 'code', true);
+            //tools.resort(arr, 'code', true);
+            function myCompareCode(a, b){
+                let valA = a.code,
+                    valB = b.code;
+                return valA- valB;
+            }
+            arr.sort(myCompareCode);
         }
         if(arr.length > 0){
             var length = arr.length;
@@ -807,8 +837,9 @@ var tools = {
     getsheetDatas: function(sheet, classify, controller){
         let rowCount = sheet.getRowCount();
         const colIdx = 1;
-        let sheetDatas = [];
+        let sheetDatas;
         if(classify === 'total'){
+            sheetDatas = [];
             for(let i=0; i<rowCount; i++){
                 for(let j=0; j<= 1; j++){
                     let data = sheet.getCell(i, j).value, id = sheet.getTag(i, j);
@@ -825,14 +856,17 @@ var tools = {
             }
         }
         else if(classify === 'bills'){
+            sheetDatas = {datasIdx: {},  datas: []};
             for(let i= 0; i< controller.tree.items.length; i++){
                 let code = sheet.getValue(i, 0), name = sheet.getValue(i, 1),
                     unit = sheet.getValue(i, 2), ruleText = sheet.getValue(i, 3);
                 let data = {code: code, name: name, unit: unit, ruleText: ruleText, rowIdx: i};
-                sheetDatas.push(data);
+                sheetDatas.datas.push(data);
+                sheetDatas.datasIdx['rowIdx' + i] = data;
             }
         }
         else{
+            sheetDatas = [];
             for(let i=0; i<rowCount; i++){
                 let data = sheet.getCell(i, colIdx).value(), id = sheet.getTag(i, colIdx);
                 if(data && id){
@@ -1017,7 +1051,7 @@ var tools = {
     },
 
     encapTotalJobsDatas: function(sheet, totalJobs, uncrossedDatas, crossedDatas){
-        let pasteDatas
+        let pasteDatas;
         let rebuildArr =[];
         if(crossedDatas.length > 0){
             for(let i=0; i< crossedDatas.length; i++){
@@ -1058,16 +1092,27 @@ var tools = {
                     return -1;
                 return 0;
             }
-            rebuildArr.sort(myCompare);
-        }
-        rebuildArr.forEach(function(data){
-            if(data.type !== 'CreateT' && data.field === 'content' ){
-                console.log(`!=CT&& content content: ${data.data}`);
-                maxJobsNumber++;
-                let code = maxJobsNumber;
-                data.code = code;
+            function myCompareCode(a, b){
+                if(a.code > b.code)
+                    return -1;
+                if(a.code < b.code)
+                    return 1;
+                return 0;
             }
-        });
+            if(rebuildArr.length > 0){
+                rebuildArr.sort(myCompareCode);
+                maxJobsNumber = maxJobsNumber + 1 > rebuildArr[0].code ? maxJobsNumber  : rebuildArr[0].code;
+                rebuildArr.forEach(function(data){
+                    if(data.type !== 'CreateT' && data.field === 'content' ){
+                        maxJobsNumber++;
+                        let code = maxJobsNumber;
+                        data.code = code;
+                    }
+                });
+            }
+            //rebuildArr.sort(myCompare);
+        }
+        //rebuildArr.sort(myCompare);
         pasteDatas = {
             updateDatas: crossedDatas,
             createDatas: rebuildArr
@@ -1075,7 +1120,7 @@ var tools = {
         return pasteDatas;
     },
     encapTotalItemsDatas: function(sheet, totalItems, uncrossedDatas, crossedDatas){
-        let pasteDatas
+        let pasteDatas;
         let rebuildArr =[];
         if(crossedDatas.length > 0){
             for(let i=0; i< crossedDatas.length; i++){
@@ -1115,15 +1160,27 @@ var tools = {
                     return -1;
                 return 0;
             }
-            rebuildArr.sort(myCompare);
-        }
-        rebuildArr.forEach(function(data){
-            if(data.type !== 'CreateT' && data.field === 'content' ){
-                maxItemsNumber ++;
-                let code = maxItemsNumber;
-                data.code = code;
+            function myCompareCode(a, b){
+                if(a.code > b.code)
+                    return -1;
+                if(a.code < b.code)
+                    return 1;
+                return 0;
             }
-        });
+            //rebuildArr.sort(myCompare);
+            if(rebuildArr.length > 0){
+                rebuildArr.sort(myCompareCode);
+                maxItemsNumber = maxItemsNumber + 1 > rebuildArr[0].code ? maxItemsNumber  : rebuildArr[0].code;
+                rebuildArr.forEach(function(data){
+                    if(data.type !== 'CreateT' && data.field === 'content' ){
+                        maxItemsNumber ++;
+                        let code = maxItemsNumber;
+                        data.code = code;
+                    }
+                });
+            }
+        }
+       // rebuildArr.sort(myCompare);
         pasteDatas = {
             updateDatas: crossedDatas,
             createDatas: rebuildArr
@@ -1144,7 +1201,7 @@ var tools = {
         if(crossedDatas.length > 0){
             for(let i=0; i< crossedDatas.length; i++){
                 let field = crossedDatas[i].field, data = crossedDatas[i].data;
-                let isRepeat = tools.isRepeat(valuesArr, field, data, 'document');
+                let isRepeat = tools.isRepeat(valuesArr, field, data, 'document', 'value');
                 if(isRepeat){
                     crossedDatas.splice(i--, 1);
                 }
@@ -1164,7 +1221,7 @@ var tools = {
         if(uncrossedDatas.length > 0){
             for(let i=0; i< uncrossedDatas.length; i++){
                 let field = uncrossedDatas[i].field;
-                let isRepeat = tools.isRepeat(valuesArr, field, uncrossedDatas[i].data, 'document');
+                let isRepeat = tools.isRepeat(valuesArr, field, uncrossedDatas[i].data, 'document', 'value');
                 if(isRepeat){
                     uncrossedDatas.splice(i--, 1);
                 }
@@ -1176,12 +1233,22 @@ var tools = {
                 }
             }
             rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
-            rebuildArr.sort(myCompare);
+            //rebuildArr.sort(myCompare);
+            function myCompareCode(a, b){
+                let valA = a.code,
+                    valB = b.code;
+                return valB- valA;
+            }
+            rebuildArr.sort(myCompareCode);
+            console.log(`rebuildArr`);
+            console.log(rebuildArr);
+            let newCode = valueController.getCode(totalItems, selectedId);
+            newCode = newCode > rebuildArr[0].code ? newCode : rebuildArr[0].code + 1;
             for(let i=0; i< rebuildArr.length; i++){
-                let newCode = valueController.getCode(totalItems, selectedId);
                 rebuildArr[i].itemId = selectedId;
                 if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'value'){
                     rebuildArr[i].code = newCode;
+                    newCode++;
                 }
             }
         }
@@ -1430,11 +1497,13 @@ let pasteController = {
                     newItemData = {id: datas[i].newItemId, content: datas[i].content, code: datas[i].code};
                     newItem = createObj.newItem(newItemData);
                     totalItems.itemsArr.push(newItem);
+                    totalItems.items[totalItems.prefix + datas[i].newItemId] = newItem;
                 }
                 if(datas[i].type !== CreateT && datas[i].field === 'content'){
                     newItemData = {id: datas[i].newItemId, content: datas[i].data, code: datas[i].code};
                     newItem = createObj.newItem(newItemData);
                     totalItems.itemsArr.push(newItem);
+                    totalItems.items[totalItems.prefix + datas[i].newItemId] = newItem;
                 }
                 if(datas[i].type !== 'CreateT' && datas[i].field === 'code'){
                     maxItemsNumber++;
@@ -1442,6 +1511,7 @@ let pasteController = {
                     newItemData = {id: datas[i].newItemId, content: '', code: datas[i].data};
                     newItem = createObj.newItem(newItemData);
                     totalItems.itemsArr.push(newItem);
+                    totalItems.items[totalItems.prefix + datas[i].newItemId] = newItem;
                 }
             }
         }
@@ -1491,10 +1561,10 @@ let pasteController = {
 
                 }
                 if(datas[i].type !== 'CreateT' && datas[i].field === 'value'){
-                    let newValueData = {value: datas[i].data, code: datas.code};
+                    let newValueData = {value: datas[i].data, code: datas[i].code};
                     valuesArr.push(newValueData);
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'code'){
+                if(datas[i].type !== 'CreateT' && datas[i].field === 'code'){
                     let newValueData = {value: '', code: datas[i].data};
                     valuesArr.push(newValueData);
                 }
@@ -2016,7 +2086,6 @@ var totalItemsController = {
             setting.cols.forEach(function(col, colIdx){
                 if(args.col === colIdx){
                     field = col.data.field;
-                    console.log('colIdx' + colIdx);
                 }
             });
             isRepeat = tools.isRepeat(totalItems.itemsArr, field, newData, 'reference', null);

+ 16 - 2
web/maintain/bills_lib/scripts/set_sheets.js

@@ -2,15 +2,15 @@
  * Created by vian on 2017/3/16.
  */
 var setSheet = {
-    initSheet: function(spread, setting){
+    initSheet: function(spread, setting, isExtendPaste){
         var spreadNS = GC.Spread.Sheets, sheet = spread.getActiveSheet();
         sheet.suspendPaint();
         spread.options.showHorizontalScrollbar = false;
         spread.options.showVerticalScrollbar =false;
         spread.options.tabStripVisible = false;
         spread.options.scrollbarMaxAlign = true;
-        spread.options.allowExtendPasteRange = true;
         spread.options.allowCopyPasteExcelStyle = false;
+        spread.options.allowExtendPasteRange = isExtendPaste? true : false;
         sheet.showRowOutline(false);
        // sheet.defaults.rowHeight = 30;
         setting.cols.forEach(function(col, colIdx){
@@ -171,6 +171,13 @@ var myKey = {
                         var job = totalJobs.findJob(id);
                         totalJobs.jobsArr.splice(totalJobs.jobsArr.indexOf(job), 1);
                     });
+                    function myCompareCode(a, b){
+                        let valA = a.data.code,
+                            valB = b.data.code;
+                        return valB- valA;
+                    }
+                    totalJobs.jobsArr.sort(myCompareCode);
+                    maxJobsNumber = totalJobs.jobsArr[0].data.code;
                     tools.reshowData(sheet, totalJobs.jobsArr, setting, true);
                     jobsAjax.deleteJobContent(billsLibId, ids);
                     billsAjax.updateBillsArr(billsLibId, billsIds, ids, null, 'deleteAll', 'jobs');
@@ -191,6 +198,13 @@ var myKey = {
                         var item = totalItems.findItem(id);
                         totalItems.itemsArr.splice(totalItems.itemsArr.indexOf(item), 1);
                     });
+                    function myCompareCode(a, b){
+                        let valA = a.data.code,
+                            valB = b.data.code;
+                        return valB- valA;
+                    }
+                    totalItems.itemsArr.sort(myCompareCode);
+                    maxItemsNumber = totalItems.itemsArr[0].data.code;
                     tools.reshowData(sheet, totalItems.itemsArr, setting, true);
                     itemsAjax.deleteItemCharacter(billsLibId, ids);
                     billsAjax.updateBillsArr(billsLibId, billsIds, ids, null, 'deleteAll', 'items');