优化 table 文件导出功能,避免打开文件后内容显示的若干异常

pull/1194/head
贤心 2023-01-29 01:10:56 +08:00
parent a23e7c67c5
commit 6877685754
1 changed files with 24 additions and 14 deletions

View File

@ -2530,15 +2530,15 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS'); if(device.ie) return hint.error('IE_NOT_SUPPORT_EXPORTS');
alink.href = 'data:'+ textType +';charset=utf-8,\ufeff'+ encodeURIComponent(function(){ alink.href = 'data:'+ textType +';charset=utf-8,\ufeff'+ encodeURIComponent(function(){
var dataTitle = [] var dataTitle = [];
,dataMain = [] var dataMain = [];
,dataTotal = [] var dataTotal = [];
,fieldsIsHide = {}; var fieldsIsHide = {};
//表头和表体 // 表头和表体
layui.each(data, function(i1, item1){ layui.each(data, function(i1, item1){
var vals = []; var vals = [];
if(typeof id === 'object'){ //如果 id 参数直接为表头数据 if(typeof id === 'object'){ // id 参数直接为表头数据
layui.each(id, function(i, item){ layui.each(id, function(i, item){
i1 == 0 && dataTitle.push(item || ''); i1 == 0 && dataTitle.push(item || '');
}); });
@ -2548,9 +2548,9 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
} else { } else {
table.eachCols(id, function(i3, item3){ table.eachCols(id, function(i3, item3){
if(item3.field && item3.type == 'normal'){ if(item3.field && item3.type == 'normal'){
//不导出隐藏列 // 不导出隐藏列
if(item3.hide){ if(item3.hide){
if(i1 == 0) fieldsIsHide[item3.field] = true; //记录隐藏列 if(i1 == 0) fieldsIsHide[item3.field] = true; // 记录隐藏列
return; return;
} }
@ -2558,7 +2558,9 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
if(content === undefined || content === null) content = ''; if(content === undefined || content === null) content = '';
i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || ''); i1 == 0 && dataTitle.push(item3.fieldTitle || item3.title || item3.field || '');
vals.push('"'+ parseTempData.call(thatTable, {
// 解析内容
content = parseTempData.call(thatTable, {
item3: item3 item3: item3
,content: content ,content: content
,tplData: item1 ,tplData: item1
@ -2569,7 +2571,15 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
return td.filter('[data-field="'+ field +'"]'); return td.filter('[data-field="'+ field +'"]');
} }
} }
}) + '"'); });
// 异常处理
content = content.replace(/"/g, '""'); // 避免内容存在「双引号」导致异常分隔
content += '\t'; // 加「水平制表符」 避免内容被转换格式
content = '"'+ content +'"'; // 避免内容存在「逗号」导致异常分隔
// 插入内容
vals.push(content);
} }
}); });
} }
@ -2583,7 +2593,7 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
return dataTitle.join(',') + '\r\n' + dataMain.join('\r\n') + '\r\n' + dataTotal.join(','); return dataTitle.join(',') + '\r\n' + dataMain.join('\r\n') + '\r\n' + dataTotal.join(',');
}()); }());
//return;
alink.download = (options.title || config.title || 'table_'+ (config.index || '')) + '.' + type; alink.download = (options.title || config.title || 'table_'+ (config.index || '')) + '.' + type;
document.body.appendChild(alink); document.body.appendChild(alink);
alink.click(); alink.click();
@ -2592,14 +2602,14 @@ layui.define(['lay', 'laytpl', 'laypage', 'form', 'util'], function(exports){
// 重置表格尺寸结构 // 重置表格尺寸结构
table.resize = function(id){ table.resize = function(id){
//如果指定表格唯一 id则只执行该 id 对应的表格实例 //指定表格唯一 id则只执行该 id 对应的表格实例
if(id){ if(id){
var config = getThisTableConfig(id); //获取当前实例配置项 var config = getThisTableConfig(id); // 获取当前实例配置项
if(!config) return; if(!config) return;
getThisTable(id).resize(); getThisTable(id).resize();
} else { //否则重置所有表格实例尺寸 } else { // 否则重置所有表格实例尺寸
layui.each(thisTable.that, function(){ layui.each(thisTable.that, function(){
this.resize(); this.resize();
}); });