Przeglądaj źródła

公式计算。

Chenshilong 7 lat temu
rodzic
commit
7410f09234

+ 16 - 7
web/building_saas/main/js/models/calc_program.js

@@ -8,7 +8,7 @@
 
 let defaultBillTemplate = {
     ID: 15,
-    name: "清单缺省",
+    name: "清单公式",
     calcItems: [
         {
             ID: 1,
@@ -336,8 +336,10 @@ let executeObj = {
     },
     HJ: function () {
         let me = this;
-        let rst = me.treeNode.data.marketUnitFee ? me.treeNode.data.marketUnitFee : 0;
-        return rst;
+        let p = me.treeNode.data.calcBase ? me.treeNode.data.calcBase : 0;
+        let q = me.treeNode.data.quantity ? me.treeNode.data.quantity : 1;
+        let u = (p / q).toDecimal(me.digit);
+        return u;
     }
 };
 
@@ -622,10 +624,16 @@ class CalcProgram {
                 };
             }
             else if (treeNode.calcType == treeNodeCalcType.ctRationCalcProgram) {
-                let muf = treeNode.data.marketUnitFee ? treeNode.data.marketUnitFee : 0;
-                let q = treeNode.data.quantity ? treeNode.data.quantity : 0;
-                treeNode.data.marketTotalFee = (muf * q).toDecimal(me.digit);
-                treeNode.data.gljList = me.project.ration_glj.getGljArrByRation(treeNode.data.ID);
+                if (treeNode.sourceType === me.project.Ration.getSourceType()){
+                    treeNode.data.gljList = me.project.ration_glj.getGljArrByRation(treeNode.data.ID);
+                }
+                else if (treeNode.sourceType === me.project.VolumePrice.getSourceType()){
+                    delete treeNode.data.gljList;
+                    let muf = treeNode.data.marketUnitFee ? treeNode.data.marketUnitFee : 0;
+                    let q = treeNode.data.quantity ? treeNode.data.quantity : 0;
+                    treeNode.data.marketTotalFee = (muf * q).toDecimal(me.digit);
+                };
+
                 if (treeNode.data.programID == undefined){
                     treeNode.data.programID = projectInfoObj.projectInfo.property.engineering;
                 };
@@ -732,6 +740,7 @@ class CalcProgram {
                     projectID: me.project.ID(),
                     type: node.data.type,
                     quantity: node.data.quantity,
+                    calcBase: node.data.calcBase,
                     programID: node.data.programID,
                     marketUnitFee: node.data.marketUnitFee,
                     marketTotalFee: node.data.marketTotalFee,

+ 4 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -20,6 +20,7 @@ let MainTreeCol = {
             }
         },
 
+        // CSL, 2017-11-28
         calcProgramName: function (node) {
             let programID = node.data.programID;
             if (!programID) return
@@ -30,7 +31,7 @@ let MainTreeCol = {
         type: function (node){
             return node.sourceType !== projectObj.project.VolumePrice.getSourceType();
         },
-
+        // CSL, 2017-11-28
         calcProgramName: function (node) {
             if (
                 node.sourceType === projectObj.project.VolumePrice.getSourceType() ||
@@ -94,6 +95,7 @@ let MainTreeCol = {
             return feeRateObject.getFeeRateEditCellType();
         },
 
+        // CSL, 2017-11-28
         calcProgramName: function (node) {
             if (
                 node.sourceType === projectObj.project.VolumePrice.getSourceType() ||
@@ -106,6 +108,7 @@ let MainTreeCol = {
             }
         },
 
+        // CSL, 2017-11-28
         type: function (node) {
             if (node.sourceType === projectObj.project.VolumePrice.getSourceType()) {
                 let VPType = new GC.Spread.Sheets.CellTypes.ComboBox();

+ 3 - 1
web/building_saas/main/js/views/project_view.js

@@ -267,11 +267,13 @@ var projectObj = {
             else if(fieldName ==='feeRate'){
                 project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
             }
-            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'programID' || fieldName === 'type'){
+            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'programID' || fieldName === 'type' || fieldName === 'calcBase'){
                 if (fieldName === 'quantity' && project.quantity_detail.quantityEditChecking(value,node,fieldName)) {
                     if (value) {value = value.toDecimal(projectObj.project.Decimal.common.quantity)};
                 } else if (fieldName === 'marketUnitFee') {
                     if (value) {value = parseFloat(value).toDecimal(projectObj.project.Decimal.common.unitFee)};
+                } else if (fieldName === 'calcBase') {
+                    if (value) {value = parseFloat(value).toDecimal(projectObj.project.Decimal.common.totalFee)};
                 };
 
                 node.changed = true;