Browse Source

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

TonyKang 7 years ago
parent
commit
c0f7a2a448
38 changed files with 2405 additions and 575 deletions
  1. 2 3
      modules/bills_lib/controllers/bills_lib_controllers.js
  2. 6 3
      modules/bills_lib/controllers/views_permissionController.js
  3. 1318 349
      modules/bills_lib/models/bills_lib_interfaces.js
  4. 10 10
      modules/bills_lib/models/bills_lib_schemas.js
  5. 26 2
      modules/ration_repository/controllers/coe_controller.js
  6. 78 1
      modules/ration_repository/controllers/ration_controller.js
  7. 67 2
      modules/ration_repository/controllers/ration_repository_controller.js
  8. 49 1
      modules/ration_repository/controllers/ration_section_tree_controller.js
  9. 95 1
      modules/ration_repository/controllers/repository_glj_controller.js
  10. 37 0
      modules/ration_repository/controllers/repository_views_controller.js
  11. 28 1
      modules/ration_repository/controllers/search_controller.js
  12. 99 28
      modules/ration_repository/models/glj_repository.js
  13. 47 11
      modules/ration_repository/models/ration_item.js
  14. 62 15
      modules/ration_repository/models/ration_section_tree.js
  15. 108 10
      modules/ration_repository/models/repository_map.js
  16. 63 1
      modules/ration_repository/routes/ration_rep_routes.js
  17. 37 0
      modules/templates/controllers/bills_template_controller.js
  18. 87 0
      modules/templates/models/bills_template.js
  19. 49 0
      modules/templates/routes/bills_template_router.js
  20. 5 6
      web/maintain/bills_lib/html/main.html
  21. 2 1
      web/maintain/bills_lib/html/neirong.html
  22. 4 3
      web/maintain/bills_lib/html/qingdan.html
  23. 3 2
      web/maintain/bills_lib/html/tezheng.html
  24. 61 63
      web/maintain/bills_lib/scripts/bills_lib_ajax.js
  25. 33 34
      web/maintain/bills_lib/scripts/db_controller.js
  26. 4 4
      web/maintain/bills_lib/scripts/set_sheets.js
  27. 1 7
      web/maintain/ration_repository/dinge.html
  28. 1 0
      web/maintain/ration_repository/gongliao.html
  29. 6 2
      web/maintain/ration_repository/js/main.js
  30. 1 1
      web/maintain/ration_repository/js/ration.js
  31. 7 5
      web/maintain/ration_repository/js/repository_glj.js
  32. 3 3
      web/maintain/ration_repository/js/section_tree.js
  33. 1 1
      web/maintain/ration_repository/main.html
  34. 0 0
      web/maintain/templates/css/main.css
  35. 4 4
      web/maintain/report/css/templates/html/bills.html
  36. 1 1
      web/maintain/report/css/templates/js/bills.js
  37. 0 0
      web/maintain/templates/js/global.js
  38. 0 0
      web/maintain/templates/js/tp_bills_setting.js

+ 2 - 3
modules/bills_lib/controllers/bills_lib_controllers.js

@@ -30,8 +30,7 @@ module.exports = {
         });
     },
     getStdBillsLib: function(req, res){
-        let data = JSON.parse(req.body.data);
-        billsLibDao.getStdBillsLib(data, function(err, message, stdBillsLib){
+        billsLibDao.getStdBillsLib(function(err, message, stdBillsLib){
             callback(req, res, err, message, stdBillsLib );
         });
     },
@@ -43,7 +42,7 @@ module.exports = {
     },
     deleteStdBillsLib: function(req, res){
         let data = JSON.parse(req.body.data);
-        billsLibDao.deleteStdBillsLib(data.billsLibId, function(err, message){
+        billsLibDao.deleteStdBillsLib(data, function(err, message){
             callback(req, res, err, message, null);
         });
     },

+ 6 - 3
modules/bills_lib/controllers/views_permissionController.js

@@ -11,13 +11,16 @@ class viewsPermContr extends baseController{
                 userID: req.session.managerData.userID});
     }
     redirectStdBills(req, res){
-        res.render("maintain/bills_lib/html/qingdan.html");
+        res.render("maintain/bills_lib/html/qingdan.html",
+            {userAccount: req.session.managerData.username});
     }
     redirectStdJobs(req, res){
-        res.render('maintain/bills_lib/html/neirong.html');
+        res.render('maintain/bills_lib/html/neirong.html',
+            {userAccount: req.session.managerData.username});
     }
     redirectStdItems(req, res){
-        res.render('maintain/bills_lib/html/tezheng.html');
+        res.render('maintain/bills_lib/html/tezheng.html',
+            {userAccount: req.session.managerData.username});
     }
 }
 

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


+ 10 - 10
modules/bills_lib/models/bills_lib_schemas.js

@@ -1,16 +1,16 @@
 let mongoose = require('mongoose');
 
 let stdBillsLibSchema =mongoose.Schema({
-    userId: String,
-    creator: String,
-    lastOperator: String,
-    billsLibId: Number,
-    billsLibName: String,
-    lastOperateDate: Date,
-    createDate: Date,
-    localeType: Number,
-    deleted: Boolean
-},
+        creator: String,
+        createDate: String,
+        recentOpr: [],
+       /* lastOperator: String,
+        lastOperateDate: Date,*/
+        billsLibId: Number,
+        billsLibName: String,
+        localeType: Number,
+        deleted: Boolean
+    },
     {versionKey: false}
 );
 

+ 26 - 2
modules/ration_repository/controllers/coe_controller.js

@@ -2,11 +2,35 @@
  * Created by CSL on 2017/5/19.
  */
 var coeList = require("../models/coe");
-
+import BaseController from "../../common/base/base_controller";
 var callback = function(req,res,err,message, data){
     res.json({error: err, message: message, data: data});
 }
 
+class CoeListController extends BaseController{
+    getCoeList(req,res){
+        coeList.getCoesByLibID(req.body.libID, function(err,data){
+            callback(req, res, err, 'Get coes', data);
+        });
+    }
+
+    saveCoeList(req, res) {
+        coeList.saveToCoeList(JSON.parse(req.body.data), function(isErr, msg, data){
+            callback(req, res, isErr, msg, data);
+        });
+    }
+
+    getCoeItemsByIDs(req,res){
+        //console.log('传入: '+JSON.stringify(JSON.parse(req.body.data)));
+        coeList.getCoeItemsByIDs(JSON.parse(req.body.data), function(err,data){
+            //console.log('返回: '+JSON.stringify(data));
+            callback(req, res, err, 'Get coe', data);
+        });
+    }
+}
+
+export default CoeListController;
+/*
 module.exports ={
     getCoeList: function(req,res){
         coeList.getCoesByLibID(req.body.libID, function(err,data){
@@ -28,4 +52,4 @@ module.exports ={
         });
     }
 
-}
+}*/

+ 78 - 1
modules/ration_repository/controllers/ration_controller.js

@@ -3,10 +3,87 @@
  */
 
 var rationItem = require('../models/ration_item');
+import BaseController from "../../common/base/base_controller";
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
 
+class RationController extends BaseController{
+    getRationItemsBySection(req, res){
+        var sectionId = req.body.sectionID;
+        rationItem.getRationItemsBySection(sectionId, function(err, message, rst){
+            if (err) {
+                callback(req, res, err, message, null);
+            } else {
+                callback(req, res, err, message, rst);
+            }
+        });
+    }
+    mixUpdateRationItems(req, res){
+        var sectionId = req.body.sectionID,
+            rationLibId = req.body.rationLibId,
+            lastOpr = req.body.lastOpr,
+            updateItems = JSON.parse(req.body.updateItems),
+            addItems = JSON.parse(req.body.addItems),
+            removeIds = JSON.parse(req.body.removeIds);
+        rationItem.mixUpdateRationItems(rationLibId, lastOpr, sectionId, updateItems, addItems, removeIds, function(err, message, rst){
+            if (err) {
+                callback(req, res, err, message, null);
+            } else {
+                callback(req, res, err, message, rst);
+            }
+        });
+    }
+    removeRationItems(req, res){
+        var rIds = JSON.parse(req.body.updateItems);
+        if (rIds && rIds.length > 0) {
+            rationItem.removeRationItems(rIds, function(err, message, rst){
+                if (err) {
+                    callback(req, res, err, message, null);
+                } else {
+                    callback(req, res, err, message, rst);
+                }
+            });
+        }
+    }
+    updateRationBasePrc (req, res) {
+        let data = JSON.parse(req.body.data);
+        rationItem.updateRationBasePrc(data, function (err, message) {
+            if(err){
+                callback(req, res, err, message, null);
+            }
+            else{
+                callback(req, res, err, message, null);
+            }
+        })
+    }
+    getRationGljIds (req, res) {
+        let data = JSON.parse(req.body.data);
+        rationItem.getRationGljIds(data, function (err, message, ids) {
+            if(err){
+                callback(req, res, err, message, null);
+            }
+            else{
+                callback(req, res, err, message, ids);
+            }
+        })
+    }
+    getRationsCodes (req, res) {
+        let data = JSON.parse(req.body.data);
+        rationItem.getRationsCodes(data, function (err, message, codes) {
+            if(err){
+                callback(req, res, err, message, null);
+            }
+            else{
+                callback(req, res, err, message, codes);
+            }
+        })
+    }
+}
+
+export default RationController;
+
+/*
 module.exports = {
     getRationItemsBySection: function(req, res){
         var sectionId = req.body.sectionID;
@@ -77,4 +154,4 @@ module.exports = {
             }
         })
     }
-}
+}*/

+ 67 - 2
modules/ration_repository/controllers/ration_repository_controller.js

@@ -2,11 +2,76 @@
  * Created by Tony on 2017/4/20.
  */
 var rationRepository = require("../models/repository_map");
-
+import baseController from "../../common/base/base_controller";
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
 
+class RationRepositoryController extends baseController{
+    addRationRepository(req,res){
+        var rationObj = JSON.parse(req.body.rationRepObj);
+        rationRepository.addRationRepository(rationObj,function(err,data){
+            if (data) {
+                callback(req, res, err, "has data", data);
+            } else {
+                callback(req, res, err, "no data", null);
+            }
+        })
+    }
+    getDisPlayRationLibs(req, res){
+        rationRepository.getDisplayRationLibs(function(err, data){
+            if (data) {
+                callback(req, res, err, "has data",data);
+            } else {
+                callback(req, res, err, "no data", null);
+            }
+        });
+    }
+    getRealLibName(req,res){
+        var libName = req.body.rationName;
+        rationRepository.getRealLibName(libName,function(err,data){
+            if (data) {
+                callback(req, res, err, "has data", data);
+            } else {
+                callback(req, res, err, "no data", null);
+            }
+        })
+    }
+    getLibIDByName(req,res){
+        rationRepository.getLibIDByName(req.body.libName, function(err,data){
+            if (data) {
+                callback(req, res, err, "has ID", data);
+            } else {
+                callback(req, res, err, "no ID", null);
+            }
+        })
+    }
+    deleteRationLib(req,res){
+        var rationName = req.body.rationName, lastOperator = req.body.lastOperator;
+        rationRepository.deleteRationLib(rationName, lastOperator, function(err,data){
+            if (data) {
+                callback(req, res, err, "has data", data);
+            } else {
+                callback(req, res, err, "no data", null);
+            }
+        })
+    }
+    updateRationRepositoryName(req, res) {
+        var orgName = req.body.rationName;
+        var newName = req.body.newName;
+        var lastOperator = req.body.lastOperator;
+        rationRepository.updateName(orgName, newName, lastOperator, function(err, data){
+            if (data) {
+                callback(req, res, err, "has data", data);
+            } else {
+                callback(req, res, err, "no data", null);
+            }
+        });
+    }
+}
+
+export default RationRepositoryController;
+/*
 module.exports = {
     addRationRepository:function(req,res){
         var rationObj = JSON.parse(req.body.rationRepObj);
@@ -67,4 +132,4 @@ module.exports = {
             }
         });
     }
-}
+}*/

+ 49 - 1
modules/ration_repository/controllers/ration_section_tree_controller.js

