|  | @@ -45,13 +45,13 @@ function generateChapterHtml(data) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  $(document).ready(function () {
 | 
	
		
			
				|  |  |      const preUrl = window.location.pathname.split('/').slice(0, 6).join('/');
 | 
	
		
			
				|  |  | -    // let per = _.toNumber(getLocalCache('StageGatherOverPercent'));
 | 
	
		
			
				|  |  | -    // if (per && !_.isNaN(per)) {
 | 
	
		
			
				|  |  | -    //     $('#over-percent').val(per >= 50 ? (per <= 100 ? per : 100) : 50);
 | 
	
		
			
				|  |  | -    // }
 | 
	
		
			
				|  |  | -    //
 | 
	
		
			
				|  |  | -    // let overType = $('#' + getLocalCache('StageGatherOverType'))[0];
 | 
	
		
			
				|  |  | -    // if (overType) overType.checked = true;
 | 
	
		
			
				|  |  | +    let per = _.toNumber(getLocalCache('StageGatherOverPercent'));
 | 
	
		
			
				|  |  | +    if (per && !_.isNaN(per)) {
 | 
	
		
			
				|  |  | +        $('#over-percent').val(per >= 50 ? (per <= 100 ? per : 100) : 50);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    let overType = $('#' + getLocalCache('StageGatherOverType'))[0];
 | 
	
		
			
				|  |  | +    if (overType) overType.checked = true;
 | 
	
		
			
				|  |  |      autoFlashHeight();
 | 
	
		
			
				|  |  |      // 初始化工程量清单
 | 
	
		
			
				|  |  |      const gclSpread = SpreadJsObj.createNewSpread($('#gcl-spread')[0]);
 | 
	
	
		
			
				|  | @@ -68,18 +68,10 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |      // 初始化所属项目节
 | 
	
		
			
				|  |  |      const leafXmjSpread = SpreadJsObj.createNewSpread($('#leaf-xmj-spread')[0]);
 | 
	
		
			
				|  |  |      if (thousandth) sjsSettingObj.setTpThousandthFormat(leafXmjSpreadSetting);
 | 
	
		
			
				|  |  | -    leafXmjSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
 | 
	
		
			
				|  |  | -        if (!data) return defaultColor;
 | 
	
		
			
				|  |  | -        return data.overRange && hintOver ? spreadColor.stage.over : defaultColor;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  |      SpreadJsObj.initSheet(leafXmjSpread.getActiveSheet(), leafXmjSpreadSetting);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const gatherLeafXmjSpread = SpreadJsObj.createNewSpread($('#leaf-xmj-gather-spread')[0]);
 | 
	
		
			
				|  |  |      if (thousandth) sjsSettingObj.setTpThousandthFormat(gatherLeafXmjSpreadSetting);
 | 
	
		
			
				|  |  | -    gatherLeafXmjSpreadSetting.getColor = function (sheet, data, row, col, defaultColor) {
 | 
	
		
			
				|  |  | -        if (!data) return defaultColor;
 | 
	
		
			
				|  |  | -        return data.overRange && hintOver ? spreadColor.stage.over : defaultColor;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  |      const gatherLeafXmjSheet = gatherLeafXmjSpread.getActiveSheet();
 | 
	
		
			
				|  |  |      SpreadJsObj.initSheet(gatherLeafXmjSheet, gatherLeafXmjSpreadSetting);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -173,33 +165,14 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |                      : data.end_contract_tp < ZhCalc.mul(data[tpField], per) || data.end_contract_tp > 0;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  | -        const nPercent = checkOverInfo.coe;
 | 
	
		
			
				|  |  | +        const bQty = $('#customRadio1')[0].checked, bDealQty = $('#customRadio2')[0].checked;
 | 
	
		
			
				|  |  | +        const nPercent = Math.min(Math.max(ZhCalc.div(parseFloat($('#over-percent').val()), 100), 0.5), 1);
 | 
	
		
			
				|  |  |          for (const node of data) {
 | 
	
		
			
				|  |  |              if (node) {
 | 
	
		
			
				|  |  | -                const bOverRangeTz = checkOverInfo.checkTz ? billsGatherOver(node, 'final_1_qty', 'final_1_tp', nPercent) : false;
 | 
	
		
			
				|  |  | -                const bOverRangeDeal = checkOverInfo.checkDeal ? billsGatherOver(node, 'deal_final_1_qty', 'deal_final_1_tp', nPercent) : false;
 | 
	
		
			
				|  |  | -                node.overRange = bOverRangeTz || bOverRangeDeal;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    function checkXmjOverRange(data, checkXmjList) {
 | 
	
		
			
				|  |  | -        const xmjGatherOver = function (data, qtyField, per) {
 | 
	
		
			
				|  |  | -            if (data.end_contract_qty) {
 | 
	
		
			
				|  |  | -                if (!data[qtyField]) return true;
 | 
	
		
			
				|  |  | -                return data[qtyField] > 0
 | 
	
		
			
				|  |  | -                    ? data.end_contract_qty > ZhCalc.mul(data[qtyField], per)
 | 
	
		
			
				|  |  | -                    : data.end_contract_qty < ZhCalc.mul(data[qtyField], per) || data.end_contract_qty > 0;
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                return false;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        const nPercent = checkOverInfo.coe;
 | 
	
		
			
				|  |  | -        for (const node of data) {
 | 
	
		
			
				|  |  | -            if (!node || !node[checkXmjList] || node[checkXmjList].length === 0) continue;
 | 
	
		
			
				|  |  | -            for (const xmj of node[checkXmjList]) {
 | 
	
		
			
				|  |  | -                const bOverRangeTz = checkOverInfo.checkTz ? xmjGatherOver(xmj, 'final_1_qty', nPercent) : false;
 | 
	
		
			
				|  |  | -                const bOverRangeDeal = false; // checkOverInfo.checkDeal ? xmjGatherOver(xmj, 'deal_final_1_qty', nPercent) : false;
 | 
	
		
			
				|  |  | -                xmj.overRange = bOverRangeDeal || bOverRangeTz;
 | 
	
		
			
				|  |  | +                if (node.b_code === '103-4')console.log(node);
 | 
	
		
			
				|  |  | +                const bOverRangeTz = billsGatherOver(node, 'final_1_qty', 'final_1_tp', nPercent);
 | 
	
		
			
				|  |  | +                const bOverRangeDeal = billsGatherOver(node, 'deal_final_1_qty', 'deal_final_1_tp', nPercent);
 | 
	
		
			
				|  |  | +                node.overRange = bQty ? bOverRangeTz : (bDealQty ? bOverRangeDeal : bOverRangeTz || bOverRangeDeal);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -208,6 +181,19 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |          const iOldRow = info.oldSelections[0].row, iNewRow = info.newSelections[0].row;
 | 
	
		
			
				|  |  |          if (iNewRow !== iOldRow) loadRelaData(iNewRow);
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | +    $('.custom-radio').click(() => {
 | 
	
		
			
				|  |  | +        setLocalCache('StageGatherOverType', $('input[name=customRadio]:checked').attr('id'));
 | 
	
		
			
				|  |  | +        checkOverRange(gclGatherData);
 | 
	
		
			
				|  |  | +        SpreadJsObj.reLoadSheetData(gclSpread.getActiveSheet());
 | 
	
		
			
				|  |  | +        // 收起菜单
 | 
	
		
			
				|  |  | +        $('.dropdown-menu').click();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    $('#over-percent').change(function () {
 | 
	
		
			
				|  |  | +        this.value = this.value >= 50 ? (this.value <= 100 ? ZhCalc.round(this.value, 2) : 100) : 50;
 | 
	
		
			
				|  |  | +        setLocalCache('StageGatherOverPercent', this.value);
 | 
	
		
			
				|  |  | +        checkOverRange(gclGatherData);
 | 
	
		
			
				|  |  | +        SpreadJsObj.reLoadSheetData(gclSpread.getActiveSheet());
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      postData(preUrl + '/load', { filter: 'ledger;pos;dealBills;spec;change;stageChange;preStageChange' }, function (result) {
 | 
	
		
			
				|  |  |          // 解析清单汇总数据
 | 
	
	
		
			
				|  | @@ -221,8 +207,6 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |          gclGatherModel.checkDiffer(gclGatherData);
 | 
	
		
			
				|  |  |          gclGatherModel.reGatherLeafXmj();
 | 
	
		
			
				|  |  |          checkOverRange(gclGatherData);
 | 
	
		
			
				|  |  | -        checkXmjOverRange(gclGatherData, 'leafXmjs');
 | 
	
		
			
				|  |  | -        checkXmjOverRange(gclGatherData, 'gatherLeafXmjs');
 | 
	
		
			
				|  |  |          // 加载清单数据
 | 
	
		
			
				|  |  |          SpreadJsObj.loadSheetData(gclSpread.getActiveSheet(), SpreadJsObj.DataType.Data, gclGatherData);
 | 
	
		
			
				|  |  |          loadRelaData(0);
 | 
	
	
		
			
				|  | @@ -307,7 +291,6 @@ $(document).ready(function () {
 | 
	
		
			
				|  |  |              col.visible = col.type === 'Number' || fields.indexOf(col.field) >= 0;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          gclGatherModel.reGatherLeafXmj(fields);
 | 
	
		
			
				|  |  | -        checkXmjOverRange(gclGatherData, 'gatherLeafXmjs');
 | 
	
		
			
				|  |  |          SpreadJsObj.refreshColumnVisible(gatherLeafXmjSheet);
 | 
	
		
			
				|  |  |          loadGatherLeafXmjData();
 | 
	
		
			
				|  |  |      });
 |