zhangweicheng 5 éve
szülő
commit
ba6fcd6002

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

@@ -562,8 +562,8 @@ ProjectGLJ.prototype.priceCalc = function (glj,dataMap,tpriceList) {
     supplyLocation = supplyList.join(',');
     if(priceList.length == 0){//如果原价计算表没有数据,则读取输入的或单价文件的值
         let doc = dataMap['material']&&dataMap['material']['update']?dataMap['material']['update']:{};
-        original_price = doc['originalPrice']?doc['originalPrice']:glj.unit_price.originalPrice;
-        supplyLocation = doc['supplyLocation']?doc['supplyLocation']:glj.unit_price.supplyLocation;
+        original_price = doc['originalPrice']!==undefined?doc['originalPrice']:glj.unit_price.originalPrice;
+        supplyLocation = doc['supplyLocation']!==undefined?doc['supplyLocation']:glj.unit_price.supplyLocation;
     }
     return [scMathUtil.roundForObj(original_price,unitPriceHasMix),supplyLocation];
 };

+ 45 - 14
web/building_saas/main/js/views/material_calc_view.js

@@ -113,6 +113,7 @@ materialCalcObj = {
         this.materialSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onMaterialValueChange);
         this.materialSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onMaterialSelectionChange);
         this.materialSheet.bind(GC.Spread.Sheets.Events.EditStarting,this.onMaterialEditStarting);
+        this.materialSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onMaterialRangeChange);
         this.materialSheet.name('material_calc');
         if(projectReadOnly){
             disableSpread(this.materialSpread);
@@ -404,21 +405,34 @@ materialCalcObj = {
 
     onMaterialValueChange:function (sender,args) {
         let me = materialCalcObj;
-        let dataCode = me.materialSetting.header[args.col].dataCode;
-        let value = args.newValue;
-        if (value&&!sheetCommonObj.checkData(args.col,me.materialSetting,value)) {
-            alert('输入的数据类型不对,请重新输入!');
-            me.showDatas();
-            return;
-        }
-        if(dataCode != 'supplyLocation'){
-            value = value?scMathUtil.roundForObj(value,getDecimal("glj.unitPrice"))+'':'0'//4舍五入加默认为0
+        let dataMap = {};
+        dataMap[args.row]={};
+        dataMap[args.row][args.col] = args.newValue;
+        me.updateMaterialCalcs(dataMap);
+    },
+    updateMaterialCalcs:function(dataMap){
+        let me = materialCalcObj;
+        let updateDatas = [];
+        for(let row in dataMap) {
+          let t = dataMap[row];
+          let doc = {};
+          let recode = me.materialDatas[row];
+          for (let col in t) {
+            let value = t[col];
+            let dataCode = me.materialSetting.header[col].dataCode;
+            if (value&&!sheetCommonObj.checkData(col,me.materialSetting,value)) {
+                alert('输入的数据类型不对,请重新输入!');
+                return me.showDatas();
+            }
+            if(dataCode != 'supplyLocation'){
+                value = value?scMathUtil.roundForObj(value,getDecimal("glj.unitPrice"))+'':'0'//4舍五入加默认为0
+            }
+            if(recode[dataCode] == value) continue;
+            doc[dataCode] = value;
+          }
+          if (!_.isEmpty(doc)) updateDatas.push({id:recode.id,doc:doc});
         }
-        let recode = me.materialDatas[args.row];
-        if(recode[dataCode] == value) return;
-        let doc = {};
-        doc[dataCode] = value;
-        projectObj.project.projectGLJ.updateMaterialCalc([{id:recode.id,doc:doc}]);
+        if(updateDatas.length > 0) projectObj.project.projectGLJ.updateMaterialCalc(updateDatas);
     },
     getDefualtCalcType:function () {
       return "全国";
@@ -473,6 +487,23 @@ materialCalcObj = {
         }
         return t;
     },
+    onMaterialRangeChange:function(sender,args){
+      let me = materialCalcObj;
+      let dataMap={};
+      for(let c of args.changedCells){
+        let info = {row:c.row,col:c.col,cancel:false};
+        me.onMaterialEditStarting(sender,info);
+        if(info.cancel) return me.showDatas();
+        let value=  args.sheet.getCell(c.row, c.col).text();
+        if(dataMap[c.row]){
+            dataMap[c.row][c.col]=value;
+        }else{
+            dataMap[c.row] ={};
+            dataMap[c.row][c.col] = value;
+        }
+      }
+      me.updateMaterialCalcs(dataMap);
+    },
     onFreightPriceRangeChange:function (sender,args) {
         let me = materialCalcObj;
         let dataMap={};