| 
					
				 | 
			
			
				@@ -0,0 +1,451 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    autoFlashHeight(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#data-spread').height($('.sjs-height-0').height() - $('.nav-tabs').height() - 16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const spreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        jgcl: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '4', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '4', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '4', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||到场|数量', colSpan: '4||2|1', rowSpan: '2||1|1', field: 'sum_arrive_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_arrive_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||扣回|数量', colSpan: '||2|1', rowSpan: '||1|1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '4', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '4', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '4', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            extraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '标段1|第一期|到场|数量', colSpan: '4|4|2|1', rowSpan: '1|1|1|1', field: 'sum_arrive_qty', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_arrive_qty_%d', formatTitle: '%s|%f|到场|数量'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_arrive_tp', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_arrive_tp_%d'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||扣回|数量', colSpan: '||2|1', rowSpan: '||1|1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_deduct_tp_%d'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_deduct_tp_%d'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            endCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||到场|数量', colSpan: '4||2|1', rowSpan: '2||1|1', field: 'sum_arrive_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_arrive_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||扣回|数量', colSpan: '||2|1', rowSpan: '||1|1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|||金额', colSpan: '|||1', rowSpan: '|||1', field: 'sum_deduct_qty', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 4, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [32, 25, 25, 25], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        yjcl: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '3', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '3', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '3', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||数量', colSpan: '2||1', rowSpan: '2||1', field: 'sum_qty', hAlign: 2, width: 80, type: 'Number' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '|1', rowSpan: '|1', field: 'sum_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '3', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '3', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '3', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            extraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '标段1|第1期|数量', colSpan: '2|2|1', rowSpan: '1|1|1', field: 'gather_qty_1', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_qty_%d', formatTitle: '%s|%f|数量' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '||1', rowSpan: '||1', field: 'gather_tp_1', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_tp_%d'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            endCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||数量', colSpan: '2||1', rowSpan: '2||1', field: 'sum_qty', hAlign: 2, width: 80, type: 'Number' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '||1', rowSpan: '||1', field: 'sum_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [32, 25, 25], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bonus: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '1', field: 'name', hAlign: 0, width: 320, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '汇总', colSpan: '1', rowSpan: '1', field: 'filter', hAlign: 1, width: 100, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '类型', colSpan: '1', rowSpan: '1', field: 'b_type', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '金额', colSpan: '1', rowSpan: '1', field: 'tp', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '时间', colSpan: '1', rowSpan: '1', field: 'real_time', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [32], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        safeProd: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '3', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '3', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '3', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||数量', colSpan: '2||1', rowSpan: '2||1', field: 'sum_qty', hAlign: 2, width: 80, type: 'Number' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '||1', rowSpan: '||1', field: 'sum_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '3', field: 'name', hAlign: 0, width: 200, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '3', field: 'unit', hAlign: 1, width: 60, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '3', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            extraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '标段1|第1期|数量', colSpan: '2|2|1', rowSpan: '1|1|1', field: 'gather_qty_1', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_qty_%d', formatTitle: '%s|%f|数量' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '||1', rowSpan: '||1', field: 'gather_tp_1', hAlign: 2, width: 80, type: 'Number', formatField: 'gather_tp_%d'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            endCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '合计||数量', colSpan: '2||1', rowSpan: '2||1', field: 'sum_qty', hAlign: 2, width: 80, type: 'Number' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '||金额', colSpan: '||1', rowSpan: '||1', field: 'sum_tp', hAlign: 2, width: 80, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [32, 25, 25], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tempLand: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 320, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '汇总', colSpan: '1', rowSpan: '2', field: 'filter', hAlign: 1, width: 100, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '本期|数量', colSpan: '2|1', rowSpan: '1|1', field: 'qty', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|数量', colSpan: '|1', rowSpan: '|1', field: 'tp', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '截止本期|数量', colSpan: '2|1', rowSpan: '1|1', field: 'end_qty', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '|数量', colSpan: '|1', rowSpan: '|1', field: 'end_tp', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [25, 25], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        other: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '名称', colSpan: '1', rowSpan: '1', field: 'name', hAlign: 0, width: 320, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '汇总', colSpan: '1', rowSpan: '1', field: 'filter', hAlign: 1, width: 100, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '类型', colSpan: '1', rowSpan: '1', field: 'o_type', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '金额', colSpan: '1', rowSpan: '1', field: 'total_price', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '本期', colSpan: '1', rowSpan: '1', field: 'tp', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '截止本期', colSpan: '1', rowSpan: '1', field: 'end_tp', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {title: '时间', colSpan: '1', rowSpan: '1', field: 'real_time', hAlign: 1, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRows: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headRowHeight: [32], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRowHeight: 21, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headerFont: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            font: '12px 微软雅黑', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readOnly: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const dataSpread = SpreadJsObj.createNewSpread($('#data-spread')[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const dataSheet = dataSpread.getActiveSheet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const stageExtra = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        seType: 'jgcl', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        seData: 'cur', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        jgcl: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        yjcl: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bonus: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        other: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        safeProd: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tempLand: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherJgcl(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.jgcl = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const endfix = '_' + (i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (const data of t.jgcl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit) data.unit = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit_price) data.unit_price = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let cl = this.jgcl.find(x => { return x.name === data.name && x.unit === data.unit && x.unit_price === data.unit_price; }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!cl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cl = { name: data.name || '', unit: data.unit || '', unit_price: data.unit_price || 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.jgcl.push(cl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['arrive_qty' + endfix] = ZhCalc.add(cl['arrive_qty' + endfix], data.arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['arrive_tp' + endfix] = ZhCalc.add(cl['arrive_tp' + endfix], data.arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['deduct_qty' + endfix] = ZhCalc.add(cl['deduct_qty' + endfix], data.deduct_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['deduct_tp' + endfix] = ZhCalc.add(cl['deduct_tp' + endfix], data.deduct_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_arrive_qty' + endfix] = ZhCalc.add(cl['end_arrive_qty' + endfix], data.end_arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_arrive_tp' + endfix] = ZhCalc.add(cl['end_arrive_tp' + endfix], data.end_arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_deduct_qty' + endfix] = ZhCalc.add(cl['end_deduct_qty' + endfix], data.end_deduct_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_deduct_tp' + endfix] = ZhCalc.add(cl['end_deduct_tp' + endfix], data.end_deduct_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_arrive_qty'] = ZhCalc.add(cl['sum_arrive_qty'], data.arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_arrive_tp'] = ZhCalc.add(cl['sum_arrive_tp'], data.arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_deduct_qty'] = ZhCalc.add(cl['sum_deduct_qty'], data.deduct_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_deduct_tp'] = ZhCalc.add(cl['sum_deduct_tp'], data.deduct_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_arrive_qty'] = ZhCalc.add(cl['sum_end_arrive_qty'], data.end_arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_arrive_tp'] = ZhCalc.add(cl['sum_end_arrive_tp'], data.end_arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_deduct_qty'] = ZhCalc.add(cl['sum_end_deduct_qty'], data.end_deduct_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_deduct_tp'] = ZhCalc.add(cl['sum_end_deduct_tp'], data.end_deduct_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherYjcl(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.yjcl = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const endfix = '_' + (i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (const data of t.yjcl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit) data.unit = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.spec) data.spec = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit_price) data.unit_price = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let cl = this.yjcl.find(x => { return x.name === data.name && x.spec === data.spec && x.unit === data.unit && x.unit_price === data.unit_price; }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!cl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cl = { name: data.name || '', spec: data.spec, unit: data.unit || '', unit_price: data.unit_price || 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.yjcl.push(cl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['arrive_qty' + endfix] = ZhCalc.add(cl['arrive_qty' + endfix], data.arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['arrive_tp' + endfix] = ZhCalc.add(cl['arrive_tp' + endfix], data.arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['qty' + endfix] = ZhCalc.add(cl['qty' + endfix], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['tp' + endfix] = ZhCalc.add(cl['tp' + endfix], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_qty' + endfix] = ZhCalc.add(cl['end_qty' + endfix], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['end_tp' + endfix] = ZhCalc.add(cl['end_tp' + endfix], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_arrive_qty'] = ZhCalc.add(cl['sum_arrive_qty'], data.arrive_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_arrive_tp'] = ZhCalc.add(cl['sum_arrive_tp'], data.arrive_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_qty'] = ZhCalc.add(cl['sum_qty'], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_tp'] = ZhCalc.add(cl['sum_tp'], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_qty'] = ZhCalc.add(cl['sum_end_qty'], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['sum_end_tp'] = ZhCalc.add(cl['sum_end_tp'], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherBonus(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.bonus = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.bonus.push({ tid: t.id, name: t.name, filter: t.filter }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.bonus.push(...t.bonus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherOther(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.other = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.other.push({ tid: t.id, name: t.name, filter: t.filter }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.other.push(...t.other); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherSafeProd(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.safeProd = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const endfix = '_' + (i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (const data of t.safeProd) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit) data.unit = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!data.unit_price) data.unit_price = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let sp = this.safeProd.find(x => { return x.name === data.name && x.unit === data.unit && x.unit_price === data.unit_price; }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!sp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        sp = { name: data.name || '', unit: data.unit || '', unit_price: data.unit_price || 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.safeProd.push(sp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['quantity' + endfix] = ZhCalc.add(sp['quantity' + endfix], data.quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['total_price' + endfix] = ZhCalc.add(sp['total_price' + endfix], data.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['qty' + endfix] = ZhCalc.add(sp['qty' + endfix], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['tp' + endfix] = ZhCalc.add(sp['tp' + endfix], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['end_qty' + endfix] = ZhCalc.add(sp['end_qty' + endfix], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['end_tp' + endfix] = ZhCalc.add(sp['end_tp' + endfix], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_quantity'] = ZhCalc.add(sp['sum_quantity'], data.quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_total_price'] = ZhCalc.add(sp['sum_total_price'], data.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_qty'] = ZhCalc.add(sp['sum_qty'], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_tp'] = ZhCalc.add(sp['sum_tp'], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_end_qty'] = ZhCalc.add(sp['sum_end_qty'], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['sum_end_tp'] = ZhCalc.add(sp['sum_end_tp'], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherTempLand(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.tempLand = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const [i, t] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.tempLand.push({ tid: t.id, name: t.name, filter: t.filter }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.tempLand.push(...t.tempLand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // const endfix = '_' + (i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // for (const data of t.tempLand) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     if (!data.unit) data.unit = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     if (!data.unit_price) data.unit_price = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     let tl = this.tempLand.find(x => { return x.name === data.name && x.unit === data.unit && x.unit_price === data.unit_price; }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     if (!tl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //         tl = { name: data.name || '', unit: data.unit || '', unit_price: data.unit_price || 0 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //         this.tempLand.push(tl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['quantity' + endfix] = ZhCalc.add(tl['quantity' + endfix], data.quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['total_price' + endfix] = ZhCalc.add(tl['total_price' + endfix], data.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['qty' + endfix] = ZhCalc.add(tl['qty' + endfix], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['tp' + endfix] = ZhCalc.add(tl['tp' + endfix], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['end_qty' + endfix] = ZhCalc.add(tl['end_qty' + endfix], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['end_tp' + endfix] = ZhCalc.add(tl['end_tp' + endfix], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_quantity'] = ZhCalc.add(tl['sum_quantity'], data.quantity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_total_price'] = ZhCalc.add(tl['sum_total_price'], data.total_price); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_qty'] = ZhCalc.add(tl['sum_qty'], data.qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_tp'] = ZhCalc.add(tl['sum_tp'], data.tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_end_qty'] = ZhCalc.add(tl['sum_end_qty'], data.end_qty); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     tl['sum_end_tp'] = ZhCalc.add(tl['sum_end_tp'], data.end_tp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        gatherStageExtraData(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.tenderCount = tenders.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherJgcl(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherYjcl(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherBonus(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherOther(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherSafeProd(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.gatherTempLand(tenders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rebuildSpreadSetting(tenders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.jgcl.cols = [...spreadSetting.jgcl.baseCols]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.yjcl.cols = [...spreadSetting.yjcl.baseCols]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.safeProd.cols = [...spreadSetting.safeProd.baseCols]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const pushExtraCols = function(spreadSetting) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (const [i, tender] of tenders.entries()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (const col of spreadSetting.extraCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        const newCol = JSON.parse(JSON.stringify(col)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (newCol.formatTitle) newCol.title = newCol.formatTitle.replace('%s', tender.name).replace('%f', tender.filter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (newCol.formatField) newCol.field = newCol.formatField.replace('%d', i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        spreadSetting.cols.push(newCol); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pushExtraCols(spreadSetting.jgcl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pushExtraCols(spreadSetting.yjcl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pushExtraCols(spreadSetting.safeProd); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.jgcl.cols.push(...spreadSetting.jgcl.endCols); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.yjcl.cols.push(...spreadSetting.yjcl.endCols); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spreadSetting.safeProd.cols.push(...spreadSetting.safeProd.endCols); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadJgclShowData(field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const prefix = field === 'end' ? 'end_' : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const cl of this.jgcl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 1; i<= this.tenderCount; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_arrive_qty_' + i] = cl[prefix + 'arrive_qty_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_arrive_tp_' + i] = cl[prefix + 'arrive_tp_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_deduct_qty_' + i] = cl[prefix + 'deduct_qty_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_deduct_tp_' + i] = cl[prefix + 'deduct_tp_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_arrive_qty = cl['sum_' + prefix + 'arrive_qty']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_arrive_tp = cl['sum_' + prefix + 'arrive_tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_deduct_qty = cl['sum_' + prefix + 'deduct_qty']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_deduct_tp = cl['sum_' + prefix + 'deduct_tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.seType === 'jgcl') SpreadJsObj.reloadColData(dataSheet, 3, 4*this.tenderCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadYjclShowData(field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const prefix = field === 'end' ? 'end_' : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const cl of this.yjcl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 1; i<= this.tenderCount; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_qty_' + i] = cl[prefix + 'qty_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cl['gather_tp_' + i] = cl[prefix + 'tp_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_qty = cl['sum_' + prefix + 'qty']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cl.sum_tp = cl['sum_' + prefix + 'tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.seType === 'yjcl') SpreadJsObj.reloadColData(dataSheet, 3, 2*this.tenderCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadSafeProdShowData(field) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const prefix = field === 'end' ? 'end_' : ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const sp of this.safeProd) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 1; i<= this.tenderCount; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['gather_qty_' + i] = sp[prefix + 'qty_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sp['gather_tp_' + i] = sp[prefix + 'tp_' + i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sp.sum_qty = sp['sum_' + prefix + 'qty']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sp.sum_tp = sp['sum_' + prefix + 'tp']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.seType === 'safeProd') SpreadJsObj.reloadColData(dataSheet, 3, 2*this.tenderCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadShowData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const field = $('[name=compare-data]:checked').val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (field === this.seData) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.seData = field; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadJgclShowData(field); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadYjclShowData(field); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadSafeProdShowData(field); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        refreshShowData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const field = $('[name=compare-data]:checked').val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (field === this.seData) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadShowData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        loadSheetData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SpreadJsObj.initSheet(dataSheet, spreadSetting[this.seType]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SpreadJsObj.loadSheetData(dataSheet, SpreadJsObj.DataType.Data, this[this.seType]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SpreadJsObj.locateRow(dataSheet, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        refreshStageExtraData(type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (this.seType === type) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.seType = type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.loadSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    stageExtra.loadSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const tenderSelect = TenderSelectMulti({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        title: '汇总标段', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type: 'gather', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dataType: 'stage', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        zoneValid: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        afterSelect: function(select) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const data = { filter: 'jgcl;yjcl;bonus;other;safeProd;tempLand', tender: select }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            postData(`/sp/${spid}/spss/load`, data, function(result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stageExtra.rebuildSpreadSetting(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stageExtra.gatherStageExtraData(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                SpreadJsObj.reLoadSheetHeader(dataSheet, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stageExtra.loadShowData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stageExtra.loadSheetData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#gather-select').click(tenderSelect.showSelect); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('[name=compare-data]').click(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stageExtra.refreshShowData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('.nav-item').click(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const dataType = $(this).attr('data-type'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stageExtra.refreshStageExtraData(dataType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#export-excel').click(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const sheets = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '甲供材料', setting: spreadSetting.jgcl, data: stageExtra.jgcl }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '永久材料', setting: spreadSetting.yjcl, data: stageExtra.yjcl }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '奖罚金', setting: spreadSetting.bonus, data: stageExtra.bonus }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '安全生产', setting: spreadSetting.safeProd, data: stageExtra.safeProd }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '临时占地', setting: spreadSetting.tempLand, data: stageExtra.tempLand }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheets.push({ name: '其他', setting: spreadSetting.other, data: stageExtra.other }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SpreadExcelObj.exportSimpleXlsxSheets(sheets, "计量汇总-其他台账.xlsx"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $.subMenu({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        toMenu: '#to-menu', toMiniMenu: '#to-mini-menu', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        key: 'menu.1.0.0', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callback: function (info) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (info.mini) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('.panel-title').addClass('fluid'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('#sub-menu').removeClass('panel-sidebar'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('.c-body table thead').css('left', '56px'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('.panel-title').removeClass('fluid'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('#sub-menu').addClass('panel-sidebar'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $('.c-body table thead').css('left', '176px'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            autoFlashHeight(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dataSpread.refresh(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 |