@@ -15,6 +15,7 @@ class ExportHandle
1515 'pageTitle ' => '导出数据 ' ,
1616 'defaultExportName ' => 'Export ' ,
1717 'headTitles ' => [],
18+ 'customHeadTitle ' => false ,
1819 ];
1920
2021 private $ fetchCallback ;
@@ -37,6 +38,12 @@ public function withHeadTitles($headTitles)
3738 return $ this ;
3839 }
3940
41+ public function withCustomHeadTitle ($ enable )
42+ {
43+ $ this ->data ['customHeadTitle ' ] = $ enable ;
44+ return $ this ;
45+ }
46+
4047 public function handleFetch ($ callback )
4148 {
4249 $ this ->fetchCallback = $ callback ;
@@ -68,23 +75,48 @@ private function perform($ext, $view, $param = [])
6875 }
6976 $ pageTitle = $ this ->data ['pageTitle ' ];
7077 $ defaultExportName = $ this ->data ['defaultExportName ' ];
78+ $ headTitles = $ this ->data ['headTitles ' ];
79+ $ customHeadTitle = $ this ->data ['customHeadTitle ' ];
7180 $ input = InputPackage::buildFromInput ();
7281 $ page = $ input ->getPage ();
7382 $ pageSize = $ input ->getPageSize (null , null , null , 100 );
7483 $ search = $ input ->getJsonAsInput ('_param ' )->getArray ('search ' );
7584 $ exportName = $ input ->getTrimString ('exportName ' , $ defaultExportName );
7685 $ format = $ input ->getTrimString ('format ' , $ ext );
86+ $ checkedHeadTitles = $ input ->getJson ('checkedHeadTitles ' );
7787
7888 if (Request::isPost ()) {
7989 BizException::throwsIfEmpty ('导出文件名为空 ' , $ exportName );
90+ BizException::throwsIfEmpty ('请选择导出列 ' , $ checkedHeadTitles );
8091 $ paginateData = call_user_func_array ($ this ->fetchCallback , [$ page , $ pageSize , $ search , []]);
92+ if ($ customHeadTitle ) {
93+ $ list = [];
94+ foreach ($ paginateData ['list ' ] as $ v ) {
95+ $ one = [];
96+ foreach ($ v as $ vi => $ vv ) {
97+ if (in_array ($ vi , $ checkedHeadTitles )) {
98+ $ one [] = $ vv ;
99+ }
100+ }
101+ $ list [] = $ one ;
102+ }
103+ $ exportHeadTitles = [];
104+ foreach ($ this ->data ['headTitles ' ] as $ i => $ v ) {
105+ if (in_array ($ i , $ checkedHeadTitles )) {
106+ $ exportHeadTitles [] = $ v ;
107+ }
108+ }
109+ } else {
110+ $ list = $ paginateData ['list ' ];
111+ $ exportHeadTitles = $ this ->data ['headTitles ' ];
112+ }
81113 $ data = [];
82114 $ data ['code ' ] = 0 ;
83- $ data ['list ' ] = $ paginateData [ ' list ' ] ;
115+ $ data ['list ' ] = $ list ;
84116 $ data ['total ' ] = $ paginateData ['total ' ];
85117 $ data ['finished ' ] = count ($ paginateData ['list ' ]) != $ pageSize ;
86118 $ data ['exportName ' ] = $ exportName . '. ' . $ format ;
87- $ data ['exportHeadTitles ' ] = $ this -> data [ ' headTitles ' ] ;
119+ $ data ['exportHeadTitles ' ] = $ exportHeadTitles ;
88120 return Response::generateSuccessData ($ data );
89121 }
90122
@@ -94,6 +126,8 @@ private function perform($ext, $view, $param = [])
94126 'exportName ' => $ exportName ,
95127 'total ' => $ paginateData ['total ' ],
96128 'formats ' => $ param ['formats ' ],
129+ 'customHeadTitle ' => $ customHeadTitle ,
130+ 'headTitles ' => $ headTitles ,
97131 ]);
98132 }
99133}
0 commit comments