| 
					
				 | 
			
			
				@@ -21,10 +21,7 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         level: 'level', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rootId: -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         fullPath: 'full_path', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calcFields: ['can_select'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //treeCacheKey: 'ledger_bills_fold' + '_' + getTenderId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // markFoldKey: 'bills-fold', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // markFoldSubKey: window.location.pathname.split('/')[2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // calcFields: ['can_select'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const ledgerTree = createNewPathTree('filter', treeSetting); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,6 +63,23 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     SpreadJsObj.selChangedRefreshBackColor(ledgerSpread.getActiveSheet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     postData(window.location.pathname + '/load', {}, function (data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const showList = ['is_select', 'can_select', 'ledger_id', 'ledger_pid', 'order', 'level', 'tender_id', 'full_path', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            'code', 'name', 'unit', 'dgn_qty1', 'dgn_qty2', 'dgn_price', 'quantity', 'total_price']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const calcList = ['total_price']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const fileds = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (scheduleStage.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const ss of scheduleStage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // const pushTp = [ss.order + '_gather_tp', ss.order + '_contract_tp', ss.order + '_qc_tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                showList.push(ss.order + '_gather_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                showList.push(ss.order + '_contract_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                showList.push(ss.order + '_qc_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calcList.push(ss.order + '_gather_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calcList.push(ss.order + '_contract_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                calcList.push(ss.order + '_qc_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fileds.push(ss.order + '_contract_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fileds.push(ss.order + '_qc_tp'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const baseLedgerTree = createNewPathTree('base', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             id: 'ledger_id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pid: 'ledger_pid', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,22 +87,27 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             level: 'level', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rootId: -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             fullPath: 'full_path', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            calcFields: ['total_price'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateFields: fileds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calcFields: calcList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             calcFun: function (node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 node.dgn_price = ZhCalc.round(ZhCalc.div(node.total_price, node.dgn_qty1), 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (scheduleStage.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (const ss of scheduleStage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        node[ss.order + '_gather_tp'] = ZhCalc.add(node[ss.order + '_contract_tp'], node[ss.order + '_qc_tp']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // slh = _.map(data.slh, 'ledger_id'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         slh = data.slh; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const datas = addIsSelect(data.bills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         baseLedgerTree.loadDatas(datas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         treeCalc.calculateAll(baseLedgerTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const d of baseLedgerTree.nodes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!d.b_code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ledgerTree.addData(d, ['is_select', 'can_select', 'ledger_id', 'ledger_pid', 'order', 'level', 'tender_id', 'full_path', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    'code', 'name', 'unit', 'dgn_qty1', 'dgn_qty2', 'dgn_price', 'quantity', 'total_price']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ledgerTree.addData(d, showList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ledgerTree.sortTreeNode(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // treeCalc.calculateAll(ledgerTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         console.log(ledgerTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Tree, ledgerTree); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -201,7 +220,9 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $(this).attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const [under_ledger, parent_ledger] = getPAndULedger(select_ledger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger, parent_ledger, type: 'sz' } , function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 重新计算每一期计量进度金额并提交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const stageTpList = calcStageTp(under_ledger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger, parent_ledger, stageTpList, type: 'sz' } , function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             toastr.success('设置成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             setTimeout(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 window.location.reload(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -231,7 +252,9 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $(this).attr('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const [under_ledger, parent_ledger] = getPAndULedger(select_ledger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger, parent_ledger, type: 'xz' } , function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 重新计算每一期计量进度金额并提交 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const stageTpList = calcStageTp(under_ledger); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        postData(window.location.pathname + '/save',  { select_ledger: _.map(select_ledger, 'ledger_id'), under_ledger, parent_ledger, stageTpList, type: 'xz' } , function (result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             toastr.success('进度台账数据修正成功'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             setTimeout(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 window.location.reload(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -245,7 +268,13 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const sl of select_ledger) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const hadChild = _.find(select_ledger, { ledger_pid: sl.ledger_id }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!hadChild) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                under_ledger.push({ ledger_id: sl.ledger_id, ledger_pid: sl.ledger_pid, gcl: sl.dgn_qty1, tp: sl.total_price }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const pushArray = { ledger_id: sl.ledger_id, ledger_pid: sl.ledger_pid, gcl: sl.dgn_qty1, tp: sl.total_price }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (scheduleStage.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (const ss of scheduleStage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pushArray[ss.order + '_gather_tp'] = sl[ss.order + '_gather_tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                under_ledger.push(pushArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 从最底层找出之前的所有父节点,删除他们可能存在已填的值 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -313,6 +342,21 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // })('a[name=showLevel]', ledgerSpread.getActiveSheet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function calcStageTp(list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (scheduleStage.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const stageTp = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (const ss of scheduleStage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let stage_price = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const l of list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stage_price = ZhCalc.add(stage_price, l[ss.order + '_gather_tp']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stageTp.push({ id: ss.id, tp: stage_price }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return stageTp; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function addIsSelect(datas) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // const newDatas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (const d of datas) { 
			 |