@@ -3,9 +3,57 @@
  */
 
 var rationChapterTreeData = require('../models/ration_section_tree');
+import BaseController from "../../common/base/base_controller";
 var callback = function(req,res,err,message, data){
     res.json({error: err, message: message, data: data});
 }
+
+class RationChapterTreeController extends BaseController{
+    getRationChapterTree(req,res){
+        var rationLibId = req.body.rationLibId;
+        var repId = req.body.rationRepositoryId;
+        if (rationLibId) {
+            rationChapterTreeData.getRationChapterTree(rationLibId,function(err,data){
+                callback(req,res,err, "", data);
+            })
+        } else if (repId) {
+            rationChapterTreeData.getRationChapterTreeByRepId(repId,function(err,data){
+                callback(req,res,err,"", data)
+            })
+        }
+    }
+    createNewNode(req, res){
+        var libId = req.body.rationLibId;
+        var lastNodeId = req.body.lastNodeId;
+        let lastOpr = req.body.lastOpr;
+        var nodeData = JSON.parse(req.body.rawNodeData);
+        rationChapterTreeData.createNewNode(lastOpr, libId, lastNodeId, nodeData, function(err,data){
+            callback(req,res,err,"", data)
+        });
+    }
+    updateNodes(req, res) {
+        var nodes = JSON.parse(req.body.nodes);
+        let lastOpr = req.body.lastOpr;
+        let repId = req.body.repId;
+        rationChapterTreeData.updateNodes(repId, lastOpr, nodes, function(err,results){
+            callback(req,res, err, "", results)
+        });
+    }
+    deleteNodes(req, res) {
+        var nodes = JSON.parse(req.body.nodes);
+        var preNodeId = req.body.preNodeId;
+        var preNodeNextId = req.body.preNodeNextId;
+        let repId = req.body.repId;
+        let lastOpr = req.body.lastOpr;
+        rationChapterTreeData.removeNodes(repId, lastOpr, nodes, preNodeId, preNodeNextId, function(err,results){
+            callback(req,res, err, "", results)
+        });
+    }
+}
+
+export default RationChapterTreeController;
+
+/*
 module.exports ={
     getRationChapterTree: function(req,res){
         var rationLibId = req.body.rationLibId;
@@ -42,4 +90,4 @@ module.exports ={
             callback(req,res, err, "", results)
         });
     }
-}
+}*/

+ 95 - 1
modules/ration_repository/controllers/repository_glj_controller.js

@@ -3,10 +3,104 @@
  */
 var gljRepository = require("../models/glj_repository");
 let stdgljutil = require("../../../public/cache/std_glj_type_util");
+import BaseController from "../../common/base/base_controller";
 
 var callback = function(req,res,err,message, data){
     res.json({error: err, message: message, data: data});
 }
+
+class RepositoryGljController extends BaseController{
+    getGljDistType (req, res) {
+        let gljDistTypeCache = stdgljutil.getStdGljTypeCacheObj().toArray();
+        if(gljDistTypeCache.length >0 ){
+            callback(req, res, null, '', gljDistTypeCache);
+        }
+        else {
+            callback(req, res, 1, 'Error', null);
+        }
+    }
+    getGljTree(req,res){
+        var rationLibId = req.body.rationLibId;
+        gljRepository.getGljTypes(rationLibId,function(err,data){
+            callback(req,res,err, 'Get Tree', data)
+        });
+    }
+    createNewGljTypeNode(req, res) {
+        var repId = req.body.repositoryId;
+        var lastNodeId = req.body.lastNodeId;
+        let lastOpr = req.body.lastOpr;
+        var nodeData = JSON.parse(req.body.rawNodeData);
+        gljRepository.createNewNode(repId, lastOpr, lastNodeId, nodeData, function(err, msg, data){
+            callback(req,res,err,msg, data)
+        });
+    }
+    updateGljNodes(req, res) {
+        var nodes = JSON.parse(req.body.nodes);
+        let repId = req.body.repId,
+            lastOpr = req.body.lastOpr;
+        gljRepository.updateNodes(repId, lastOpr, nodes, function(err,results){
+            callback(req,res, err, results)
+        });
+    }
+    deleteGljNodes(req, res) {
+        var nodes = JSON.parse(req.body.nodes);
+        var preNodeId = req.body.preNodeId;
+        var preNodeNextId = req.body.preNodeNextId;
+        let repId = req.body.repId, lastOpr = req.body.lastOpr;
+        gljRepository.removeNodes(repId, lastOpr, nodes, preNodeId, preNodeNextId, function(err,results){
+            callback(req,res, err, results)
+        });
+    }
+    getGljItems(req, res) {
+        var repId = req.body.repositoryId,
+            gljType = req.body.type,
+            gljCode = req.body.code;
+        if (gljCode) {
+            gljRepository.getGljItem(repId, gljCode, function(err, data){
+                callback(req,res,err,'Get Items', data)
+            });
+        } else if (gljType) {
+            gljRepository.getGljItemByType(repId, gljType, function(err, data){
+                callback(req,res,err,'Get Types', data)
+            });
+        } else {
+            gljRepository.getGljItemsByRep(repId, function(err, data){
+                callback(req,res,err,'Get Items',data)
+            });
+        }
+    }
+    getGljItemsByIds(req, res) {
+        var gljIds = JSON.parse(req.body.gljIds);
+        gljRepository.getGljItems(gljIds, function(err, data){
+            callback(req,res,err,'Get Items',data)
+        });
+    }
+    getGljItemsByCodes(req, res) {
+        var gljCodes = JSON.parse(req.body.gljCodes),
+            repId = req.body.repId;
+        gljRepository.getGljItemsByCode(repId, gljCodes, function(err, data){
+            callback(req,res,err,'Get Items',data)
+        });
+    }
+    mixUpdateGljItems(req, res){
+        var repId = req.body.repositoryId,
+            updateItems = JSON.parse(req.body.updateItems),
+            addItems = JSON.parse(req.body.addItems),
+            removeIds = JSON.parse(req.body.removeIds),
+            lastOpr = req.body.lastOpr;
+        gljRepository.mixUpdateGljItems(repId, lastOpr, updateItems, addItems, removeIds, function(err, message, rst){
+            if (err) {
+                callback(req, res, err, message, null);
+            } else {
+                callback(req, res, err, message, rst);
+            }
+        });
+    }
+}
+
+export default RepositoryGljController;
+
+/*
 module.exports ={
     getGljDistType: function (req, res) {
         let gljDistTypeCache = stdgljutil.getStdGljTypeCacheObj().toArray();
@@ -89,4 +183,4 @@ module.exports ={
             }
         });
     }
-}
+}*/

+ 37 - 0
modules/ration_repository/controllers/repository_views_controller.js

@@ -0,0 +1,37 @@
+/**
+ * Created by Zhong on 2017/8/3.
+ */
+import BaseController from "../../common/base/base_controller";
+
+class ViewsController extends BaseController{
+    redirectMain(req, res){
+        res.render('maintain/ration_repository/main.html',
+            {
+                userAccount: req.session.managerData.username,
+                userID: req.session.managerData.userID
+            });
+    }
+    redirectRation(req, res){
+        res.render('maintain/ration_repository/dinge.html',
+            {
+                userAccount: req.session.managerData.username,
+                userID: req.session.managerData.userID
+            });
+    }
+    redirectGlj(req, res){
+        res.render('maintain/ration_repository/gongliao.html',
+            {
+                userAccount: req.session.managerData.username,
+                userID: req.session.managerData.userID
+            });
+    }
+    redirectCoeList(req, res){
+        res.render('maintain/ration_repository/fuzhu.html',
+            {
+                userAccount: req.session.managerData.username,
+                userID: req.session.managerData.userID
+            });
+    }
+}
+
+export default ViewsController;

+ 28 - 1
modules/ration_repository/controllers/search_controller.js

@@ -2,10 +2,37 @@
  * Created by Mai on 2017/6/5.
  */
 var rationItem = require('../models/ration_item');
+import BaseController from "../../common/base/base_controller";
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
 
+class SearchController extends BaseController{
+    getRationItem (req, res) {
+        var rId = req.body.rationLibId, code = req.body.code;
+        var rationData = {}
+        rationItem.getRationItem(rId, code).then(function (result) {
+            rationData = result._doc;
+            callback(req, res, null, '', rationData);
+        }).catch(function (err, message) {
+            callback(req, res, err, message, null);
+        })
+    }
+    findRation (req, res) {
+        var rId = req.body.rationLibId, keyword = req.body.keyword;
+        rationItem.findRation(rId, keyword, function (err, message, rst) {
+            if (err) {
+                callback(req, res, err, message, null);
+            } else {
+                callback(req, res, 0, '', rst);
+            }
+        });
+    }
+}
+
+export default SearchController;
+
+/*
 module.exports = {
     getRationItem: function (req, res) {
         var rId = req.body.rationLibId, code = req.body.code;
@@ -27,4 +54,4 @@ module.exports = {
             }
         });
     }
-};
+};*/

+ 99 - 28
modules/ration_repository/models/glj_repository.js

@@ -35,7 +35,7 @@ var gljTypeModel = db.model("std_ration_lib_glj_type",gljClassSchema, "std_ratio
 var gljItemModel = db.model("std_ration_lib_glj_list",gljSchema, "std_ration_lib_glj_list");
 var repositoryMap = require('./repository_map');
 var counter = require('../../../public/counter/counter');
-let rationItemDao = require('./ration_item');
+let moment = require('moment');
 
 var gljItemDAO = function(){};
 gljItemDAO.prototype.getGljTypes = function(rationLibId, callback){
@@ -81,18 +81,18 @@ gljItemDAO.prototype.getGljItemsByCode = function(repositoryId, codes, callback)
     })
 };
 
