| 
					
				 | 
			
			
				@@ -22,6 +22,10 @@ const billsSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '%s|数量', colSpan: '2|1', rowSpan: '1|1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '|金额', colSpan: '|1', rowSpan: '|1', field: '{%s}_tp{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计|数量', colSpan: '2|1', rowSpan: '1|1', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'sum_{%s}_tp', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     emptyRows: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRows: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRowHeight: [25, 25], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -34,10 +38,13 @@ const billsSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const posSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     baseCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '名称', colSpan: '1', rowSpan: '1', field: 'name', hAlign: 0, width: 230, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {title: '台账数量', colSpan: '1', rowSpan: '1', field: 'quantity', hAlign: 2, width: 60}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '台账数量', colSpan: '1', rowSpan: '1', field: 'quantity', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     extraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {title: '%s数量', colSpan: '1', rowSpan: '1', field: '{%s}_qty{%d}', hAlign: 2, width: 60}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '%s数量', colSpan: '1', rowSpan: '1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计数量', colSpan: '1', rowSpan: '1', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     emptyRows: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRows: 1, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,6 +70,10 @@ const exportBillsSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '%s|数量', colSpan: '2|1', rowSpan: '1|1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '|金额', colSpan: '|1', rowSpan: '|1', field: '{%s}_tp{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计|数量', colSpan: '2|1', rowSpan: '1|1', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'sum_{%s}_tp', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endCols: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     emptyRows: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRows: 2, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -89,6 +100,10 @@ const gclSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '%s|数量', colSpan: '2|1', rowSpan: '1|1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '|金额', colSpan: '|1', rowSpan: '|1', field: '{%s}_tp{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计|数量', colSpan: '2|1', rowSpan: '1|1', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'sum_{%s}_tp', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRows: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRowHeight: [25, 25], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -112,6 +127,9 @@ const leafXmjSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     extraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '%s数量', colSpan: '1', rowSpan: '2', field: '{%s}_qty{%d}', hAlign: 2, width: 60}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计数量', colSpan: '1', rowSpan: '2', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     emptyRows: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRows: 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     headRowHeight: [25, 25], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,6 +160,10 @@ const exportGclSpreadSetting = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '%s|数量', colSpan: '2|1', rowSpan: '1|1', field: '{%s}_qty{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '|金额', colSpan: '|1', rowSpan: '|1', field: '{%s}_tp{%d}', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    specExtraCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '合计|数量', colSpan: '2|1', rowSpan: '1|1', field: 'sum_{%s}_qty', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'sum_{%s}_tp', hAlign: 2, width: 60, type: 'Number', }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endCols: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {title: '图册号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@'}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,6 +197,14 @@ function initSpreadSettingWithRoles(compareRoles) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (const index in fieldSufs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             addExtraCols(fieldSufs[index], Roles[index]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (setting.specExtraCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const sourceType = $('[name=compare-data]:checked').val(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (const col of setting.specExtraCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const eCol = JSON.parse(JSON.stringify(col)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                eCol.field = _.replace(eCol.field, '{%s}', sourceType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                setting.cols.push(eCol); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (setting.endCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (const col of setting.endCols) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 setting.cols.push(col); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -283,7 +313,7 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         keys: ['id', 'tender_id', 'ledger_id'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         masterId: 'id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         minorId: 'lid', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        calcFields: ['total_price'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        calcFields: ['total_price', 'sum_contract_tp', 'sum_qc_tp', 'sum_gather_tp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         markFoldKey: 'bills-fold', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         markFoldSubKey: window.location.pathname.split('/')[2], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -481,14 +511,14 @@ $(document).ready(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('[name=compare-data]').click(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         initSpreadSettingWithRoles(compareStages); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SpreadJsObj.reLoadSheetHeader(billsSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SpreadJsObj.reloadColData(billsSheet, billsSpreadSetting.baseCols.length, compareStages.length * billsSpreadSetting.extraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SpreadJsObj.reloadColData(billsSheet, billsSpreadSetting.baseCols.length, compareStages.length * billsSpreadSetting.extraCols.length + billsSpreadSetting.specExtraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SpreadJsObj.reLoadSheetHeader(posSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SpreadJsObj.reloadColData(posSheet, posSpreadSetting.baseCols.length, compareStages.length * posSpreadSetting.extraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SpreadJsObj.reloadColData(posSheet, posSpreadSetting.baseCols.length, compareStages.length * posSpreadSetting.extraCols.length + billsSpreadSetting.specExtraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SpreadJsObj.reLoadSheetHeader(gclSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SpreadJsObj.reloadColData(gclSheet, gclSpreadSetting.baseCols.length, compareStages.length * gclSpreadSetting.extraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SpreadJsObj.reloadColData(gclSheet, gclSpreadSetting.baseCols.length, compareStages.length * gclSpreadSetting.extraCols.length + billsSpreadSetting.specExtraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SpreadJsObj.reLoadSheetHeader(leafXmjSheet); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SpreadJsObj.reloadColData(leafXmjSheet, leafXmjSpreadSetting.baseCols.length, compareStages.length * leafXmjSpreadSetting.extraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SpreadJsObj.reloadColData(leafXmjSheet, leafXmjSpreadSetting.baseCols.length, compareStages.length * leafXmjSpreadSetting.extraCols.length + billsSpreadSetting.specExtraCols.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('[name=compareType]').click(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $('[name=compareType]').removeClass('active'); 
			 |