Browse Source

Merge branch 'master' into olym

olym 7 years atrás
parent
commit
2bbe5e708e

+ 40 - 13
public/calc_util.js

@@ -23,20 +23,47 @@ let executeObj = {
 
         if (base != null) {
             let price = 0, aprice = 0, mprice = 0, tmpSum = 0;
-            for (let glj of me.treeNode.data.gljList) {
-                if (base.gljTypes.indexOf(glj.type) >= 0) {
-                    if (base.calcType == baseCalc){ price = glj["basePrice"];}
-                    else if (base.calcType == adjustCalc){price = glj["adjustPrice"];}
-                    else if (base.calcType == budgetCalc){price = glj["marketPrice"];}
-                    else if (base.calcType == diffCalc){
-                        aprice = glj["adjustPrice"];
-                        if (!aprice) aprice = 0;
-                        mprice = glj["marketPrice"];
-                        if (!mprice) mprice = 0;
-                        price = mprice - aprice;
+
+            function isSubset(sub, arr){
+                // if(!(sub instanceof Array) || !(arr instanceof Array)) return false;
+                // if(sub.length > arr.length) return false;
+                for(var i = 0, len = sub.length; i < len; i++){
+                    if(arr.indexOf(sub[i]) == -1) return false;
+                }
+                return true;
+            }
+
+            // 机上人工费:多一层
+            if (isSubset(base.gljTypes, [gljType.MACHINE_LABOUR])) {
+                for (let glj of me.treeNode.data.gljList) {
+                       if (glj.type == gljType.GENERAL_MACHINE) {
+                            // 获取机械组成物
+                           let mds = projectObj.project.composition.getCompositionByCode(glj.code);
+                           for (let md of mds){
+                               if (base.gljTypes.indexOf(md.glj_type) >= 0) {
+                                   price = md["base_price"];
+                                   if (!price) price = 0;
+                                   tmpSum = tmpSum + glj["quantity"] * md["consumption"] * price;
+                               }
+                           };
+                       }
+                };
+            }else{
+                for (let glj of me.treeNode.data.gljList) {
+                    if (base.gljTypes.indexOf(glj.type) >= 0) {
+                        if (base.calcType == baseCalc){ price = glj["basePrice"];}
+                        else if (base.calcType == adjustCalc){price = glj["adjustPrice"];}
+                        else if (base.calcType == budgetCalc){price = glj["marketPrice"];}
+                        else if (base.calcType == diffCalc){
+                            aprice = glj["adjustPrice"];
+                            if (!aprice) aprice = 0;
+                            mprice = glj["marketPrice"];
+                            if (!mprice) mprice = 0;
+                            price = mprice - aprice;
+                        };
+                        if (!price) price = 0;
+                        tmpSum = tmpSum + glj["quantity"] * price;
                     };
-                    if (!price) price = 0;
-                    tmpSum = tmpSum + glj["quantity"] * price;
                 };
             };
             rst = tmpSum;

+ 0 - 23
public/web/calculation/calc_util.js

@@ -1,23 +0,0 @@
-/**
- * Created by Tony on 2017/6/19.
- */
-
-class calculation {
-    init(calcTpl, calFee){
-        let me = this;
-        me.calcTpl = calcTpl;
-        me.calFee = calFee;
-        me.hasCompiled = false;
-    };
-
-    compile(){
-        let me = this;
-        me.hasCompiled = false;
-        if (me.calcTpl && me.calcTpl.calcItems && me.calcTpl.calcItems.length > 0) {
-            me.calcTpl.compiledSeq = [];
-        }
-    };
-    calculate(){
-        //
-    }
-}

+ 31 - 2
web/building_saas/main/js/views/project_property_labour_coe_view.js

@@ -6,6 +6,7 @@ let labourCoeView = {
     datas: [],
     spread: null,
     sheet: null,
+    needUpdateDatas: [],
 
     init(){
         let me = this;
@@ -47,13 +48,37 @@ let labourCoeView = {
         sheet.setRowCount(1, sheetArea.colHeader);
         sheet.setRowCount(20, sheetArea.viewport);
         sheet.setRowHeight(0, 30, sheetArea.colHeader);
-
+        sheet.bind(GC.Spread.Sheets.Events.CellChanged, me.onCellChanged);
         sheet.resumeEvent();
         sheet.resumePaint();
     },
 
+    onCellChanged: function(sender, args){
+        var me = labourCoeView;
+        if (args.propertyName !== "value"){return;};
+        let cell = me.sheet.getCell(args.row, args.col);
+        // me.needUpdateDatas.push({ID: cell.coeID, value: cell.value()});
+        me.addNeedUpdateData({ID: cell.tag(), value: cell.value()});
+    },
+
+    addNeedUpdateData: function (data) {
+        let me = this;
+        let isExist = false;
+        for (let el of me.needUpdateDatas){
+             if (el.ID == data.ID){
+                 isExist = true;
+                 el.value = data.value;
+                 return;
+             };
+        };
+        if (!isExist){
+            me.needUpdateDatas.push(data);
+        }
+    },
+
     loadData(datas){          // 树结构转换二维表显示,行列转换
         let me = this;
+        me.spread.suspendEvent();
         me.datas = datas;
         let libArr = [];
         for (let v of me.datas) {if (!v.ParentID) libArr.push(v);};
@@ -83,12 +108,16 @@ let labourCoeView = {
                 let rowName = me.sheet.getText(r, 0);
                 for (let v of me.datas) {
                     if ((v.ParentID == libID) && (v.name == rowName)) {
-                        me.sheet.setValue(r, c + 1, v.coe);
+                        let cell = me.sheet.getCell(r, c+ 1);
+                        cell.value(v.coe);
+                        // cell.coeID = v.ID;
+                        cell.tag(v.ID);
                         break;
                     };
                 };
             };
         };
+        me.spread.resumeEvent();
     },
 
     showData(){