Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionOperation

TonyKang 8 years ago
parent
commit
54121a633b

+ 8 - 8
modules/bills_lib/controllers/bills_lib_controllers.js

@@ -108,8 +108,8 @@ module.exports = {
     },
     pasteRel: function(req, res){
         let data = JSON.parse(req.body.data);
-        billsLibDao.pasteRel(data, function(err, message){
-            callback(req, res, err, message, null);
+        billsLibDao.pasteRel(data, function(err, message, datas){
+            callback(req, res, err, message, datas);
         });
     },
     deleteBills: function(req, res){
@@ -150,8 +150,8 @@ module.exports = {
     },
     pasteJobs: function (req, res) {
         let data = JSON.parse(req.body.data);
-        billsLibDao.pasteJobs(data, function(err, message){
-            callback(req, res, err, message, null);
+        billsLibDao.pasteJobs(data, function(err, message, datas){
+            callback(req, res, err, message, datas);
         });
     },
     getItemCharacter: function(req, res){
@@ -180,14 +180,14 @@ module.exports = {
     },
     pasteItems: function(req, res){
         let data = JSON.parse(req.body.data);
-        billsLibDao.pasteItems(data, function(err, message){
-            callback(req, res, err, message, null);
+        billsLibDao.pasteItems(data, function(err, message, datas){
+            callback(req, res, err, message, datas);
         });
     },
     pasteValues: function(req, res){
         let data = JSON.parse(req.body.data);
-        billsLibDao.pasteValues(data, function(err, message){
-            callback(req, res, err, message, null);
+        billsLibDao.pasteValues(data, function(err, message, datas){
+            callback(req, res, err, message, datas);
         });
     }
 

File diff suppressed because it is too large
+ 932 - 44
modules/bills_lib/models/bills_lib_interfaces.js


+ 0 - 1
modules/bills_lib/models/bills_lib_model.js

@@ -3,7 +3,6 @@
  */
 let dbm = require("../../../config/db/db_manager");
 let schemas = require("./bills_lib_schemas.js");
-//var db = dbm.getLocalConnection("stdBillsEditor");
 let db = dbm.getCfgConnection("scConstruct");
 //let db = dbm.getLocalConnection("stdBillsEditor");
 let stdBillsLibMod = db.model("std_bills_lib_list", schemas.stdBillsLibSchema);

+ 2 - 0
public/counter/counter.js

@@ -30,6 +30,8 @@ const COUNTER_MODULE_NAME = {
     unitPriceGLJ: 'unitPriceGLJ',
     template_bills: 'temp_bills',
     billsLib: 'billsLib',
+    billsLib_jobs: 'billsLib_jobs',
+    billsLib_items: 'billsLib_items',
     coeList: 'coeList'
 }
 /*const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',

+ 10 - 1
web/maintain/bills_lib/html/neirong.html

@@ -225,6 +225,7 @@
             });
         }
         function bindSheet(totalJobs, sheet, setting){
+            setSheet.setMaxRowCount(sheet, totalJobs.jobsArr);
             mainAjax.getMaxNumber(billsLibId, 'jobs', function(result){
                 if(result.length === 0){
                     maxJobsNumber = 0;
@@ -284,7 +285,15 @@
                         crossedDatas.push(crossedData);
                     }
                 }
-                pasteController.pasteJobsFront(sheet, totalJobs, uncrossedDatas, crossedDatas);
+                let encapDatas = tools.encapTotalJobsDatas(sheet, totalJobs, uncrossedDatas, crossedDatas);
+                if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
+                    jobsAjax.pasteJobs(encapDatas, function(datas){
+                        pasteController.pasteJobsFront(sheet, totalJobs,datas);
+                    });
+                }
+                if(uncrossedDatas.length > 0 || crossedDatas.length > 0) {
+                    tools.reshowData(sheet, totalJobs.jobsArr, totalJobsSetting, true);
+                }
             });
         }
 

+ 16 - 4
web/maintain/bills_lib/html/qingdan.html

@@ -504,8 +504,14 @@
                     }
                 }
                 let pasteDatas = tools.encapData(uncrossedDatas, crossedDatas, controller, totalJobs);
-                billsAjax.pasteRel(pasteDatas.updateDatas, pasteDatas.createDatas, 'jobs');
-                pasteController.frontOperator(sheet, setting, controller, totalJobs, pasteDatas);
+                if(pasteDatas.updateDatas.length > 0 || pasteDatas.createDatas.length > 0){
+                    billsAjax.pasteRel(pasteDatas.updateDatas, pasteDatas.createDatas, 'jobs', function(datas){
+                        pasteController.frontOperator(sheet, setting, controller, totalJobs, datas);
+                    });
+                }
+                else {
+                    tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                }
             }
             else {
                 tools.clearData(sheet);
@@ -549,8 +555,14 @@
                     }
                 }
                 let pasteDatas = tools.encapItemsData(uncrossedDatas, crossedDatas, controller, totalItems);
-                billsAjax.pasteRel(pasteDatas, 'items');
-                pasteController.frontItemsRelOperator(sheet, setting, controller, totalItems, pasteDatas);
+                if(pasteDatas.updateDatas.length > 0 || pasteDatas.createDatas.length > 0){
+                    billsAjax.pasteRel(pasteDatas.updateDatas, pasteDatas.createDatas, 'items', function(datas){
+                        pasteController.frontItemsRelOperator(sheet, setting, controller, totalItems, datas);
+                    });
+                }
+                if(uncrossedDatas.length > 0 || crossedDatas.length > 0) {
+                    tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                }
             }
             else {
                 tools.clearData(sheet);

+ 20 - 4
web/maintain/bills_lib/html/tezheng.html

@@ -247,6 +247,7 @@
         }
 
         function bindSheet(totalItems, itemSheet, valueSheet, setting){
+            setSheet.setMaxRowCount(itemSheet, totalItems.itemsArr);
             mainAjax.getMaxNumber(billsLibId, 'items', function(result){
                 if(result.length === 0){
                     maxItemsNumber = 0;
@@ -265,6 +266,7 @@
                     tools.clearData(valueSheet);
                     selectedId = itemId;
                     if(valueArr){
+                        setSheet.setMaxRowCount(valueSheet, valueArr);
                         tools.reshowValue(valueSheet, valueArr, eigenValueSetting, true);
                     }
                     orgValue = valueSheet.getValue(0, 0);
@@ -331,15 +333,21 @@
                         crossedDatas.push(crossedData);
                     }
                 }
-                pasteController.pasteItemsFront(sheet, totalItems, uncrossedDatas, crossedDatas);
+                let encapDatas = tools.encapTotalItemsDatas(sheet, totalItems, uncrossedDatas, crossedDatas);
+                if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
+                    itemsAjax.pasteItems(encapDatas, function(datas){
+                        pasteController.pasteItemsFront(sheet, totalItems, datas);
+                    });
+                }
+                else{
+                    tools.reshowData(sheet, totalItems.itemsArr, totalItemsSetting, true);
+                }
             });
         }
 
         function pasteValue(sheet, totalItems){
-            //valueDatas = tools.getsheetDatas(sheet, 'total');
             sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function(sender, args){
                 valueDatas = tools.getsheetDatas(sheet, 'total');
-                console.log(valueDatas);
                 const colIdx = 1;
                 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;
@@ -384,7 +392,15 @@
                         crossedDatas.push(crossedData);
                     }
                 }
-                pasteController.pasteValueFront(sheet, totalItems, uncrossedDatas, crossedDatas);
+                let encapDatas = tools.encapValues(sheet, totalItems, uncrossedDatas, crossedDatas);
+                if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
+                    itemsAjax.pasteValues(encapDatas, function(datas){
+                        pasteController.pasteValueFront(sheet, totalItems, datas);
+                    });
+                }
+                if(uncrossedDatas.length >0 || crossedDatas.length > 0){
+                    tools.reshowValue(sheet, valuesArr, eigenValueSetting, true);
+                }
             });
         }
 

+ 13 - 8
web/maintain/bills_lib/scripts/bills_lib_ajax.js

@@ -172,7 +172,7 @@ var billsAjax = {
         });
     },
 
-    updatePNId: function(billsLibId, updateData, callback){
+    updatePNId: function(billsLibId, updateData){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updatePNId',
@@ -180,9 +180,10 @@ var billsAjax = {
             dataType: 'json',
             success: function(result){
                 if(!result.error){
-                    if(callback){
-                        callback();
-                    }
+                    console.log(`更新成功!`);
+                }
+                else {
+                    //提示窗口:更新失败
                 }
             }
         });
@@ -321,14 +322,16 @@ var jobsAjax = {
             }
         });
     },
-    pasteJobs: function(pasteDatas){
+    pasteJobs: function(pasteDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteJobs',
             data: {data: JSON.stringify({pasteDatas: pasteDatas})},
             dataType: 'json',
             success: function(result){
-
+                if(!result.error && callback){
+                    callback(result.data);
+                }
             }
 
         });
@@ -406,14 +409,16 @@ var itemsAjax = {
 
         });
     },
-    pasteValues: function(pasteDatas){
+    pasteValues: function(pasteDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteValues',
             data: {data: JSON.stringify({pasteDatas: pasteDatas})},
             dataType: 'json',
             success: function(result){
-
+                if(!result.error && callback){
+                    callback(result.data);
+                }
             }
         });
     }

+ 328 - 318
web/maintain/bills_lib/scripts/db_controller.js

@@ -468,8 +468,6 @@ var tools = {
     },
 
     reshowData: function(sheet, arr, setting, isResort){
-        let time = new Date().getTime();
-        console.log(`enterreshowData ${time}`);
         tools.clearData(sheet);
         if(isResort){
             tools.resort(arr, 'code', false);
@@ -634,7 +632,7 @@ var tools = {
                 maxJobsNumber++;
                 //currentCountId++;
                 cnDataObj = {
-                    id: maxJobsNumber,
+                    //id: maxJobsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     newData: data,
@@ -668,7 +666,7 @@ var tools = {
                 maxJobsNumber++;
                 //currentCountId++;
                 unObj = {
-                    newJobId: maxJobsNumber,
+                    //newJobId: maxJobsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     newData: cData.newData,
@@ -717,7 +715,7 @@ var tools = {
                 maxItemsNumber++;
                 //currentCountId++;
                 cnDataObj = {
-                    id: maxItemsNumber,
+                   // id: maxItemsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     newData: data,
@@ -752,7 +750,7 @@ var tools = {
                 maxItemsNumber++;
                 //currentCountId++;
                 unObj = {
-                    newItemId: maxItemsNumber,
+                   // newItemId: maxItemsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     newData: cData.newData,
@@ -769,6 +767,194 @@ var tools = {
         };
         return pasteDatas;
     },
+
+    encapTotalJobsDatas: function(sheet, totalJobs, uncrossedDatas, crossedDatas){
+        let pasteDatas
+        let rebuildArr =[];
+        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(totalJobs.jobsArr, field, data, 'reference');
+                if(isRepeat){
+                    crossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< crossedDatas.length; i++){
+                let field = crossedDatas[i].field, data = crossedDatas[i].data;
+                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
+                    crossedDatas.splice(i--, 1);
+                }
+                /*else {
+                    totalJobs.jobsArr.forEach(job => {
+                        if(job.data.id === crossedDatas[i].orgId){
+                            job.data[field] = crossedDatas[i].data;
+                        }
+                    });
+                }*/
+            }
+        }
+        if(uncrossedDatas.length > 0){
+            for(let i=0; i< uncrossedDatas.length; i++){
+                let field = uncrossedDatas[i].field;
+                let isRepeat = tools.isRepeat(totalJobs.jobsArr, field, uncrossedDatas[i].data, 'reference');
+                if(isRepeat){
+                    uncrossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< uncrossedDatas.length; i++){
+                let field = uncrossedDatas[i].field;
+                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
+                    uncrossedDatas.splice(i--, 1);
+
+                }
+            }
+            rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
+            function myCompare(a, b){
+                if(a.rowIdx > b.rowIdx)
+                    return 1;
+                if(a.rowIdx < b.rowIdx)
+                    return -1;
+                return 0;
+            }
+            rebuildArr.sort(myCompare);
+        }
+        rebuildArr.forEach(function(data){
+            if(data.type !== 'CreateT' && data.field === 'content' ){
+                let code = maxJobsNumber ++;
+                data.code = code;
+            }
+        });
+        pasteDatas = {
+            updateDatas: crossedDatas,
+            createDatas: rebuildArr
+        }
+        return pasteDatas;
+    },
+    encapTotalItemsDatas: function(sheet, totalItems, uncrossedDatas, crossedDatas){
+        let pasteDatas
+        let rebuildArr =[];
+        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(totalItems.itemsArr, field, data, 'reference');
+                if(isRepeat){
+                    crossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< crossedDatas.length; i++){
+                let field = crossedDatas[i].field, data = crossedDatas[i].data;
+                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
+                    crossedDatas.splice(i--, 1);
+                }
+                /*else {
+                 totalJobs.jobsArr.forEach(job => {
+                 if(job.data.id === crossedDatas[i].orgId){
+                 job.data[field] = crossedDatas[i].data;
+                 }
+                 });
+                 }*/
+            }
+        }
+        if(uncrossedDatas.length > 0){
+            for(let i=0; i< uncrossedDatas.length; i++){
+                let field = uncrossedDatas[i].field;
+                let isRepeat = tools.isRepeat(totalItems.itemsArr, field, uncrossedDatas[i].data, 'reference');
+                if(isRepeat){
+                    uncrossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< uncrossedDatas.length; i++){
+                let field = uncrossedDatas[i].field;
+                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
+                    uncrossedDatas.splice(i--, 1);
+
+                }
+            }
+            rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
+            function myCompare(a, b){
+                if(a.rowIdx > b.rowIdx)
+                    return 1;
+                if(a.rowIdx < b.rowIdx)
+                    return -1;
+                return 0;
+            }
+            rebuildArr.sort(myCompare);
+        }
+        rebuildArr.forEach(function(data){
+            if(data.type !== 'CreateT' && data.field === 'content' ){
+                let code = maxItemsNumber ++;
+                data.code = code;
+            }
+        });
+        pasteDatas = {
+            updateDatas: crossedDatas,
+            createDatas: rebuildArr
+        }
+        return pasteDatas;
+    },
+    encapValues: function(sheet, totalItems, uncrossedDatas, crossedDatas){
+        let rebuildArr =[];
+        let rebuildUpdateDatas = [];
+        let valuesArr = valueController.getValues(totalItems, selectedId);
+        function myCompare(a, b){
+            if(a.rowIdx > b.rowIdx)
+                return 1;
+            if(a.rowIdx < b.rowIdx)
+                return -1;
+            return 0;
+        }
+        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');
+                if(isRepeat){
+                    crossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< crossedDatas.length; i++){
+                let field = crossedDatas[i].field, data = crossedDatas[i].data;
+                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
+                    crossedDatas.splice(i--, 1);
+                }
+            }
+            rebuildUpdateDatas = tools.rebuildArr(crossedDatas, 'update');
+            rebuildUpdateDatas.sort(myCompare);
+            for(let i =0; i< rebuildUpdateDatas.length; i++){
+                rebuildUpdateDatas[i].itemId = selectedId;
+            }
+        }
+        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');
+                if(isRepeat){
+                    uncrossedDatas.splice(i--, 1);
+                }
+            }
+            for(let i=0; i< uncrossedDatas.length; i++){
+                let field = uncrossedDatas[i].field;
+                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
+                    uncrossedDatas.splice(i--, 1);
+                }
+            }
+            rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
+            rebuildArr.sort(myCompare);
+            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;
+                }
+            }
+        }
+        //backendOP
+        let pasteDatas = {
+            updateDatas: rebuildUpdateDatas,
+            createDatas: rebuildArr
+        };
+        return pasteDatas;
+    },
+
     rebuildArr: function(arr, classify){
         let conformDatas = [];
         let flag = true;
@@ -843,106 +1029,104 @@ var tools = {
 };
 
 let pasteController = {
-    frontOperator: function(sheet, setting, controller, totalJobs, pasteDatas){
+    frontOperator: function(sheet, setting, controller, totalJobs, datas){
         const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
-        let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas;
-        for(let i =0; i< updateDatas.length; i++){
-            if(updateDatas[i].type === UpdateExist){
-                totalJobs.jobsArr.forEach(job => {
-                    if(job.data.content === updateDatas[i].newData){
-                        let index = tools.getIndex(controller.tree.selected.jobs, updateDatas[i].orgJobId);
-                        job.count ++;
-                        controller.tree.selected.jobs.splice(index, 1);
-                        controller.tree.selected.jobs.splice(index, 0, job);
-                    }
-                });
-            }
-            if(updateDatas[i].type === UpdateNew){
-                let newJobData, newJob;
-                let newJobId = updateDatas[i].newJobId;
-                newJobData = {id: newJobId, content: updateDatas[i].newData, code: updateDatas[i].code};
-                newJob = createObj.newJob(newJobData);
-                newJob.count = 1;
-                totalJobs.jobs[totalJobs.prefix + newJobId] = newJob;
-                totalJobs.jobsArr.push(newJob);
-                var index = tools.getIndex(controller.tree.selected.jobs, updateDatas[i].orgJobId);
-                controller.tree.selected.jobs.splice(index, 1);
-                controller.tree.selected.jobs.splice(index, 0, newJob);
-            }
-        }
-        for(let i=0; i< createDatas.length; i++){
-            if(createDatas[i].type === CreateExist){
-                totalJobs.jobsArr.forEach(job => {
-                    if(job.data.content === createDatas[i].newData){
-                        job.count ++;
-                        controller.tree.selected.jobs.push(job);
-                    }
+        if(datas.length > 0){
+            for(let i=0; i<datas.length; i++){
+                if(datas[i].type === UpdateExist){
+                    totalJobs.jobsArr.forEach(job => {
+                        if(job.data.content === datas[i].newData){
+                            let index = tools.getIndex(controller.tree.selected.jobs, datas[i].orgJobId);
+                            job.count ++;
+                            controller.tree.selected.jobs.splice(index, 1);
+                            controller.tree.selected.jobs.splice(index, 0, job);
+                        }
+                    });
+                }
+                if(datas[i].type === UpdateNew){
+                    let newJobData, newJob;
+                    let newJobId = datas[i].newJobId;
+                    newJobData = {id: newJobId, content: datas[i].newData, code: datas[i].code};
+                    newJob = createObj.newJob(newJobData);
+                    newJob.count = 1;
+                    totalJobs.jobs[totalJobs.prefix + newJobId] = newJob;
+                    totalJobs.jobsArr.push(newJob);
+                    var index = tools.getIndex(controller.tree.selected.jobs, datas[i].orgJobId);
+                    controller.tree.selected.jobs.splice(index, 1);
+                    controller.tree.selected.jobs.splice(index, 0, newJob);
+                }
+                if(datas[i].type === CreateExist){
+                    totalJobs.jobsArr.forEach(job => {
+                        if(job.data.content === datas[i].newData){
+                            job.count ++;
+                            controller.tree.selected.jobs.push(job);
+                        }
 
-                });
-            }
-            if(createDatas[i].type === CreateNew){
-                let newJobId = createDatas[i].id;
-                let newJobData, newJob;
-                newJobData = {id: newJobId, content: createDatas[i].newData, code: createDatas[i].code};
-                newJob = createObj.newJob(newJobData);
-                newJob.count = 1;
-                totalJobs.jobs[totalJobs.prefix + newJobId] = newJob;
-                totalJobs.jobsArr.push(newJob);
-                controller.tree.selected.jobs.push(newJob);
+                    });
+                }
+                if(datas[i].type === CreateNew){
+                    let newJobId = datas[i].newJobId;
+                    let newJobData, newJob;
+                    newJobData = {id: newJobId, content: datas[i].newData, code: datas[i].code};
+                    newJob = createObj.newJob(newJobData);
+                    newJob.count = 1;
+                    totalJobs.jobs[totalJobs.prefix + newJobId] = newJob;
+                    totalJobs.jobsArr.push(newJob);
+                    controller.tree.selected.jobs.push(newJob);
+                }
             }
         }
         //resort&reshow
-        let time = new Date().getTime();
         tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
         sheetDatas = tools.getsheetDatas(sheet);
 
     },
-    frontItemsRelOperator: function(sheet, setting, controller, totalItems, pasteDatas){
+    frontItemsRelOperator: function(sheet, setting, controller, totalItems, datas){
         const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
-        let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas;
-        for(let i =0; i< updateDatas.length; i++){
-            if(updateDatas[i].type === UpdateExist){
-                totalItems.itemsArr.forEach(item => {
-                    if(item.data.content === updateDatas[i].newData){
-                        let index = tools.getIndex(controller.tree.selected.items, updateDatas[i].orgItemId);
-                        item.count ++;
-                        controller.tree.selected.items.splice(index, 1);
-                        controller.tree.selected.items.splice(index, 0, item);
-                    }
-                });
-            }
-            if(updateDatas[i].type === UpdateNew){
-                let newItemData, newItem;
-                let newItemId = updateDatas[i].newItemId;
-                newItemData = {id: newItemId, content: updateDatas[i].newData, code: updateDatas[i].code};
-                newItem = createObj.newItem(newItemData);
-                newItem.count = 1;
-                totalItems.items[totalItems.prefix + newItemId] = newItem;
-                totalItems.itemsArr.push(newItem);
-                var index = tools.getIndex(controller.tree.selected.items, updateDatas[i].orgItemId);
-                controller.tree.selected.items.splice(index, 1);
-                controller.tree.selected.items.splice(index, 0, newItem);
-            }
-        }
-        for(let i=0; i< createDatas.length; i++){
-            if(createDatas[i].type === CreateExist){
-                totalItems.itemsArr.forEach(item => {
-                    if(item.data.content === createDatas[i].newData){
-                        item.count ++;
-                        controller.tree.selected.jobs.push(item);
-                    }
+        //let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas;
+        if(datas.length > 0){
+            for(let i =0; i<datas.length; i++){
+                if(datas[i].type === UpdateExist){
+                    totalItems.itemsArr.forEach(item => {
+                        if(item.data.content === datas[i].newData){
+                            let index = tools.getIndex(controller.tree.selected.items, datas[i].orgItemId);
+                            item.count ++;
+                            controller.tree.selected.items.splice(index, 1);
+                            controller.tree.selected.items.splice(index, 0, item);
+                        }
+                    });
+                }
+                if(datas[i].type === UpdateNew){
+                    let newItemData, newItem;
+                    let newItemId = datas[i].newItemId;
+                    newItemData = {id: newItemId, content: datas[i].newData, code: datas[i].code};
+                    newItem = createObj.newItem(newItemData);
+                    newItem.count = 1;
+                    totalItems.items[totalItems.prefix + newItemId] = newItem;
+                    totalItems.itemsArr.push(newItem);
+                    var index = tools.getIndex(controller.tree.selected.items, datas[i].orgItemId);
+                    controller.tree.selected.items.splice(index, 1);
+                    controller.tree.selected.items.splice(index, 0, newItem);
+                }
+                if(datas[i].type === CreateExist){
+                    totalItems.itemsArr.forEach(item => {
+                        if(item.data.content === datas[i].newData){
+                            item.count ++;
+                            controller.tree.selected.jobs.push(item);
+                        }
 
-                });
-            }
-            if(createDatas[i].type === CreateNew){
-                let newItemId = createDatas[i].id;
-                let newItemData, newItem;
-                newItemData = {id: newItemId, content: createDatas[i].newData, code: createDatas[i].code};
-                newItem = createObj.newItem(newItemData);
-                newItem.count = 1;
-                totalItems.items[totalItems.prefix + newItemId] = newItem;
-                totalItems.itemsArr.push(newItem);
-                controller.tree.selected.items.push(newItem);
+                    });
+                }
+                if(datas[i].type === CreateNew){
+                    let newItemId = datas[i].newItemId;
+                    let newItemData, newItem;
+                    newItemData = {id: newItemId, content: datas[i].newData, code: datas[i].code};
+                    newItem = createObj.newItem(newItemData);
+                    newItem.count = 1;
+                    totalItems.items[totalItems.prefix + newItemId] = newItem;
+                    totalItems.itemsArr.push(newItem);
+                    controller.tree.selected.items.push(newItem);
+                }
             }
         }
         //resort&reshow
@@ -950,303 +1134,129 @@ let pasteController = {
         sheetItemsDatas = tools.getsheetDatas(sheet);
 
     },
-    pasteJobsFront: function(sheet, totalJobs, uncrossedDatas, crossedDatas){
-        let rebuildArr =[];
-        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(totalJobs.jobsArr, field, data, 'reference');
-                if(isRepeat){
-                    crossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< crossedDatas.length; i++){
-                let field = crossedDatas[i].field, data = crossedDatas[i].data;
-                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
-                    crossedDatas.splice(i--, 1);
-                }
-                else {
+    pasteJobsFront: function(sheet, totalJobs, datas){
+        const Update = 'Update', CreateT = 'CreateT';
+        if(datas.length > 0){
+            for(let i=0; i<datas.length; i++){
+                let newJobData, newJob;
+                if(datas[i].type === Update){
                     totalJobs.jobsArr.forEach(job => {
-                        if(job.data.id === crossedDatas[i].orgId){
-                            job.data[field] = crossedDatas[i].data;
+                        if(job.data.id === datas[i].orgId){
+                            job.data[field] = datas[i].data;
                         }
                     });
                 }
-            }
-        }
-        if(uncrossedDatas.length > 0){
-            for(let i=0; i< uncrossedDatas.length; i++){
-                let field = uncrossedDatas[i].field;
-                let isRepeat = tools.isRepeat(totalJobs.jobsArr, field, uncrossedDatas[i].data, 'reference');
-                if(isRepeat){
-                    uncrossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< uncrossedDatas.length; i++){
-                let field = uncrossedDatas[i].field;
-                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
-                    uncrossedDatas.splice(i--, 1);
-
-                }
-            }
-
-             rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
-            function myCompare(a, b){
-                if(a.rowIdx > b.rowIdx)
-                    return 1;
-                if(a.rowIdx < b.rowIdx)
-                    return -1;
-                return 0;
-            }
-            rebuildArr.sort(myCompare);
-            for(let i=0; i< rebuildArr.length; i++){
-                let newJobData, newJob;
-                if(rebuildArr[i].type === 'CreateT'){
+                if(datas[i].type === CreateT){
                     maxJobsNumber++;
-                    maxJobsNumber = maxJobsNumber >= rebuildArr[i].code ? maxJobsNumber : rebuildArr[i].code;
-                    let id = maxJobsNumber;
-                    //rebuildArr[i].code = maxJobsNumber;
-                    rebuildArr[i].id = id;
-                    newJobData = {id: id, content: rebuildArr[i].content, code: rebuildArr[i].code};
+                    maxJobsNumber = maxJobsNumber >= datas[i].code ? maxJobsNumber : datas[i].code;
+                    newJobData = {id: datas[i].newJobId, content: datas[i].content, code: datas[i].code};
                     newJob = createObj.newJob(newJobData);
                     totalJobs.jobsArr.push(newJob);
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'content'){
-                    maxJobsNumber++;
-                    let id = maxJobsNumber;
-                    let code = tools.getNewCode(totalJobs, 'jobs');
-                    code++;
-                    rebuildArr[i].id = id;
-                    rebuildArr[i].code = code;
-                    newJobData = {id: id, content: rebuildArr[i].data, code: code};
+                if(datas[i].type !== CreateT && datas[i].field === 'content'){
+                    newJobData = {id: datas[i].newJobId, content: datas[i].data, code: datas[i].code};
                     newJob = createObj.newJob(newJobData);
                     totalJobs.jobsArr.push(newJob);
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'code'){
+                if(datas[i].type !== 'CreateT' && datas[i].field === 'code'){
                     maxJobsNumber++;
-                    maxJobsNumber = maxJobsNumber >= rebuildArr[i].data  ? maxJobsNumber : rebuildArr[i].data;
-                    let id = maxJobsNumber;
-                   // rebuildArr[i].data = maxJobsNumber;
-                    rebuildArr[i].id = id;
-                    newJobData = {id: id, content: '', code: rebuildArr[i].data};
+                    maxJobsNumber = maxJobsNumber >= datas[i].data  ? maxJobsNumber : datas[i].data;
+                    newJobData = {id: datas[i].newJobId, content: '', code: datas[i].data};
                     newJob = createObj.newJob(newJobData);
                     totalJobs.jobsArr.push(newJob);
                 }
             }
         }
         tools.reshowData(sheet, totalJobs.jobsArr, totalJobsSetting, true);
-        //backendOP
-        let backendDatas = {
-            updateDatas: crossedDatas,
-            createDatas: rebuildArr
-        };
-        jobsAjax.pasteJobs(backendDatas);
     },
-    pasteItemsFront: function(sheet, totalItems, uncrossedDatas, crossedDatas){
-        let rebuildArr =[];
-        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(totalItems.itemsArr, field, data, 'reference');
-                if(isRepeat){
-                    crossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< crossedDatas.length; i++){
-                let field = crossedDatas[i].field, data = crossedDatas[i].data;
-                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
-                    crossedDatas.splice(i--, 1);
-                }
-                else {
+    pasteItemsFront: function(sheet, totalItems, datas){
+        const Update = 'Update', CreateT = 'CreateT';
+        if(datas.length > 0){
+            for(let i=0; i<datas.length; i++){
+                let newItemData, newItem;
+                if(datas[i].type === Update){
                     totalItems.itemsArr.forEach(item => {
-                        if(item.data.id === crossedDatas[i].orgId){
-                            item.data[field] = crossedDatas[i].data;
+                        if(item.data.id === datas[i].orgId){
+                            item.data[field] = datas[i].data;
                         }
                     });
                 }
-            }
-        }
-        if(uncrossedDatas.length > 0){
-            for(let i=0; i< uncrossedDatas.length; i++){
-                let field = uncrossedDatas[i].field;
-                let isRepeat = tools.isRepeat(totalItems.itemsArr, field, uncrossedDatas[i].data, 'reference');
-                if(isRepeat){
-                    uncrossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< uncrossedDatas.length; i++){
-                let field = uncrossedDatas[i].field;
-                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
-                    uncrossedDatas.splice(i--, 1);
-                }
-            }
-            rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
-            function myCompare(a, b){
-                if(a.rowIdx > b.rowIdx)
-                    return 1;
-                if(a.rowIdx < b.rowIdx)
-                    return -1;
-                return 0;
-            }
-            rebuildArr.sort(myCompare);
-            for(let i=0; i< rebuildArr.length; i++){
-                let newItemData, newItem;
-                if(rebuildArr[i].type === 'CreateT'){
+                if(datas[i].type === CreateT){
                     maxItemsNumber++;
-                    maxItemsNumber = maxItemsNumber >= rebuildArr[i].code ? maxItemsNumber : rebuildArr[i].code;
-                    let id = maxItemsNumber;
-                    rebuildArr[i].id = id;
-                    newItemData = {id: id, content: rebuildArr[i].content, code: rebuildArr[i].code, itemValue:[]};
+                    maxItemsNumber = maxItemsNumber >= datas[i].code ? maxItemsNumber : datas[i].code;
+                    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 + id] = newItem;
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'content'){
-                    maxItemsNumber++;
-                    let id = maxItemsNumber;
-                    let code = tools.getNewCode(totalItems, 'items');
-                    code++;
-                    rebuildArr[i].id = id;
-                    rebuildArr[i].code = code;
-                    newItemData = {id: id, content: rebuildArr[i].data, code: code, itemValue:[]};
+                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 + id] = newItem;
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'code'){
+                if(datas[i].type !== 'CreateT' && datas[i].field === 'code'){
                     maxItemsNumber++;
-                    maxItemsNumber = maxItemsNumber >= rebuildArr[i].data  ? maxItemsNumber : rebuildArr[i].data;
-                    let id = maxItemsNumber;
-                    rebuildArr[i].id = id;
-                    newItemData = {id: id, content: '', code: rebuildArr[i].data};
+                    maxItemsNumber = maxItemsNumber >= datas[i].data  ? maxItemsNumber : datas[i].data;
+                    newItemData = {id: datas[i].newItemId, content: '', code: datas[i].data};
                     newItem = createObj.newItem(newItemData);
                     totalItems.itemsArr.push(newItem);
-                    totalItems.items[totalItems.prefix + id] = newItem;
                 }
             }
         }
         tools.reshowData(sheet, totalItems.itemsArr, totalItemsSetting, true);
-        //backendOP
-        let backendDatas = {
-            updateDatas: crossedDatas,
-            createDatas: rebuildArr
-        };
-        itemsAjax.pasteItems(backendDatas);
     },
 
-    pasteValueFront: function(sheet, totalItems, uncrossedDatas, crossedDatas){
-        let rebuildArr =[];
-        let rebuildUpdateDatas = [];
+    pasteValueFront: function(sheet, totalItems, datas){
         let backendUpdateDatas = [];
         let valuesArr = valueController.getValues(totalItems, selectedId);
-        function myCompare(a, b){
-            if(a.rowIdx > b.rowIdx)
-                return 1;
-            if(a.rowIdx < b.rowIdx)
-                return -1;
-            return 0;
-        }
-        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');
-                if(isRepeat){
-                    crossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< crossedDatas.length; i++){
-                let field = crossedDatas[i].field, data = crossedDatas[i].data;
-                if(crossedDatas[i].field === 'code' && typeof data !== 'number' ){
-                    crossedDatas.splice(i--, 1);
-                }
-            }
-            rebuildUpdateDatas = tools.rebuildArr(crossedDatas, 'update');
-            rebuildUpdateDatas.sort(myCompare);
-            for(let i =0; i< rebuildUpdateDatas.length; i++){
-                rebuildUpdateDatas[i].itemId = selectedId;
+        if(datas.length > 0){
+            for(let i =0; i< datas.length; i++){
                 let index;
-                if(rebuildUpdateDatas[i].type === 'UpdateT'){
+                if(datas[i].type === 'UpdateT'){
                     if(valuesArr){
                         for(let j=0; j< valuesArr.length; j++){
-                            if(rebuildUpdateDatas[i].orgId === valuesArr[j].code){
+                            if(datas[i].orgId === valuesArr[j].code){
                                 index = j;
                                 valuesArr.splice(j--, 1);
                             }
                         }
-                        let updateEle = {code: rebuildUpdateDatas[i].code, value: rebuildUpdateDatas[i].content};
+                        let updateEle = {code: datas[i].code, value: datas[i].content};
                         valuesArr.splice(index, 0, updateEle);
                     }
                 }
-                if(rebuildUpdateDatas[i].type !== 'UpdateT' && rebuildUpdateDatas[i].field === 'code'){
+                if(datas[i].type !== 'UpdateT' && datas[i].field === 'code'){
                     if(valuesArr){
                         for(let j=0; j< valuesArr.length; j++){
-                            if(rebuildUpdateDatas[i].orgId === valuesArr[j].code){
-                                valuesArr[j].code = rebuildUpdateDatas[i].data;
+                            if(datas[i].orgId === valuesArr[j].code){
+                                valuesArr[j].code = datas[i].data;
                             }
                         }
                     }
                 }
-                if(rebuildUpdateDatas[i].type !== 'UpdateT' && rebuildUpdateDatas[i].field === 'value'){
+                if(datas[i].type !== 'UpdateT' && datas[i].field === 'value'){
                     if(valuesArr){
                         for(let j=0; j< valuesArr.length; j++){
-                            if(rebuildUpdateDatas[i].orgId === valuesArr[j].code){
-                                valuesArr[j].value = rebuildUpdateDatas[i].data
+                            if(datas[i].orgId === valuesArr[j].code){
+                                valuesArr[j].value = datas[i].data
                             }
                         }
                     }
                 }
-            }
-        }
-        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');
-                if(isRepeat){
-                    uncrossedDatas.splice(i--, 1);
-                }
-            }
-            for(let i=0; i< uncrossedDatas.length; i++){
-                let field = uncrossedDatas[i].field;
-                if(uncrossedDatas[i].field === 'code' && typeof uncrossedDatas[i].data !== 'number' ){
-                    uncrossedDatas.splice(i--, 1);
-                }
-            }
-            rebuildArr = tools.rebuildArr(uncrossedDatas, 'create');
-            rebuildArr.sort(myCompare);
-            for(let i=0; i< rebuildArr.length; i++){
-                let newValueData, newValue;
-                let newCode = valueController.getCode(totalItems, selectedId);
-                if(rebuildArr[i].type === 'CreateT'){
-                    rebuildArr[i].itemId = selectedId;
-                    newValueData = {value: rebuildArr[i].content, code: rebuildArr[i].code};
+                if(datas[i].type === 'CreateT'){
+                    let newValueData = {value: datas[i].content, code: datas[i].code};
                     valuesArr.push(newValueData);
 
                 }
-                if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'value'){
-                    rebuildArr[i].itemId = selectedId;
-                    rebuildArr[i].code = newCode;
-                    newValueData = {value: rebuildArr[i].data, code: newCode};
+                if(datas[i].type !== 'CreateT' && datas[i].field === 'value'){
+                    let newValueData = {value: datas[i].data, code: datas.code};
                     valuesArr.push(newValueData);
                 }
                 if(rebuildArr[i].type !== 'CreateT' && rebuildArr[i].field === 'code'){
-                    //newCode = newCode >= rebuildArr[i].data  ? newCode : rebuildArr[i].data;
-                    //rebuildArr[i].data = newCode;
-                    rebuildArr[i].itemId = selectedId;
-                    newValueData = {value: '', code: rebuildArr[i].data};
+                    let newValueData = {value: '', code: datas[i].data};
                     valuesArr.push(newValueData);
                 }
             }
         }
         tools.reshowValue(sheet, valuesArr, eigenValueSetting, true);
-        //backendOP
-        let backendDatas = {
-            updateDatas: rebuildUpdateDatas,
-            createDatas: rebuildArr
-        };
-        if(rebuildUpdateDatas.length >0 || rebuildArr.length >0){
-            itemsAjax.pasteValues(backendDatas);
-        }
-
     }
 };
 

+ 1 - 1
web/maintain/ration_repository/js/coe.js

@@ -38,7 +38,7 @@ var coeList = {
     ],
     colDefContent: [
         {name: "coeType", displayName: "类型", size: 100, hAlign: "center"},
-        {name: "gljCode", displayName: "工料机编号", size: 100, hAlign: "center",formatter: "00000000"},
+        {name: "gljCode", displayName: "工料机编号", size: 100, dataType: "String", formatter: "@", hAlign: "center"},
         {name: "operator", displayName: "操作符", size: 60, hAlign: "center"},
         {name: "amount", displayName: "数量", size: 80, hAlign: "right"}
     ],