From b063bfb1797f4a3d5688f910bb603644cd77889e Mon Sep 17 00:00:00 2001 From: gongfuxiang Date: Thu, 13 Oct 2022 17:57:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=AF=A6=E6=83=85=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=BA=95=E9=83=A8=E6=93=8D=E4=BD=9C=EF=BC=88=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=89=93=E5=8D=B0=E3=80=81=E5=AF=BC=E5=87=BAPDF/excel?= =?UTF-8?q?=E3=80=81=E5=AF=BC=E5=87=BAexcel=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E7=BB=B4=E8=AF=A6=E6=83=85=E5=88=97=E8=A1=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/default/public/module/detail.html | 6 ++- .../default/public/module/detail_avg.html | 6 ++- .../public/module/detail_nav_operate.html | 29 +++++++++++ .../view/default/public/module/detail.html | 6 ++- .../default/public/module/detail_avg.html | 6 ++- .../public/module/detail_nav_operate.html | 29 +++++++++++ app/module/FormHandleModule.php | 52 ++++++++++++++++++- extend/base/Excel.php | 7 +-- public/static/common/css/common.css | 24 ++++++++- public/static/common/js/common.js | 26 +++++----- 10 files changed, 166 insertions(+), 25 deletions(-) create mode 100644 app/admin/view/default/public/module/detail_nav_operate.html create mode 100644 app/index/view/default/public/module/detail_nav_operate.html diff --git a/app/admin/view/default/public/module/detail.html b/app/admin/view/default/public/module/detail.html index 476059bb1..9d783a38f 100644 --- a/app/admin/view/default/public/module/detail.html +++ b/app/admin/view/default/public/module/detail.html @@ -21,7 +21,7 @@ {{/php}} -
+
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@@ -96,6 +96,10 @@
+ +{{include file="public/module/detail_nav_operate" /}} + + {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
diff --git a/app/admin/view/default/public/module/detail_avg.html b/app/admin/view/default/public/module/detail_avg.html index 5dd83efd8..bd6617cff 100644 --- a/app/admin/view/default/public/module/detail_avg.html +++ b/app/admin/view/default/public/module/detail_avg.html @@ -21,7 +21,7 @@ {{/php}} -
+
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@@ -99,6 +99,10 @@
+ +{{include file="public/module/detail_nav_operate" /}} + + {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
diff --git a/app/admin/view/default/public/module/detail_nav_operate.html b/app/admin/view/default/public/module/detail_nav_operate.html new file mode 100644 index 000000000..6f8dd2f7f --- /dev/null +++ b/app/admin/view/default/public/module/detail_nav_operate.html @@ -0,0 +1,29 @@ +{{if isset($form_table['base']['is_detail_nav_operate']) and $form_table['base']['is_detail_nav_operate'] eq 1}} +
+ + {{if isset($form_table['base']['is_data_print']) and $form_table['base']['is_data_print'] eq 1}} + + {{/if}} + + + {{if isset($form_table['base']['is_data_export_pdf']) and $form_table['base']['is_data_export_pdf'] eq 1}} + + {{/if}} + + + {{if isset($form_table['base']['is_data_export_excel']) and $form_table['base']['is_data_export_excel'] eq 1}} + + {{/if}} +
+ + {{if isset($form_table['base']['is_data_print']) and $form_table['base']['is_data_print'] eq 1}} + + {{/if}} +{{/if}} \ No newline at end of file diff --git a/app/index/view/default/public/module/detail.html b/app/index/view/default/public/module/detail.html index 476059bb1..9d783a38f 100644 --- a/app/index/view/default/public/module/detail.html +++ b/app/index/view/default/public/module/detail.html @@ -21,7 +21,7 @@ {{/php}} -
+
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@@ -96,6 +96,10 @@
+ +{{include file="public/module/detail_nav_operate" /}} + + {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
diff --git a/app/index/view/default/public/module/detail_avg.html b/app/index/view/default/public/module/detail_avg.html index 5dd83efd8..bd6617cff 100644 --- a/app/index/view/default/public/module/detail_avg.html +++ b/app/index/view/default/public/module/detail_avg.html @@ -21,7 +21,7 @@ {{/php}} -
+
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
@@ -99,6 +99,10 @@
+ +{{include file="public/module/detail_nav_operate" /}} + + {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
diff --git a/app/index/view/default/public/module/detail_nav_operate.html b/app/index/view/default/public/module/detail_nav_operate.html new file mode 100644 index 000000000..6f8dd2f7f --- /dev/null +++ b/app/index/view/default/public/module/detail_nav_operate.html @@ -0,0 +1,29 @@ +{{if isset($form_table['base']['is_detail_nav_operate']) and $form_table['base']['is_detail_nav_operate'] eq 1}} +
+ + {{if isset($form_table['base']['is_data_print']) and $form_table['base']['is_data_print'] eq 1}} + + {{/if}} + + + {{if isset($form_table['base']['is_data_export_pdf']) and $form_table['base']['is_data_export_pdf'] eq 1}} + + {{/if}} + + + {{if isset($form_table['base']['is_data_export_excel']) and $form_table['base']['is_data_export_excel'] eq 1}} + + {{/if}} +
+ + {{if isset($form_table['base']['is_data_print']) and $form_table['base']['is_data_print'] eq 1}} + + {{/if}} +{{/if}} \ No newline at end of file diff --git a/app/module/FormHandleModule.php b/app/module/FormHandleModule.php index 280cd0b53..c2ad736d4 100644 --- a/app/module/FormHandleModule.php +++ b/app/module/FormHandleModule.php @@ -543,7 +543,7 @@ class FormHandleModule } // 是否存在数据 - if(empty($error_msg) && empty($this->data_list)) + if(empty($error_msg) && empty($this->data_list) && empty($this->data_detail)) { $error_msg = '没有相关数据、请重新输入搜索条件再试!'; } @@ -595,8 +595,56 @@ class FormHandleModule '); } + // 列表或详情数据 + $list = empty($this->data_list) ? [$this->data_detail] : $this->data_list; + + // 是否存在详情列表数据定义 + $data = []; + if(!empty($this->form_data['detail_form_list'])) + { + foreach($list as $v) + { + foreach($this->form_data['detail_form_list'] as $dv) + { + if(!empty($dv) && !empty($dv['label']) && !empty($dv['field']) && !empty($dv['data']) && !empty($v[$dv['field']]) && is_array($v[$dv['field']])) + { + $is_first = true; + $is_title = true; + foreach($v[$dv['field']] as $vs) + { + $temp = $is_first ? $v : []; + foreach($dv['data'] as $dvk=>$dvv) + { + // 追加数据导列表 + $field = $dv['field'].'_'.$dvk; + $temp[$field] = isset($vs[$dvk]) ? $vs[$dvk] : ''; + + // 追加表头 + if($is_title) + { + $title[$field] = [ + 'name' => $dv['label'].' - '.$dvv, + 'type' => 'string', + ]; + } + $is_first = false; + } + unset($temp[$dv['field']]); + $data[] = $temp; + $is_title = false; + } + } + } + } + } + if(empty($data) && !empty($list)) + { + $data = $list; + unset($list); + } + // Excel驱动导出数据 - $excel = new \base\Excel(['title'=>$title, 'data'=>$this->data_list]); + $excel = new \base\Excel(['title'=>$title, 'data'=>$data]); $excel->Export(); } } diff --git a/extend/base/Excel.php b/extend/base/Excel.php index 755fb342d..019984192 100755 --- a/extend/base/Excel.php +++ b/extend/base/Excel.php @@ -130,10 +130,7 @@ class Excel $index = 0; foreach($this->title as $tk=>$tv) { - if(array_key_exists($tk, $v)) - { - $temp .= ($index == 0 ? '' : ',').str_replace([',', "\n"], [ ',', ''], $v[$tk])."\t"; - } + $temp .= ($index == 0 ? '' : ',').(array_key_exists($tk, $v) ? str_replace([',', "\n"], [ ',', ''], $v[$tk]) : '')."\t"; $index++; } $csv_content .= (($excel_charset == 0) ? $temp : iconv('utf-8', $charset, $temp))."\n"; @@ -248,7 +245,7 @@ class Excel $drawing->setOffsetY(15); $drawing->setWorksheet($spreadsheet->getActiveSheet()); } else { - $value = ($excel_charset == 0) ? $v[$tk] : iconv('utf-8', $charset, $v[$tk]); + $value = array_key_exists($tk, $v) ? (($excel_charset == 0) ? $v[$tk] : iconv('utf-8', $charset, $v[$tk])) : ''; $sheet->setCellValueByColumnAndRow($temp_cum+1, $temp_row, $value); } diff --git a/public/static/common/css/common.css b/public/static/common/css/common.css index 4b4834829..eabdaf7ac 100755 --- a/public/static/common/css/common.css +++ b/public/static/common/css/common.css @@ -1116,7 +1116,7 @@ button.colorpicker-submit img { } /** - * 表格-相关样式 + * 表格-顶部操作相关样式 */ .form-table-operate-top > .am-btn:not(:last-child) { margin-right: 10px; @@ -1125,6 +1125,28 @@ button.colorpicker-submit img { margin-bottom: 10px; } +/** + * 表格-详情底部操作 + */ +.form-navigation-present-operate { + padding-bottom: 30px; +} +.form-detail-nav-operate { + position: fixed; + right: 0; + bottom: 0; + width: auto; + padding: 10px; + text-align: right; +} +.form-detail-nav-operate > .am-btn { + -webkit-box-shadow: 0 0 8px rgb(154 154 154 / 40%); + box-shadow: 0 0 8px rgb(154 154 154 / 40%); +} +.form-detail-nav-operate > .am-btn:not(:last-child) { + margin-right: 10px; +} + /** * 表格-搜索条件 */ diff --git a/public/static/common/js/common.js b/public/static/common/js/common.js index 1acdb36d5..389364f1b 100755 --- a/public/static/common/js/common.js +++ b/public/static/common/js/common.js @@ -2852,22 +2852,22 @@ $(function() var request_value = $form.attr('request-value') || null; if(request_value == null) { - Prompt(window['lang_form_config_value_params_tips'] || '表单[类型值]参数配置有误'); - return false; - } - - // 拼接参数 - var params = GetFormVal(form_name, true); - var pv = 'form_table_is_export_excel=1&'; - for(var i in params) - { - if(params[i] != undefined && params[i] != '') + // 不存在表单则直接使用当前地址 + request_value = window.open(UrlFieldReplace('form_table_is_export_excel', 1)); + } else { + // 拼接参数 + var params = GetFormVal(form_name, true); + var pv = 'form_table_is_export_excel=1&'; + for(var i in params) { - pv += i+'='+encodeURIComponent(params[i])+'&'; + if(params[i] != undefined && params[i] != '') + { + pv += i+'='+encodeURIComponent(params[i])+'&'; + } } + var join = (request_value.indexOf('?') >= 0) ? '&' : '?'; + request_value += join+pv.substr(0, pv.length-1); } - var join = (request_value.indexOf('?') >= 0) ? '&' : '?'; - request_value += join+pv.substr(0, pv.length-1); window.open(request_value); });