| 
					
				 | 
			
			
				@@ -5,7 +5,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  *  用到费率的规则必须有feeRateID属性,当有该属性时,会自动显示费率值。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let defaultBillTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ID: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         serialNo: '一', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -14,7 +14,6 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dispExpr: "A1+A2+A3", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "人工费+材料费+机械费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         feeRate: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'RationDirect', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -22,10 +21,10 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         serialNo: '1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         code: "A1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "人工费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dispExpr: "H_J", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dispExpr: "HJ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "合计", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'labour', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: 50, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'labour', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,10 +32,10 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         serialNo: '2', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         code: "A2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "材料费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dispExpr: "H_J", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dispExpr: "HJ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "合计", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: 100, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'material', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: 30, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'material', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -44,10 +43,10 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         serialNo: '3', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         code: "A3", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "机械费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dispExpr: "H_J", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dispExpr: "HJ", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "合计", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'machine', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: 20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'machine', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,8 +56,8 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "管理费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dispExpr: "A", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "定额直接费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'management', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'manage', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68,8 +67,8 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "利润", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dispExpr: "A", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "定额直接费", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'profit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'profit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,7 +79,7 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dispExpr: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         feeRate: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'risk', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'risk', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,8 +89,8 @@ let billDefaultTemplate = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: "综合单价", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dispExpr: "A+B", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         statement: "定额直接费+利润", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        feeRate: NaN, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        type: 'common', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fieldName: 'common', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memo: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -184,26 +183,26 @@ class CalcProgram { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     checkFee(treeNode, ftObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!treeNode.data.feesIndex[ftObj.type]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!treeNode.data.feesIndex[ftObj.fieldName]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let fee = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                'fieldName': ftObj.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'fieldName': ftObj.fieldName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'unitFee': ftObj.unitFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'totalFee': ftObj.totalFee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'tenderUnitFee': 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 'tenderTotalFee': 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             treeNode.data.fees.push(fee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            treeNode.data.feesIndex[ftObj.type] = fee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            treeNode.data.feesIndex[ftObj.fieldName] = fee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             treeNode.changed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (treeNode.data.feesIndex[ftObj.type].unitFee != ftObj.unitFee){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                treeNode.data.feesIndex[ftObj.type].unitFee = ftObj.unitFee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (treeNode.data.feesIndex[ftObj.fieldName].unitFee != ftObj.unitFee){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                treeNode.data.feesIndex[ftObj.fieldName].unitFee = ftObj.unitFee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 treeNode.changed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (treeNode.data.feesIndex[ftObj.type].totalFee != ftObj.totalFee){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                treeNode.data.feesIndex[ftObj.type].totalFee = ftObj.totalFee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (treeNode.data.feesIndex[ftObj.fieldName].totalFee != ftObj.totalFee){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                treeNode.data.feesIndex[ftObj.fieldName].totalFee = ftObj.totalFee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 treeNode.changed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -225,7 +224,7 @@ class CalcProgram { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let ft of feeType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let ftObj = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ftObj.type = ft.type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ftObj.fieldName = ft.type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ftObj.name = ft.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let uf = 0, tf = 0, tuf = 0, ttf = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (let item of objsArr) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -261,6 +260,39 @@ class CalcProgram { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    calcDefaultBillTemp(treeNode, totalPrice){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (treeNode.sourceType != this.project.Bills.getSourceType()){return rst}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        me.initFees(treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let item of defaultBillTemplate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let num = totalPrice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.dispExprUser = item.dispExpr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.displayFieldName = me.calc.compiledFeeTypes[item.fieldName]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (item.feeRate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.unitFee = (totalPrice * item.feeRate * 0.01).toDecimal(me.digit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                item.unitFee = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let quantity = treeNode.data.quantity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!quantity) quantity = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.totalFee = (item.unitFee * quantity).toDecimal(me.digit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.tenderUnitFee = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.tenderTotalFee = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.checkFee(treeNode, item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (treeNode.changed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.saveAndCalcParents(treeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            delete treeNode.changed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rst = defaultBillTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     getCalcDatas(treeNode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -294,10 +326,14 @@ class CalcProgram { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }else{                  // 前三种计算模式下的叶子清单:汇总定额的计算程序的费用类别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     rst = me.gatherFeeTypes(treeNode, CP_GatherType.rations); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if (ct == childrenType.volumePrice){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }else if (ct == childrenType.formula){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rst = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (ct == childrenType.volumePrice){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let totalPrice = 10000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = me.calcDefaultBillTemp(treeNode, totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else if (ct == childrenType.formula){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let totalPrice = 20000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rst = me.calcDefaultBillTemp(treeNode, totalPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else if (isBill){    // 父清单:汇总子清单的费用类别 
			 |