浏览代码

tuning for XiaoMai

TonyKang 8 年之前
父节点
当前提交
6addb78bb3

+ 10 - 3
modules/rationRepository/controllers/rationChapterTreeController.js

@@ -22,9 +22,16 @@ var callback = function(req,res,err,data){
 module.exports ={
     getRationChapterTree: function(req,res){
         var libName = req.body.rationLibName;
-        rationChapterTreeData.getRationChapterTree(libName,function(err,data){
-            callback(req,res,err,data)
-        })
+        var repId = req.body.rationRepositoryId;
+        if (libName) {
+            rationChapterTreeData.getRationChapterTree(libName,function(err,data){
+                callback(req,res,err,data)
+            })
+        } else if (repId) {
+            rationChapterTreeData.getRationChapterTreeByRepId(repId,function(err,data){
+                callback(req,res,err,data)
+            })
+        }
     },
     createNewNode: function(req, res){
         var libName = req.body.rationLibName;

+ 14 - 0
modules/rationRepository/models/rationChapterTree.js

@@ -36,6 +36,20 @@ rationChapterTreeDAO.prototype.getRationChapterTree = function(repositoryName,ca
     })
 }
 
+rationChapterTreeDAO.prototype.getRationChapterTreeByRepId = function(repId,callback){
+    repositoryMap.getRepositoryById(repId, function(err, rst){
+        if (err || rst.length == 0) {
+            callback("获取定额库错误!",false)
+        } else {
+            rationChapterTreeModel.find({"rationRepId": rst[0].ID, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){
+                if(data.length) callback(false,data);
+                else  if(err) callback("获取定额树错误!",false)
+                else callback(false,false);
+            })
+        }
+    })
+}
+
 rationChapterTreeDAO.prototype.createNewNode = function(repositoryName, lastNodeId, nodeData,callback){
     var promise = repositoryMap.getRealLibName(repositoryName), libId;
     if (promise) {

+ 15 - 0
modules/rationRepository/models/repositoryMap.js

@@ -46,6 +46,21 @@ rationRepositoryDao.prototype.getRealLibName = function(dispName,callback){
     }
 };
 
+rationRepositoryDao.prototype.getRepositoryById = function(repId,callback){
+    if (callback) {
+        rationRepository.find({"ID": repId}, function(err,data){
+            if (err) {
+                callback('Error', null);
+            } else {
+                callback(false, data);
+            }
+        });
+    } else {
+        var rst = rationRepository.find({"ID": repId}).exec();
+        return rst;
+    }
+};
+
 rationRepositoryDao.prototype.addRationRepository = function( rationLibObj,callback){
     counter.counterDAO.getIDAfterCount(counter.moduleName.rationMap, 1, function(err, result){
         var rMap = createNewLibModel(rationLibObj);

+ 89 - 50
web/rationLibEditor/js/rationGLJ.js

@@ -12,8 +12,7 @@ var rationGLJOprObj = {
             {headerName:"单位",headerWidth:160,dataCode:"unit", dataType: "String"},
             {headerName:"单位基价",headerWidth:160, dataCode:"basePrice", dataType: "Number", precision: 2},
             {headerName:"定额消耗",headerWidth:160, dataCode:"consumeAmt", dataType: "Number", precision: 3},
-            {headerName:"类型",headerWidth:160,dataCode:"gljDistType", dataType: "String"},
-            {headerName:"操作",headerWidth:130,dataCode:"code", dataType: "String"}
+            {headerName:"类型",headerWidth:160,dataCode:"gljDistType", dataType: "String"}
         ],
         view:{
             comboBox:[],
@@ -26,6 +25,24 @@ var rationGLJOprObj = {
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
+        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
+    },
+    onRangeChanged: function(sender, args) {
+        if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
+            var me = rationGLJOprObj, updateArr = [], removeArr = [];
+            if (args.col == 0) {
+                if (me.cache["_GLJ_" + me.currentRationItem.ID]) {
+                    var cacheArr = me.cache["_GLJ_" + me.currentRationItem.ID];
+                    for (var i = args.rowCount - 1; i <= 0; i--) {
+                        if (args.row + i < cacheArr.length) {
+                            cacheArr.splice(args.row + i, 1);
+                        }
+                    }
+                    me.updateRationItem();
+                }
+            }
+
+        }
     },
     onClipboardPasting: function(sender, args) {
         var me = rationGLJOprObj;
@@ -42,54 +59,7 @@ var rationGLJOprObj = {
                 for (var i = 0; i < tmpCodes.length; i++) {
                     codes.push(tmpCodes[i].code);
                 }
-                $.ajax({
-                    type:"POST",
-                    url:"api/getGljItemsByCodes",
-                    data:{"gljCodes": JSON.stringify(codes), repId: repId},
-                    dataType:"json",
-                    cache:false,
-                    timeout:5000,
-                    success:function(result){
-                        sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
-                        if (result) {
-                            var rstArr = [], dummyR = {gljId: 0, consumeAmt:0}, newAddArr = [];
-                            for (var i = 0; i < result.data.length; i++) {
-                                dummyR.gljId = result.data[i].ID;
-                                rstArr.push(me.createRationGljDisplayItem(dummyR, result.data[i]));
-                            }
-                            if (me.cache["_GLJ_" + me.currentRationItem.ID]) {
-                                var cacheArr = me.cache["_GLJ_" + me.currentRationItem.ID];
-                                for (var i = 0; i < rstArr.length; i++) {
-                                    var hasDup = false;
-                                    for (var j = 0; j < cacheArr.length; j++) {
-                                        if (cacheArr[j].gljId == rstArr[i].gljId) {
-                                            hasDup = true;
-                                            break;
-                                        }
-                                    }
-                                    if (!hasDup) {
-                                        newAddArr.push(rstArr[i]);
-                                    }
-                                }
-                                cacheArr.sort(function(a, b) {
-                                    var rst = 0;
-                                    if (a.code > b.code) rst = 1
-                                    else if (a.code < b.code) rst = -1;
-                                    return rst;
-                                });
-                                me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
-                            }
-                            me.showGljItems(me.currentRationItem.ID);
-                            if (newAddArr.length > 0) {
-                                me.updateRationItem();
-                            }
-                        }
-                        sheetCommonObj.lockCells(me.workBook.getSheet(0), me.setting);
-                    },
-                    error:function(err){
-                        alert(err);
-                    }
-                })
+                me.addGljItems(codes, repId);
             } else {
                 //修改用量
             }
@@ -108,9 +78,78 @@ var rationGLJOprObj = {
             }
         } else {
             //重新更新工料机
+            if (args.editingText == null || args.editingText.trim() == "") {
+                //delete
+                if (me.cache["_GLJ_" + me.currentRationItem.ID]) {
+                    var cacheArr = me.cache["_GLJ_" + me.currentRationItem.ID];
+                    if (args.row < cacheArr.length) {
+                        cacheArr.splice(args.row, 1);
+                        me.updateRationItem();
+                    }
+                }
+            } else {
+                var repId = storageUtil.getSessionCache("RationGrp","repositoryID");
+                if (repId) {
+                    var codes = [];
+                    codes.push(args.editingText.trim());
+                    me.addGljItems(codes, repId);
+                }
+            }
         }
     },
 
+    addGljItems: function(codes, repId) {
+        var me = this;
+        $.ajax({
+            type:"POST",
+            url:"api/getGljItemsByCodes",
+            data:{"gljCodes": JSON.stringify(codes), repId: repId},
+            dataType:"json",
+            cache:false,
+            timeout:5000,
+            success:function(result){
+                sheetCommonObj.cleanSheet(me.workBook.getSheet(0), me.setting, -1);
+                if (result) {
+                    var rstArr = [], dummyR = {gljId: 0, consumeAmt:0}, newAddArr = [];
+                    for (var i = 0; i < result.data.length; i++) {
+                        dummyR.gljId = result.data[i].ID;
+                        rstArr.push(me.createRationGljDisplayItem(dummyR, result.data[i]));
+                    }
+                    if (me.cache["_GLJ_" + me.currentRationItem.ID]) {
+                        var cacheArr = me.cache["_GLJ_" + me.currentRationItem.ID];
+                        for (var i = 0; i < rstArr.length; i++) {
+                            var hasDup = false;
+                            for (var j = 0; j < cacheArr.length; j++) {
+                                if (cacheArr[j].gljId == rstArr[i].gljId) {
+                                    hasDup = true;
+                                    break;
+                                }
+                            }
+                            if (!hasDup) {
+                                newAddArr.push(rstArr[i]);
+                            }
+                        }
+                        cacheArr.sort(function(a, b) {
+                            var rst = 0;
+                            if (a.code > b.code) rst = 1
+                            else if (a.code < b.code) rst = -1;
+                            return rst;
+                        });
+                        me.cache["_GLJ_" + me.currentRationItem.ID] = cacheArr.concat(newAddArr);
+                    }
+                    me.showGljItems(me.currentRationItem.ID);
+                    if (newAddArr.length > 0) {
+                        me.updateRationItem();
+                    }
+                }
+                sheetCommonObj.lockCells(me.workBook.getSheet(0), me.setting);
+            },
+            error:function(err){
+                alert(err);
+            }
+        })
+    },
+
     updateRationItem: function() {
         var me = this, updateArr = [];
         if (me.currentRationItem) {