diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js index 4c5b205a..9d347225 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js @@ -730,7 +730,8 @@ function exportVisibleColumns() { var dateStr = $("#DateValueDate").val() || ''; var tabName = page.tabIndex == 2 ? '框架合约' : '日终持仓'; var fileName = '日终持仓风险_互换_' + tabName + (dateStr ? '_' + dateStr : ''); - main.exportVisibleColumnsToExcel(jgrid, fileName); + var groupConfig = page.tabIndex == 2 ? eodSwapGroupConfig : null; + main.exportVisibleColumnsToExcel(jgrid, fileName, groupConfig); } //---------------------------Formatter--------------------------------- diff --git a/YLErpWeb/wwwroot/Scripts/utils.js b/YLErpWeb/wwwroot/Scripts/utils.js index 993ad26c..ad2601b6 100644 --- a/YLErpWeb/wwwroot/Scripts/utils.js +++ b/YLErpWeb/wwwroot/Scripts/utils.js @@ -1209,8 +1209,9 @@ main.refreshCollapsibleGroupHeaders = function (jgrid) { * * @param {jQuery} jgrid jqGrid 容器 * @param {string} fileName 导出文件名(不含扩展名) + * @param {Array} groupConfig 可选,分组表头配置,每项 { title: string, columns: string[] } */ -main.exportVisibleColumnsToExcel = function (jgrid, fileName) { +main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig) { var colModel = jgrid.jqGrid('getGridParam', 'colModel'); // 只导出可见列(hidden !== true),与折叠状态联动:收起的列自动不可见 var visibleCols = colModel.filter(function (c) { return c.hidden !== true && c.name !== 'cb' && c.name !== 'rn'; }); @@ -1223,7 +1224,10 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName) { var html = ''; html += ''; html += ''; - //表头 + //表头:有分组配置时导出两级表头(分类 + 字段),否则保持原单级表头。 + if (groupConfig && groupConfig.length) { + html += buildGroupHeaderHtml(visibleCols, groupConfig); + } html += '' + headerLabels.map(function (l) { return ''; }).join('') + ''; @@ -1252,5 +1256,25 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName) { function escapeXml(s) { return s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); } + + function buildGroupHeaderHtml(cols, config) { + var titleByColumn = {}; + config.forEach(function (group) { + (group.columns || []).forEach(function (name) { + titleByColumn[name] = group.title || ''; + }); + }); + + var cells = []; + for (var i = 0; i < cols.length; i++) { + var title = titleByColumn[cols[i].name] || ''; + var colspan = 1; + while (i + colspan < cols.length && (titleByColumn[cols[i + colspan].name] || '') === title) { + colspan++; + } + cells.push(''); + i += colspan - 1; + } + return '' + cells.join('') + ''; + } }; - \ No newline at end of file
' + escapeXml(l) + '
' + escapeXml(title) + '