Browse Source

解决一些bug

zhongzewei 8 years ago
parent
commit
7576c4a963

+ 46 - 452
modules/bills_lib/models/bills_lib_interfaces.js

@@ -49,17 +49,7 @@ billsLibDao.prototype.getABillsLib = function(data, callback){
     });
 };
 
-/*billsLibDao.prototype.getStdBillsLib = function(data, callback){
-    let userId = data.userId;
-    StdBillsLib.find({userId: userId, deleted: false}, "-_id", function(err, data){
-        if(err){
-            callback(1, "Error", null);
-        }
-        else{
-            callback(0, "", data);
-        }
-    })
-};*/
+
 billsLibDao.prototype.getStdBillsLib = function(data, callback){
     let userId = data.userId;
     StdBillsLib.find({userId: userId, deleted: false}, "-_id", function(err, data){
@@ -190,73 +180,6 @@ billsLibDao.prototype.createBills = function(cbillsData, callback){
     });
 };
 
-//org
-/*billsLibDao.prototype.updatePNId= function(upData, callback){
-    let billsLibId = upData.billsLibId;
-    let updateDatas = upData.updateData;
-    let success = true;
-    if(updateDatas.length > 0){
-        updateDatas.forEach(function(data){
-            if(data.ID.length >1){
-                data.ID.forEach(function(id){
-                    if(data.ParentID && data.NextSiblingID){
-                        Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){
-                            if(err){
-                                callback(1, "Error")
-                                success = false;
-                            }
-                        });
-                    }
-                    else if(data.ParentID && !data.NextSiblingID){
-                        Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID}}, function(err){
-                            if(err){
-                                callback(1, 'Error');
-                                success = false;
-                            }
-                        });
-                    }
-                    else if(!data.ParentID && data.NextSiblingID){
-                        Bills.update({billsLibId: billsLibId, ID: id}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){
-                            if(err){
-                                callback(1, 'Error');
-                                success = false;
-                            }
-                        });
-                    }
-                });
-            }
-            else {
-                if(data.ParentID && data.NextSiblingID){
-                    Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){
-                        if(err){
-                            callback(1, "Error")
-                            success = false;
-                        }
-                    });
-                }
-                else if(data.ParentID && !data.NextSiblingID){
-                    Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {ParentID: data.ParentID}}, function(err){
-                        if(err){
-                            callback(1, 'Error');
-                            success = false;
-                        }
-                    });
-                }
-                else if(!data.ParentID && data.NextSiblingID){
-                    Bills.update({billsLibId: billsLibId, ID: data.ID}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){
-                        if(err){
-                            callback(1, 'Error');
-                            success = false;
-                        }
-                    });
-                }
-            }
-        });
-    }
-    if(success){
-        callback(0, '');
-    }
-};*/
 billsLibDao.prototype.updatePNId= function(upData, callback){
     let billsLibId = upData.billsLibId;
     let updateDatas = upData.updateData;
@@ -280,7 +203,7 @@ billsLibDao.prototype.updatePNId= function(upData, callback){
         async.each(eachDatas, function(eachObj, cb){
             let id = eachObj.id, data = eachObj.data;
             if(data.ParentID && data.NextSiblingID){
-                Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){
+                Bills.update({billsLibId: billsLibId, ID: id, deleted: false}, {$set: {ParentID: data.ParentID, NextSiblingID: data.NextSiblingID}}, function(err){
                     if(err){
                         cb(err);
                     }else {
@@ -289,7 +212,7 @@ billsLibDao.prototype.updatePNId= function(upData, callback){
                 });
             }
             else if(data.ParentID && !data.NextSiblingID){
-                Bills.update({billsLibId: billsLibId, ID: id}, {$set: {ParentID: data.ParentID}}, function(err){
+                Bills.update({billsLibId: billsLibId, ID: id, deleted: false}, {$set: {ParentID: data.ParentID}}, function(err){
                     if(err){
                         if(err){
                             cb(err);
@@ -300,7 +223,7 @@ billsLibDao.prototype.updatePNId= function(upData, callback){
                 });
             }
             else if(!data.ParentID && data.NextSiblingID){
-                Bills.update({billsLibId: billsLibId, ID: id}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){
+                Bills.update({billsLibId: billsLibId, ID: id, deleted: false}, {$set: {NextSiblingID: data.NextSiblingID}}, function(err){
                     if(err){
                         cb(err);
                     }else {
@@ -385,81 +308,7 @@ billsLibDao.prototype.updateBills = function(ubillsData, callback){
         });
     }
 }
-//org
-/*billsLibDao.prototype.updateBillsArr = function(updateData, callback){
-    let billsLibId = updateData.billsLibId;
-    let updateId = updateData.updateId;
-    let orgId = updateData.orgId;
-    let newId = updateData.newId;
-    let classify = updateData.classify;
-    let type = updateData.type;
-    let success = true;
-    if(classify === 'jobs'){
-        if(orgId && newId && type === 'update'){
-            Bills.update({billsLibId: billsLibId, ID: updateId, jobs: orgId}, {$set: {'jobs.$': newId}}, function(err){
-                if(err){
-                    callback(1, 'Error');
-                }
-                else {
-                    callback(0, '');
-                }
-            });
-        }
-        if(orgId && !newId && type === 'delete'){
-            orgId.forEach(function(oid){
-                Bills.update({billsLibId: billsLibId, ID: updateId}, {$pull: {jobs: oid}}, function(err){
-                    if(err){
-                        callback(1, 'Error');
-                    }
-                });
-            });
-        }
-        //todo: test
-        if(orgId && !newId && type === 'deleteAll'){
-            updateId.forEach(function(uid){
-                orgId.forEach(function(oid){
-                    Bills.update({billsLibId: billsLibId, ID: uid}, {$pull: {jobs: oid}}, function(err){
-                        if(err){
-                            callback(1, 'Error');
-                        }
-                    });
-                });
-            });
-        }
-    }
-    else if(classify === 'items'){
-        if(orgId && newId && type === 'update'){
-            Bills.update({billsLibId: billsLibId, ID: updateId, items: orgId}, {$set: {'items.$': newId}}, function(err){
-                if(err){
-                    callback(1, 'Error');
-                }
-                else {
-                    callback(0, '');
-                }
-            });
-        }
-        if(orgId && !newId && type === 'delete'){
-            orgId.forEach(function(oid){
-                Bills.update({billsLibId: billsLibId, ID: updateId}, {$pull: {items: oid}}, function(err){
-                    if(err){
-                        callback(1, 'Error');
-                    }
-                });
-            });
-        }
-        if(orgId && !newId &&  type === 'deleteAll'){
-            updateId.forEach(function(uid){
-                orgId.forEach(function(oid){
-                    Bills.update({billsLibId: billsLibId, ID: uid}, {$pull: {items: oid}}, function(err){
-                        if(err){
-                            callback(1, 'Error');
-                        }
-                    });
-                });
-            });
-        }
-    }
-};*/
+
 billsLibDao.prototype.updateBillsArr = function(updateData, callback){
     let billsLibId = updateData.billsLibId;
     let updateId = updateData.updateId;
@@ -470,7 +319,7 @@ billsLibDao.prototype.updateBillsArr = function(updateData, callback){
     let success = true;
     if(classify === 'jobs'){
         if(orgId && newId && type === 'update'){
-            Bills.update({billsLibId: billsLibId, ID: updateId, deleted: false, jobs: orgId}, {$set: {'jobs.$': newId}}, function(err){
+            Bills.update({billsLibId: billsLibId, ID: updateId, deleted: false, 'jobs.id': orgId}, {$set: {'jobs.$.id': newId}}, function(err){
                 if(err){
                     callback(1, 'Error');
                 }
@@ -522,7 +371,7 @@ billsLibDao.prototype.updateBillsArr = function(updateData, callback){
     }
     else if(classify === 'items'){
         if(orgId && newId && type === 'update'){
-            Bills.update({billsLibId: billsLibId, ID: updateId, deleted: false, items: orgId}, {$set: {'items.$': newId}}, function(err){
+            Bills.update({billsLibId: billsLibId, ID: updateId, deleted: false, 'items.id': orgId}, {$set: {'items.$.id': newId}}, function(err){
                 if(err){
                     callback(1, 'Error');
                 }
@@ -573,17 +422,7 @@ billsLibDao.prototype.updateBillsArr = function(updateData, callback){
         }
     }
 };
-//org
-/*billsLibDao.prototype.pasteBills = function(pData, callback){
-    let datas = pData.datas;
-    datas.forEach(function(data){
-        Bills.update({billsLibId: data.billsLibId, ID: data.ID}, {$set: {code: data.code, name: data.name, unit: data.unit, ruleText: data.ruleText}}, function(err){
-            if(err){
-                callback(1, 'Error');
-            }
-        });
-    });
-}*/
+
 billsLibDao.prototype.pasteBills = function(pData, callback){
     let datas = pData.datas;
     async.each(datas, function(data, cb){
@@ -602,29 +441,20 @@ billsLibDao.prototype.pasteBills = function(pData, callback){
         }
     });
 }
-//org
-/*billsLibDao.prototype.updateRecharge = function(uData, callback){
-    let billsLibId = uData.billsLibId;
-    let updateIds = uData.updateIds;
-    let data = uData.data;
-    let success = true;
-    updateIds.forEach(function(id){
-        Bills.update({billsLibId: billsLibId, ID: id}, {$set: {recharge: data}}, function(err){
-            if(err){
-                callback(1, 'Error');
-                success = false;
-            }
-        });
-    });
-    if(success){
-        callback(0, '');
-    }
-};*/
+
 billsLibDao.prototype.updateRecharge = function(uData, callback){
     let billsLibId = uData.billsLibId;
-    let updateIds = uData.updateIds;
+    let updateId = uData.updateId;
     let data = uData.data;
-    async.each(updateIds, function(id, cb){
+    Bills.update({billsLibId: billsLibId, ID: updateId, deleted: false}, {$set: {recharge: data}}, function(err){
+        if(err){
+            callback(1, 'Error');
+        }
+        else {
+            callback(0, '');
+        }
+    });
+   /* async.each(updateIds, function(id, cb){
         Bills.update({billsLibId: billsLibId, ID: id, deleted: false}, {$set: {recharge: data}}, function(err){
             if(err){
                 cb(err);
@@ -638,217 +468,12 @@ billsLibDao.prototype.updateRecharge = function(uData, callback){
         }else {
             callback(0, '');
         }
-    });
-
+    });*/
 };
-//org
-/*billsLibDao.prototype.pasteRel = function (data, callback) {
-    const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
-    const Jobs = 'jobs', Items = 'items';
-    let success = true;
-    let field = data.field;
-    let updateDatas = data.updateDatas;
-    let createDatas = data.createDatas;
-    if(field === Jobs){
-        if(updateDatas.length > 0){
-            for(let i=0; i<updateDatas.length; i++){
-                if(updateDatas[i].type === UpdateExist){
-                    let orgJobId = updateDatas[i].orgJobId, newJobId = updateDatas[i].newJobId,
-                        nodeId = updateDatas[i].nodeId, billsLibId = updateDatas[i].billsLibId, newData = updateDatas[i].newData;
-                    if(orgJobId && newJobId && nodeId && billsLibId){
-                        Bills.update({billsLibId: billsLibId, ID: nodeId, jobs: orgJobId}, {$set: {'jobs.$': newJobId}}, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                            }
-                        });
-                    }
-
-                }
-                if(updateDatas[i].type === UpdateNew){
-                    let billsLibId = updateDatas[i].billsLibId, nodeId = updateDatas[i].nodeId, newData = updateDatas[i].newData,
-                        orgJobId = updateDatas[i].orgJobId, code = updateDatas[i].code, id = updateDatas[i].newJobId;
-                    if(billsLibId && nodeId && newData && orgJobId && code && id){
-                        let newJobContent;
-                        newJobContent = {
-                            id: id,
-                            billsLibId: billsLibId,
-                            code: code,
-                            content: newData,
-                            deleted: false
-                        }
-                        JobContent.create(newJobContent, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                                Bills.update({billsLibId: billsLibId, ID: nodeId, jobs: orgJobId}, {$set: {'jobs.$': id}}, function(err){
-                                    if(err){
-                                        success = false;
-                                    }
-                                    else{
-                                    }
-                                });
-                            }
-                        });
-                    }
 
-                }
-            }
-        }
-        if(createDatas.length > 0){
-            for(let i=0; i<createDatas.length; i++){
-                if(createDatas[i].type === CreateExist){
-                    let billsLibId = createDatas[i].billsLibId, newData = createDatas[i].newData,
-                        nodeId = createDatas[i].nodeId, jobId = createDatas[i].jobId;
-                    if(billsLibId && newData && nodeId && jobId){
-                        Bills.update({billsLibId: billsLibId, ID: nodeId}, {$addToSet: {jobs: jobId}}, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else {
-                            }
-                        });
-                    }
-                }
-                if(createDatas[i].type === CreateNew){
-                    let billsLibId = createDatas[i].billsLibId, newData = createDatas[i].newData,
-                        code = createDatas[i].code, nodeId = createDatas[i].nodeId, id = createDatas[i].id;
-                    if(billsLibId && newData && code && id){
-                        let newJobContent;
-                        newJobContent = {
-                            id: id,
-                            billsLibId: billsLibId,
-                            code: code,
-                            content: newData,
-                            deleted: false
-                        }
-                        JobContent.create(newJobContent, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                                Bills.update({billsLibId: billsLibId, ID: nodeId}, {$addToSet: {jobs: id}}, function(err){
-                                    if(err){
-                                        success = false;
-                                    }
-                                    else {
-
-                                    }
-                                });
-                            }
-                        });
-
-                    }
-                }
-            }
-        }
-
-    }
-    if(field === Items){
-        if(updateDatas.length > 0){
-            for(let i=0; i<updateDatas.length; i++){
-                if(updateDatas[i].type === UpdateExist){
-                    let orgItemId = updateDatas[i].orgItemId, newItemId = updateDatas[i].newItemId,
-                        nodeId = updateDatas[i].nodeId, billsLibId = updateDatas[i].billsLibId, newData = updateDatas[i].newData;
-                    if(orgItemId && newItemId && nodeId && billsLibId){
-                        Bills.update({billsLibId: billsLibId, ID: nodeId, items: orgItemId}, {$set: {'items.$': newItemId}}, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                            }
-                        });
-                    }
-
-                }
-                if(updateDatas[i].type === UpdateNew){
-                    let billsLibId = updateDatas[i].billsLibId, nodeId = updateDatas[i].nodeId, newData = updateDatas[i].newData,
-                        orgItemId = updateDatas[i].orgItemId, code = updateDatas[i].code, id = updateDatas[i].newItemId;
-                    if(billsLibId && nodeId && newData && orgItemId && code && id){
-                        let newItemContent;
-                        newItemContent = {
-                            id: id,
-                            billsLibId: billsLibId,
-                            code: code,
-                            content: newData,
-                            deleted: false
-                        }
-                        ItemCharacter.create(newItemContent, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                                Bills.update({billsLibId: billsLibId, ID: nodeId, items: orgItemId}, {$set: {'items.$': id}}, function(err){
-                                    if(err){
-                                        success = false;
-                                    }
-                                    else{
-                                    }
-                                });
-                            }
-                        });
-                    }
-
-                }
-            }
-        }
-        if(createDatas.length > 0){
-            for(let i=0; i<createDatas.length; i++){
-                if(createDatas[i].type === CreateExist){
-                    let billsLibId = createDatas[i].billsLibId, newData = createDatas[i].newData,
-                        nodeId = createDatas[i].nodeId, itemId = createDatas[i].itemId;
-                    if(billsLibId && newData && nodeId && itemId){
-                        Bills.update({billsLibId: billsLibId, ID: nodeId}, {$addToSet: {items: itemId}}, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else {
-                            }
-                        });
-                    }
-                }
-                if(createDatas[i].type === CreateNew){
-                    let billsLibId = createDatas[i].billsLibId, newData = createDatas[i].newData,
-                        code = createDatas[i].code, nodeId = createDatas[i].nodeId, id = createDatas[i].id;
-                    if(billsLibId && newData && code && id){
-                        let newItemContent;
-                        newItemContent = {
-                            id: id,
-                            billsLibId: billsLibId,
-                            code: code,
-                            content: newData,
-                            deleted: false
-                        }
-                        ItemCharacter.create(newItemContent, function(err){
-                            if(err){
-                                success = false;
-                            }
-                            else{
-                                Bills.update({billsLibId: billsLibId, ID: nodeId}, {$addToSet: {items: id}}, function(err){
-                                    if(err){
-                                        success = false;
-                                    }
-                                    else {
-
-                                    }
-                                });
-                            }
-                        });
-
-                    }
-                }
-            }
-        }
-
-    }
-    callback(0, '');
-};*/
 billsLibDao.prototype.pasteRel = function (data, callback) {
     const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
     const Jobs = 'jobs', Items = 'items';
-    let success = true;
     let field = data.field;
     let updateDatas = data.updateDatas;
     let createDatas = data.createDatas;
@@ -859,7 +484,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
                 nodeId = data.nodeId, billsLibId = data.billsLibId;
             return function (cb){
                 if(orgJobId && newJobId && nodeId && billsLibId){
-                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, jobs: orgJobId}, {$set: {'jobs.$': newJobId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, 'jobs.id': orgJobId}, {$set: {'jobs.$.id': newJobId}}, function(err){
                         if(err){
                             cb(err);
                         }
@@ -893,7 +518,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
                                     cb(err);
                                 }
                                 else{
-                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, jobs: orgJobId}, {$set: {'jobs.$': newJobId}}, function(err){
+                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, 'jobs.id': orgJobId}, {$set: {'jobs.$.id': newJobId}}, function(err){
                                         if(err){
                                             cb(err);
                                         }
@@ -913,10 +538,10 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         },
         createExJobs: function(data){
             let billsLibId = data.billsLibId, newData = data.newData,
-                nodeId = data.nodeId, jobId = data.jobId;
+                nodeId = data.nodeId, jobId = data.jobId, serialNo = data.serialNo;
             return function (cb){
                 if(billsLibId && newData && nodeId && jobId){
-                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {jobs: jobId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {jobs: {id: jobId, serialNo: serialNo}}}, function(err){
                         if(err){
                             cb(err);
                         }
@@ -929,7 +554,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         },
         createNeJobs: function(data){
             let billsLibId = data.billsLibId, newData = data.newData,
-                code = data.code, nodeId = data.nodeId;
+                code = data.code, nodeId = data.nodeId, serialNo = data.serialNo;
             return function (cb){
                 if(billsLibId && newData && code){
                     counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_jobs, 1, function(err, result){
@@ -950,7 +575,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
                                     cb(err);
                                 }
                                 else{
-                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {jobs: newJobId}}, function(err){
+                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {jobs: {id: newJobId, serialNo: serialNo}}}, function(err){
                                         if(err){
                                             cb(err);
                                         }
@@ -968,10 +593,10 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         },
         updateExItems: function(data){
             let orgItemId = data.orgItemId, newItemId = data.newItemId,
-                nodeId = data.nodeId, billsLibId = data.billsLibId, newData = data.newData;
+                nodeId = data.nodeId, billsLibId = data.billsLibId;
             return function (cb){
                 if(orgItemId && newItemId && nodeId && billsLibId){
-                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, items: orgItemId}, {$set: {'items.$': newItemId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, 'items.id': orgItemId}, {$set: {'items.$.id': newItemId}}, function(err){
                         if(err){
                             cb(err);
                         }
@@ -1000,12 +625,12 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
                                 content: newData,
                                 deleted: false
                             };
-                            ItemCharacter.create(newItemId, function(err){
+                            ItemCharacter.create(newItemContent, function(err){
                                 if(err){
                                     cb(err);
                                 }
                                 else{
-                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, items: orgItemId}, {$set: {'items.$': newItemId}}, function(err){
+                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false, 'items.id': orgItemId}, {$set: {'items.$.id': newItemId}}, function(err){
                                         if(err){
                                             cb(err);
                                         }
@@ -1023,10 +648,10 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         },
         createExItems: function(data){
             let billsLibId = data.billsLibId, newData = data.newData,
-                nodeId = data.nodeId, itemId = data.itemId;
+                nodeId = data.nodeId, itemId = data.itemId, serialNo = data.serialNo;
             return function (cb){
                 if(billsLibId && newData && nodeId && itemId){
-                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {items: itemId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {items: {id: itemId, serialNo: serialNo}}}, function(err){
                         if(err){
                             cb(err);
                         }
@@ -1039,9 +664,9 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         },
         createNeItems: function(data){
             let billsLibId = data.billsLibId, newData = data.newData,
-                code = data.code, nodeId = data.nodeId, id = data.id;
+                code = data.code, nodeId = data.nodeId, serialNo = data.serialNo;
             return function (cb){
-                if(billsLibId && newData && code && id){
+                if(billsLibId && newData && code){
                     counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_items, 1, function(err, result){
                         if(err){
                             cb(err);
@@ -1060,7 +685,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
                                     cb(err);
                                 }
                                 else{
-                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {items: newItemId}}, function(err){
+                                    Bills.update({billsLibId: billsLibId, ID: nodeId, deleted: false}, {$addToSet: {items: {id: newItemId, serialNo: serialNo}}}, function(err){
                                         if(err){
                                             cb(err);
                                         }
@@ -1099,7 +724,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
             }
         }
     }
-    if(field === Items){
+    else {
         if(updateDatas.length > 0){
             for(let i=0; i<updateDatas.length; i++){
                 if(updateDatas[i].type === UpdateExist){
@@ -1130,25 +755,7 @@ billsLibDao.prototype.pasteRel = function (data, callback) {
         }
     });
 };
-//org
-/*billsLibDao.prototype.deleteBills = function(delData, callback){
-    let deleteIds = delData.deleteIds;
-    let billsLibId = delData.billsLibId;
-    let success = true;
-    if(deleteIds){
-        deleteIds.forEach(function(delId){
-            Bills.update({billsLibId: billsLibId, ID: delId}, {$set: {deleted: true}}, function(err){
-                if(err){
-                    success = false;
-                    callback(1, 'Error');
-                }
-            });
-        });
-        if(success){
-            callback(0, '');
-        }
-    }
-}*/
+
 billsLibDao.prototype.deleteBills = function(delData, callback){
     let deleteIds = delData.deleteIds;
     let billsLibId = delData.billsLibId;
@@ -1241,22 +848,7 @@ billsLibDao.prototype.updateJobContent = function(uJobData, callback){
         });
     }
 };
-//org
-/*billsLibDao.prototype.deleteJobContent = function(data, callback){
-    let delIds = data.ids;
-    let billsLibId = data.billsLibId;
-    let success = true;
-    delIds.forEach(function(id){
-        JobContent.update({billsLibId: billsLibId, id: id}, {$set: {deleted: true}}, function(err,result){
-            if(err){
-                success = false;
-                callback(1, 'Error');
-            }
-            else {
-            }
-        });
-    });
-}*/
+
 billsLibDao.prototype.deleteJobContent = function(data, callback){
     let delIds = data.ids;
     let billsLibId = data.billsLibId;
@@ -1386,7 +978,8 @@ billsLibDao.prototype.edCreateJob = function(data, callback){
     let billsLibId = data.billsLibId,
         code = data.code,
         billsId = data.billsId,
-        content = data.data;
+        content = data.data,
+        serialNo = data.serialNo;
     async.waterfall([
         function(cb){
             counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_jobs, 1, function(err, result){
@@ -1412,7 +1005,7 @@ billsLibDao.prototype.edCreateJob = function(data, callback){
                     });
                 },
                 function(pcb){
-                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false}, {$addToSet: {jobs: newJobId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false}, {$addToSet: {jobs: {id: newJobId, serialNo: serialNo}}}, function(err){
                         if(err){
                             pcb(err, null);
                         }
@@ -1471,7 +1064,7 @@ billsLibDao.prototype.edUpdateJob = function(data, callback){
                     });
                 },
                 function(pcb){
-                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false, jobs: orgJobId}, {$set: {'jobs.$': newJobId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false, 'jobs.id': orgJobId}, {$set: {'jobs.$.id': newJobId}}, function(err){
                         if(err){
                             pcb(err, null);
                         }
@@ -1871,7 +1464,8 @@ billsLibDao.prototype.edCreateItem = function(data, callback){
     let billsLibId = data.billsLibId,
         code = data.code,
         billsId = data.billsId,
-        content = data.data;
+        content = data.data,
+        serialNo = data.serialNo;
     async.waterfall([
         function(cb){
             counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_items, 1, function(err, result){
@@ -1897,7 +1491,7 @@ billsLibDao.prototype.edCreateItem = function(data, callback){
                     });
                 },
                 function(pcb){
-                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false}, {$addToSet: {items: newItemId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false}, {$addToSet: {items: {id: newItemId, serialNo: serialNo}}}, function(err){
                         if(err){
                             pcb(err, null);
                         }
@@ -1956,7 +1550,7 @@ billsLibDao.prototype.edUpdateItem = function(data, callback){
                     });
                 },
                 function(pcb){
-                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false, items: orgItemId}, {$set: {'items.$': newItemId}}, function(err){
+                    Bills.update({billsLibId: billsLibId, ID: billsId, deleted: false, 'items.id': orgItemId}, {$set: {'items.$.id': newItemId}}, function(err){
                         if(err){
                             pcb(err, null);
                         }

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

@@ -11,7 +11,7 @@
     <link rel="stylesheet" href="/web/maintain/bills_lib/css/main.css">
     <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
     <!--spread-->
-    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013white.10.0.1.css">
+    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css">
     <!--zTree-->
     <link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
 </head>

+ 23 - 19
web/maintain/bills_lib/html/qingdan.html

@@ -10,7 +10,7 @@
     <link rel="stylesheet" href="/web/maintain/bills_lib/css/main.css">
     <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
     <!--spread-->
-    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013white.10.0.1.css">
+    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css">
 </head>
 
 <body>
@@ -256,7 +256,7 @@
     });
 
     function nodeOpration(controller, totalJobs, totalItems){
-        dbController.editData(controller, controller.sheet);
+        dbController.editData(controller);
         $('#insert').click(function(){
             dbController.insert(controller);
             tools.clearData(jobsSpread.getActiveSheet());
@@ -283,15 +283,13 @@
     function showBillsSheet(datas, jobsSheet, itemsSheet, setting) {
         let billsSpread = new GC.Spread.Sheets.Workbook($('#spreadBills')[0], {sheetCount: 1});
         //
-        let billsSheet = billsSpread.getActiveSheet();
-        billsSheet.setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
+       // let billsSheet = billsSpread.getActiveSheet();
+        controller.sheet.setFormatter(-1, 0, "@", GC.Spread.Sheets.SheetArea.viewport);
         //
         setSheet.initSheet(billsSpread, setting);
         //setSheet.formatter(billsSpread.getActiveSheet());
         myKey.delKey(billsSpread);
         billsTree.loadDatas(datas);
-       /* //粘贴事件
-        bindPasteBills(billsSpread.getActiveSheet(), setting);*/
         let controller = TREE_SHEET_CONTROLLER.createNew(billsTree.tree, billsSpread.getActiveSheet(), setting);
         controller.showTreeData();
         //setTagId
@@ -412,8 +410,10 @@
             let arr = controller.tree.selected[classify];
             let recharge = controller.tree.selected.data.recharge;
             setSheet.setMaxRowCount(sheet, arr);
+            let prefix = classify === 'jobs' ? 'job' : 'item';
             if(arr.length > 0){
-                tools.reshowData(sheet, arr, setting, true);
+                //tools.reshowData(sheet, arr, setting, true);//update--
+                tools.orderReshowData(sheet, arr, setting, prefix,true);
             }
             if(recharge){
                 $('#exampleTextarea').val(recharge);
@@ -431,7 +431,8 @@
                     let jobs = controller.tree.selected.jobs;
                     setSheet.setMaxRowCount(sheet, jobs);
                     if(jobs.length > 0){
-                        tools.reshowData(sheet, jobs, setting, false);
+                     //   tools.reshowData(sheet, jobs, setting, false);
+                        tools.orderReshowData(sheet, jobs, setting, 'job', true);
                         orgJobData = sheet.getValue(0, 0);
                     }
                     sheetDatas = tools.getsheetDatas(sheet, 'jobs');
@@ -440,7 +441,7 @@
                     let items = controller.tree.selected.items;
                     setSheet.setMaxRowCount(sheet, items);
                     if(items.length > 0){
-                        tools.reshowData(sheet, items, setting, false);
+                        tools.orderReshowData(sheet, items, setting, 'item', false);
                         orgItemData = sheet.getValue(0, 0);
                     }
                     sheetItemsDatas = tools.getsheetDatas(sheet, 'items');
@@ -484,9 +485,6 @@
     function bindPasteRel(sheet, controller, totalJobs, setting){
         sheetDatas = tools.getsheetDatas(sheet, 'jobs');
         sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, function(sender, args){
-            //
-            console.log(`sheetDatas`);
-            console.log(sheetDatas);
             sheet.setColumnCount(2, GC.Spread.Sheets.SheetArea.viewport);
             if(controller.tree.selected){
                 let orgRow = args.cellRange.row, orgCol = args.cellRange.col, rowCount = args.cellRange.rowCount, colCount = args.cellRange.colCount;
@@ -507,14 +505,17 @@
                     sheetDatas.forEach(function(rowData){
                         if(rowData.rowIdx === i && rowData.data !== uniqPasteArr[j]){
                             flag = false;
+                            let serialNo = tools.getObj(controller.tree.selected.jobs, rowData.id, 'job');
                             crossedData = {
                                 orgId: rowData.id,
-                                newData: uniqPasteArr[j]
+                                newData: uniqPasteArr[j],
+                                serialNo: serialNo
                             };
                         }
                     });
                     if(flag){
-                        uncrossedDatas.push(uniqPasteArr[j]);
+                        let serialNo = tools.getSerialNo(controller.tree.selected.jobs);
+                        uncrossedDatas.push({data: uniqPasteArr[j], serialNo: serialNo});
                     }
                     else {
                         crossedDatas.push(crossedData);
@@ -527,7 +528,7 @@
                     });
                 }
                 else {
-                    tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                    tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
                 }
             }
             else {
@@ -558,14 +559,17 @@
                     sheetItemsDatas.forEach(function(rowData){
                         if(rowData.rowIdx === i && rowData.data !== uniqPasteArr[j]){
                             flag = false;
+                            let serialNo = tools.getObj(controller.tree.selected.items, rowData.id, 'item');
                             crossedData = {
                                 orgId: rowData.id,
-                                newData: uniqPasteArr[j]
+                                newData: uniqPasteArr[j],
+                                serialNo: serialNo
                             };
                         }
                     });
                     if(flag){
-                        uncrossedDatas.push(uniqPasteArr[j]);
+                        let serialNo = tools.getSerialNo(controller.tree.selected.items);
+                        uncrossedDatas.push({data: uniqPasteArr[j], serialNo: serialNo});
                     }
                     else {
                         crossedDatas.push(crossedData);
@@ -577,8 +581,8 @@
                         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.reshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 }
             }
             else {

+ 1 - 1
web/maintain/bills_lib/html/tezheng.html

@@ -11,7 +11,7 @@
     <link rel="stylesheet" href="/web/maintain/bills_lib/css/main.css">
     <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
     <!--spread-->
-    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013white.10.0.1.css">
+    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css">
     <!--zTree-->
     <link rel="stylesheet" href="/lib/ztree/css/zTreeStyle.css" type="text/css">
 </head>

+ 6 - 6
web/maintain/bills_lib/scripts/bills_lib_ajax.js

@@ -236,11 +236,11 @@ var billsAjax = {
             }
         });
     },
-    updateRecharge: function(billsLibId, updateIds, data){
+    updateRecharge: function(billsLibId, updateId, data){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateRecharge',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateIds: updateIds, data: data})},
+            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: updateId, data: data})},
             dataType: 'json',
             success: function(result){
 
@@ -338,11 +338,11 @@ var jobsAjax = {
 
         });
     },
-    edCreateJob: function(billsLibId, billsId, data, code, callback){
+    edCreateJob: function(billsLibId, billsId, data, code, serialNo, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edCreateJob',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code})},
+            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -450,11 +450,11 @@ var itemsAjax = {
             }
         });
     },
-    edCreateItem: function(billsLibId, billsId, data, code, callback){
+    edCreateItem: function(billsLibId, billsId, data, code, serialNo, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edCreateItem',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code})},
+            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){

+ 40 - 40
web/maintain/bills_lib/scripts/bills_lib_setting.js

@@ -10,13 +10,13 @@ var billsLibSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 160
         },
@@ -27,13 +27,13 @@ var billsLibSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'name',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 300
         },
@@ -44,13 +44,13 @@ var billsLibSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'unit',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 160
         },
@@ -61,19 +61,19 @@ var billsLibSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: ' Arial'
             },
             data: {
                 field: 'ruleText',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 420
         }
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 };
@@ -87,13 +87,13 @@ var jobsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 100
         },
@@ -104,19 +104,19 @@ var jobsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'content',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 210
         },
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 };
@@ -130,13 +130,13 @@ var itemsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 100
         },
@@ -147,19 +147,19 @@ var itemsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'content',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 210
         },
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 };
@@ -173,13 +173,13 @@ var totalJobsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 200
         },
@@ -190,19 +190,19 @@ var totalJobsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'content',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 850
         },
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 };
@@ -216,13 +216,13 @@ var totalItemsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 200
         },
@@ -233,19 +233,19 @@ var totalItemsSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'content',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 850
         },
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 };
@@ -259,13 +259,13 @@ var eigenValueSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'code',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 200
         },
@@ -276,19 +276,19 @@ var eigenValueSetting = {
                 spanRows: [2],
                 vAlign: [1, 1],
                 hAlign: [1, 1],
-                font: '16px Arial'
+                font: 'Arial'
             },
             data: {
                 field: 'value',
                 vAlign: 1,
                 hAlign: 0,
-                font: '14px Arial'
+                font: 'Arial'
             },
             width: 480
         },
     ],
-    headRows: 2,
-    headRowHeight: [20, 30, 30],
+    headRows: 1,
+    headRowHeight: [47],
     emptyRows: 3,
     treeCol: 0
 }

+ 210 - 102
web/maintain/bills_lib/scripts/db_controller.js

@@ -136,17 +136,32 @@ var dbController = {
         //controller.delete();
         tools.delteSheets(controller, totalJobs, totalItems, jobsSpread.getActiveSheet(), itemsSpread.getActiveSheet());
         //to solve refresh after deleted
-        /*let jobs = controller.tree.selected.jobs;
         let jobsSheet = jobsSpread.getActiveSheet();
-        setSheet.setMaxRowCount(jobsSheet, jobs);
-        if(jobs.length > 0){
-            tools.reshowData(jobsSheet, jobs, jobsSetting, false);
-            orgJobData = jobsSheet.getValue(0, 0);
+        let itemsSheet = itemsSpread.getActiveSheet();
+        if(node){
+            let jobs = controller.tree.selected.jobs;
+            $('#exampleTextarea').val(controller.tree.selected.data.recharge);
+            setSheet.setMaxRowCount(jobsSheet, jobs);
+            if(jobs.length > 0){
+                tools.reshowData(jobsSheet, jobs, jobsSetting, false);
+                orgJobData = jobsSheet.getValue(0, 0);
+            }
+            sheetDatas = tools.getsheetDatas(jobsSheet, 'jobs');
+            //
+            let items = controller.tree.selected.items;
+            setSheet.setMaxRowCount(itemsSheet, items);
+            if(items.length > 0){
+                tools.reshowData(itemsSheet, items, itemsSetting, false);
+                orgItemData = itemsSheet.getValue(0, 0);
+            }
+            sheetItemsDatas = tools.getsheetDatas(itemsSheet, 'items');
         }
         else {
             tools.clearData(jobsSheet);
+            tools.clearData(itemsSheet);
+            sheetDatas = tools.getsheetDatas(jobsSheet, 'jobs');
+            sheetItemsDatas = tools.getsheetDatas(itemsSheet, 'items');
         }
-        sheetDatas = tools.getsheetDatas(jobsSheet, 'jobs');*/
         //to solve refresh after deleted
     },
 
@@ -224,7 +239,6 @@ var dbController = {
             }
         });
     }
-
 };
 
 var createObj = {
@@ -258,7 +272,7 @@ var createObj = {
             if(nodes){
                 nodes.forEach(function(node){
                     node.jobs = new Array();
-                    node.data.jobs.forEach(function(jobId){
+                    /*node.data.jobs.forEach(function(jobId){
                         if(me.jobs[me.prefix + jobId]){
                             node.jobs.push(me.jobs[me.prefix + jobId]);
                             me.jobs[me.prefix + jobId].count ++;
@@ -266,6 +280,16 @@ var createObj = {
                         else {
                             node.data.jobs.splice(node.data.jobs.indexOf(jobId), 1);
                         }
+                    });*/
+                    //update
+                    node.data.jobs.forEach(function(obj){
+                        if(me.jobs[me.prefix + obj.id]){
+                            node.jobs.push({job: me.jobs[me.prefix + obj.id], serialNo: obj.serialNo});
+                            me.jobs[me.prefix + obj.id].count ++;
+                        }
+                        else {
+                            node.data.jobs.splice(node.data.jobs.indexOf(obj), 1);
+                        }
                     });
                 });
             }
@@ -315,7 +339,7 @@ var createObj = {
             if(nodes){
                 nodes.forEach(function(node){
                     node.items = new Array();
-                    node.data.items.forEach(function(itemID){
+                    /*node.data.items.forEach(function(itemID){
                         if(me.items[me.prefix + itemID]){
                             node.items.push(me.items[me.prefix + itemID]);
                             me.items[me.prefix + itemID].count ++;
@@ -323,6 +347,15 @@ var createObj = {
                         else {
                             node.data.items.splice(node.data.items.indexOf(itemID), 1);
                         }
+                    });*/
+                    node.data.items.forEach(function(obj){
+                        if(me.items[me.prefix + obj.id]){
+                            node.items.push({item: me.items[me.prefix + obj.id]});
+                            me.items[me.prefix + obj.id].count ++;
+                        }
+                        else {
+                            node.data.items.splice(node.data.items.indexOf(obj), 1);
+                        }
                     });
                 });
             }
@@ -355,13 +388,11 @@ var tools = {
         }
         return isExist;
     },
-    isRepeat: function(arr, field, newData, ref){
+    isRepeat: function(arr, field, newData, ref, classify){
         var isRepeat = false;
-        console.log(`enterIsR`);
         if(arr){
-            console.log(`enter ifArr`);
             arr.forEach(function(item){
-                if(ref === 'reference' && item.data[field] == newData){
+                if(ref === 'reference' && item[classify].data[field] == newData){
                     isRepeat = true;
                 }
                 else if(ref === 'document' && item[field] === newData){
@@ -387,16 +418,25 @@ var tools = {
         sheet.setTag(rowIdx, 1, id);
     },
 
-    getIndex: function(arr, id){
+    getIndex: function(arr, id, classify){
         var index;
         arr.forEach(function(item){
-            if(item.data.id === id){
+            if(item[classify].data.id === id){
                 index = arr.indexOf(item);
             }
         });
         return index;
     },
 
+    getObj: function(arr, id, classify){
+        for(let i=0; i<arr.length; i++){
+            if(arr[i][classify].data.id === id){
+                return arr[i];
+            }
+        }
+        return null;
+    },
+
     getNewCode: function(totalObj, classify){
         let arr;
         if(classify === 'jobs'){
@@ -462,6 +502,25 @@ var tools = {
 
     },
 
+    getSerialNo: function(arr){
+        if(arr.length > 0){
+            tools.resortSerialNo(arr);
+            return arr[arr.length - 1].serialNo + 1;
+        }
+        return 1;
+    },
+
+    resortSerialNo: function(arr){
+        function compare(){
+            return function (a, b){
+                let valA = a.serialNo,
+                    valB = b.serialNo;
+                return valA - valB;
+            }
+        }
+        arr.sort(compare());
+    },
+
     resort: function(arr, attr, isValue){
        function compare(attr){
            return function (a, b){
@@ -479,6 +538,27 @@ var tools = {
        }
        arr.sort(compare(attr));
     },
+    //update--
+    orderReshowData: function(sheet, arr, setting, classify, isResort){
+        tools.clearData(sheet);
+        if(arr.length > 0){
+            if(isResort){
+                tools.resortSerialNo(arr);
+            }
+            let length = arr.length;
+            for(let i=0; i<length; i++){
+                setting.cols.forEach(function(col, colIdx){
+                    sheet.setTag(i, colIdx, arr[i][classify].data.id);
+                    if(arr[i][classify].data[col.data.field]){
+                        sheet.getCell(i, colIdx).value(arr[i][classify].data[col.data.field]);
+                    }
+                    else {
+                        sheet.getCell(i, colIdx).value('');
+                    }
+                });
+            }
+        }
+    },
 
     reshowData: function(sheet, arr, setting, isResort){
         tools.clearData(sheet);
@@ -617,26 +697,23 @@ var tools = {
         const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
         let updateDatas = [];
         let createDatas = [];
-        let createNewData = [];
-        let createExData = [];
-        let updateNewData = [];
-        let updateExData = [];
         let nodeId = controller.tree.selected.getID();
-        uncrossedDatas.forEach(data => {
+        uncrossedDatas.forEach(obj => {
             let cnDataObj, ceDataObj, content, jobId;
-            let isExisit = tools.isExist(totalJobs.jobsArr, 'content', data, null);
-            let isRepeat = tools.isRepeat(controller.tree.selected.jobs, 'content', data, 'reference');
+            let isExisit = tools.isExist(totalJobs.jobsArr, 'content', obj.data, null);
+            let isRepeat = tools.isRepeat(controller.tree.selected.jobs, 'content', obj.data, 'reference', 'job');
             if(isExisit && !isRepeat){
                 totalJobs.jobsArr.forEach(job => {
-                   if(data === job.data.content){
+                   if(obj.data === job.data.content){
                        jobId = job.data.id;
                    }
                 });
                 ceDataObj= {
-                    newData: data,
+                    newData: obj.data,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     jobId: jobId,
+                    serialNo: obj.serialNo,
                     type: CreateExist
                 };
                 createDatas.push(ceDataObj);
@@ -648,8 +725,9 @@ var tools = {
                     //id: maxJobsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
-                    newData: data,
+                    newData: obj.data,
                     code: maxJobsNumber,
+                    serialNo: obj.serialNo,
                     type: CreateNew
                 };
                 createDatas.push(cnDataObj);
@@ -658,7 +736,7 @@ var tools = {
         crossedDatas.forEach(cData => {
             let ueObj, unObj,  newJobId;
             let isExisit = tools.isExist(totalJobs.jobsArr, 'content', cData.newData, null);
-            let isRepeat = tools.isRepeat(controller.tree.selected.jobs, 'content', cData.newData, 'reference');
+            let isRepeat = tools.isRepeat(controller.tree.selected.jobs, 'content', cData.newData, 'reference', 'job');
             if(isExisit && !isRepeat){
                 totalJobs.jobsArr.forEach(job => {
                    if(cData.newData === job.data.content){
@@ -671,6 +749,7 @@ var tools = {
                     nodeId: nodeId,
                     newJobId: newJobId,
                     orgJobId: cData.orgId,
+                    serialNo:cData.serialNo,
                     type: UpdateExist
                 };
                 updateDatas.push(ueObj);
@@ -685,6 +764,7 @@ var tools = {
                     newData: cData.newData,
                     orgJobId: cData.orgId,
                     code: maxJobsNumber,
+                    serialNo: cData.serialNo,
                     type: UpdateNew
                 };
                 updateDatas.push(unObj);
@@ -700,26 +780,23 @@ var tools = {
         const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
         let updateDatas = [];
         let createDatas = [];
-        let createNewData = [];
-        let createExData = [];
-        let updateNewData = [];
-        let updateExData = [];
         let nodeId = controller.tree.selected.getID();
-        uncrossedDatas.forEach(data => {
+        uncrossedDatas.forEach(obj => {
             let cnDataObj, ceDataObj, content,itemId;
-            let isExisit = tools.isExist(totalItems.itemsArr, 'content', data, null);
-            let isRepeat = tools.isRepeat(controller.tree.selected.items, 'content', data, 'reference');
+            let isExisit = tools.isExist(totalItems.itemsArr, 'content', obj.data, null);
+            let isRepeat = tools.isRepeat(controller.tree.selected.items, 'content', obj.data, 'reference', 'item');
             if(isExisit && !isRepeat){
                 totalItems.itemsArr.forEach(item => {
-                    if(data === item.data.content){
+                    if(obj.data === item.data.content){
                         itemId = item.data.id;
                     }
                 });
                 ceDataObj= {
-                    newData: data,
+                    newData: obj.data,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
                     itemId: itemId,
+                    serialNo: obj.serialNo,
                     type: CreateExist
                 };
                 createDatas.push(ceDataObj);
@@ -731,7 +808,8 @@ var tools = {
                    // id: maxItemsNumber,
                     billsLibId: billsLibId,
                     nodeId: nodeId,
-                    newData: data,
+                    newData: obj.data,
+                    serialNo: obj.serialNo,
                     code: maxItemsNumber,
                     type: CreateNew
                 };
@@ -742,7 +820,7 @@ var tools = {
         crossedDatas.forEach(cData => {
             let ueObj, unObj,  newItemId;
             let isExisit = tools.isExist(totalItems.itemsArr, 'content', cData.newData, null);
-            let isRepeat = tools.isRepeat(controller.tree.selected.items, 'content', cData.newData, 'reference');
+            let isRepeat = tools.isRepeat(controller.tree.selected.items, 'content', cData.newData, 'reference', 'item');
             if(isExisit && !isRepeat){
                 totalItems.itemsArr.forEach(item => {
                     if(cData.newData === item.data.content){
@@ -755,6 +833,7 @@ var tools = {
                     nodeId: nodeId,
                     newItemId: newItemId,
                     orgItemId: cData.orgId,
+                    serialNo: cData.serialNo,
                     type: UpdateExist
                 };
                 updateDatas.push(ueObj);
@@ -769,6 +848,7 @@ var tools = {
                     newData: cData.newData,
                     orgItemId: cData.orgId,
                     code: maxItemsNumber,
+                    serialNo: cData.serialNo,
                     type: UpdateNew
                 };
                 updateDatas.push(unObj);
@@ -1036,101 +1116,104 @@ let pasteController = {
                 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);
+                            let serialNo = datas[i].serialNo;
+                            let index = tools.getIndex(controller.tree.selected.jobs, datas[i].orgJobId, 'job');
                             job.count ++;
                             controller.tree.selected.jobs.splice(index, 1);
-                            controller.tree.selected.jobs.splice(index, 0, job);
+                            controller.tree.selected.jobs.splice(index, 0, {job: job, serialNo: serialNo});
                         }
                     });
                 }
                 if(datas[i].type === UpdateNew){
                     let newJobData, newJob;
-                    let newJobId = datas[i].newJobId;
+                    let newJobId = datas[i].newJobId, serialNo = datas[i].serialNo;
                     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);
+                    var index = tools.getIndex(controller.tree.selected.jobs, datas[i].orgJobId, 'job');
                     controller.tree.selected.jobs.splice(index, 1);
-                    controller.tree.selected.jobs.splice(index, 0, newJob);
+                    controller.tree.selected.jobs.splice(index, 0, {job: newJob, serialNo: serialNo});
                 }
                 if(datas[i].type === CreateExist){
+                    let serialNo = datas[i].serialNo;
                     totalJobs.jobsArr.forEach(job => {
                         if(job.data.content === datas[i].newData){
                             job.count ++;
-                            controller.tree.selected.jobs.push(job);
+                            controller.tree.selected.jobs.push({job: job, serialNo: serialNo});
                         }
 
                     });
                 }
                 if(datas[i].type === CreateNew){
-                    let newJobId = datas[i].newJobId;
+                    let newJobId = datas[i].newJobId, serialNo = datas[i].serialNo;
                     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);
+                    controller.tree.selected.jobs.push({job: newJob, serialNo: serialNo});
                 }
             }
         }
         //resort&reshow
-        tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+        tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
         sheetDatas = tools.getsheetDatas(sheet);
 
     },
     frontItemsRelOperator: function(sheet, setting, controller, totalItems, datas){
         const UpdateExist = 'updateExist', UpdateNew = 'updateNew', CreateExist = 'createExist', CreateNew = 'createNew';
-        //let updateDatas = pasteDatas.updateDatas, createDatas = pasteDatas.createDatas;
         if(datas.length > 0){
             for(let i =0; i<datas.length; i++){
                 if(datas[i].type === UpdateExist){
+                    let serialNo = datas[i].serialNo;
                     totalItems.itemsArr.forEach(item => {
                         if(item.data.content === datas[i].newData){
-                            let index = tools.getIndex(controller.tree.selected.items, datas[i].orgItemId);
+                            let index = tools.getIndex(controller.tree.selected.items, datas[i].orgItemId, 'item');
                             item.count ++;
                             controller.tree.selected.items.splice(index, 1);
-                            controller.tree.selected.items.splice(index, 0, item);
+                            controller.tree.selected.items.splice(index, 0, {item: item, serialNo: serialNo});
                         }
                     });
                 }
                 if(datas[i].type === UpdateNew){
                     let newItemData, newItem;
-                    let newItemId = datas[i].newItemId;
+                    let newItemId = datas[i].newItemId, serialNo = datas[i].serialNo;
                     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);
+                    var index = tools.getIndex(controller.tree.selected.items, datas[i].orgItemId, 'item');
                     controller.tree.selected.items.splice(index, 1);
-                    controller.tree.selected.items.splice(index, 0, newItem);
+                    controller.tree.selected.items.splice(index, 0, {item: newItem, serialNo: serialNo});
                 }
                 if(datas[i].type === CreateExist){
+                    let serialNo = datas[i].serialNo;
                     totalItems.itemsArr.forEach(item => {
                         if(item.data.content === datas[i].newData){
                             item.count ++;
-                            controller.tree.selected.jobs.push(item);
+                            controller.tree.selected.items.push({item: item, serialNo: serialNo});
                         }
 
                     });
                 }
                 if(datas[i].type === CreateNew){
-                    let newItemId = datas[i].newItemId;
+                    let newItemId = datas[i].newItemId, serialNo = datas[i].serialNo;
                     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);
+                    controller.tree.selected.items.push({item: newItem, serialNo: serialNo});
                 }
             }
         }
         //resort&reshow
-        tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+        tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
         sheetItemsDatas = tools.getsheetDatas(sheet);
 
     },
@@ -1274,7 +1357,7 @@ var jobsController = {
             });
             if (controller.tree.selected) {
                 var isExist = tools.isExist(totalJobs.jobsArr, field, newData, orgJobData);
-                var isRepeat = tools.isRepeat(controller.tree.selected.jobs, field ,newData, 'reference');
+                var isRepeat = tools.isRepeat(controller.tree.selected.jobs, field ,newData, 'reference', 'job');
                 //create
                 if(!id && newData && !isRepeat){
                         if(isExist){
@@ -1308,16 +1391,21 @@ var jobsController = {
     createNew: function(sheet, controller, totalJobs, field, newData, args, setting){
         if(field === 'content'){
             maxJobsNumber++;
+            //update--
+            let serialNo = tools.getSerialNo(controller.tree.selected.jobs);
+            console.log(`serialNo: ${serialNo}`);
+            //--
             console.log(`billsLibId: ${billsLibId} billsId: ${controller.tree.selected.getID()} content: ${newData} code: ${maxJobsNumber}`);
-            jobsAjax.edCreateJob(billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, function(newJobId){
+            jobsAjax.edCreateJob(billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, serialNo, function(newJobId){
                 var newJobData, newJob;
                 newJobData = {id: newJobId, content: newData, code: maxJobsNumber};
                 newJob = createObj.newJob(newJobData);
                 newJob.count = 1;
                 totalJobs.jobs[totalJobs.prefix + newJobId] = newJob;
                 totalJobs.jobsArr.push(newJob);
-                controller.tree.selected.jobs.push(newJob);
-                tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                controller.tree.selected.jobs.push({job: newJob, serialNo: serialNo});//update--
+                //tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true)//update--
             });
         }
         else {
@@ -1328,16 +1416,22 @@ var jobsController = {
     createExist: function(sheet, controller, totalJobs, field, newData, args, setting){
         totalJobs.jobsArr.forEach(function(job){
             if(field === 'content'&& newData === job.data.content){
-                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'jobs', job.data.id);
+                let serialNo = tools.getSerialNo(controller.tree.selected.jobs);//update--
+                //billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'jobs', job.data.id);//update--
+                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'jobs', {id: job.data.id, serialNo: serialNo});//update--
                 job.count++;
-                controller.tree.selected.jobs.push(job);
-                tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+               // controller.tree.selected.jobs.push(job);//update--
+                controller.tree.selected.jobs.push({job: job, serialNo: serialNo});//update--
+                //tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                tools.orderReshowData(sheet,controller.tree.selected.jobs, setting, 'job', true);
             }
             else if(field == 'code' && newData == job.data.code){
-                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'jobs', job.data.id);
+                let serialNo = tools.getSerialNo(controller.tree.selected.jobs);//update--
+                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'jobs', {id: job.data.id, serialNo: serialNo});//update--
                 job.count++;
-                controller.tree.selected.jobs.push(job);
-                tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                controller.tree.selected.jobs.push({job: job, serialNo: serialNo});//update--
+               // tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
             }
         });
     },
@@ -1345,37 +1439,46 @@ var jobsController = {
         if(isExist){
             totalJobs.jobsArr.forEach(function(job){
                 if(field == 'code' && job.data[field] == newData){
-                    var index = tools.getIndex(controller.tree.selected.jobs, id);
+                    let serialNo = tools.getObj(controller.tree.selected.jobs, id, 'job').serialNo;//update--add
+                    let index = tools.getIndex(controller.tree.selected.jobs, id, 'job');//update-- getIndex
                     job.count++;
                     controller.tree.selected.jobs.splice(index, 1);
-                    controller.tree.selected.jobs.splice(index, 0, job);
+                    //controller.tree.selected.jobs.splice(index, 0, job);//update--
+                    controller.tree.selected.jobs.splice(index, 0, {job: job, serialNo: serialNo});//update--
                     billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, job.data.id, 'update', 'jobs');
-                    tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                    //tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                    tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
                 }
                 if(field === 'content' && job.data[field] === newData){
-                    var index = tools.getIndex(controller.tree.selected.jobs, id);
+                    let serialNo = tools.getObj(controller.tree.selected.jobs, id, 'job').serialNo;//update--add
+                    let index = tools.getIndex(controller.tree.selected.jobs, id, 'job');
                     job.count++;
                     controller.tree.selected.jobs.splice(index, 1);
-                    controller.tree.selected.jobs.splice(index, 0, job);
+                    controller.tree.selected.jobs.splice(index, 0, {job: job, serialNo: serialNo});//update--
                     billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, job.data.id, 'update', 'jobs');
-                    tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                   // tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                    tools.orderReshowData(sheet,controller.tree.selected.jobs, setting, 'job', true);
                 }
             });
         }
         else{
             if(field === 'content'){
                 maxJobsNumber++;
-                jobsAjax.edUpdateJob(billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, id, function(newJobId){
+                //let serialNo = tools.getSerialNo(controller.tree.selected.jobs);//update--
+                let serialNo = tools.getObj(controller.tree.selected.jobs, id, 'job').serialNo;
+                console.log(`upNe: serialNo: ${serialNo}`);
+                jobsAjax.edUpdateJob(billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, id, function(newJobId){//update--
                     var newJobData, newJob;
                     newJobData = {id: newJobId, content: newData, code: maxJobsNumber};
                     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, id);
+                    var index = tools.getIndex(controller.tree.selected.jobs, id, 'job');
                     controller.tree.selected.jobs.splice(index, 1);
-                    controller.tree.selected.jobs.splice(index, 0, newJob);
-                    tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);
+                    controller.tree.selected.jobs.splice(index, 0, {job: newJob, serialNo: serialNo});//update--
+                    //tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
+                    tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);//update--
                 });
             }
             else {
@@ -1407,7 +1510,7 @@ var itemsController = {
             });
             if (controller.tree.selected) {
                 var isExist = tools.isExist(totalItems.itemsArr, field, newData, orgItemData);
-                var isRepeat = tools.isRepeat(controller.tree.selected.items, field ,newData, 'reference');
+                var isRepeat = tools.isRepeat(controller.tree.selected.items, field ,newData, 'reference', 'item');
                 //create
                 if(!id && newData && !isRepeat){
                     if(isExist){
@@ -1441,16 +1544,18 @@ var itemsController = {
     createNew: function(sheet, controller, totalItems, field, newData, args, setting){
         if(field === 'content'){
             maxItemsNumber++;
+            let serialNo = tools.getSerialNo(controller.tree.selected.items);
             console.log(`billsLibId: ${billsLibId} billsId: ${controller.tree.selected.getID()} content: ${newData} code: ${maxItemsNumber}`);
-            itemsAjax.edCreateItem(billsLibId, controller.tree.selected.getID(), newData, maxItemsNumber, function(newItemId){
+            itemsAjax.edCreateItem(billsLibId, controller.tree.selected.getID(), newData, maxItemsNumber, serialNo, function(newItemId){
                 let newItemData, newItem;
                 newItemData = {id: newItemId, content: newData, code: maxItemsNumber};
                 newItem = createObj.newItem(newItemData);
                 newItem.count = 1;
                 totalItems.items[totalItems.prefix + newItemId] = newItem;
                 totalItems.itemsArr.push(newItem);
-                controller.tree.selected.items.push(newItem);
-                tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                controller.tree.selected.items.push({item: newItem, serialNo: serialNo});
+                //tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
             });
         }
         else {
@@ -1466,20 +1571,19 @@ var itemsController = {
 
     createExist: function(sheet, controller, totalItems, field, newData, args, setting){
         totalItems.itemsArr.forEach(function(item){
-            //todo:整合代码
             if(field === 'content'&& newData === item.data.content){
-                //isExist = true;
-                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'items', item.data.id);
+                let serialNo = tools.getSerialNo(controller.tree.selected.items);
+                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'items', {id: item.data.id, serialNo: serialNo});
                 item.count++;
-                controller.tree.selected.items.push(item);
-                tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                controller.tree.selected.items.push({item: item, serialNo: serialNo});
+                tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
             }
             else if(field == 'code' && newData == item.data.code){
-                //isExist = true;
-                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'items', item.data.id);
+                let serialNo = tools.getSerialNo(controller.tree.selected.items);
+                billsAjax.updateBills(billsLibId, controller.tree.selected.getID(), 'items', {id: item.data.id, serialNo: serialNo});
                 item.count++;
-                controller.tree.selected.items.push(item);
-                tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                controller.tree.selected.items.push({item: item, serialNo: serialNo});
+                tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
             }
         });
     },
@@ -1488,26 +1592,29 @@ var itemsController = {
         if(isExist){
             totalItems.itemsArr.forEach(function(item){
                 if(field == 'code' && item.data[field] == newData){
-                    var index = tools.getIndex(controller.tree.selected.items, id);
+                    let serialNo = tools.getObj(controller.tree.selected.items, id, 'item').serialNo;
+                    let index = tools.getIndex(controller.tree.selected.items, id, 'item');
                     item.count++;
                     controller.tree.selected.items.splice(index, 1);
-                    controller.tree.selected.items.splice(index, 0, item);
+                    controller.tree.selected.items.splice(index, 0, {item: item, serialNo: serialNo});
                     billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
-                    tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                    tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 }
                 if(field === 'content' && item.data[field] === newData){
-                    var index = tools.getIndex(controller.tree.selected.items, id);
+                    let serialNo = tools.getObj(controller.tree.selected.items, id, 'item').serialNo;
+                    let index = tools.getIndex(controller.tree.selected.items, id, 'item');
                     item.count++;
                     controller.tree.selected.items.splice(index, 1);
-                    controller.tree.selected.items.splice(index, 0, item);
+                    controller.tree.selected.items.splice(index, 0, {item: item, serialNo: serialNo});
                     billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
-                    tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                    tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 }
             });
         }
         else{
             if(field === 'content'){
                 maxItemsNumber++;
+                let serialNo = tools.getObj(controller.tree.selected.items, id, 'item').serialNo;
                 itemsAjax.edUpdateItem(billsLibId, controller.tree.selected.getID(), newData, maxItemsNumber, id, function(newItemId){
                     var newItemData, newItem;
                     newItemData = {id: newItemId, content: newData, code: maxItemsNumber};
@@ -1515,10 +1622,10 @@ var itemsController = {
                     newItem.count = 1;
                     totalItems.items[totalItems.prefix + newItemId] = newItem;
                     totalItems.itemsArr.push(newItem);
-                    var index = tools.getIndex(controller.tree.selected.items, id);
+                    var index = tools.getIndex(controller.tree.selected.items, id, 'item');
                     controller.tree.selected.items.splice(index, 1);
-                    controller.tree.selected.items.splice(index, 0, newItem);
-                    tools.reshowData(sheet, controller.tree.selected.items, setting, true);
+                    controller.tree.selected.items.splice(index, 0, {item: newItem, serialNo: serialNo});
+                    tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 });
             }
             else {
@@ -1820,8 +1927,9 @@ var totalItemsController = {
 var rechargeController = {
     updateRechar: function(selectedNode, newData){
         if(selectedNode){
-            var  updateIds = [];
-            var getupdateIds = function(node){
+            var  updateId = selectedNode.getID();
+            selectedNode.data.recharge = newData;
+            /*var getupdateIds = function(node){
                 updateIds.push(node.getID());
                 node.data.recharge = newData;
                 if(node.children.length > 0){
@@ -1830,8 +1938,8 @@ var rechargeController = {
                     });
                 }
             }
-            getupdateIds(tools.getRoot(selectedNode));
-            billsAjax.updateRecharge(billsLibId, updateIds, newData);
+            getupdateIds(tools.getRoot(selectedNode));*/
+            billsAjax.updateRecharge(billsLibId, updateId, newData);
         }
         else {
             $('exampleTextarea').val('');

+ 1 - 1
web/maintain/bills_lib/scripts/set_sheets.js

@@ -12,7 +12,7 @@ var setSheet = {
         spread.options.allowExtendPasteRange = true;
         spread.options.allowCopyPasteExcelStyle = false;
         sheet.showRowOutline(false);
-        sheet.defaults.rowHeight = 30;
+       // sheet.defaults.rowHeight = 30;
         setting.cols.forEach(function(col, colIdx){
             sheet.getRange(-1,colIdx,-1,1, GC.Spread.Sheets.SheetArea.viewport).hAlign(GC.Spread.Sheets.HorizontalAlign.left);
             sheet.getRange(-1,colIdx,-1,1, GC.Spread.Sheets.SheetArea.viewport).vAlign(GC.Spread.Sheets.VerticalAlign.center);