| 
					
				 | 
			
			
				@@ -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; 
			 |