优化导出功能,支持选择项;

This commit is contained in:
2022-04-17 20:13:58 +08:00
parent 33fa83e0c0
commit 20cf3c4c0c
2 changed files with 20 additions and 5 deletions

View File

@@ -123,10 +123,11 @@ trait Curd
$fields = $this->request->param('fields', '{}', null); $fields = $this->request->param('fields', '{}', null);
$image_fields = $this->request->param('image_fields', '{}', null); $image_fields = $this->request->param('image_fields', '{}', null);
$select_fields = $this->request->param('select_fields', '{}', null);
$fields = json_decode($fields, true); $fields = json_decode($fields, true);
$image_fields = json_decode($image_fields, true); $image_fields = json_decode($image_fields, true);
$select_fields = json_decode($select_fields, true);
$write_col = 1; $write_col = 1;
$write_line = 1; $write_line = 1;
@@ -140,7 +141,7 @@ trait Curd
$runtime_file_list = []; $runtime_file_list = [];
$this->model $this->model
->where($where)->chunk(100, function ($list) use ($sheet, &$write_line, $fields, $image_fields, &$runtime_file_list) { ->where($where)->chunk(100, function ($list) use ($sheet, &$write_line, $fields, $image_fields, &$runtime_file_list, $select_fields) {
foreach ($list as $list_index => $item) { foreach ($list as $list_index => $item) {
$write_line++; $write_line++;
$write_col = 1; $write_col = 1;
@@ -180,6 +181,10 @@ trait Curd
$cel .= "\n" . $message; $cel .= "\n" . $message;
} }
} else if (array_key_exists($field_key, $select_fields)) {
// 需要设置选项
$cel = $select_fields[$field_key][$value];
} else { } else {
$cel = $value; $cel = $value;
} }
@@ -201,7 +206,7 @@ trait Curd
unlink($runtime_file); unlink($runtime_file);
} }
return download($content, $this->model->getName() . time() . '.xlsx', true); return download($content, $this->model->getName() . date('Ymd') . '.xlsx', true);
} }
/** /**

View File

@@ -973,13 +973,22 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
var imageFields = []; var imageFields = [];
var selectFields = {};
options.cols[0].forEach(col => { options.cols[0].forEach(col => {
if (col.field) { if (col.field) {
exportFields[col.field] = col.title; exportFields[col.field] = col.title;
if(col.templet == admin.table.image){ if (col.templet == admin.table.image) {
imageFields.push(col.field) imageFields.push(col.field)
}
if (col.selectList instanceof Object) {
if(Object.keys(col.selectList).length > 0){
selectFields[col.field] = col.selectList;
}
} }
} }
@@ -1010,6 +1019,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
op: JSON.stringify(formatOp), op: JSON.stringify(formatOp),
fields: JSON.stringify(exportFields), fields: JSON.stringify(exportFields),
image_fields: JSON.stringify(imageFields), image_fields: JSON.stringify(imageFields),
select_fields: JSON.stringify(selectFields),
} }
var query = $.param(searchQuery); var query = $.param(searchQuery);