Przeglądaj źródła

小数位数。

Chenshilong 7 lat temu
rodzic
commit
04d6a33e8a

+ 30 - 31
web/building_saas/main/js/models/calc_program.js

@@ -327,12 +327,12 @@ let executeObj = {
                             if (base.gljTypes.indexOf(md.glj_type) >= 0) {
                                 let q = md["consumption"] ? md["consumption"] : 0;
                                 let p = md["base_price"] ? md["base_price"] : 0;
-                                mdSum = mdSum + (q * p).toDecimal(me.digit);
-                                mdSum = (mdSum).toDecimal(me.digitDefault);
+                                mdSum = mdSum + (q * p).toDecimal(decimalObj.process);
+                                mdSum = (mdSum).toDecimal(decimalObj.process);
                             }
                         };
-                        result = result + (glj["quantity"] * mdSum).toDecimal(me.digitDefault);
-                        result = (result).toDecimal(me.digitDefault);
+                        result = result + (glj["quantity"] * mdSum).toDecimal(decimalObj.process);
+                        result = (result).toDecimal(decimalObj.process);
                     };
                 };
                 return result;
@@ -349,10 +349,10 @@ let executeObj = {
                         else if (base.calcType == baseCalcType.diffCalc){
                             let aprice = glj["adjustPrice"] ? glj["adjustPrice"] : 0;
                             let mprice = glj["marketPrice"] ? glj["marketPrice"] : 0;
-                            price = (parseFloat(mprice) - parseFloat(aprice)).toDecimal(me.digitDefault);
+                            price = (parseFloat(mprice) - parseFloat(aprice)).toDecimal(decimalObj.process);
                         };
-                        result = result + (glj["quantity"] * price).toDecimal(me.digitDefault);
-                        result = (result).toDecimal(me.digitDefault);
+                        result = result + (glj["quantity"] * price).toDecimal(decimalObj.process);
+                        result = (result).toDecimal(decimalObj.process);
                     };
                 };
                 return result;
@@ -388,7 +388,7 @@ let executeObj = {
         let me = this;
         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);
+        let u = (p / q).toDecimal(decimalObj.decimal('unitPrice', me.treeNode));
         return u;
     }
 };
