소스 검색

分摊 - 材料计算bug

zhangweicheng 5 년 전
부모
커밋
b4a6e0ccde

+ 2 - 2
web/building_saas/main/js/models/cache_tree.js

@@ -480,11 +480,11 @@ var cacheTree = {
             this.sortTreeItems();
             return rst;
         };
-        Tree.prototype.delete = function (node) {
+        Tree.prototype.delete = function (node,resetPre=true) {
             var success = false;
             success=this.cascadeRemove(node);
             this.sortTreeItems();
-            this.preSelected = null;
+            if(resetPre) this.preSelected = null;
             return success;
         };
         Tree.prototype.cascadeRemove = function (node) {

+ 18 - 6
web/building_saas/main/js/models/project.js

@@ -523,12 +523,20 @@ var PROJECT = {
 
 
           function deleteTreeNodes(deleteNodes) {
-              let controller = projectObj.mainController, project = projectObj.project;
-              let Bill = project.Bills, Ration = project.Ration;
-              for(let rd of deleteNodes){
-                  controller.sheet.deleteRows(rd.serialNo(),1);
+            let controller = projectObj.mainController, project = projectObj.project;
+            let Bill = project.Bills, Ration = project.Ration;
+            let selected = controller.tree.selected;
+            let selected_serialNo = selected.serialNo();
+              for (let rd of deleteNodes) {
+                controller.sheet.deleteRows(rd.serialNo(), 1);
+                if (selected.data.ID == rd.data.ID) {
                   controller.tree.delete(rd);
-                  if(rd.sourceType == Bill.getSourceType()) Bill.tree.delete(rd.source);
+                  controller.setTreeSelected(controller.tree.items[selected_serialNo] ? controller.tree.items[selected_serialNo] : controller.tree.items[controller.tree.items.length - 1]);
+                } else {
+                  controller.tree.delete(rd, false);
+                }
+
+                if (rd.sourceType == Bill.getSourceType()) Bill.tree.delete(rd.source);
               }
           }
           function addNewNodes(newDatas,refreshNode) {
@@ -553,7 +561,11 @@ var PROJECT = {
                   newAddNode.push(newNode);
                   refreshNode.push(newNode);
               }
-              TREE_SHEET_HELPER.refreshTreeNodeData(controller.setting, controller.sheet, newAddNode, false);
+            if (newAddNode.length == 0) return;
+            let sels = controller.sheet.getSelections();
+            controller.setTreeSelected(newAddNode[newAddNode.length -1]);
+            controller.sheet.setSelection(newAddNode[newAddNode.length - 1].serialNo(), sels[0].col, 1, 1);
+            TREE_SHEET_HELPER.refreshTreeNodeData(controller.setting, controller.sheet, newAddNode, false);
           }
         };
         project.prototype.setValue=function (obj,key,value) {

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

@@ -372,7 +372,7 @@ ProjectGLJ.prototype.calcAllMaterial = function (unitPriecs,needReCalc) {//当
             let fOrPDataMap = {};
             let tIndex = gljUtil.getIndex(g);
             //运费和原价中的工料机只要有一个包含该材料,就要重算
-            if(freightListMap[tIndex]){ //运费重算
+          if (freightListMap[tIndex]) { //运费重算
                 let freightUpdateMap = {};
                 for(let f of freightListMap[tIndex]){
                     if(f.conveyance != "自办运输") continue;//不是自办运输的不用管
@@ -388,7 +388,7 @@ ProjectGLJ.prototype.calcAllMaterial = function (unitPriecs,needReCalc) {//当
                 if(!_.isEmpty(freightUpdateMap)) fOrPDataMap["freight"] = {update:freightUpdateMap};
             }
             //原价重算
-            if(originalListMap[tIndex]){ //运费重算
+            if(originalListMap[tIndex]){ 
                 let originalUpdateMap = {};
                 for(let o of originalListMap[tIndex]){
                     let calo = ifNeedReCalc(o,priceMap,needReCalc);

+ 18 - 13
web/building_saas/main/js/views/material_calc_view.js

@@ -56,7 +56,7 @@ materialCalcObj = {
         },
          getText:{
           forExp:function (item) {
-             return item.exp&&item.exp!=""?item.exp:materialCalcObj.getFreightEXP(item);
+             return gljUtil.isDef(item.exp)?item.exp:materialCalcObj.getFreightEXP(item);
           }
       }
 
@@ -568,9 +568,10 @@ materialCalcObj = {
                 if (parseInt(row) >= me.freightDatas.length) {//新增
                     let tempFreight = null;
                     if (dataCode == "start") {
-                        tempFreight = me.getSavedFreight(value, material);
+                      tempFreight = me.getSavedFreight(value, material);
                     }
                     if (tempFreight) {
+                        if (tempFreight.conveyance == "自办运输") tempFreight.exp = "";
                         newData = tempFreight;
                     } else {
                         if(_.isEmpty(newData)) newData = me.getNewFreightData(material);
@@ -817,7 +818,7 @@ materialCalcObj = {
             for(let key in record){
                 if(key == "_id") continue;
                 f[key] = record[key];
-                if(key =="ration" || key == "ration_gljs")f[key] = [];//下面的定额和工料机不用保存
+                if(key =="rations" || key == "ration_gljs")f[key] = [];//下面的定额和工料机不用保存
             }
             user_freight.freight = f;
             projectObj.project.projectGLJ.updateUserFreight({freights:[user_freight],action:"add"});
@@ -825,22 +826,26 @@ materialCalcObj = {
     },
 
     updateUserFreight:function (record,userFreight) {
-        let t  = {};
-        for(let t_key in userFreight){
-            if(t_key == "ID") continue;
-            t[t_key] = userFreight[t_key];
+        let t = {};
+        for (let t_key in userFreight) {
+          if (t_key == "ID") continue;
+          t[t_key] = userFreight[t_key];
         }
 
         t.rootProjectID = projectObj.project.projectInfo.property.rootProjectID;
         let f = {};
-        for(let key in record){
-            if(key == "_id") continue;
-            f[key] = record[key];
-            if(key =="ration" || key == "ration_gljs")f[key] = [];//下面的定额和工料机不用保存
+        for (let key in record) {
+          if (key == "_id") continue;
+          f[key] = record[key];
+          if (key == "rations" || key == "ration_gljs") f[key] = []; //下面的定额和工料机不用保存
         }
+        if (record.conveyance == "自办运输") f.exp = '';
         t.freight = f;
-        projectObj.project.projectGLJ.updateUserFreight({ID:userFreight.ID,doc:t,action:"update"});
-
+        projectObj.project.projectGLJ.updateUserFreight({
+          ID: userFreight.ID,
+          doc: t,
+          action: "update"
+        });
     },