|  | @@ -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) {
 |