Browse Source

update ration_glj

zhangweicheng 7 năm trước cách đây
mục cha
commit
53eb9fa8ef

+ 1 - 1
web/building_saas/main/js/models/project_glj.js

@@ -184,7 +184,7 @@ ProjectGLJ.prototype.updateBasePriceFromRG=function(recode,updateField,newval){
     }
 }
 ProjectGLJ.prototype.refreshTreeNodePriceIfNeed = function (data) {
-    if((data.unit_price.type = gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial==true){
+    if((data.unit_price.type = gljType.MAIN_MATERIAL||data.unit_price.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial==true){
         var nodes = _.filter(projectObj.project.mainTree.items,function (tem) {
             if(tem.sourceType==ModuleNames.ration_glj&&tem.data.projectGLJID ==data.id){
                 tem.data.marketUnitFee = data.unit_price.market_price;

+ 24 - 11
web/building_saas/main/js/models/ration_glj.js

@@ -175,7 +175,8 @@ var ration_glj = {
             return glj_list[glj_index].rationID;
         };
         ration_glj.prototype.refreshAfterDelete=function(data){
-            var glj_list = projectObj.project.ration_glj.datas;
+            var me = projectObj.project.ration_glj;
+            var glj_list = me.datas;
             var oldData = _.remove(glj_list,data.query);
             _.remove(gljOprObj.sheetData,data.query);
             gljOprObj.showRationGLJSheetData();
@@ -193,9 +194,7 @@ var ration_glj = {
             projectObj.mainController.refreshTreeNode([rationNode]);
             for(let o of oldData){
                 if(this.needShowToTree(o)){
-                    let node = _.find(projectObj.project.mainTree.items,function (n) {//找到对应的树节点
-                        return n.sourceType==ModuleNames.ration_glj &&n.data.ID==o.ID;
-                    });
+                    let node = me.findTreeNodeByID(o.ID);  //找到对应的树节点
                     projectObj.mainController.deleteNode(node,next);
                 }
             }
@@ -410,7 +409,10 @@ var ration_glj = {
           var allGLJ=gljOprObj.AllRecode;
             GLJSelection.sort();
           _.forEach(GLJSelection,function (g) {
-              var glj=_.find(allGLJ,{'code':g});
+              var glj=_.find(allGLJ,function (item) {
+                var i_key = gljOprObj.getIndex(item,['code','name','specs','unit','gljType']);
+                return i_key ==g;
+              });
               var ration_glj ={
                   projectID:ration.projectID,
                   GLJID:glj.ID,
@@ -446,8 +448,11 @@ var ration_glj = {
         };
         ration_glj.prototype.replaceGLJ=function (selectCode,oldData,callback) {
             var allGLJ=gljOprObj.AllRecode;
-            var glj=_.find(allGLJ,{'code':selectCode});
-            if(selectCode==oldData.code){
+            var glj=_.find(allGLJ,function (item) {
+                var i_key = gljOprObj.getIndex(item,['code','name','specs','unit','gljType']);
+                return i_key ==selectCode;
+            });
+            if(selectCode==gljOprObj.getIndex(oldData,['code','name','specs','unit','type'])){
                 return callback(null);
             }
             if(oldData.createType!='replace'){
@@ -479,8 +484,11 @@ var ration_glj = {
 
         ration_glj.prototype.mReplaceGLJ=function (selectCode,oldData,callback) {
             var allGLJ=gljOprObj.AllRecode;
-            var glj=_.find(allGLJ,{'code':selectCode});
-            if(selectCode==oldData.code){
+            var glj=_.find(allGLJ,function (item) {
+                var i_key = gljOprObj.getIndex(item,['code','name','specs','unit','gljType']);
+                return i_key ==selectCode;
+            });
+            if(selectCode== gljOprObj.getIndex(oldData,['code','name','specs','unit','type'])){
                 return callback(null);
             }
             var query={
@@ -570,12 +578,17 @@ var ration_glj = {
                 gljOprObj.refreshTreeNode({"type":ModuleNames.ration_glj,"ID":data.ID});
             }
         };
-
         ration_glj.prototype.needShowToTree=function(data){
-            if((data.type == gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMateria==true){
+            if((data.type == gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMaterial==true){
                 return true
             }
             return false
+        };
+        ration_glj.prototype.findTreeNodeByID = function (ID) {
+            let node = _.find(projectObj.project.mainTree.items,function (n) {//找到对应的树节点
+                return n.sourceType==ModuleNames.ration_glj &&n.data.ID==ID;
+            });
+            return node;
         }
         return new ration_glj(project);
     }

+ 59 - 17
web/building_saas/main/js/views/glj_view.js

@@ -856,7 +856,7 @@ var gljOprObj = {
         }else {
             me.gljLibSheetData=me[val];
         }
-        if($('#actionType').val()!='add'){
+        if($('#actionType').val()=='replace'||$('#actionType').val()=='m_replace'){
             me.filterLibGLJByType();
         }
         if(me.gljCurTypeId==undefined){
@@ -878,29 +878,37 @@ var gljOprObj = {
         }
     },
     addGLJsSelection:function (args,newVal) {
+         var con_key = this.getIndex(this.gljLibSheetData[args.row],['code','name','specs','unit','gljType'])
         if(newVal==1){
-            this.GLJSelection.push(this.gljLibSheetData[args.row].code);
+            this.GLJSelection.push(con_key);
             this.gljLibSheetData[args.row].select=1;
         }else if(newVal==0){
-            _.pull(this.GLJSelection,this.gljLibSheetData[args.row].code);
+            _.pull(this.GLJSelection,con_key);
             this.gljLibSheetData[args.row].select=0;
         }
     },
     replaceGLJSelection:function (args,newVal) {
+        var me =this;
         var oldSelection=this.GLJSelection[0];
         if(newVal==0){
             args.sheet.getCell(args.row, args.col).value(1);
             return;
         }
-        this.GLJSelection=[this.gljLibSheetData[args.row].code];
+        this.GLJSelection=[me.getIndex(this.gljLibSheetData[args.row],['code','name','specs','unit','gljType'])];
         this.gljLibSheetData[args.row].select=1;
-        var oindex = _.findIndex(this.gljLibSheetData,{'code':oldSelection});
+        var oindex = _.findIndex(this.gljLibSheetData,function (item) {
+            var i_key = me.getIndex(item,['code','name','specs','unit','gljType']);
+            return oldSelection==i_key;
+        });
         if(oindex!=-1){
             args.sheet.getCell(oindex, args.col).value(0);
             this.gljLibSheetData[oindex].select=0;
         }else {
-            var oldData = _.find(gljOprObj.AllRecode,{'code':oldSelection})
-            oldData.select=0;
+            var oldData = _.find(gljOprObj.AllRecode,function (item) {
+                var i_key = me.getIndex(item,['code','name','specs','unit','gljType']);
+                return oldSelection==i_key;
+            });
+            oldData?oldData.select=0:"";
         }
     },
     filterLibGLJByType:function () {
@@ -941,11 +949,20 @@ var gljOprObj = {
         });
         return distTypeTree;
     },
+    doInsertGLJ:function () {
+        var selected = projectObj.project.mainTree.selected;
+        var project= projectObj.project;
+        console.log(gljOprObj.GLJSelection);
+    },
     doAddGLJ:function () {
         var selected = projectObj.project.mainTree.selected;
         var project= projectObj.project;
         gljOprObj.GLJSelection= _.filter(gljOprObj.GLJSelection,function (n) {
-            return _.find(gljOprObj.sheetData,{'code':n})?false:true;
+            var rg = _.find(gljOprObj.sheetData,function (item) {
+                var i_key = gljOprObj.getIndex(item,['code','name','specs','unit','type']);
+                 return n==i_key
+            })
+            return rg?false:true;
         })
         if(gljOprObj.GLJSelection.length>0&&selected&&selected.sourceType==ModuleNames.ration){
             $("#glj_tree_div").modal('hide');
@@ -979,11 +996,22 @@ var gljOprObj = {
                 //result.adjustState;
                 var data =result.data;
                 var index = _.findIndex(gljOprObj.sheetData,{'ID':data.ID});
+                var nodes = [selected];
                 gljOprObj.sheetData[index]=data;
                 gljOprObj.showRationGLJSheetData();
+                if(project.ration_glj.needShowToTree(data)){//当替换的是主材或设备时,刷新对应的树节点
+                    var  node =  project.ration_glj.findTreeNodeByID(data.ID);
+                    if(node){
+                        project.ration_glj.transferToNodeData(data);
+                        node.source = data;
+                        node.data = data;
+                    }
+                    node?nodes.push(node):"";
+                }
+                //project.ration_glj.addToMainTree(data);
                 project.projectGLJ.loadData();
                 selected.data.adjustState=result.adjustState;
-                projectObj.mainController.refreshTreeNode([selected]);
+                projectObj.mainController.refreshTreeNode(nodes);
             }
             $.bootstrapLoading.end();
         })
@@ -998,15 +1026,21 @@ var gljOprObj = {
             var data=result.data;
             var stateList= result.stateList;
             var n_index = me.getIndex(data.query,['code','name','specs','unit','type']);
+            var nodes=[];
             _.forEach(project.ration_glj.datas,function (t) {
                 var t_index =me.getIndex(t,['code','name','specs','unit','type']);
                 if(n_index==t_index){
                     me.updateProperty(t,data.doc);
+                    if(project.ration_glj.needShowToTree(t)){//如果是造价书中的树节点,则也须刷新
+                        project.ration_glj.transferToNodeData(t);
+                        var node = project.ration_glj.findTreeNodeByID(t.ID);
+                        nodes.push(node);
+                    }
                 }
             })
             me.showRationGLJSheetData();
             project.projectGLJ.loadData();
-            me.refreshStateAfterMreplace(stateList);
+            me.refreshStateAfterMreplace(stateList,nodes);
             $.bootstrapLoading.end();
         })
     },
@@ -1015,7 +1049,7 @@ var gljOprObj = {
             obj[key] = n;
         });
     },
-    refreshStateAfterMreplace:function (stateList) {
+    refreshStateAfterMreplace:function (stateList,gljNodes) {
         var nodes=[];
         _.forEach(stateList,function (s) {
           var node = _.find(projectObj.project.mainTree.items,function (n) {
@@ -1026,6 +1060,7 @@ var gljOprObj = {
               nodes.push(node);
           }
         });
+        gljNodes.length>0?nodes = nodes.concat(gljNodes):"";
         projectObj.mainController.refreshTreeNode(nodes);
     },
     refreshView:function () {
@@ -1180,16 +1215,21 @@ $(function(){
         }
         gljOprObj.gljLibSheetData =gljOprObj.AllRecode;
         var selected=null;
-        if($('#actionType').val()=='add',$('#actionType').val()=='insert'){
+        if($('#actionType').val()=='add'||$('#actionType').val()=='insert'){
             gljOprObj.GLJSelection=[];
         }else {
              selected=gljOprObj.sheetData[gljContextMenu.selectedRow];
-            gljOprObj.GLJSelection=[selected.code];
+             var connect_key = gljOprObj.getIndex(selected,['code','name','specs','unit','type'])
+            gljOprObj.GLJSelection=[connect_key];
             gljOprObj.filterLibGLJByType();
         }
 
         if(selected!=null){
-            var r = _.find(gljOprObj.gljLibSheetData,{'code':selected.code});
+            var s_key = gljOprObj.getIndex(selected,['code','name','specs','unit','gljType']);
+            var r = _.find(gljOprObj.gljLibSheetData,function (item) {
+                var item_key = gljOprObj.getIndex(item,['code','name','specs','unit','type']);
+                return s_key == item_key;
+            });
             r?r.select=1:"";
         }
         gljOprObj.showLibGLJSheetData();
@@ -1211,11 +1251,13 @@ $(function(){
         if(gljOprObj.GLJSelection.length<1){
             return;
         }
-        if($('#actionType').val()=='add'){
+        if($('#actionType').val()=='insert'){  //造价书页面中插入定额类型的工料机
+            gljOprObj.doInsertGLJ();
+        }else if($('#actionType').val()=='add'){ //添加工料机
             gljOprObj.doAddGLJ();
-        }else if($('#actionType').val()=='replace'){
+        }else if($('#actionType').val()=='replace'){//替换工料机
             gljOprObj.doReplaceGLJ();
-        }else if($('#actionType').val()=='m_replace'){
+        }else if($('#actionType').val()=='m_replace'){//批量替换工料机
             gljOprObj.doMReplaceGLJ();
         }
     })