@@ -418,9 +418,6 @@ class CalcProgram {
     // 经测试,全部编译一次耗时0.003~0.004秒。耗时基本忽略不计。
     compileAllTemps(){
         let me = this;
-        me.digit = 2;
-        me.digitDefault = 6;
-
         me.compiledFeeRates = {};
         me.compiledLabourCoes = {};
         me.compiledTemplates = {};
@@ -660,10 +657,10 @@ class CalcProgram {
                     for (let item of objsArr) {
                         let data = item.data;
                         if (data.feesIndex && data.feesIndex[ft.type]) {
-                            buf = (buf + parseFloat(data.feesIndex[ft.type].unitFee)).toDecimal(me.digitDefault);
-                            btf = (btf + parseFloat(data.feesIndex[ft.type].totalFee)).toDecimal(me.digitDefault);
-                            btuf = (btuf + parseFloat(data.feesIndex[ft.type].tenderUnitFee)).toDecimal(me.digitDefault);
-                            bttf = (bttf + parseFloat(data.feesIndex[ft.type].tenderTotalFee)).toDecimal(me.digitDefault);
+                            buf = (buf + parseFloat(data.feesIndex[ft.type].unitFee)).toDecimal(decimalObj.process);
+                            btf = (btf + parseFloat(data.feesIndex[ft.type].totalFee)).toDecimal(decimalObj.process);
+                            btuf = (btuf + parseFloat(data.feesIndex[ft.type].tenderUnitFee)).toDecimal(decimalObj.process);
+                            bttf = (bttf + parseFloat(data.feesIndex[ft.type].tenderTotalFee)).toDecimal(decimalObj.process);
                         };
                     };
                 }
@@ -683,32 +680,32 @@ class CalcProgram {
                         };
 
                         if (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationContent) {
-                            buf = (buf + (ruf * rq / bq).toDecimal(2)).toDecimal(2);
-                            btuf = (btuf + (rtuf * rq / bq).toDecimal(2)).toDecimal(2);
+                            buf = (buf + (ruf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
+                            btuf = (btuf + (rtuf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
                         };
 
-                        sum_rtf = (sum_rtf + rtf).toDecimal(2);
-                        sum_rttf = (sum_rttf + rttf).toDecimal(2);
+                        sum_rtf = (sum_rtf + rtf).toDecimal(decimalObj.process);
+                        sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
                     };
 
                     if (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPrice || me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPriceConverse) {
-                        buf = (sum_rtf / bq).toDecimal(2);
-                        btuf = (sum_rttf / bq).toDecimal(2);
+                        buf = (sum_rtf / bq).toDecimal(decimalObj.process);
+                        btuf = (sum_rttf / bq).toDecimal(decimalObj.process);
                     };
                     if (isBaseFeeType(ft.type) || (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPriceConverse && ft.type == "common")){
                         btf = sum_rtf;
                         bttf = sum_rttf;
                     }
                     else{
-                        btf = (buf * bq).toDecimal(2);
-                        bttf = (btuf * bq).toDecimal(2);
+                        btf = (buf * bq).toDecimal(decimalObj.process);
+                        bttf = (btuf * bq).toDecimal(decimalObj.process);
                     };
                 };
 
-                ftObj.unitFee = buf;
-                ftObj.totalFee = btf;
-                ftObj.tenderUnitFee = btuf;
-                ftObj.tenderTotalFee = bttf;
+                ftObj.unitFee = buf.toDecimal(decimalObj.bills.unitPrice);
+                ftObj.totalFee = btf.toDecimal(decimalObj.bills.totalPrice);
+                ftObj.tenderUnitFee = btuf.toDecimal(decimalObj.bills.unitPrice);
+                ftObj.tenderTotalFee = bttf.toDecimal(decimalObj.bills.totalPrice);
                 checkFee(treeNode, ftObj);
 
                 rst.push(ftObj);
@@ -729,7 +726,7 @@ class CalcProgram {
                     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);
+                    treeNode.data.marketTotalFee = (muf * q).toDecimal(decimalObj.ration.totalPrice);
                 }
                 else if (treeNode.data.type == rationType.gljRation){
 
@@ -767,11 +764,11 @@ class CalcProgram {
 
                     let feeRate = calcItem.feeRate;
                     if (!feeRate) feeRate = 100;    // 100%
-                    calcItem.unitFee = (eval(calcItem.compiledExpr) * feeRate * 0.01).toDecimal(me.digit);   // 如果eval()对清单树有影响,就换成小麦的Expression对象再试
+                    calcItem.unitFee = (eval(calcItem.compiledExpr) * feeRate * 0.01).toDecimal(decimalObj.decimal('unitPrice', treeNode));   // 如果eval()对清单树有影响,就换成小麦的Expression对象再试
 
                     let quantity = treeNode.data.quantity;
                     if (!quantity) quantity = 0;
-                    calcItem.totalFee = (calcItem.unitFee * quantity).toDecimal(me.digit);
+                    calcItem.totalFee = (calcItem.unitFee * quantity).toDecimal(decimalObj.decimal('totalPrice', treeNode));
 
                     checkFee(treeNode, calcItem);
                 };
@@ -782,7 +779,9 @@ class CalcProgram {
     // 计算本节点(默认同时递归计算所有父节点,可选)
     calculate(treeNode, calcParents = true){
         let me = this;
-
+        console.log(decimalObj.decimal('unitPrice', treeNode));
+        console.log(decimalObj.decimal('unitFee', treeNode));
+        console.log(decimalObj.decimal('UnitFee', treeNode));
         let isRation = treeNode.sourceType === me.project.Ration.getSourceType();
         let isBill = treeNode.sourceType === me.project.Bills.getSourceType();
         let isBillPriceCalc = me.project.projSetting.billsCalcMode === leafBillGetFeeType.billsPrice;

+ 3 - 0
web/building_saas/main/js/views/project_property_decimal_view.js

@@ -22,6 +22,9 @@ decimalObj.decimal = function (field, node) {
         if(field === 'feeRate'){
             return this[field];
         }
+        else if (field === 'unitFee') field = 'unitPrice'
+        else if (field === 'totalFee') field = 'totalPrice';
+
         if(isDef(node)){
             if(node.sourceType === projectObj.project.Bills.getSourceType()){
                 if(field === 'quantity'){