作者 郭文星

123

@@ -235,5 +235,56 @@ class Department extends Backend @@ -235,5 +235,56 @@ class Department extends Backend
235 public function downloadexcel($id) 235 public function downloadexcel($id)
236 { 236 {
237 $department = Db::name("department")->where('id', $id)->find(); 237 $department = Db::name("department")->where('id', $id)->find();
  238 + $workinghours=Db::name("workinghours")
  239 + ->alias("a")
  240 + ->join("user b","a.user_id=b.id")
  241 + ->join("project c","a.project_id=c.id")
  242 + ->where("a.department_id",$id)
  243 + ->field("project_name,working_hours,reporttime,username")
  244 + ->select();
  245 + $file=$this->projectexcel($workinghours,$department);
  246 +
  247 + }
  248 + /**
  249 + *导出表
  250 + */
  251 + public function projectexcel($workinghours, $department)
  252 + {
  253 + vendor('phpoffice.phpexcel.PHPExcel');
  254 + Vendor('phpoffice.phpexcel.Classes.PHPExcel');
  255 + Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
  256 + //实例化
  257 + $objExcel = new \PHPExcel();
  258 + //设置文档属性
  259 + $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
  260 + //设置内容
  261 + $objActSheet = $objExcel->getActiveSheet();
  262 + $key = ord("A");
  263 + $letter = explode(',', "A,B,C,D,E,F");
  264 + $arrHeader = array('序号', '部门名称', '项目名称', '提交人', '工时', '提交时间');
  265 + //填充表头信息
  266 + $lenth = count($arrHeader);
  267 + for ($i = 0; $i < $lenth; $i++) {
  268 + $objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");
  269 + };
  270 + //填充表格信息
  271 + foreach ($workinghours as $k => $v) {
  272 + $j = $k + 1;
  273 + $k += 2;
  274 +
  275 + $objActSheet->setCellValue('A' . $k, $j);
  276 + $objActSheet->setCellValue('B' . $k, $department['name'])->getDefaultColumnDimension()->setWidth(20);
  277 + $objActSheet->setCellValue('C' . $k, $v['project_name']);
  278 + $objActSheet->setCellValue('D' . $k, $v['username']);
  279 + $objActSheet->setCellValue('E' . $k, $v['working_hours']);
  280 + $objActSheet->setCellValue('F' . $k, date("Y-m-d", $v['reporttime']));
  281 + }
  282 + $outfile = $department['name'] ."-". rand(10000, 99999) . ".xlsx";
  283 + $objExcel->createSheet();
  284 + // Redirect output to a client’s web browser (Excel2007)
  285 + $title = date("YmdHis");
  286 + header('Content-Disposition: attachment;filename="' . $outfile . '.xlsx"');
  287 + $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
  288 + $objWriter->save('php://output');
238 } 289 }
239 } 290 }
@@ -266,17 +266,12 @@ class Project extends Backend @@ -266,17 +266,12 @@ class Project extends Backend
266 $j = $k + 1; 266 $j = $k + 1;
267 $k += 2; 267 $k += 2;
268 $objActSheet->setCellValue('A' . $k, $j); 268 $objActSheet->setCellValue('A' . $k, $j);
269 - $objActSheet->setCellValue('B' . $k, $project['project_name']); 269 + $objActSheet->setCellValue('B' . $k, $project['project_name'])->getDefaultColumnDimension()->setWidth(20);
270 $objActSheet->setCellValue('C' . $k, $v['username']); 270 $objActSheet->setCellValue('C' . $k, $v['username']);
271 $objActSheet->setCellValue('D' . $k, $v['working_hours']); 271 $objActSheet->setCellValue('D' . $k, $v['working_hours']);
272 $objActSheet->setCellValue('E' . $k, date("Y-m-d", $v['reporttime'])); 272 $objActSheet->setCellValue('E' . $k, date("Y-m-d", $v['reporttime']));
273 } 273 }
274 $outfile = $project['project_name'] ."-". rand(10000, 99999) . ".xlsx"; 274 $outfile = $project['project_name'] ."-". rand(10000, 99999) . ".xlsx";
275 - $objWriter->save('./datauploads/' . $outfile);  
276 -  
277 - $file = '../public/datauploads/' . $outfile; // 文件路径  
278 - $filename = $outfile; // 下载时的文件名  
279 -  
280 $objExcel->createSheet(); 275 $objExcel->createSheet();
281 // Redirect output to a client’s web browser (Excel2007) 276 // Redirect output to a client’s web browser (Excel2007)
282 $title = date("YmdHis"); 277 $title = date("YmdHis");
@@ -284,26 +279,5 @@ class Project extends Backend @@ -284,26 +279,5 @@ class Project extends Backend
284 $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007'); 279 $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
285 $objWriter->save('php://output'); 280 $objWriter->save('php://output');
286 } 281 }
287 - function download( $file_url , $new_name = '' ){  
288 - $file_url='../public/datauploads/'.$file_url;  
289 - if (!isset( $file_url )||trim( $file_url )== '' ){  
290 - echo '500' ;  
291 - }  
292 - if (! file_exists ( $file_url )){ //检查文件是否存在  
293 - echo '404' ;  
294 - }  
295 - $file_name = basename ( $file_url );  
296 - $file_type = explode ( '.' , $file_url );  
297 - $file_type = $file_type [ count ( $file_type )-1];  
298 - $file_name =trim( $new_name == '' )? $file_name :urlencode( $new_name );  
299 - $file_type = fopen ( $file_url , 'r' ); //打开文件  
300 - //输入文件标签  
301 - header( "Content-type: application/octet-stream" );  
302 - header( "Accept-Ranges: bytes" );  
303 - header( "Accept-Length: " . filesize ( $file_url ));  
304 - header( "Content-Disposition: attachment; filename=" . $file_name );  
305 - //输出文件内容  
306 - echo fread ( $file_type , filesize ( $file_url ));  
307 - fclose( $file_type );  
308 - } 282 +
309 } 283 }
@@ -199,4 +199,59 @@ class User extends Backend @@ -199,4 +199,59 @@ class User extends Backend
199 { 199 {
200 return md5(md5($password) . $salt); 200 return md5(md5($password) . $salt);
201 } 201 }
  202 + public function downloadexcel($id)
  203 + {
  204 + $user = Db::name("user")->where('id', $id)->find();
  205 + $workinghours=Db::name("workinghours")
  206 + ->alias("a")
  207 + ->join("department b","a.department_id=b.id")
  208 + ->join("project c","a.project_id=c.id")
  209 + ->field("project_name,name,working_hours,starttime,reporttime")
  210 + ->where("a.user_id",$id)
  211 + ->select();
  212 + $file=$this->projectexcel($workinghours,$user);
  213 + }
  214 +
  215 + /**
  216 + *导出表
  217 + */
  218 + public function projectexcel($workinghours, $user)
  219 + {
  220 + vendor('phpoffice.phpexcel.PHPExcel');
  221 + Vendor('phpoffice.phpexcel.Classes.PHPExcel');
  222 + Vendor('phpoffice.phpexcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
  223 + //实例化
  224 + $objExcel = new \PHPExcel();
  225 + //设置文档属性
  226 + $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
  227 + //设置内容
  228 + $objActSheet = $objExcel->getActiveSheet();
  229 + $key = ord("A");
  230 + $letter = explode(',', "A,B,C,D,E,F");
  231 + $arrHeader = array('序号', '项目名称', '提交人', '部门名称', '工时', '提交时间');
  232 + //填充表头信息
  233 + $lenth = count($arrHeader);
  234 + for ($i = 0; $i < $lenth; $i++) {
  235 + $objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");
  236 + };
  237 + //填充表格信息
  238 + foreach ($workinghours as $k => $v) {
  239 + $j = $k + 1;
  240 + $k += 2;
  241 +
  242 + $objActSheet->setCellValue('A' . $k, $j);
  243 + $objActSheet->setCellValue('B' . $k, $v['project_name'])->getDefaultColumnDimension()->setWidth(20);
  244 + $objActSheet->setCellValue('D' . $k, $v['name']);
  245 + $objActSheet->setCellValue('C' . $k, $user['username']);
  246 + $objActSheet->setCellValue('E' . $k, $v['working_hours']);
  247 + $objActSheet->setCellValue('F' . $k, date("Y-m-d", $v['reporttime']));
  248 + }
  249 + $outfile = $user['username'] ."-". rand(10000, 99999) . ".xlsx";
  250 + $objExcel->createSheet();
  251 + // Redirect output to a client’s web browser (Excel2007)
  252 + $title = date("YmdHis");
  253 + header('Content-Disposition: attachment;filename="' . $outfile . '.xlsx"');
  254 + $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
  255 + $objWriter->save('php://output');
  256 + }
202 } 257 }
@@ -44,7 +44,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin @@ -44,7 +44,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
44 } 44 }
45 } 45 }
46 46
47 - ]} ] 47 + ]}
  48 + ]
48 ] 49 ]
49 }); 50 });
50 51
@@ -29,8 +29,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin @@ -29,8 +29,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
29 {field: 'mobile', title: __('Mobile'), operate: 'LIKE'}, 29 {field: 'mobile', title: __('Mobile'), operate: 'LIKE'},
30 {field: 'avatar', title: __('Avatar'), events: Table.api.events.image, formatter: Table.api.formatter.image, operate: false}, 30 {field: 'avatar', title: __('Avatar'), events: Table.api.events.image, formatter: Table.api.formatter.image, operate: false},
31 {field: 'logintime', title: __('Logintime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, 31 {field: 'logintime', title: __('Logintime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
32 - {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}  
33 - ] 32 + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
  33 + buttons: [
  34 + {
  35 + name:'下载报表',
  36 + title: '下载报表',
  37 + classname: 'btn btn-xs btn-info btn-click',
  38 + icon: 'fa fa-leaf',
  39 + // dropdown: '更多',//如果包含dropdown,将会以下拉列表的形式展示
  40 + click: function (data,row) {
  41 + top.location.href="user/downloadexcel?id="+row.id;
  42 + }
  43 + }
  44 +
  45 + ]} ]
34 ] 46 ]
35 }); 47 });
36 48