```
feat(swaptrade): 优化框架合约导出功能 - 新增导出列名配置数组 eodSwapExportColumnNames - 实现框架合约标签页导出列名自动同步 - 移除冗余的分组表头初始化逻辑 - 添加导出方式选择对话框支持两种导出模式 - 扩展工具函数支持自定义导出列名参数 - 重构导出逻辑统一处理不同导出场景 ```
This commit is contained in:
@@ -1211,19 +1211,29 @@ main.refreshCollapsibleGroupHeaders = function (jgrid) {
|
||||
* @param {string} fileName 导出文件名(不含扩展名)
|
||||
* @param {Array} groupConfig 可选,分组表头配置,每项 { title: string, columns: string[] }
|
||||
* @param {Array} exportRows 可选,后端返回的全部筛选结果;未传时导出当前页
|
||||
* @param {Array} exportColumnNames 可选,指定导出的列名及顺序;未传时导出当前可见列
|
||||
*/
|
||||
main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, exportRows) {
|
||||
main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, exportRows, exportColumnNames) {
|
||||
var colModel = jgrid.jqGrid('getGridParam', 'colModel');
|
||||
// 只导出可见列(hidden !== true),与折叠状态联动:收起的列自动不可见
|
||||
var visibleCols = colModel.filter(function (c) { return c.hidden !== true && c.name !== 'cb' && c.name !== 'rn'; });
|
||||
if (!visibleCols.length) { main.message && main.message("没有可导出的列"); return; }
|
||||
var exportCols;
|
||||
if (Array.isArray(exportColumnNames)) {
|
||||
exportCols = exportColumnNames.map(function (name) {
|
||||
for (var i = 0; i < colModel.length; i++) {
|
||||
if (colModel[i].name === name) return colModel[i];
|
||||
}
|
||||
}).filter(function (col) { return col && col.name !== 'cb' && col.name !== 'rn'; });
|
||||
} else {
|
||||
// 只导出可见列(hidden !== true),与折叠状态联动:收起的列自动不可见
|
||||
exportCols = colModel.filter(function (c) { return c.hidden !== true && c.name !== 'cb' && c.name !== 'rn'; });
|
||||
}
|
||||
if (!exportCols.length) { main.message && main.message("没有可导出的列"); return; }
|
||||
|
||||
var rows = exportRows || jgrid.jqGrid('getRowData');
|
||||
if (exportRows) {
|
||||
var gridElement = jgrid[0];
|
||||
rows = exportRows.map(function (row, rowIndex) {
|
||||
var formattedRow = {};
|
||||
visibleCols.forEach(function (col) {
|
||||
exportCols.forEach(function (col) {
|
||||
var colIndex = colModel.indexOf(col);
|
||||
var rawValue = $.jgrid.getAccessor(row, col.name);
|
||||
var formattedValue = gridElement && gridElement.formatter
|
||||
@@ -1234,7 +1244,7 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, expor
|
||||
return formattedRow;
|
||||
});
|
||||
}
|
||||
var headerLabels = visibleCols.map(function (c) { return c.label || c.name; });
|
||||
var headerLabels = exportCols.map(function (c) { return c.label || c.name; });
|
||||
|
||||
// 构建 HTML table,用 style 保持 mso-number-format 让金额不被科学计数法破坏
|
||||
var html = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">';
|
||||
@@ -1242,7 +1252,7 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, expor
|
||||
html += '<body><table border="1">';
|
||||
//表头:有分组配置时导出两级表头(分类 + 字段),否则保持原单级表头。
|
||||
if (groupConfig && groupConfig.length) {
|
||||
html += buildGroupHeaderHtml(visibleCols, groupConfig);
|
||||
html += buildGroupHeaderHtml(exportCols, groupConfig);
|
||||
}
|
||||
html += '<tr>' + headerLabels.map(function (l) {
|
||||
return '<th style="background:#f0f0f0;font-weight:bold;">' + escapeXml(l) + '</th>';
|
||||
@@ -1250,8 +1260,8 @@ main.exportVisibleColumnsToExcel = function (jgrid, fileName, groupConfig, expor
|
||||
//数据行
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
html += '<tr>';
|
||||
for (var c = 0; c < visibleCols.length; c++) {
|
||||
var val = rows[i][visibleCols[c].name];
|
||||
for (var c = 0; c < exportCols.length; c++) {
|
||||
var val = rows[i][exportCols[c].name];
|
||||
if (val === undefined || val === null) val = '';
|
||||
html += '<td>' + escapeXml(String(val)) + '</td>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user