-gljItemDAO.prototype.mixUpdateGljItems = function(repId, updateItems, addItems, rIds, callback) {
+gljItemDAO.prototype.mixUpdateGljItems = function(repId, lastOpr, updateItems, addItems, rIds, callback) {
     var me = this;
     if (updateItems.length == 0 && rIds.length == 0) {
-        me.addGljItems(repId, addItems, callback);
+        me.addGljItems(repId, lastOpr, addItems, callback);
     } else {
-        me.removeGljItems(rIds, function(err, message, docs) {
-            me.updateGljItems(repId, updateItems, function(err, results){
+        me.removeGljItems(repId, lastOpr, rIds, function(err, message, docs) {
+            me.updateGljItems(repId, lastOpr, updateItems, function(err, results){
                 if (err) {
                     callback(true, "Fail to update", false);
                 } else {
                     if (addItems && addItems.length > 0) {
-                        me.addGljItems(repId, addItems, callback);
+                        me.addGljItems(repId, lastOpr, addItems, callback);
                     } else {
                         callback(false, "Save successfully", results);
                     }
@@ -102,13 +102,20 @@ gljItemDAO.prototype.mixUpdateGljItems = function(repId, updateItems, addItems,
     }
 };
 
-gljItemDAO.prototype.removeGljItems = function(rIds, callback) {
+gljItemDAO.prototype.removeGljItems = function(repId, lastOpr, rIds, callback) {
     if (rIds && rIds.length > 0) {
         gljItemModel.collection.remove({ID: {$in: rIds}}, null, function(err, docs){
             if (err) {
                 callback(true, "Fail to remove", false);
             } else {
-                callback(false, "Remove successfully", docs);
+                repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                    if(err){
+                        callback(true, "Fail to update operator", false);
+                    }
+                    else{
+                        callback(false, "Remove successfully", docs);
+                    }
+                });
             }
         })
     } else {
@@ -116,7 +123,7 @@ gljItemDAO.prototype.removeGljItems = function(rIds, callback) {
     }
 };
 
-gljItemDAO.prototype.addGljItems = function(repId, items, callback) {
+gljItemDAO.prototype.addGljItems = function(repId, lastOpr, items, callback) {
     if (items && items.length > 0) {
         counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, items.length, function(err, result){
             var maxId = result.value.sequence_value;
@@ -131,7 +138,14 @@ gljItemDAO.prototype.addGljItems = function(repId, items, callback) {
                 if (err) {
                     callback(true, "Fail to add", false);
                 } else {
-                    callback(false, "Add successfully", docs);
+                    repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                        if(err){
+                            callback(true, "Fail to update Operator", false);
+                        }
+                        else{
+                            callback(false, "Add successfully", docs);
+                        }
+                    });
                 }
             })
         });
@@ -140,7 +154,7 @@ gljItemDAO.prototype.addGljItems = function(repId, items, callback) {
     }
 };
 
-gljItemDAO.prototype.updateGljItems = function(repId, items, callback) {
+gljItemDAO.prototype.updateGljItems = function(repId, lastOpr, items, callback) {
     var functions = [];
     for (var i=0; i < items.length; i++) {
         functions.push((function(doc) {
@@ -156,12 +170,24 @@ gljItemDAO.prototype.updateGljItems = function(repId, items, callback) {
             };
         })(items[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });
 };
 
-gljItemDAO.prototype.updateNodes = function(nodes, callback) {
+gljItemDAO.prototype.updateNodes = function(repId, lastOpr, nodes, callback) {
     var functions = [];
     for (var i=0; i < nodes.length; i++) {
         functions.push((function(doc) {
@@ -170,11 +196,23 @@ gljItemDAO.prototype.updateNodes = function(nodes, callback) {
             };
         })(nodes[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });
 };
-gljItemDAO.prototype.removeNodes =  function(nodeIds, preNodeId, preNodeNextId, callback){
+gljItemDAO.prototype.removeNodes =  function(repId, lastOpr, nodeIds, preNodeId, preNodeNextId, callback){
     var functions = [];
     if (preNodeId != -1) {
         functions.push((function(nodeId, nextId) {
@@ -190,31 +228,64 @@ gljItemDAO.prototype.removeNodes =  function(nodeIds, preNodeId, preNodeNextId,
             };
         })(nodeIds[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });
 };
 
-gljItemDAO.prototype.createNewNode = function(repId, lastNodeId, nodeData, callback) {
+gljItemDAO.prototype.createNewNode = function(repId, lastOpr, lastNodeId, nodeData, callback) {
     return counter.counterDAO.getIDAfterCount(counter.moduleName.GLJ, 1, function(err, result){
         nodeData.repositoryId = repId;
         nodeData.ID = result.value.sequence_value;
         var node = new gljTypeModel(nodeData);
-        node.save(function (err, result) {
-            if (err) {
-                callback(true, "章节树ID错误!", false);
-            } else {
-                if (lastNodeId > 0) {
-                    gljTypeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
-                        if (err) {
-                            callback(true, "章节树ID错误!", false);
-                        } else {
-                            callback(false, '', result);
-                        }
-                    });
-                } else callback(false, '', result);
+        async.parallel([
+            function (cb) {
+                node.save(function (err, result) {
+                    if (err) {
+                        cb("章节树ID错误!", false);
+                    } else {
+                        if (lastNodeId > 0) {
+                            gljTypeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
+                                if (err) {
+                                    cb("章节树ID错误!", false);
+                                } else {
+                                    cb(false, result);
+                                }
+                            });
+                        } else cb(false, result);
+                    }
+                });
+            },
+            function (cb) {
+                repositoryMap.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                    if(err){
+                        cb(err);
+                    }
+                    else{
+                        cb(null);
+                    }
+                })
             }
-        });
+        ], function (err, result) {
+            if(err){
+                callback(true, "章节树错误!", false);
+            }
+            else{
+                callback(false, '', result[0]);
+            }
+        })
     });
 };
 

+ 47 - 11
modules/ration_repository/models/ration_item.js

@@ -45,6 +45,8 @@ var rationItemSchema = mongoose.Schema({
 var rationItemModel = db.model("std_ration_lib_ration_items",rationItemSchema, "std_ration_lib_ration_items")
 var counter = require('../../../public/counter/counter');
 let gljDao = require('./glj_repository');
+let moment = require('moment');
+let rationRepositoryDao = require('./repository_map');
 var rationItemDAO = function(){};
 
 rationItemDAO.prototype.getRationItemsBySection = function(sectionId,callback){
@@ -53,21 +55,21 @@ rationItemDAO.prototype.getRationItemsBySection = function(sectionId,callback){
         else callback(false,"Get items successfully", data);
     })
 };
-rationItemDAO.prototype.mixUpdateRationItems = function(rationLibId, sectionId, updateItems, addItems, rIds, callback){
+rationItemDAO.prototype.mixUpdateRationItems = function(rationLibId, lastOpr, sectionId, updateItems, addItems, rIds, callback){
     var me = this;
     if (updateItems.length == 0 && rIds.length == 0) {
-        me.addRationItems(rationLibId, sectionId, addItems, callback);
+        me.addRationItems(rationLibId, lastOpr, sectionId, addItems, callback);
     } else {
-        me.removeRationItems(rIds, function(err, message, docs) {
+        me.removeRationItems(rationLibId, lastOpr, rIds, function(err, message, docs) {
             if (err) {
                 callback(true, "Fail to remove", false);
             } else {
-                me.updateRationItems(rationLibId, sectionId, updateItems, function(err, results){
+                me.updateRationItems(rationLibId, lastOpr, sectionId, updateItems, function(err, results){
                     if (err) {
                         callback(true, "Fail to save", false);
                     } else {
                         if (addItems && addItems.length > 0) {
-                            me.addRationItems(rationLibId, sectionId, addItems, callback);
+                            me.addRationItems(rationLibId, lastOpr, sectionId, addItems, callback);
                         } else {
                             callback(false, "Save successfully", results);
                         }
@@ -78,13 +80,17 @@ rationItemDAO.prototype.mixUpdateRationItems = function(rationLibId, sectionId,
     }
 };
 
-rationItemDAO.prototype.removeRationItems = function(rIds,callback){
+rationItemDAO.prototype.removeRationItems = function(rationLibId, lastOpr, rIds,callback){
     if (rIds.length > 0) {
         rationItemModel.collection.remove({ID: {$in: rIds}}, null, function(err, docs){
             if (err) {
                 callback(true, "Fail to remove", false);
             } else {
-                callback(false, "Remove successfully", docs);
+                rationRepositoryDao.updateOprArr({ID: rationLibId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                    if(!err){
+                        callback(false, "Remove successfully", docs);
+                    }
+                })
             }
         })
     } else {
@@ -133,7 +139,7 @@ rationItemDAO.prototype.getRationItem = function (repId, code, callback) {
     }
 };
 
-rationItemDAO.prototype.addRationItems = function(rationLibId, sectionId, items,callback){
+rationItemDAO.prototype.addRationItems = function(rationLibId, lastOpr, sectionId, items,callback){
     if (items && items.length > 0) {
         counter.counterDAO.getIDAfterCount(counter.moduleName.rations, items.length, function(err, result){
             var maxId = result.value.sequence_value;
@@ -149,7 +155,14 @@ rationItemDAO.prototype.addRationItems = function(rationLibId, sectionId, items,
                 if (err) {
                     callback(true, "Fail to save", false);
                 } else {
-                    callback(false, "Save successfully", docs);
+                    rationRepositoryDao.updateOprArr({ID: rationLibId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                        if(err){
+                            callback(true, "Fail to sava operator", false);
+                        }
+                        else{
+                            callback(false, "Save successfully", docs);
+                        }
+                    })
                 }
             })
         });
@@ -158,7 +171,7 @@ rationItemDAO.prototype.addRationItems = function(rationLibId, sectionId, items,
     }
 };
 
-rationItemDAO.prototype.updateRationItems = function(rationLibId, sectionId, items,callback){
+rationItemDAO.prototype.updateRationItems = function(rationLibId, lastOpr, sectionId, items,callback){
     var functions = [];
     for (var i=0; i < items.length; i++) {
         functions.push((function(doc) {
@@ -175,6 +188,18 @@ rationItemDAO.prototype.updateRationItems = function(rationLibId, sectionId, ite
             };
         })(items[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            rationRepositoryDao.updateOprArr({ID: rationLibId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            });
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });
@@ -188,7 +213,8 @@ function round(v,e){
 }
 
 rationItemDAO.prototype.updateRationBasePrc = function (data, callback) {
-    let adjGljId = data.gljId, adjBasePrice = data.basePrice, adjGljType = data.gljType;
+    let adjGljId = data.gljId, adjBasePrice = data.basePrice, adjGljType = data.gljType,
+        repId = data.repId, lastOpr = data.lastOpr;
     async.waterfall([
         function (cb) {
             rationItemModel.find({'rationGljList.gljId': adjGljId}, function (err, result) {
@@ -300,6 +326,16 @@ rationItemDAO.prototype.updateRationBasePrc = function (data, callback) {
                     cb(null);
                 }
             });
+        },
+        function (cb) {
+            rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
         }
     ], function (err) {
         if(err){

+ 62 - 15
modules/ration_repository/models/ration_section_tree.js

@@ -7,6 +7,8 @@ var dbm = require("../../../config/db/db_manager");
 var chapterTreeDb = dbm.getCfgConnection("scConstruct");
 var async = require("async");
 var Schema = mongoose.Schema;
+let rationRepositoryDao = require('./repository_map');
+let moment = require('moment');
 
 var rationChapterTreeSchema = new Schema({//章节树  //生成唯一id改为sectionID  改成string
     rationRepId: Number,
@@ -37,30 +39,51 @@ rationChapterTreeDAO.prototype.getRationChapterTreeByRepId = function(repId,call
     })
 }
 
-rationChapterTreeDAO.prototype.createNewNode = function(libId, lastNodeId, nodeData,callback){
+rationChapterTreeDAO.prototype.createNewNode = function(lastOpr, libId, lastNodeId, nodeData,callback){
     counter.counterDAO.getIDAfterCount(counter.moduleName.rationTree, 1, function(err, result){
         nodeData.rationRepId = libId;
         nodeData.ID = result.value.sequence_value;
         var node = new rationChapterTreeModel(nodeData);
-        node.save(function (err, result) {
-            if (err) {
+        async.parallel([
+            function (cb) {
+                node.save(function (err, result) {
+                    if (err) {
+                        cb("章节树ID错误!", false);
+                    } else {
+                        if (lastNodeId > 0) {
+                            rationChapterTreeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
+                                if (err) {
+                                    cb("章节树ID错误!", false);
+                                } else {
+                                    cb(false, result);
+                                }
+                            });
+                        } else cb(false, result);
+                    }
+                });
+            },
+            function (cb) {
+                rationRepositoryDao.updateOprArr({ID: libId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                    if(err){
+                        cb(err);
+                    }
+                    else{
+                        cb(null);
+                    }
+                });
+            }
+        ], function (err, result) {
+            if(err){
                 callback("章节树ID错误!", false);
-            } else {
-                if (lastNodeId > 0) {
-                    rationChapterTreeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
-                        if (err) {
-                            callback("章节树ID错误!", false);
-                        } else {
-                            callback(false, result);
-                        }
-                    });
-                } else callback(false, result);
+            }
+            else{
+                callback(false, result[0]);
             }
         });
     });
 },
 
-rationChapterTreeDAO.prototype.removeNodes = function(nodeIds, preNodeId, preNodeNextId, callback){
+rationChapterTreeDAO.prototype.removeNodes = function(repId, lastOpr, nodeIds, preNodeId, preNodeNextId, callback){
     var functions = [];
     if (preNodeId != -1) {
         functions.push((function(nodeId, nextId) {
@@ -76,12 +99,24 @@ rationChapterTreeDAO.prototype.removeNodes = function(nodeIds, preNodeId, preNod
             };
         })(nodeIds[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });
 }
 
-rationChapterTreeDAO.prototype.updateNodes = function(nodes,callback){
+rationChapterTreeDAO.prototype.updateNodes = function(repId, lastOpr, nodes,callback){
     var functions = [];
     for (var i=0; i < nodes.length; i++) {
         //var md = new rationChapterTreeModel(nodes[i]);
@@ -92,6 +127,18 @@ rationChapterTreeDAO.prototype.updateNodes = function(nodes,callback){
             };
         })(nodes[i]));
     }
+    functions.push((function () {
+        return function (cb) {
+            rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                if(err){
+                    cb(err);
+                }
+                else{
+                    cb(null);
+                }
+            })
+        }
+    })());
     async.parallel(functions, function(err, results) {
         callback(err, results);
     });

+ 108 - 10
modules/ration_repository/models/repository_map.js

@@ -4,6 +4,8 @@
  */
 var mongoose = require('mongoose');
 var dbm = require("../../../config/db/db_manager");
+let async = require("async");
+let moment = require('moment');
 //var stringUtil = require('../../../public/stringUtil');
 var rationLibdb = dbm.getCfgConnection("scConstruct");
 var Schema = mongoose.Schema;
@@ -13,6 +15,9 @@ var RepositoryMapSchema = new Schema({
     "appType" : String, //如:"建筑" / "公路"
     "localeType": Number, //如 各个省份 / 部颁
     "descr" : String,
+    "creator": String,
+    "createDate": String,
+    "recentOpr" :[],
     "deleted": Boolean
 });
 var counter = require('../../../public/counter/counter');
@@ -25,12 +30,63 @@ function createNewLibModel(rationLibObj){
     rst.appType = rationLibObj.appType?rationLibObj.appType:'construct';
     rst.localeType = rationLibObj.localeType?rationLibObj.localeType:'';
     rst.descr = rationLibObj.descr;
+    rst.creator = rationLibObj.creator;
+    rst.createDate = moment(Date.now()).format('YYYY-MM-DD HH:mm:ss');
+    rst.recentOpr = [{operator: rationLibObj.lastOperator, operateDate: rst.createDate}],
     rst.deleted = false;
     return rst;
 }
 
 var rationRepositoryDao = function(){};
 
+rationRepositoryDao.prototype.updateOprArr= function(findSet, oprtor, oprDate, cb){
+    rationRepository.find(findSet, function (err, result) {
+        if(err){
+            cb(err);
+        }
+        else{
+            if(result.length === 1){
+                let recentOprArr = result[0].recentOpr;
+                let isExist = false;
+                for(let i =0 ; i<recentOprArr.length; i++){
+                    if(recentOprArr[i].operator === oprtor){
+                        recentOprArr[i].operateDate = oprDate;
+                        isExist = true;
+                    }
+                }
+                if(!isExist){
+                    if(recentOprArr.length < 5){
+                        recentOprArr.push({operator: oprtor, operateDate: oprDate});
+                    }
+                    else if(recentOprArr.length === 5){
+                        recentOprArr.sort(function (a, b) {
+                            if(a.operateDate > b.operateDate){
+                                return -1;
+                            }else {
+                                return 1;
+                            }
+                            return 0;
+                        });
+                        recentOprArr.splice(recentOprArr.length -1, 1);
+                        recentOprArr.splice(0, 1, {operator: oprtor, operateDate: oprDate});
+                    }
+                }
+                rationRepository.update(findSet, {$set: {recentOpr: recentOprArr}}, function (err) {
+                    if(err){
+                        cb(err);
+                    }
+                    else{
+                        cb(null);
+                    }
+                });
+            }
+            else{
+                cb(err);
+            }
+        }
+    })
+};
+
 rationRepositoryDao.prototype.getRealLibName = function(dispName,callback){
     if (callback) {
         rationRepository.find({"dispName": dispName}, function(err,data){
@@ -93,25 +149,67 @@ rationRepositoryDao.prototype.getDisplayRationLibs = function(callback) {
     });
 };
 
-rationRepositoryDao.prototype.updateName = function(orgName,newName,callback){
+rationRepositoryDao.prototype.updateName = function(orgName,newName, lastOpr, callback){
     rationRepository.find({"dispName":newName, "deleted": false}, function(err, data){
         if (data.length == 0) {
-            rationRepository.update({dispName:orgName},{$set:{dispName:newName}},function(err){
-                if(err) callback("err",false);
-                else callback(false,"ok")
-            })
+            async.waterfall([
+                function (cb) {
+                    rationRepository.update({dispName:orgName},{$set:{dispName:newName}},function(err){
+                        if(err) cb(err);
+                        else cb(null)
+                    });
+                },
+                function (cb) {
+                    new rationRepositoryDao().updateOprArr({dispName: newName}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                        if(err){
+                            cb(err)
+                        }
+                        else{
+                            cb(null);
+                        }
+                    });
+                }
+            ], function (err) {
+                if(err){
+                    callback('err', false);
+                }
+                else{
+                    callback(false, 'ok');
+                }
+            });
         } else
             callback("不可重名!",false);
     });
 }
 
-rationRepositoryDao.prototype.deleteRationLib = function(rationName,callback){
+rationRepositoryDao.prototype.deleteRationLib = function(rationName, lastOpr,  callback){
     rationRepository.find({"dispName":rationName, "deleted": false}, function(err, data){
         if (data.length == 1) {
-            rationRepository.update({dispName:rationName},{$set:{deleted: true}},function(err){
-                if(err) callback("err",false);
-                else callback(false,"ok")
-            })
+            async.parallel([
+                function (cb) {
+                    rationRepository.update({dispName:rationName, deleted: false},{$set: {deleted: true}},function(err){
+                        if(err) cb(err);
+                        else cb(null);
+                    })
+                },
+                function (cb) {
+                    new rationRepositoryDao().updateOprArr({dispName: rationName}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
+                        if(err){
+                            cb(err);
+                        }
+                        else{
+                            cb(null);
+                        }
+                    });
+                }
+            ], function (err) {
+                if(err){
+                    callback("err", false)
+                }
+                else{
+                    callback(false, "ok");
+                }
+            });
         } else
             callback("删除失败!",false);
     });

+ 63 - 1
modules/ration_repository/routes/ration_rep_routes.js

@@ -4,17 +4,79 @@
 var express = require("express");
 var apiRouter =express.Router();
 //var _rootDir = __dirname;
+import ViewsController from "../controllers/repository_views_controller";
+import RationRepositoryController from "../controllers/ration_repository_controller";
+import RationChapterTreeController from "../controllers/ration_section_tree_controller";
+import RationController from "../controllers/ration_controller";
+import RepositoryGljController from "../controllers/repository_glj_controller";
+import CoeListController from "../controllers/coe_controller";
+import SearchController from "../controllers/search_controller";
+let viewsController = new ViewsController();
+let rationRepositoryController = new RationRepositoryController();
+let rationChapterTreeController = new RationChapterTreeController();
+let rationController = new RationController();
+let coeListController = new CoeListController();
+let searchController = new SearchController();
+let repositoryGljController = new RepositoryGljController();
 
+/*
 var rationRepositoryController = require("../controllers/ration_repository_controller");
 var rationChapterTreeController = require("../controllers/ration_section_tree_controller");
 var rationController = require("../controllers/ration_controller");
 var repositoryGljController = require("../controllers/repository_glj_controller");
 var coeListController = require("../controllers/coe_controller");
 var searchController = require('../controllers/search_controller');
+*/
 
 
 module.exports =  function (app) {
 
+    app.get('/rationRepository/main', viewsController.auth, viewsController.init, viewsController.redirectMain);
+    app.get('/rationRepository/ration',viewsController.auth, viewsController.init, viewsController.redirectRation);
+    app.get('/rationRepository/lmm', viewsController.auth, viewsController.init, viewsController.redirectGlj);
+
+    app.get('/rationRepository/coeList', viewsController.auth, viewsController.init, viewsController.redirectCoeList);
+
+    apiRouter.post("/getRationDisplayNames",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.getDisPlayRationLibs);
+    apiRouter.post("/editRationLibs",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.updateRationRepositoryName);
+    apiRouter.post("/addRationRepository",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.addRationRepository);
+    apiRouter.post("/deleteRationLibs",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.deleteRationLib);
+    apiRouter.post("/getRealLibName",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.getRealLibName);
+    apiRouter.post("/getLibIDByName",rationRepositoryController.auth, rationRepositoryController.init, rationRepositoryController.getLibIDByName);
+
+    apiRouter.post("/getRationTree",rationChapterTreeController.auth, rationChapterTreeController.init, rationChapterTreeController.getRationChapterTree);
+    apiRouter.post("/createNewNode",rationChapterTreeController.auth, rationChapterTreeController.init, rationChapterTreeController.createNewNode);
+    apiRouter.post("/updateNodes",rationChapterTreeController.auth, rationChapterTreeController.init, rationChapterTreeController.updateNodes);
+    apiRouter.post("/deleteNodes",rationChapterTreeController.auth, rationChapterTreeController.init, rationChapterTreeController.deleteNodes);
+
+    apiRouter.post("/getRationItems",rationController.auth, rationController.init, rationController.getRationItemsBySection);
+    apiRouter.post("/mixUpdateRationItems",rationController.auth, rationController.init, rationController.mixUpdateRationItems);
+    apiRouter.post("/updateRationBasePrc",rationController.auth, rationController.init, rationController.updateRationBasePrc);
+    apiRouter.post("/getRationGljIds",rationController.auth, rationController.init, rationController.getRationGljIds);
+    apiRouter.post("/getRationsCodes",rationController.auth, rationController.init, rationController.getRationsCodes);
+
+    apiRouter.post("/createNewGljTypeNode",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.createNewGljTypeNode);
+    apiRouter.post("/updateGljNodes",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.updateGljNodes);
+    apiRouter.post("/deleteGljNodes",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.deleteGljNodes);
+    apiRouter.post("/getGljDistType",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.getGljDistType);
+    apiRouter.post("/getGljTree",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.getGljTree);
+    apiRouter.post("/getGljItems",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.getGljItems);
+    apiRouter.post("/mixUpdateGljItems",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.mixUpdateGljItems);
+    apiRouter.post("/getGljItemsByIds",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.getGljItemsByIds);
+    apiRouter.post("/getGljItemsByCodes",repositoryGljController.auth, repositoryGljController.init, repositoryGljController.getGljItemsByCodes);
+
+    apiRouter.post("/getCoeList",coeListController.auth, coeListController.init, coeListController.getCoeList);
+    apiRouter.post("/saveCoeList",coeListController.auth, coeListController.init, coeListController.saveCoeList);
+    apiRouter.post("/getCoeItemsByIDs",coeListController.auth, coeListController.init, coeListController.getCoeItemsByIDs);
+
+    apiRouter.post('/getRationItem',searchController.auth, searchController.init, searchController.getRationItem);
+    apiRouter.post('/findRation', searchController.auth, searchController.init, searchController.findRation);
+
+    app.use("/rationRepository/api",apiRouter);
+}
+
+/*module.exports =  function (app) {
+
     app.get('/rationRepository/main', function(req, res) {
         res.render('maintain/ration_repository/main.html',
             {
@@ -81,4 +143,4 @@ module.exports =  function (app) {
     apiRouter.post('/findRation', searchController.findRation);
 
     app.use("/rationRepository/api",apiRouter);
-}
+}*/

+ 37 - 0
modules/templates/controllers/bills_template_controller.js

@@ -0,0 +1,37 @@
+/**
+ * Created by Mai on 2017/4/17.
+ */
+var BillsTemplateData = require('../models/bills_template');
+
+var callback = function(req, res, err, message, data){
+    res.json({error: err, message: message, data: data});
+};
+
+module.exports = {
+    getBillsTemplate: function(req, res){
+        var data = JSON.parse(req.body.data);
+        BillsTemplateData.getTemplate(data.tempType, function(err, message, templates){
+            if (templates) {
+                callback(req, res, err, message, templates);
+            } else {
+                callback(req, res, err, message, null);
+            }
+        });
+    },
+    updateBillsTemplate: function (req, res) {
+        var data = JSON.parse(req.body.data);
+        BillsTemplateData.updateTemplate(data.user_id, data.tempType, data.updateData, function (err, message, data) {
+            if (err === 0) {
+                callback(req, res, err, message, data);
+            } else {
+                callback(req, res, err, message, null);
+            }
+        });
+    },
+    getNewBillsTemplateID: function (req, res) {
+        var data = JSON.parse(req.body.data);
+        BillsTemplateData.getNewBillsTemplateID(data.count, function (err, message, data) {
+            callback(req, res, err, message, data);
+        });
+    }
+}

+ 87 - 0
modules/templates/models/bills_template.js

@@ -0,0 +1,87 @@
+/**
+ * Created by Mai on 2017/4/14.
+ * 清单模板,新建项目使用
+ */
+var counter = require("../../../public/counter/counter.js");
+
+var mongoose = require('mongoose');
+var dbm = require("../../../config/db/db_manager");
+var templatesDB = dbm.getCfgConnection("templates");
+var Schema = mongoose.Schema;
+var deleteSchema = require('../../../public/models/delete_schema');
+var BillsTemplateSchema = new Schema({
+    ID: Number,
+    ParentID: Number,
+    NextSiblingID: Number,
+    code: String,
+    name: String,
+    unit: String,
+    deleteInfo: deleteSchema,
+    tempType: Number
+});
+var BillsTemplates = templatesDB.model('temp_bills', BillsTemplateSchema);
+
+var BillsTemplateDAO = function(){};
+
+BillsTemplateDAO.prototype.getTemplate = function (type, callback) {
+    if (callback) {
+        BillsTemplates.find({'$or': [{tempType: type, deleteInfo: null}, {tempType: type, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id').exec()
+            .then(function (result, err) {
+                if (err) {
+                    callback(1, '找不到模板', null);
+                } else {
+                    callback(0, '', result);
+                }
+            });
+        return null;
+    } else {
+        return BillsTemplates.find({'$or': [{tempType: type, deleteInfo: null}, {tempType: type, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id').exec();
+    }
+};
+BillsTemplateDAO.prototype.updateTemplate = function (userID, tempType, datas, callback) {
+    var data, project, updateLength = 0, hasError = false, deleteInfo = null;
+    var updateAll = function (err) {
+        if (!err){
+            updateLength += 1;
+            if (updateLength === datas.length) {
+                callback(0, '', datas);
+            }
+        } else {
+            hasError = true;
+            callback(1, '升级数据出错', null);
+        }
+    };
+    if (datas){
+        for (var i = 0; i < datas.length && !hasError; i++){
+            data = datas[i];
+            if (data.type === 'update') {
+                BillsTemplates.update({tempType: tempType, ID: data.data.ID}, data.data, updateAll)
+            } else if (data.type === 'new') {
+                data.data['tempType'] = tempType;
+                newProject = new BillsTemplates(data.data);
+                newProject.save(updateAll);
+            } else if (data.type === 'delete') {
+                deleteInfo = {};
+                deleteInfo['deleted'] = true;
+                deleteInfo['deleteDateTime'] = new Date();
+                deleteInfo['deleteBy'] = userID;
+                BillsTemplates.update({ID: data.data.ID}, {deleteInfo: deleteInfo}, updateAll);
+            } else {
+                hasError = true;
+                callback(1, '升级数据出错', null)
+            }
+        }
+    }
+};
+BillsTemplateDAO.prototype.getNewBillsTemplateID = function (count, callback) {
+    counter.counterDAO.getIDAfterCount(counter.moduleName.template_bills, count, function (err, result) {
+        var highID = result.value.sequence_value;
+        if (!err) {
+            callback(0, '', {lowID: highID - count + 1, highID: highID});
+        } else {
+            callback(1, '获取主键失败', null);
+        }
+    });
+}
+
+module.exports = new BillsTemplateDAO();

+ 49 - 0
modules/templates/routes/bills_template_router.js

@@ -0,0 +1,49 @@
+/**
+ * Created by Mai on 2017/4/17.
+ */
+
+var express = require('express');
+
+var billsTemplateController = require('./../controllers/bills_template_controller');
+
+
+module.exports = function (app) {
+    app.get('/template/bills', function (req, res) {
+        let checkAdmin = function (userAccount) {
+            return true;
+        }
+        if (checkAdmin(req.session.userAccount)) {
+            res.render('maintain/templates/html/bills.html',
+                {userAccount: req.session.userAccount,
+                    userID: req.session.userID});
+        } else {
+            res.redirect('/pm');
+        }
+    });
+
+    app.use('/template/bills/api', function (req, res, next) {
+        let checkAdmin = function (userAccount) {
+            return true;
+        }
+        if (checkAdmin(req.session.sessionUser)) {
+            next();
+        } else {
+            res.json({error: 1, message: '对不起,您无权限操作清单模板。', data: null});
+        }
+    });
+
+    var billsTemplateRouter = express.Router();
+
+    billsTemplateRouter.post('/getBillsTemplate', billsTemplateController.getBillsTemplate);
+    billsTemplateRouter.post('/updateBillsTemplate', billsTemplateController.updateBillsTemplate);
+    billsTemplateRouter.post('/getNewBillsTemplateID', billsTemplateController.getNewBillsTemplateID);
+    app.use('/template/bills/api', billsTemplateRouter);
+}
+
+
+
+
+
+
+
+

+ 5 - 6
web/maintain/bills_lib/html/main.html

@@ -129,15 +129,14 @@
     autoFlashHeight();
 </script>
 <script>
-    let userId = '<%= userID %>';
-    //let userAccount = '<%= userAccount %>';
-    mainAjax.getStdBillsLib(userId);
+    let userAccount = '<%= userAccount %>';
+    mainAjax.getStdBillsLib();
     $(document).ready(function(){
         //main 增删改
         $("#createA").click(function(){
             let billsLibName = $("#createText").val();
             if(billsLibName){
-                mainAjax.createStdBillsLib(userId, billsLibName);
+                mainAjax.createStdBillsLib(userAccount, billsLibName);
                 $("#createText").val("");
             }
             else{
@@ -151,7 +150,7 @@
        });
         $("#deleteA").click(function(){
             let deleteId = $(this).attr("deleteId");
-            mainAjax.deleteStdBillsLib(deleteId);
+            mainAjax.deleteStdBillsLib(userAccount, deleteId);
         });
 
        $("#showArea").on("click", "[data-target = '#edit']", function(){
@@ -164,7 +163,7 @@
             let newName = $("#renameText").val();
             let renameId = $(this).attr("renameId");
             if(newName){
-                mainAjax.renameStdBillsLib(renameId, newName);
+                mainAjax.renameStdBillsLib(userAccount, renameId, newName);
                 $("#renameText").val("");
             }
             else {

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

@@ -201,6 +201,7 @@
     <SCRIPT type="text/javascript">
         let billsLibId = getQueryString("billsLibId");
         tools.redirect(billsLibId, 'stdBillsmain');
+        let userAccount = '<%= userAccount%>'
         let spreadAllJobs = new GC.Spread.Sheets.Workbook($('#spreadAllJobs')[0], {sheetCount: 1});
         let orgJobData;
         let maxJobNumer;
@@ -310,7 +311,7 @@
                 }
                 let encapDatas = tools.encapTotalJobsDatas(sheet, totalJobs, uncrossedDatas, crossedDatas);
                 if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length >0){
-                    jobsAjax.pasteJobs(encapDatas, function(datas){
+                    jobsAjax.pasteJobs(userAccount, billsLibId, encapDatas, function(datas){
                         pasteController.pasteJobsFront(sheet, totalJobs,datas);
                     });
                 }

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

@@ -243,6 +243,7 @@
 </body>
 <script type="text/javascript">
     autoFlashHeight();
+    let userAccount = '<%= userAccount %>';
     let maxJobsNumber;
     let maxItemsNumber;
     let orgJobData;
@@ -669,7 +670,7 @@
                     sheet.clear(i, 0, 1, sheet.getColumnCount(), GC.Spread.Sheets.SheetArea.viewport,GC.Spread.Sheets.StorageType.data);
                 }
             }
-            billsAjax.pasteBills(billsLibId, validDatas);
+            billsAjax.pasteBills(userAccount, billsLibId, validDatas);
             setSheet.setMaxRowCount(sheet, sheetBillsDatas);
         });
     }
@@ -716,7 +717,7 @@
                 }
                 let pasteDatas = tools.encapData(uncrossedDatas, crossedDatas, controller, totalJobs);
                 if(pasteDatas.updateDatas.length > 0 || pasteDatas.createDatas.length > 0){
-                    billsAjax.pasteRel(pasteDatas.updateDatas, pasteDatas.createDatas, 'jobs', function(datas){
+                    billsAjax.pasteRel(userAccount, billsLibId, pasteDatas.updateDatas, pasteDatas.createDatas, 'jobs', function(datas){
                         pasteController.frontOperator(sheet, setting, controller, totalJobs, datas);
                     });
                 }
@@ -774,7 +775,7 @@
                 }
                 let pasteDatas = tools.encapItemsData(uncrossedDatas, crossedDatas, controller, totalItems);
                 if(pasteDatas.updateDatas.length > 0 || pasteDatas.createDatas.length > 0){
-                    billsAjax.pasteRel(pasteDatas.updateDatas, pasteDatas.createDatas, 'items', function(datas){
+                    billsAjax.pasteRel(userAccount, billsLibId, pasteDatas.updateDatas, pasteDatas.createDatas, 'items', function(datas){
                         pasteController.frontItemsRelOperator(sheet, setting, controller, totalItems, datas);
                     });
                 }

+ 3 - 2
web/maintain/bills_lib/html/tezheng.html

@@ -205,6 +205,7 @@
         let spreadVal = new GC.Spread.Sheets.Workbook($('#spreadEigenvalue')[0], {sheetCount: 1});
         let billsLibId = getQueryString('billsLibId');
         tools.redirect(billsLibId, 'stdBillsmain');
+        let userAccount = '<%= userAccount%>'
         let selectedId;
         let orgValue;
         let orgItemData;
@@ -359,7 +360,7 @@
                 }
                 let encapDatas = tools.encapTotalItemsDatas(sheet, totalItems, uncrossedDatas, crossedDatas);
                 if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
-                    itemsAjax.pasteItems(encapDatas, function(datas){
+                    itemsAjax.pasteItems(userAccount, billsLibId, encapDatas, function(datas){
                         pasteController.pasteItemsFront(sheet, totalItems, datas);
                     });
                 }
@@ -419,7 +420,7 @@
                 }
                 let encapDatas = tools.encapValues(sheet, totalItems, uncrossedDatas, crossedDatas);
                 if(encapDatas.updateDatas.length > 0 || encapDatas.createDatas.length > 0){
-                    itemsAjax.pasteValues(encapDatas, function(datas){
+                    itemsAjax.pasteValues(userAccount, billsLibId, encapDatas, function(datas){
                         pasteController.pasteValueFront(sheet, totalItems, datas);
                     });
                 }

+ 61 - 63
web/maintain/bills_lib/scripts/bills_lib_ajax.js

@@ -32,11 +32,10 @@ var mainAjax = {
             }
         });
     },
-    getStdBillsLib: function(userId){
+    getStdBillsLib: function(){
         $.ajax({
             type: "post",
             url: "/stdBillsEditor/getStdBillsLib",
-            data: {data: JSON.stringify({userId: userId})},
             dataType: "json",
             success: function(result){
                 if(result.data){
@@ -61,11 +60,11 @@ var mainAjax = {
             }
         });
     },
-    createStdBillsLib: function(userId, billsLibName){
+    createStdBillsLib: function(userAccount, billsLibName){
         $.ajax({
             type: "POST",
             url: "/stdBillsEditor/createStdBillsLib",
-            data: {data: JSON.stringify({userId: userId, name: billsLibName}) },
+            data: {data: JSON.stringify({userAccount: userAccount, name: billsLibName}) },
             dataType: "json",
             success: function(result){
                 if(!result.error){
@@ -84,11 +83,11 @@ var mainAjax = {
             }
         });
     },
-    deleteStdBillsLib: function(billsLibId){
+    deleteStdBillsLib: function(lastOperator, billsLibId){
         $.ajax({
             type: "POST",
             url: "/stdBillsEditor/deleteStdBillsLib",
-            data: {data: JSON.stringify({billsLibId: billsLibId})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId})},
             dataType: "json",
             success: function(result){
                 if(!result.error){
@@ -98,11 +97,11 @@ var mainAjax = {
             }
         });
     },
-    renameStdBillsLib: function(billsLibId, newName){
+    renameStdBillsLib: function(lastOperator, billsLibId, newName){
         $.ajax({
             type: "post",
             url: "/stdBillsEditor/renameStdbillsLib",
-            data: {data: JSON.stringify({id: billsLibId, value: newName})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, id: billsLibId, value: newName})},
             dataType: "json",
             success: function(result){
                 if(!result.error){
@@ -156,11 +155,11 @@ var billsAjax = {
             }
         });
     },
-    createBills: function(billsLibId, newId, pid, nid, updatePreData, callback){
+    createBills: function(lastOperator, billsLibId, newId, pid, nid, updatePreData, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/createBills',
-            data: {data: JSON.stringify({billsLibId: billsLibId, newId: newId, ParentID: pid, NextSiblingID: nid, updatePreData: updatePreData})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, newId: newId, ParentID: pid, NextSiblingID: nid, updatePreData: updatePreData})},
             dataType: 'json',
             success: function(result){
                 if(!result.error){
@@ -171,11 +170,11 @@ var billsAjax = {
             }
         });
     },
-    upMove: function(billsLibId, updateDatas, callback){
+    upMove: function(lastOperator, billsLibId, updateDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/upMove',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateDatas: updateDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateDatas: updateDatas})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -184,11 +183,11 @@ var billsAjax = {
             }
         });
     },
-    downMove: function (billsLibId, updateDatas, callback) {
+    downMove: function (lastOperator, billsLibId, updateDatas, callback) {
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/downMove',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateDatas: updateDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateDatas: updateDatas})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -218,25 +217,24 @@ var billsAjax = {
             }
         });
     },
-    upLevel: function(billsLibId, updateDatas, callback){
+    upLevel: function(lastOperator, billsLibId, updateDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/upLevel',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateDatas: updateDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateDatas: updateDatas})},
             dataType: 'json',
             success: function (result) {
-                console.log(`ssc`);
                 if(!result.error && callback){
                     callback();
                 }
             }
         })
     },
-    downLevel: function (billsLibId, updateDatas, callback) {
+    downLevel: function (lastOperator, billsLibId, updateDatas, callback) {
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/downLevel',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateDatas: updateDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateDatas: updateDatas})},
             dataType: 'json',
             success: function (result) {
                 if(!result.error && callback){
@@ -245,11 +243,11 @@ var billsAjax = {
             }
         })
     },
-    deleteBills: function(billsLibId, deleteIds, updateNode, callback){
+    deleteBills: function(lastOperator, billsLibId, deleteIds, updateNode, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/deleteBills',
-            data: {data: JSON.stringify({billsLibId: billsLibId, deleteIds: deleteIds, updateNode: updateNode})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, deleteIds: deleteIds, updateNode: updateNode})},
             dataType: 'json',
             success: function(result){
                 if(!result.error){
@@ -262,33 +260,33 @@ var billsAjax = {
 
         });
     },
-    updateBills: function(billsLibId, updateId, field, data){
+    updateBills: function(lastOperator, billsLibId, updateId, field, data){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateBills',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: updateId, field: field, data: data})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: updateId, field: field, data: data})},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    removeTotal: function (billsLibId, billsIds, delIds, field) {
+    removeTotal: function (lastOperator, billsLibId, billsIds, delIds, field) {
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/removeTotal',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsIds: billsIds, delIds: delIds, field: field})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsIds: billsIds, delIds: delIds, field: field})},
             dataType: 'json',
             success: function(result){
 
             }
         })
     },
-    updateSerialNo: function (billsLibId, billsId, updateArr, field, callback) {
+    updateSerialNo: function (lastOperator, billsLibId, billsId, updateArr, field, callback) {
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateSerialNo',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId: billsId, updateArr: updateArr, field: field})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsId: billsId, updateArr: updateArr, field: field})},
             dataType: 'json',
             success: function (result) {
                 if(!result.error && callback){
@@ -297,11 +295,11 @@ var billsAjax = {
             }
         });
     },
-    updateBillsArr: function(billsLibId, updateId, orgId, newId, type, classify, callback){
+    updateBillsArr: function(lastOperator, billsLibId, updateId, orgId, newId, type, classify, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateBillsArr',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: updateId, orgId: orgId, newId: newId, type: type, classify: classify})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: updateId, orgId: orgId, newId: newId, type: type, classify: classify})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -310,33 +308,33 @@ var billsAjax = {
             }
         });
     },
-    pasteBills: function(billsLibId, datas){
+    pasteBills: function(lastOperator, billsLibId, datas){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteBills',
-            data: {data: JSON.stringify({billsLibId: billsLibId, datas: datas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, datas: datas})},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    updateRecharge: function(billsLibId, updateId, data){
+    updateRecharge: function(lastOperator, billsLibId, updateId, data){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateRecharge',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: updateId, data: data})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: updateId, data: data})},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    pasteRel: function (updateDatas, createDatas, field, callback) {
+    pasteRel: function (lastOperator, billsLibId, updateDatas, createDatas, field, callback) {
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteRel',
-            data: {data:JSON.stringify({updateDatas: updateDatas, createDatas: createDatas, field: field})},
+            data: {data:JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateDatas: updateDatas, createDatas: createDatas, field: field})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -374,11 +372,11 @@ var jobsAjax = {
             }
         });
     },
-    createJobContent: function(billsLibId, data, serialNo, callback){
+    createJobContent: function(lastOperator, billsLibId, data, serialNo, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/createJobContent',
-            data: {data: JSON.stringify({billsLibId: billsLibId, data: data, serialNo: serialNo})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, data: data, serialNo: serialNo})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -387,33 +385,33 @@ var jobsAjax = {
             }
         });
     },
-    updateJobContent: function(billsLibId, id, field, data){
+    updateJobContent: function(lastOperator, billsLibId, id, field, data){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateJobContent',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: id, field: field, data: data })},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: id, field: field, data: data })},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    deleteJobContent: function(billsLibId, ids){
+    deleteJobContent: function(lastOperator, billsLibId, ids){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/deleteJobContent',
-            data: {data: JSON.stringify({billsLibId: billsLibId, ids: ids})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, ids: ids})},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    pasteJobs: function(pasteDatas, callback){
+    pasteJobs: function(lastOperator, billsLibId, pasteDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteJobs',
-            data: {data: JSON.stringify({pasteDatas: pasteDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, pasteDatas: pasteDatas})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -423,11 +421,11 @@ var jobsAjax = {
 
         });
     },
-    edCreateJob: function(billsLibId, billsId, data, code, serialNo, callback){
+    edCreateJob: function(lastOperator, billsLibId, billsId, data, code, serialNo, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edCreateJob',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -436,11 +434,11 @@ var jobsAjax = {
             }
         });
     },
-    edUpdateJob: function(billsLibId, billsId, content, code, orgJobId, callback){
+    edUpdateJob: function(lastOperator, billsLibId, billsId, content, code, orgJobId, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edUpdateJob',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, content: content, code: code, orgJobId: orgJobId})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsId:billsId, content: content, code: code, orgJobId: orgJobId})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -467,11 +465,11 @@ var itemsAjax = {
             }
         });
     },
-    createItemCharacter: function(billsLibId,  data, code, callback){
+    createItemCharacter: function(lastOperator, billsLibId,  data, code, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/createItemCharacter',
-            data: {data: JSON.stringify({billsLibId: billsLibId, data: data, code: code})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, data: data, code: code})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -480,44 +478,44 @@ var itemsAjax = {
             }
         });
     },
-    updateItemCharacter: function(billsLibId, id, field, data){
+    updateItemCharacter: function(lastOperator, billsLibId, id, field, data){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateItemCharacter',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: id, field: field, data: data })},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: id, field: field, data: data })},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    updateValue: function(billsLibId, id, data, deleteCodes, type){
+    updateValue: function(lastOperator, billsLibId, id, data, deleteCodes, type){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/updateValue',
-            data: {data: JSON.stringify({billsLibId: billsLibId, updateId: id, data: data, type: type, deleteCodes: deleteCodes})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, updateId: id, data: data, type: type, deleteCodes: deleteCodes})},
             dataType: 'json',
             success: function(reslut){
 
             }
         });
     },
-    deleteItemCharacter: function(billsLibId, ids){
+    deleteItemCharacter: function(lastOperator, billsLibId, ids){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/deleteItemCharacter',
-            data: {data: JSON.stringify({billsLibId: billsLibId, ids: ids})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, ids: ids})},
             dataType: 'json',
             success: function(result){
 
             }
         });
     },
-    pasteItems: function(pasteDatas, callback){
+    pasteItems: function(lastOperator, billsLibId, pasteDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteItems',
-            data: {data: JSON.stringify({pasteDatas: pasteDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, pasteDatas: pasteDatas})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -527,11 +525,11 @@ var itemsAjax = {
 
         });
     },
-    pasteValues: function(pasteDatas, callback){
+    pasteValues: function(lastOperator, billsLibId, pasteDatas, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/pasteValues',
-            data: {data: JSON.stringify({pasteDatas: pasteDatas})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, pasteDatas: pasteDatas})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -540,11 +538,11 @@ var itemsAjax = {
             }
         });
     },
-    edCreateItem: function(billsLibId, billsId, data, code, serialNo, callback){
+    edCreateItem: function(lastOperator, billsLibId, billsId, data, code, serialNo, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edCreateItem',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsId:billsId, data: data, code: code, serialNo: serialNo})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){
@@ -553,11 +551,11 @@ var itemsAjax = {
             }
         });
     },
-    edUpdateItem: function(billsLibId, billsId, content, code, orgItemId, callback){
+    edUpdateItem: function(lastOperator, billsLibId, billsId, content, code, orgItemId, callback){
         $.ajax({
             type: 'post',
             url: 'stdBillsEditor/edUpdateItem',
-            data: {data: JSON.stringify({billsLibId: billsLibId, billsId:billsId, content: content, code: code, orgItemId: orgItemId})},
+            data: {data: JSON.stringify({lastOperator: lastOperator, billsLibId: billsLibId, billsId:billsId, content: content, code: code, orgItemId: orgItemId})},
             dataType: 'json',
             success: function(result){
                 if(!result.error && callback){

+ 33 - 34
web/maintain/bills_lib/scripts/db_controller.js

@@ -8,11 +8,12 @@ var dbController = {
         if(controller.tree.items.length === 0){
             controller.tree.maxNodeID(0);
             let newNodeId = controller.tree.newNodeID();
-            billsAjax.createBills(billsLibId, newNodeId, -1 , -1, null, function(){
+            billsAjax.createBills(userAccount, billsLibId, newNodeId, -1 , -1, null, function(){
                 controller.insert();
                 controller.tree.selected.jobs = new Array();
                 controller.tree.selected.items = new Array();
                 controller.sheet.setTag(controller.tree.selected.serialNo(), 0, newNodeId);
+                sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
                 tools.btnAction(btn);
                 btn.attr('doing', 'false');
             });
@@ -23,7 +24,7 @@ var dbController = {
                 var updateId = node.getID(), createpid = node.getParentID(), createnid = node.getNextSiblingID();
                 let newNodeId = controller.tree.newNodeID();
                 let updatePreData = {ID: updateId, NextSiblingID: newNodeId};
-                billsAjax.createBills(billsLibId, newNodeId, createpid, createnid, updatePreData, function(){
+                billsAjax.createBills(userAccount, billsLibId, newNodeId, createpid, createnid, updatePreData, function(){
                     controller.insert();
                     controller.tree.selected.jobs = new Array();
                     controller.tree.selected.items = new Array();
@@ -38,7 +39,7 @@ var dbController = {
                 let updateId = updateNode.getID();
                 let newNodeId = controller.tree.newNodeID();
                 let updatePreData = {ID: updateId, NextSiblingID: newNodeId};
-                billsAjax.createBills(billsLibId, newNodeId, -1, -1, updatePreData, function(){
+                billsAjax.createBills(userAccount, billsLibId, newNodeId, -1, -1, updatePreData, function(){
                     controller.insert();
                     controller.tree.selected.jobs = new Array();
                     controller.tree.selected.items = new Array();
@@ -97,8 +98,7 @@ var dbController = {
                     }
                     updateData.push(updateD);
                 }
-                billsAjax.upLevel(billsLibId, updateData, function(){
-                    console.log(`enter upL`);
+                billsAjax.upLevel(userAccount, billsLibId, updateData, function(){
                     tools.btnAction(btn);
                     btn.attr('doing', 'false');
                     controller.upLevel();
@@ -137,7 +137,7 @@ var dbController = {
                     }
                     updateData.push(updateC);
                 }
-                billsAjax.downLevel(billsLibId, updateData, function(){
+                billsAjax.downLevel(userAccount, billsLibId, updateData, function(){
                     tools.btnAction(btn);
                     btn.attr('doing', 'false');
                     controller.downLevel();
@@ -168,7 +168,7 @@ var dbController = {
             };
             getDeleteIds(node);
             let updateNode = node.preSibling ? {ID: node.preSibling.getID(), NextSiblingID: node.getNextSiblingID()} : null;
-            billsAjax.deleteBills(billsLibId, deleteIds, updateNode, function(){
+            billsAjax.deleteBills(userAccount, billsLibId, deleteIds, updateNode, function(){
                 tools.btnAction(btn);
                 btn.attr('doing', 'false');
                 controller.delete();
@@ -228,7 +228,7 @@ var dbController = {
                     }
                     updateData.push(updateC);
                 }
-                billsAjax.upMove(billsLibId, updateData, function(){
+                billsAjax.upMove(userAccount, billsLibId, updateData, function(){
                     tools.btnAction(btn);
                     btn.attr('doing', 'false');
                     controller.upMove();
@@ -265,7 +265,7 @@ var dbController = {
                     };
                     updateData.push(updateC);
                 }
-                billsAjax.downMove(billsLibId, updateData);
+                billsAjax.downMove(userAccount, billsLibId, updateData);
                 tools.btnAction(btn);
                 btn.attr('doing', 'false');
                 controller.downMove();
@@ -286,7 +286,7 @@ var dbController = {
                         sheetBillsDatas.datasIdx['rowIdx'+ args.row][field] = args.editingText;
                     }
                 });
-                billsAjax.updateBills(billsLibId, updateId, field, args.editingText);
+                billsAjax.updateBills(userAccount, billsLibId, updateId, field, args.editingText);
                 //sheetBillsDatas = tools.getsheetDatas(controller.sheet, 'bills', controller);
             }
             else {
@@ -633,7 +633,7 @@ var tools = {
                     delJobsIds.push(obj.job.data.id)
                 }
             });
-            jobsAjax.deleteJobContent(delJobsIds);
+            jobsAjax.deleteJobContent(userAccount, billsLibId, delJobsIds);
             tools.clearData(jobsSheet);
             tools.orderReshowData(jobsSheet, controller.tree.selected.jobs, jobsSetting, 'job', true);
         }
@@ -645,7 +645,7 @@ var tools = {
                     delItemsIds.push(obj.item.data.id)
                 }
             });
-            itemsAjax.deleteItemCharacter(delItemsIds);
+            itemsAjax.deleteItemCharacter(userAccount, billsLibId, delItemsIds);
             tools.clearData(itemsSheet);
             tools.orderReshowData(itemsSheet, controller.tree.selected.items, itemsSetting, 'item', true);
         }
@@ -1676,7 +1676,7 @@ var jobsController = {
             //update--
             let serialNo = tools.getSerialNo(controller.tree.selected.jobs);
             //--
-            jobsAjax.edCreateJob(billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, serialNo, function(newJobId){
+            jobsAjax.edCreateJob(userAccount, billsLibId, controller.tree.selected.getID(), newData, maxJobsNumber, serialNo, function(newJobId){
                 var newJobData, newJob;
                 newJobData = {id: newJobId, content: newData, code: maxJobsNumber};
                 newJob = createObj.newJob(newJobData);
@@ -1723,7 +1723,7 @@ var jobsController = {
                     job.count++;
                     controller.tree.selected.jobs.splice(index, 1);
                     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');
+                    billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, job.data.id, 'update', 'jobs');
                     tools.orderReshowData(sheet, controller.tree.selected.jobs, setting, 'job', true);
                 }
                 if(field === 'content' && job.data[field] === newData){
@@ -1732,7 +1732,7 @@ var jobsController = {
                     job.count++;
                     controller.tree.selected.jobs.splice(index, 1);
                     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');
+                    billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, job.data.id, 'update', 'jobs');
                    // tools.reshowData(sheet, controller.tree.selected.jobs, setting, true);//update--
                     tools.orderReshowData(sheet,controller.tree.selected.jobs, setting, 'job', true);
                 }
@@ -1743,8 +1743,7 @@ var jobsController = {
                 maxJobsNumber++;
                 //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--
+                jobsAjax.edUpdateJob(userAccount, 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);
@@ -1888,7 +1887,7 @@ var itemsController = {
             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, serialNo, function(newItemId){
+            itemsAjax.edCreateItem(userAccount, billsLibId, controller.tree.selected.getID(), newData, maxItemsNumber, serialNo, function(newItemId){
                 let newItemData, newItem;
                 newItemData = {id: newItemId, content: newData, code: maxItemsNumber};
                 newItem = createObj.newItem(newItemData);
@@ -1933,7 +1932,7 @@ var itemsController = {
                     item.count++;
                     controller.tree.selected.items.splice(index, 1);
                     controller.tree.selected.items.splice(index, 0, {item: item, serialNo: serialNo});
-                    billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
+                    billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
                     tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 }
                 if(field === 'content' && item.data[field] === newData){
@@ -1942,7 +1941,7 @@ var itemsController = {
                     item.count++;
                     controller.tree.selected.items.splice(index, 1);
                     controller.tree.selected.items.splice(index, 0, {item: item, serialNo: serialNo});
-                    billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
+                    billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), id, item.data.id, 'update', 'items');
                     tools.orderReshowData(sheet, controller.tree.selected.items, setting, 'item', true);
                 }
             });
@@ -1951,7 +1950,7 @@ var itemsController = {
             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){
+                itemsAjax.edUpdateItem(userAccount, billsLibId, controller.tree.selected.getID(), newData, maxItemsNumber, id, function(newItemId){
                     var newItemData, newItem;
                     newItemData = {id: newItemId, content: newData, code: maxItemsNumber};
                     newItem = createObj.newItem(newItemData);
@@ -2017,7 +2016,7 @@ var itemsController = {
         controller.tree.selected.items[controller.tree.selected.args.row + 1].serialNo = tempSerialNo;
         updateSelArr.push({id: controller.tree.selected.items[controller.tree.selected.args.row].item.data.id, serialNo: controller.tree.selected.items[controller.tree.selected.args.row].serialNo});
         updateSelArr.push({id: controller.tree.selected.items[controller.tree.selected.args.row + 1].item.data.id, serialNo: controller.tree.selected.items[controller.tree.selected.args.row +1].serialNo});
-        billsAjax.updateSerialNo(billsLibId, controller.tree.selected.getID(), updateSelArr, 'items', function () {
+        billsAjax.updateSerialNo(userAccount, billsLibId, controller.tree.selected.getID(), updateSelArr, 'items', function () {
             tools.orderReshowData(sheet, controller.tree.selected.items, itemsSetting, 'item', true);
             sheet.setActiveCell(controller.tree.selected.args.row +1, controller.tree.selected.args.col);
             controller.tree.selected.args.row = controller.tree.selected.args.row +1;
@@ -2060,7 +2059,7 @@ var valueController = {
                         valueController.createValue(sheet, totalItems, selectedId, field, newValue);
                 }
                 else if(tagId && !isRepeat && newValue !== orgValue){//update
-                        valueController.updateValue(totalItems, tagId, newValue, field);
+                        valueController.updateValue(userAccount, totalItems, tagId, newValue, field);
                 }
                 if(isRepeat){
                     if(tagId && newValue){
@@ -2093,7 +2092,7 @@ var valueController = {
         console.log(`finItem`);
         console.log(totalItems.findItem(id).data);
         totalItems.findItem(id).data.itemValue.push(newData);
-        itemsAjax.updateValue(billsLibId, id, newData, null, 'create');
+        itemsAjax.updateValue(userAccount, billsLibId, id, newData, null, 'create');
     },
 
     updateValue: function(totalItems, tagId, newData, field){
@@ -2111,7 +2110,7 @@ var valueController = {
                 });
                 itemVals.splice(index, 0, updateEle);
             }
-            itemsAjax.updateValue(billsLibId, selectedId, updateData, null, 'update');
+            itemsAjax.updateValue(userAccount, billsLibId, selectedId, updateData, null, 'update');
         }
         else {
             if(typeof newData === 'number'){
@@ -2127,7 +2126,7 @@ var valueController = {
                     });
                     itemVals.splice(index, 0, updateEle);
                 }
-                itemsAjax.updateValue(billsLibId, selectedId, updateData, null, 'update');
+                itemsAjax.updateValue(userAccount, billsLibId, selectedId, updateData, null, 'update');
             }
             else {
                 //编号只能为数字!
@@ -2196,7 +2195,7 @@ var totalJobsController = {
         if(field === 'content'){
             maxJobsNumber++;
             let code = maxJobsNumber;
-            jobsAjax.createJobContent(billsLibId, newData, code, function(newJobId){
+            jobsAjax.createJobContent(userAccount, billsLibId, newData, code, function(newJobId){
                 let newJobData, newJob;
                 newJobData = {id: newJobId, content: newData, code: code};
                 newJob = createObj.newJob(newJobData);
@@ -2211,7 +2210,7 @@ var totalJobsController = {
             //if(typeof newData === 'number'){
             if(!isNaN(parseNum)){
                 maxJobsNumber = maxJobsNumber >= newData ? maxJobsNumber : newData;
-                jobsAjax.createJobContent(billsLibId, '', newData, function(newJobId){
+                jobsAjax.createJobContent(userAccount, billsLibId, '', newData, function(newJobId){
                     let newJobData, newJob;
                     newJobData = {id: newJobId, content: '', code: newData};
                     newJob = createObj.newJob(newJobData);
@@ -2241,7 +2240,7 @@ var totalJobsController = {
                 }
             });
             tools.reshowData(args.sheet, totalJobs.jobsArr, totalJobsSetting, true);
-            jobsAjax.updateJobContent(billsLibId, id, field, newData);
+            jobsAjax.updateJobContent(userAccount, billsLibId, id, field, newData);
         }
     }
 };
@@ -2275,7 +2274,7 @@ var totalItemsController = {
         if(field === 'content'){
             maxItemsNumber++;
             let code = maxItemsNumber;
-            itemsAjax.createItemCharacter(billsLibId, newData, code, function(newItemId){
+            itemsAjax.createItemCharacter(userAccount, billsLibId, newData, code, function(newItemId){
                 var newItemData, newItem;
                 newItemData = {id: newItemId, content: newData, code: code, itemValue: []};
                 newItem = createObj.newItem(newItemData);
@@ -2289,7 +2288,7 @@ var totalItemsController = {
         else {
             if(!isNaN(parseInt(newData))){
                 maxItemsNumber = maxItemsNumber >= newData ? maxItemsNumber : newData;
-                itemsAjax.createItemCharacter(billsLibId, '', newData, function(newItemId){
+                itemsAjax.createItemCharacter(userAccount, billsLibId, '', newData, function(newItemId){
                     var newItemData, newItem;
                     newItemData = {id: newItemId, content: '', code: newData, itemValue: []};
                     newItem = createObj.newItem(newItemData);
@@ -2317,7 +2316,7 @@ var totalItemsController = {
                 }
             });
             tools.reshowData(args.sheet, totalItems.itemsArr, totalItemsSetting, true);
-            itemsAjax.updateItemCharacter(billsLibId, id, field, newData);
+            itemsAjax.updateItemCharacter(userAccount, billsLibId, id, field, newData);
         }
     }
 };
@@ -2337,7 +2336,7 @@ var rechargeController = {
                 }
             }
             getupdateIds(tools.getRoot(selectedNode));*/
-            billsAjax.updateRecharge(billsLibId, updateId, newData);
+            billsAjax.updateRecharge(userAccount, billsLibId, updateId, newData);
         }
         else {
             $('exampleTextarea').val('');
@@ -2349,7 +2348,7 @@ var rechargeController = {
             tempId.push(node.getID());
             var rootNode = tools.getRoot(node);
             if(rootNode.data.recharge && rootNode !== node){
-                billsAjax.updateRecharge(billsLibId, tempId, rootNode.data.recharge);
+                billsAjax.updateRecharge(userAccount, billsLibId, tempId, rootNode.data.recharge);
                 node.data.recharge = rootNode.data.recharge;
                 $('#exampleTextarea').val(node.data.recharge);
             }

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

@@ -120,7 +120,7 @@ var myKey = {
                     //deleteFrontData
                     //tools.reshowData(sheet, controller.tree.selected[classify], setting, true);
                     //deleteDB
-                    billsAjax.updateBillsArr(billsLibId, controller.tree.selected.getID(), ids, null, 'delete', classify, function(){
+                    billsAjax.updateBillsArr(userAccount, billsLibId, controller.tree.selected.getID(), ids, null, 'delete', classify, function(){
                         tools.orderReshowData(sheet, controller.tree.selected[classify], setting, classifyStr, true);
                     });
                     /*if(result.length > 0){
@@ -178,7 +178,7 @@ var myKey = {
                     totalJobs.jobsArr.sort(myCompareCode);
                     maxJobsNumber = totalJobs.jobsArr.length > 0 ? totalJobs.jobsArr[0].data.code : 0;
                     tools.reshowData(sheet, totalJobs.jobsArr, setting, true);
-                    billsAjax.removeTotal(billsLibId, billsIds, ids, 'jobs');
+                    billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'jobs');
                 }
                 spread.resumeEvent();
             });
@@ -204,7 +204,7 @@ var myKey = {
                     totalItems.itemsArr.sort(myCompareCode);
                     maxItemsNumber = totalItems.itemsArr.length > 0 ? totalItems.itemsArr[0].code : 0;
                     tools.reshowData(sheet, totalItems.itemsArr, setting, true);
-                    billsAjax.removeTotal(billsLibId, billsIds, ids, 'items');
+                    billsAjax.removeTotal(userAccount, billsLibId, billsIds, ids, 'items');
                     //reshowVal
                     if(totalItems.itemsArr.length > 0){
                         selectedId = totalItems.itemsArr[0].data.id;
@@ -236,7 +236,7 @@ var myKey = {
                 });
                 tools.reshowValue(sheet, valsArr, setting, true);
                 //deleteDb
-                itemsAjax.updateValue(billsLibId, selectedId, null, ids, 'delete');
+                itemsAjax.updateValue(userAccount, billsLibId, selectedId, null, ids, 'delete');
                 spread.resumeEvent();
             });
             spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);

+ 1 - 7
web/maintain/ration_repository/dinge.html

@@ -481,13 +481,6 @@
                 </div>
             </div>
         </div>
-        <!--contextMenu-->
-        <div class="contextMenu" id="myMenu">
-            <ul>
-                <li id="insert">添加</li>
-                <li id="delete">删除</li>
-            </ul>
-        </div>
         <!-- JS. -->
         <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
         <script>GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";</script>
@@ -513,6 +506,7 @@
         <script type="text/javascript" src="/public/web/QueryParam.js"></script>
         <script type="text/javascript" src="/public/web/storageUtil.js"></script>
         <script type="text/javascript">
+            let userAccount = '<%=userAccount %>';
             var setting = {
                 view: {
                     addHoverDom: zTreeOprObj.addHoverDom,

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

@@ -226,6 +226,7 @@
     <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
     <script type="text/javascript">
+        let userAccount = '<%=userAccount %>';
         var gljSetting = {
             view: {
                 addHoverDom: gljTypeTreeOprObj.addHoverDom,

+ 6 - 2
web/maintain/ration_repository/js/main.js

@@ -44,11 +44,12 @@ function addEvent_EditLib(){
 
 $("#deleteLib").click(function(){
     var rationLibName = $("#did").val();
+    let lastOperator = userAccount;
     $.ajax({
         type:"POST",
         url:"api/deleteRationLibs",
         dataType:"json",
-        data:{"rationName": rationLibName},
+        data:{"rationName": rationLibName, "lastOperator": lastOperator},
         cache:false,
         timeout:50000,
         success:function(result){
@@ -134,17 +135,20 @@ $("#rationAdd").click(function(){
     newRationRepObj.dispName = str;
     newRationRepObj.appType = "建筑";
     newRationRepObj.descr = "";
+    newRationRepObj.creator = userAccount;
+    newRationRepObj.lastOperator = userAccount;
     addRationRepository(newRationRepObj, $tdId);
 });
 
 $("#edtOK").click(function(){
     var str = $("#did").val();
     var newStr = $("#inputRation").val();
+    let lastOperator = userAccount;
     $.ajax({
         type:"POST",
         url:"api/editRationLibs",
         dataType:"json",
-        data:{"rationName": str,"newName":newStr},
+        data:{"rationName": str,"newName":newStr, "lastOperator": lastOperator},
         cache:false,
         timeout:50000,
         success:function(result){

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

@@ -400,7 +400,7 @@ var rationOprObj = {
         $.ajax({
             type:"POST",
             url:"api/mixUpdateRationItems",
-            data:{"rationLibId": getQueryString("repository"), "sectionID": me.currentSectionId, "updateItems": JSON.stringify(updateArr), "addItems": JSON.stringify(addArr), "removeIds": JSON.stringify(removeIds)},
+            data:{"rationLibId": getQueryString("repository"), "lastOpr": userAccount, "sectionID": me.currentSectionId, "updateItems": JSON.stringify(updateArr), "addItems": JSON.stringify(addArr), "removeIds": JSON.stringify(removeIds)},
             dataType:"json",
             cache:false,
             timeout:5000,

+ 7 - 5
web/maintain/ration_repository/js/repository_glj.js

@@ -12,9 +12,11 @@ $("#fuzhu").click(function(){
 
 var pageOprObj = {
     rationLibName : null,
+    rationLibId: null,
     initPage : function(container) {
         var me = this, rationLibId = getQueryString("repository"),//获取定额库参数
             rationLibName = storageUtil.getSessionCache("RationGrp","repositoryID_" + rationLibId);
+        me.rationLibId = rationLibId;
         if (rationLibName) {
             var html = $("#rationname")[0].outerHTML;
             html = html.replace("XXX定额库", rationLibName);
@@ -479,7 +481,7 @@ var pageOprObj = {
         $.ajax({
             type: 'post',
             url: 'api/updateRationBasePrc',
-            data:{data: JSON.stringify({gljId: gljObj.gljId, basePrice: gljObj.basePrice, gljType: gljObj.gljType})},
+            data:{data: JSON.stringify({repId: pageOprObj.rationLibId, lastOpr: userAccount, gljId: gljObj.gljId, basePrice: gljObj.basePrice, gljType: gljObj.gljType})},
             dataType: 'json',
             success: function (result) {
                 if(result.error){
@@ -507,7 +509,7 @@ var pageOprObj = {
         $.ajax({
             type:"POST",
             url:"api/mixUpdateGljItems",
-            data:{"repositoryId": me.currentRepositoryId, "updateItems": JSON.stringify(updateArr), "addItems": JSON.stringify(addArr), "removeIds": JSON.stringify(removeIds)},
+            data:{"repositoryId": me.currentRepositoryId, "lastOpr": userAccount, "updateItems": JSON.stringify(updateArr), "addItems": JSON.stringify(addArr), "removeIds": JSON.stringify(removeIds)},
             dataType:"json",
             cache:false,
             timeout:5000,
@@ -637,7 +639,7 @@ var gljTypeTreeOprObj = {
         $.ajax({
             type:"POST",
             url:"api/deleteGljNodes",
-            data:{"nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
+            data:{"repId": pageOprObj.rationLibId, "lastOpr": userAccount, "nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
             dataType:"json",
             cache:false,
             timeout:5000,
@@ -676,7 +678,7 @@ var gljTypeTreeOprObj = {
             $.ajax({
                 type:"POST",
                 url:"api/updateGljNodes",
-                data:{"nodes": JSON.stringify(reqData)},
+                data:{"repId": pageOprObj.rationLibId, "lastOpr": userAccount, "nodes": JSON.stringify(reqData)},
                 dataType:"json",
                 cache:false,
                 timeout:5000,
@@ -707,7 +709,7 @@ var gljTypeTreeOprObj = {
         $.ajax({
             type:"POST",
             url:"api/createNewGljTypeNode",
-            data:{"repositoryId": repositoryGljObj.currentRepositoryId,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
+            data:{"lastOpr": userAccount, "repositoryId": repositoryGljObj.currentRepositoryId,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
             dataType:"json",
             cache:false,
             timeout:1000,

+ 3 - 3
web/maintain/ration_repository/js/section_tree.js

@@ -66,7 +66,7 @@ var zTreeOprObj = {
         $.ajax({
             type:"POST",
             url:"api/createNewNode",
-            data:{"rationLibId":pageOprObj.rationLibId,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
+            data:{"rationLibId":pageOprObj.rationLibId,"lastNodeId": lastNodeId, "lastOpr": userAccount, "rawNodeData": JSON.stringify(rawNode)},
             dataType:"json",
             cache:false,
             timeout:1000,
@@ -109,7 +109,7 @@ var zTreeOprObj = {
         $.ajax({
             type:"POST",
             url:"api/deleteNodes",
-            data:{"nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
+            data:{"repId": pageOprObj.rationLibId, "lastOpr": userAccount, "nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
             dataType:"json",
             cache:false,
             timeout:5000,
@@ -149,7 +149,7 @@ var zTreeOprObj = {
             $.ajax({
                 type:"POST",
                 url:"api/updateNodes",
-                data:{"nodes": JSON.stringify(reqData)},
+                data:{"repId": pageOprObj.rationLibId,"lastOpr": userAccount, "nodes": JSON.stringify(reqData)},
                 dataType:"json",
                 cache:false,
                 timeout:5000,

+ 1 - 1
web/maintain/ration_repository/main.html

@@ -130,7 +130,7 @@
     <script type="text/javascript" src="/public/web/storageUtil.js"></script>
 </body>
 <script type="text/javascript">
-
+let userAccount = '<%=userAccount %>';
 </script>
 
 </html>

web/maintain/report/css/templates/css/main.css → web/maintain/templates/css/main.css


+ 4 - 4
web/maintain/report/css/templates/html/bills.html

@@ -6,7 +6,7 @@
     <meta http-equiv="x-ua-compatible" content="ie=edge">
     <title>模板清单-Smartcost</title>
     <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
-    <link rel="stylesheet" href="/web/maintain/report/css/templates/css/main.css">
+    <link rel="stylesheet" href="/web/maintain/templates/css/main.css">
     <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
     <!--SpreadJs-->
     <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css" type="text/css">
@@ -87,7 +87,7 @@
 <script src="/lib/jquery/jquery.min.js"></script>
 <script src="/lib/tether/tether.min.js"></script>
 <script src="/lib/bootstrap/bootstrap.min.js"></script>
-<script src="/web/maintain/report/css/templates/js/global.js"></script>
+<script src="/web/maintain/templates/js/global.js"></script>
 <!-- SpreadJs -->
 <script type="text/javascript" src="/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
 <script>GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";</script>
@@ -97,8 +97,8 @@
 <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_controller.js"></script>
 <script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_helper.js"></script>
 <!-- service -->
-<script type="text/javascript" src="/web/maintain/report/css/templates/js/bills.js"></script>
-<script type="text/javascript" src="/web/maintain/report/css/templates/js/tp_bills_setting.js"></script>
+<script type="text/javascript" src="/web/maintain/templates/js/bills.js"></script>
+<script type="text/javascript" src="/web/maintain/templates/js/tp_bills_setting.js"></script>
 <script type="text/javascript" src="/public/web/common_ajax.js"></script>
 <script>
     autoFlashHeight();

+ 1 - 1
web/maintain/report/css/templates/js/bills.js

@@ -2,7 +2,7 @@
  * Created by Mai on 2017/4/17.
  */
 $(document).ready(function () {
-    var tempType = 3;
+    var tempType = 1;
     var FormatUpdateData = function (data) {
         var updateData = {};
         updateData['user_id'] = userID;

web/maintain/report/css/templates/js/global.js → web/maintain/templates/js/global.js


web/maintain/report/css/templates/js/tp_bills_setting.js → web/maintain/templates/js/tp_bills_setting.js