作者 景龙
1 个管道 的构建 通过 耗费 23 秒

调试excel

@@ -1779,6 +1779,8 @@ class CommonController extends RestBaseController @@ -1779,6 +1779,8 @@ class CommonController extends RestBaseController
1779 $user = $this->getUserById(['id'=>$res['uid']]); 1779 $user = $this->getUserById(['id'=>$res['uid']]);
1780 if($user){ 1780 if($user){
1781 $arr['user_login'] = $user['user_login']; 1781 $arr['user_login'] = $user['user_login'];
  1782 + }else{
  1783 + $arr['user_login'] = '';
1782 } 1784 }
1783 1785
1784 //甲方领导确认人 1786 //甲方领导确认人
@@ -106,4 +106,44 @@ class AdminCheckController extends AdminBaseController @@ -106,4 +106,44 @@ class AdminCheckController extends AdminBaseController
106 ->find(); 106 ->find();
107 return $res; 107 return $res;
108 } 108 }
  109 +
  110 + //导出数据
  111 + public function exportData(){
  112 + $param = $this->request->param();
  113 +
  114 + $adminCommon = new AdminCommonController();
  115 + $adminExcel = new AdminExcelDataController();
  116 +
  117 + $res_ins = $adminCommon->exportCheckList('check',$param,'t.*');
  118 +
  119 + $arr_url = [];
  120 + $arr_time = [];
  121 + foreach($res_ins as $key=>$value){
  122 + $arr = $adminCommon->checkExportData($value);
  123 + $arr['status'] = $this->getStatus()[$value['status']];
  124 + //获取文件路径
  125 + $url = $adminExcel->checkExcelData($arr);
  126 + //按日导出
  127 + $arr_url[$key] = $url;
  128 + $arr_time[$key] = $arr['time'].'报表.xls';
  129 + }
  130 +
  131 + $xlsName = '月检报表';
  132 + //解决zip中文文件名
  133 + $xlsName = $adminCommon->iconv_to_utf8($xlsName);
  134 + $filename = ROOT_PATH . 'public/upload/export/' . $xlsName . '.zip';
  135 + $adminCommon->zip($arr_url,$filename,$arr_time);
  136 + }
  137 +
  138 + //检查是否有数据
  139 + public function checkData(){
  140 + $param = $this->request->param();
  141 + $adminCommon = new AdminCommonController();
  142 + $res_ins = $adminCommon->exportCheckList('check',$param,'t.id');
  143 + if($res_ins){
  144 + $adminCommon->apiResponse(1);
  145 + }else{
  146 + $adminCommon->apiResponse(0,'暂无数据');
  147 + }
  148 + }
109 } 149 }
@@ -11,15 +11,12 @@ @@ -11,15 +11,12 @@
11 11
12 namespace app\portal\controller; 12 namespace app\portal\controller;
13 13
14 -use api\home\controller\CommonController;  
15 use cmf\controller\AdminBaseController; 14 use cmf\controller\AdminBaseController;
16 -use app\portal\model\InspectModel;  
17 use think\Db; 15 use think\Db;
18 use think\db\Query; 16 use think\db\Query;
19 use PhpOffice\PhpSpreadsheet\Spreadsheet; 17 use PhpOffice\PhpSpreadsheet\Spreadsheet;
20 use PhpOffice\PhpSpreadsheet\IOFactory; 18 use PhpOffice\PhpSpreadsheet\IOFactory;
21 use ZipArchive; 19 use ZipArchive;
22 -use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;  
23 //甲方巡检列表 20 //甲方巡检列表
24 class AdminCommonController extends AdminBaseController 21 class AdminCommonController extends AdminBaseController
25 { 22 {
@@ -242,270 +239,6 @@ class AdminCommonController extends AdminBaseController @@ -242,270 +239,6 @@ class AdminCommonController extends AdminBaseController
242 } 239 }
243 240
244 /* 241 /*
245 - * 导出表格适用于报表绘制表格  
246 - */  
247 - public function send_export($arr){  
248 - $spreadsheet = new Spreadsheet();  
249 - $sheet = $spreadsheet->getActiveSheet();  
250 - $xlsName = $arr['time'];  
251 - //设置sheet名称  
252 - $name = '报表';  
253 - $name = $this->iconv_to_utf8($name);  
254 -  
255 - $sheet->setTitle($xlsName.$name);  
256 - //合并单元格  
257 - $sheet->mergeCells('B1:J1');  
258 - $sheet->mergeCells('B3:B4');  
259 - $sheet->mergeCells('B6:D6');  
260 - $sheet->mergeCells('B7:D7');  
261 - $sheet->mergeCells('C3:D3');  
262 - $sheet->mergeCells('C4:D4');  
263 - $sheet->mergeCells('F3:F4');  
264 - $sheet->mergeCells('G3:I3');  
265 - $sheet->mergeCells('G4:I4');  
266 -  
267 - $spreadsheet->getDefaultStyle()->getFont()->setName('微软雅黑');//字体  
268 -  
269 - //设置默认宽  
270 - $sheet->getDefaultColumnDimension()->setWidth(8);  
271 - //设置高度  
272 - $sheet->getRowDimension(1)->setRowHeight(45);  
273 -// $sheet->getRowDimension(2)->setRowHeight(55);  
274 -  
275 -  
276 - //***********************画出单元格边框*****************************  
277 -// $styleArray = [  
278 -// 'borders' => [  
279 -// 'outline' => [  
280 -// 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,  
281 -// 'color' => ['argb' => 'FFFF0000'],  
282 -// ],  
283 -// ],  
284 -// ];  
285 -// $sheet->getStyle('A1:M26')->applyFromArray($styleArray);  
286 - //***********************画出单元格边框结束*****************************  
287 -  
288 - //***********************背景填充颜色*****************************  
289 - $sheet->getStyle( 'A1:M8')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);  
290 - $sheet->getStyle( 'A1:M8')->getFill()->getStartColor()->setRGB('222B35');//背景颜色  
291 - //***********************画出单元格边框结束*****************************  
292 -  
293 - //标题  
294 - $sheet->setCellValue('B1', $arr['title']);  
295 - $sheet->getStyle('B1')->getFont()->setSize(18);//字体大小  
296 - $sheet->getStyle('B1')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色  
297 - $sheet->getStyle('B1')->getFont()->setBold(true);//字体加粗  
298 -  
299 - //甲方logo  
300 - $imageA = $arr['a_company']['logo'];  
301 - if(@fopen($imageA , 'r' ) ) {  
302 - //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次  
303 - $imageADrawing = new Drawing();  
304 - $imageADrawing->setPath($imageA);  
305 - // 设置图片的宽度  
306 - $imageADrawing->setResizeProportional(false);  
307 - $imageADrawing->setWidthAndHeight(40,40);  
308 - //图片显示在B3  
309 - $imageADrawing->setCoordinates('B3');  
310 - $imageADrawing->setWorksheet($sheet);  
311 - }  
312 -  
313 - $sheet->getStyle('B3:G7')->getFont()->setSize(8);//字体大小  
314 - $sheet->getStyle('C3:G3')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色  
315 - $sheet->getStyle('B6:G6')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色  
316 - $sheet->getStyle('C4:G4')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色  
317 - $sheet->getStyle('B7:G7')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色  
318 -  
319 - //甲方公司  
320 - $sheet->setCellValue('C3', '甲方公司');  
321 - //甲方公司名称  
322 - $sheet->setCellValue('C4', $arr['a_company']['company_name']);  
323 -  
324 - //乙方logo  
325 - $imageB = $arr['b_company']['logo'];  
326 - if(@fopen($imageB , 'r' ) ) {  
327 - //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次  
328 - $objDrawing = new Drawing();  
329 - $objDrawing->setPath($imageB);  
330 - // 设置图片的宽度  
331 - $objDrawing->setResizeProportional(false);  
332 - $objDrawing->setWidthAndHeight(40,40);  
333 - //图片显示在F3  
334 - $objDrawing->setCoordinates('F3');  
335 - $objDrawing->setWorksheet($sheet);  
336 - }  
337 -  
338 - //乙方公司  
339 - $sheet->setCellValue('G3', '乙方公司');  
340 - //乙方公司名称  
341 - $sheet->setCellValue('G4', $arr['b_company']['company_name']);  
342 -  
343 - //项目组  
344 - $sheet->setCellValue('B6', '项目组');  
345 - //项目组名称  
346 - $sheet->setCellValue('B7', $arr['group_name']);  
347 -  
348 - //巡检日期  
349 - $sheet->setCellValue('E6', '巡检日期');  
350 - //巡检日期名称  
351 - $sheet->setCellValue('E7', $arr['create_time']);  
352 -  
353 - //巡检状态  
354 - $sheet->setCellValue('G6', '巡检状态');  
355 - //巡检状态名称  
356 - $sheet->setCellValue('G7', $arr['inspect_status']);  
357 -  
358 - //循环开始  
359 -  
360 - $cols = 10;  
361 - $cells = ['C','E','G','I','K'];  
362 - foreach($arr['point'] as $value){  
363 - $cols += 0;  
364 - //巡检点名称  
365 - $sheet->setCellValue('B'.$cols, $value['point_name']);  
366 - $sheet->getStyle('B'.$cols)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中  
367 - //获取图片个数  
368 - $length = count($value['images']);  
369 - $col = ceil($length/5);  
370 - for($i=0;$i<$col;$i++){  
371 - $col_i = $cols+$i;  
372 - $sheet->getRowDimension($col_i)->setRowHeight(105);  
373 - $sheet->mergeCells('C'.$col_i.':D'.$col_i);  
374 - $sheet->mergeCells('E'.$col_i.':F'.$col_i);  
375 - $sheet->mergeCells('G'.$col_i.':H'.$col_i);  
376 - $sheet->mergeCells('I'.$col_i.':J'.$col_i);  
377 - $sheet->mergeCells('K'.$col_i.':L'.$col_i);  
378 - $key = 0;  
379 - foreach($value['images'] as $k=>$image_value){  
380 - $pre = $i+4*$i;  
381 - $next = $i+1+4*($i+1);  
382 - if($k>=$pre && $k<$next){  
383 - //巡检图片  
384 - $image = $image_value['image_url'];  
385 - if(@fopen($image , 'r' ) ) {  
386 - //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次  
387 - $obj = new Drawing();  
388 - $obj->setPath($image);  
389 - // 设置图片的宽度  
390 - $obj->setResizeProportional(false);  
391 - $obj->setWidthAndHeight(105,130);  
392 - //图片显示在F3  
393 - $obj->setCoordinates($cells[$key].$col_i);  
394 - $obj->setWorksheet($sheet);  
395 - }  
396 - $key++;  
397 - }  
398 - }  
399 - }  
400 -  
401 - $cols += $col+1;  
402 - }  
403 - $sheet->getStyle( 'A9:M'.$cols)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);  
404 - $sheet->getStyle( 'A9:M'.$cols)->getFill()->getStartColor()->setRGB('F3F3F4');//背景颜色浅灰色  
405 -  
406 -  
407 - $objWrite = IOFactory::createWriter($spreadsheet, 'Xls');  
408 -  
409 - //直接从浏览器中输出star  
410 -// header('pragma:public');  
411 -// header("Content-Disposition:attachment;filename=出货装箱单.xls");  
412 -// $objWrite->save('php://output');  
413 -// exit;  
414 - //直接从浏览器中输出end  
415 -  
416 - $file_name = $xlsName.'.xls';  
417 -  
418 - $files_url = ROOT_PATH . '/public/upload/export';  
419 - if(!is_dir($files_url)){  
420 - mkdir($files_url);  
421 - }  
422 - $file_url = ROOT_PATH . '/public/upload/export/'.$file_name;  
423 - $objWrite->save($file_url);  
424 -  
425 - $sys = $this->getOperateSys();  
426 - if($sys == 'Linux'){  
427 - chmod($file_url, 0777);//适用于linux  
428 - }  
429 - //相对路径  
430 - $url = 'upload/export/'.$file_name;  
431 - return $url;  
432 - }  
433 -  
434 - /*  
435 - * 导出表格适用于普通有规律的数据  
436 - * param xlsName:title名称  
437 - * param xlsCell:二维数据xlsCell = array(  
438 - array('id','序号'),  
439 - array('user_nickname','昵称'),  
440 - array('mobile','手机号'),  
441 - array('create_time','注册时间'),  
442 - array('last_login_time','最后登录时间'),  
443 - array('user_status','状态'),  
444 - );  
445 - * param xlsData:数据库数据  
446 - */  
447 - public function exportExcel($xlsName,$xlsCell,$xlsData){  
448 - $topNumber = 1;//表头有几行占用  
449 - $starData = $topNumber+1;//数据开始行起  
450 - $cellKey = [  
451 - 'A','B','C','D','E','F','G','H','I','J','K','L','M',  
452 - 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',  
453 - 'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM',  
454 - 'AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'  
455 - ];  
456 - vendor("PHPExcel");  
457 -  
458 - $spreadsheet = new Spreadsheet();  
459 - $sheet = $spreadsheet->getActiveSheet();  
460 - $sheet->setTitle($xlsName);  
461 - //处理表头  
462 - foreach ($xlsCell as $k=>$v) {  
463 - $sheet->setCellValue($cellKey[$k].$topNumber, $v[1]);//设置表头数据  
464 - $sheet->getStyle($cellKey[$k].$topNumber)->getFont()->setBold(true);//设置是否加粗  
465 - }  
466 - //设置单元格居中显示  
467 - $styleArray = [  
468 - 'alignment' => [  
469 - 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,  
470 - ],  
471 - ];  
472 - //表头居中  
473 - foreach ($xlsCell as $k2=>$v2) {  
474 - $sheet->getStyle($cellKey[$k2].'1')->applyFromArray($styleArray);  
475 - }  
476 - //处理数据  
477 - foreach ($xlsData as $k=>$v) {  
478 - foreach ($xlsCell as $k1=>$v1) {  
479 - //设置每列数据  
480 - $sheet->setCellValue($cellKey[$k1].($k+$starData), $v[$v1[0]]);  
481 - //每列宽度  
482 - $sheet->getColumnDimension($cellKey[$k1])->setWidth(30);  
483 - //设置居中显示  
484 - $sheet->getStyle($cellKey[$k1].($k+$starData))->applyFromArray($styleArray);  
485 - }  
486 - }  
487 - $file_name = $xlsName.'.xls';  
488 -// ob_end_clean();//清除缓冲区,避免乱码  
489 -// header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件  
490 -// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件  
491 -// header('Content-Disposition: attachment;filename='.$file_name);  
492 -// header('Cache-Control: max-age=0');  
493 -// $writer = new Xlsx($spreadsheet);  
494 - $writer = IOFactory::createWriter($spreadsheet, 'Xls'); //按照指定格式生成Excel文件  
495 -// $writer->save('php://output');直接输入到浏览器下载  
496 - //绝对路径,不存在则创建目录  
497 - $files_url = ROOT_PATH . '/public/upload/export';  
498 - if(!is_dir($files_url)){  
499 - mkdir($files_url);  
500 - }  
501 - $file_url = ROOT_PATH . '/public/upload/export/'.$file_name;  
502 - $writer->save($file_url);  
503 - //相对路径  
504 - $url = 'upload/export/'.$file_name;  
505 - return $url;  
506 - }  
507 -  
508 - /*  
509 * 添加文件路径到压缩包中 242 * 添加文件路径到压缩包中
510 * param files:可以为二维数组 243 * param files:可以为二维数组
511 * array=>[ 244 * array=>[
@@ -602,6 +335,7 @@ class AdminCommonController extends AdminBaseController @@ -602,6 +335,7 @@ class AdminCommonController extends AdminBaseController
602 $zipName=iconv('UTF-8','GB2312',$zipName); 335 $zipName=iconv('UTF-8','GB2312',$zipName);
603 } 336 }
604 337
  338 + //下载zip
605 header("Cache-Control: public");//任何情况下都可以得到资源参考:https://blog.csdn.net/u012375924/article/details/82806617 339 header("Cache-Control: public");//任何情况下都可以得到资源参考:https://blog.csdn.net/u012375924/article/details/82806617
606 header("Content-Description: File Transfer"); 340 header("Content-Description: File Transfer");
607 header('Content-disposition: attachment; filename='.basename($zipName)); //文件名 341 header('Content-disposition: attachment; filename='.basename($zipName)); //文件名
@@ -838,4 +572,158 @@ class AdminCommonController extends AdminBaseController @@ -838,4 +572,158 @@ class AdminCommonController extends AdminBaseController
838 return $os_str; 572 return $os_str;
839 } 573 }
840 574
  575 + //获取导出(月检,培训,演习)列表
  576 + public function exportCheckList($table,$param,$field){
  577 + $res_ins = Db::name($table)
  578 + ->alias('t')
  579 + ->join('project p','t.project_id = p.id','LEFT')
  580 + ->where(function (Query $query) use ($param,$table){
  581 + if (!empty($param['name'])) {
  582 + $keyword = $param['name'];
  583 + $query->where('p.name', 'like', "%$keyword%");
  584 + }
  585 + $startTime = empty($param['start_time']) ? 0 : strtotime($param['start_time']);
  586 + $endTime = empty($param['end_time']) ? 0 : strtotime($param['end_time']);
  587 + if (!empty($startTime)) {
  588 + if($table == 'check'){
  589 + $query->where('t.ins_m_time', '>=', $startTime);
  590 + }else if($table == 'train'){
  591 + $query->where('t.train_time', '>=', $startTime);
  592 + }else{
  593 + $query->where('t.exercise_time', '>=', $startTime);
  594 + }
  595 + }
  596 + if (!empty($endTime)) {
  597 + if($table == 'check'){
  598 + $query->where('t.ins_m_time', '<=', $endTime);
  599 + }else if($table == 'train'){
  600 + $query->where('t.train_time', '<=', $endTime);
  601 + }else{
  602 + $query->where('t.exercise_time', '<=', $endTime);
  603 + }
  604 + }
  605 +
  606 + })
  607 + ->field($field)
  608 + ->select()->toArray();
  609 + return $res_ins;
  610 + }
  611 +
  612 + //导出月检报表详情
  613 + public function checkExportData($res){
  614 + $arr = [];
  615 + //甲乙方logo,名称,报表名称
  616 + $company = $this->getCompanyName($res['project_id']);
  617 + if($company){
  618 + $arr['a_company'] = $company['a_company'];
  619 + $arr['b_company'] = $company['b_company'];
  620 + $arr['title'] = $company['title'];
  621 + }
  622 +
  623 + //月检人员(乙方项目组)
  624 + $arr['group_name'] = $this->getBUserByProject($res['project_id'],'id,b_sid',1);
  625 +
  626 + //月检时间
  627 + $arr['ins_m_time'] = date('Y/m/d',$res['ins_m_time']);
  628 + $arr['time'] = date('Y-m-d',$res['ins_m_time']);
  629 + //月检地点
  630 + $arr['address'] = $res['address'];
  631 +
  632 + //月检备注
  633 + $arr['remark'] = $res['remark'];
  634 +
  635 + //月检(乙方发起人)
  636 + $user = $this->getUserById(['id'=>$res['uid']]);
  637 + if($user){
  638 + $arr['user_login'] = $user['user_login'];
  639 + }else{
  640 + $arr['user_login'] = '';
  641 + }
  642 +
  643 + //甲方领导确认人
  644 + $leader_user = $this->getUserById(['id'=>$res['a_leader']]);
  645 + if($leader_user){
  646 + $arr['a_leader_user'] = $leader_user['user_login'];
  647 + }else{
  648 + $arr['a_leader_user'] = '';
  649 + }
  650 +
  651 + //乙方确认完成人
  652 + $finish_user = $this->getUserById(['id'=>$res['finish_uid']]);
  653 + if($finish_user){
  654 + $arr['confirm_user'] = $finish_user['user_login'];
  655 + }else{
  656 + $arr['confirm_user'] = '';
  657 + }
  658 +
  659 + //月检工期及验收完成时间
  660 + if($res['finish_time']){
  661 + $arr['finish_time'] = $res['finish_time'];
  662 + //培训
  663 + $arr['check_period'] = $this->getPeriod($res['finish_time'],$res['ins_m_time']);
  664 + }else{
  665 + //验收完成时间
  666 + $arr['finish_time'] = '';
  667 + //月检工期
  668 + $arr['check_period'] = '';
  669 + }
  670 +
  671 + //月检图片
  672 + if($res['images']){
  673 + $images = $this->exportUrl($res['images']);
  674 + $arr1 = $this->getDayImages($images);
  675 + $arr['images'] = $arr1;
  676 + }else{
  677 + $arr['images'] = [];
  678 + }
  679 +
  680 + //确认图片
  681 + if($res['confirm_images']){
  682 + $images = $this->exportUrl($res['confirm_images']);
  683 + $arr1 = $this->getDayImages($images);
  684 + $arr['confirm_images'] = $arr1;
  685 + }else{
  686 + $arr['confirm_images'] = [];
  687 + }
  688 + return $arr;
  689 + }
  690 +
  691 + //根据uid查询用户
  692 + public function getUserById($where){
  693 + $res = Db::name('user')
  694 + ->where($where)
  695 + ->field('id,user_login,identity')
  696 + ->find();
  697 + return $res;
  698 + }
  699 +
  700 + //获取项目完成工期
  701 + public function getPeriod($finishTime,$time){
  702 + $cnt = $finishTime-strtotime(date('Y-m-d',$time));
  703 + $days = floor($cnt/(3600*24))+1;//算出天数
  704 + return $days;
  705 + }
  706 +
  707 + //按照日期进行排序
  708 + public function getDayImages($images){
  709 + $arr1 = [];
  710 + foreach($images as &$value){
  711 + $value['file_time'] = date('Y/m/d',$value['file_time']);
  712 + }
  713 + //去重后的日期
  714 + $res = array_values(array_unique(array_column($images,'file_time')));//array_values键名从0开始
  715 + foreach($res as $key1=>$value1){
  716 + $k = 0;
  717 + foreach($images as $value2){
  718 + if($value1 == $value2['file_time']){
  719 + $k+=0;
  720 + $arr1[$key1]['day'] = $value2['file_time'];
  721 + $arr1[$key1]['image'][$k]['image_url'] = $value2['image_url'];
  722 + $k++;
  723 + }
  724 + }
  725 + }
  726 + return $arr1;
  727 + }
  728 +
841 } 729 }
  1 +<?php
  2 +// +----------------------------------------------------------------------
  3 +// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
  4 +// +----------------------------------------------------------------------
  5 +// | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
  6 +// +----------------------------------------------------------------------
  7 +// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8 +// +----------------------------------------------------------------------
  9 +// | Author: Powerless < wzxaini9@gmail.com>
  10 +// +----------------------------------------------------------------------
  11 +
  12 +namespace app\portal\controller;
  13 +
  14 +use cmf\controller\AdminBaseController;
  15 +use PhpOffice\PhpSpreadsheet\Spreadsheet;
  16 +use PhpOffice\PhpSpreadsheet\IOFactory;
  17 +use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
  18 +//渲染数据到excel
  19 +class AdminExcelDataController extends AdminBaseController
  20 +{
  21 +
  22 + //巡检,日检渲染数据到表格上
  23 + public function inspectExcelData($arr){
  24 + $spreadsheet = new Spreadsheet();
  25 + $adminCommon = new AdminCommonController();
  26 + $sheet = $spreadsheet->getActiveSheet();
  27 + $xlsName = $arr['time'];
  28 + //设置sheet名称
  29 + $name = '报表';
  30 + $name = $adminCommon->iconv_to_utf8($name);
  31 +
  32 + $sheet->setTitle($xlsName.$name);
  33 + //合并单元格
  34 + $sheet->mergeCells('B1:J1');
  35 + $sheet->mergeCells('B3:B4');
  36 + $sheet->mergeCells('B6:D6');
  37 + $sheet->mergeCells('B7:D7');
  38 + $sheet->mergeCells('C3:D3');
  39 + $sheet->mergeCells('C4:D4');
  40 + $sheet->mergeCells('F3:F4');
  41 + $sheet->mergeCells('G3:I3');
  42 + $sheet->mergeCells('G4:I4');
  43 +
  44 + $spreadsheet->getDefaultStyle()->getFont()->setName('微软雅黑');//字体
  45 +
  46 + //设置默认宽
  47 + $sheet->getDefaultColumnDimension()->setWidth(8);
  48 + //设置高度
  49 + $sheet->getRowDimension(1)->setRowHeight(45);
  50 +// $sheet->getRowDimension(2)->setRowHeight(55);
  51 +
  52 +
  53 + //***********************画出单元格边框*****************************
  54 +// $styleArray = [
  55 +// 'borders' => [
  56 +// 'outline' => [
  57 +// 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
  58 +// 'color' => ['argb' => 'FFFF0000'],
  59 +// ],
  60 +// ],
  61 +// ];
  62 +// $sheet->getStyle('A1:M26')->applyFromArray($styleArray);
  63 + //***********************画出单元格边框结束*****************************
  64 +
  65 + //***********************背景填充颜色*****************************
  66 + $sheet->getStyle( 'A1:M8')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
  67 + $sheet->getStyle( 'A1:M8')->getFill()->getStartColor()->setRGB('222B35');//背景颜色
  68 + //***********************画出单元格边框结束*****************************
  69 +
  70 + //标题
  71 + $sheet->setCellValue('B1', $arr['title']);
  72 + $sheet->getStyle('B1')->getFont()->setSize(18);//字体大小
  73 + $sheet->getStyle('B1')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  74 + $sheet->getStyle('B1')->getFont()->setBold(true);//字体加粗
  75 +
  76 + //甲方logo
  77 + $imageA = $arr['a_company']['logo'];
  78 + if(@fopen($imageA , 'r' ) ) {
  79 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  80 + $imageADrawing = new Drawing();
  81 + $imageADrawing->setPath($imageA);
  82 + // 设置图片的宽度
  83 + $imageADrawing->setResizeProportional(false);
  84 + $imageADrawing->setWidthAndHeight(40,40);
  85 + //图片显示在B3
  86 + $imageADrawing->setCoordinates('B3');
  87 + $imageADrawing->setWorksheet($sheet);
  88 + }
  89 +
  90 + $sheet->getStyle('B3:G7')->getFont()->setSize(8);//字体大小
  91 + $sheet->getStyle('C3:G3')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色
  92 + $sheet->getStyle('B6:G6')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色
  93 + $sheet->getStyle('C4:G4')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  94 + $sheet->getStyle('B7:G7')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  95 +
  96 + //甲方公司
  97 + $sheet->setCellValue('C3', '甲方公司');
  98 + //甲方公司名称
  99 + $sheet->setCellValue('C4', $arr['a_company']['company_name']);
  100 +
  101 + //乙方logo
  102 + $imageB = $arr['b_company']['logo'];
  103 + if(@fopen($imageB , 'r' ) ) {
  104 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  105 + $objDrawing = new Drawing();
  106 + $objDrawing->setPath($imageB);
  107 + // 设置图片的宽度
  108 + $objDrawing->setResizeProportional(false);
  109 + $objDrawing->setWidthAndHeight(40,40);
  110 + //图片显示在F3
  111 + $objDrawing->setCoordinates('F3');
  112 + $objDrawing->setWorksheet($sheet);
  113 + }
  114 +
  115 + //乙方公司
  116 + $sheet->setCellValue('G3', '乙方公司');
  117 + //乙方公司名称
  118 + $sheet->setCellValue('G4', $arr['b_company']['company_name']);
  119 +
  120 + //项目组
  121 + $sheet->setCellValue('B6', '项目组');
  122 + //项目组名称
  123 + $sheet->setCellValue('B7', $arr['group_name']);
  124 +
  125 + //巡检日期
  126 + $sheet->setCellValue('E6', '巡检日期');
  127 + //巡检日期名称
  128 + $sheet->setCellValue('E7', $arr['create_time']);
  129 +
  130 + //巡检状态
  131 + $sheet->setCellValue('G6', '巡检状态');
  132 + //巡检状态名称
  133 + $sheet->setCellValue('G7', $arr['inspect_status']);
  134 +
  135 + //循环开始
  136 +
  137 + $cols = 10;
  138 + $cells = ['C','E','G','I','K'];
  139 + foreach($arr['point'] as $value){
  140 + $cols += 0;
  141 + //巡检点名称
  142 + $sheet->setCellValue('B'.$cols, $value['point_name']);
  143 + $sheet->getStyle('B'.$cols)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
  144 + //获取图片个数
  145 + $length = count($value['images']);
  146 + $col = ceil($length/5);
  147 + for($i=0;$i<$col;$i++){
  148 + $col_i = $cols+$i;
  149 + $sheet->getRowDimension($col_i)->setRowHeight(105);
  150 + $sheet->mergeCells('C'.$col_i.':D'.$col_i);
  151 + $sheet->mergeCells('E'.$col_i.':F'.$col_i);
  152 + $sheet->mergeCells('G'.$col_i.':H'.$col_i);
  153 + $sheet->mergeCells('I'.$col_i.':J'.$col_i);
  154 + $sheet->mergeCells('K'.$col_i.':L'.$col_i);
  155 + $key = 0;
  156 + foreach($value['images'] as $k=>$image_value){
  157 + $pre = $i+4*$i;
  158 + $next = $i+1+4*($i+1);
  159 + if($k>=$pre && $k<$next){
  160 + //巡检图片
  161 + $image = $image_value['image_url'];
  162 + if(@fopen($image , 'r' ) ) {
  163 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  164 + $obj = new Drawing();
  165 + $obj->setPath($image);
  166 + // 设置图片的宽度
  167 + $obj->setResizeProportional(false);
  168 + $obj->setWidthAndHeight(105,130);
  169 + //图片显示在F3
  170 + $obj->setCoordinates($cells[$key].$col_i);
  171 + $obj->setWorksheet($sheet);
  172 + }
  173 + $key++;
  174 + }
  175 + }
  176 + }
  177 +
  178 + $cols += $col+1;
  179 + }
  180 + $sheet->getStyle( 'A9:M'.$cols)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
  181 + $sheet->getStyle( 'A9:M'.$cols)->getFill()->getStartColor()->setRGB('F3F3F4');//背景颜色浅灰色
  182 +
  183 +
  184 + $objWrite = IOFactory::createWriter($spreadsheet, 'Xls');
  185 +
  186 + //直接从浏览器中输出star
  187 +// header('pragma:public');
  188 +// header("Content-Disposition:attachment;filename=出货装箱单.xls");
  189 +// $objWrite->save('php://output');
  190 +// exit;
  191 + //直接从浏览器中输出end
  192 +
  193 + $file_name = $xlsName.'.xls';
  194 +
  195 + $files_url = ROOT_PATH . '/public/upload/export';
  196 + if(!is_dir($files_url)){
  197 + mkdir($files_url);
  198 + }
  199 + $file_url = ROOT_PATH . '/public/upload/export/'.$file_name;
  200 + $objWrite->save($file_url);
  201 +
  202 + $sys = $adminCommon->getOperateSys();
  203 + if($sys == 'Linux'){
  204 + chmod($file_url, 0777);//适用于linux
  205 + }
  206 + //相对路径
  207 + $url = 'upload/export/'.$file_name;
  208 + return $url;
  209 + }
  210 +
  211 + /*
  212 + * 导出表格适用于普通有规律的数据
  213 + * param xlsName:title名称
  214 + * param xlsCell:二维数据xlsCell = array(
  215 + array('id','序号'),
  216 + array('user_nickname','昵称'),
  217 + array('mobile','手机号'),
  218 + array('create_time','注册时间'),
  219 + array('last_login_time','最后登录时间'),
  220 + array('user_status','状态'),
  221 + );
  222 + * param xlsData:数据库数据
  223 + */
  224 + public function exportExcel($xlsName,$xlsCell,$xlsData){
  225 + $topNumber = 1;//表头有几行占用
  226 + $starData = $topNumber+1;//数据开始行起
  227 + $cellKey = [
  228 + 'A','B','C','D','E','F','G','H','I','J','K','L','M',
  229 + 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
  230 + 'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM',
  231 + 'AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
  232 + ];
  233 + vendor("PHPExcel");
  234 +
  235 + $spreadsheet = new Spreadsheet();
  236 + $sheet = $spreadsheet->getActiveSheet();
  237 + $sheet->setTitle($xlsName);
  238 + //处理表头
  239 + foreach ($xlsCell as $k=>$v) {
  240 + $sheet->setCellValue($cellKey[$k].$topNumber, $v[1]);//设置表头数据
  241 + $sheet->getStyle($cellKey[$k].$topNumber)->getFont()->setBold(true);//设置是否加粗
  242 + }
  243 + //设置单元格居中显示
  244 + $styleArray = [
  245 + 'alignment' => [
  246 + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
  247 + ],
  248 + ];
  249 + //表头居中
  250 + foreach ($xlsCell as $k2=>$v2) {
  251 + $sheet->getStyle($cellKey[$k2].'1')->applyFromArray($styleArray);
  252 + }
  253 + //处理数据
  254 + foreach ($xlsData as $k=>$v) {
  255 + foreach ($xlsCell as $k1=>$v1) {
  256 + //设置每列数据
  257 + $sheet->setCellValue($cellKey[$k1].($k+$starData), $v[$v1[0]]);
  258 + //每列宽度
  259 + $sheet->getColumnDimension($cellKey[$k1])->setWidth(30);
  260 + //设置居中显示
  261 + $sheet->getStyle($cellKey[$k1].($k+$starData))->applyFromArray($styleArray);
  262 + }
  263 + }
  264 + $file_name = $xlsName.'.xls';
  265 +// ob_end_clean();//清除缓冲区,避免乱码
  266 +// header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
  267 +// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
  268 +// header('Content-Disposition: attachment;filename='.$file_name);
  269 +// header('Cache-Control: max-age=0');
  270 +// $writer = new Xlsx($spreadsheet);
  271 + $writer = IOFactory::createWriter($spreadsheet, 'Xls'); //按照指定格式生成Excel文件
  272 +// $writer->save('php://output');直接输入到浏览器下载
  273 + //绝对路径,不存在则创建目录
  274 + $files_url = ROOT_PATH . '/public/upload/export';
  275 + if(!is_dir($files_url)){
  276 + mkdir($files_url);
  277 + }
  278 + $file_url = ROOT_PATH . '/public/upload/export/'.$file_name;
  279 + $writer->save($file_url);
  280 + //相对路径
  281 + $url = 'upload/export/'.$file_name;
  282 + return $url;
  283 + }
  284 +
  285 + //月检渲染数据到表格上
  286 + public function checkExcelData($arr){
  287 + $spreadsheet = new Spreadsheet();
  288 + $adminCommon = new AdminCommonController();
  289 + $sheet = $spreadsheet->getActiveSheet();
  290 + $xlsName = $arr['time'];
  291 + //设置sheet名称
  292 + $name = '报表';
  293 + $name = $adminCommon->iconv_to_utf8($name);
  294 +
  295 + $sheet->setTitle($xlsName.$name);
  296 + //合并单元格
  297 + $sheet->mergeCells('B1:J1');
  298 + $sheet->mergeCells('B3:B4');
  299 + $sheet->mergeCells('B6:D6');
  300 + $sheet->mergeCells('B7:D7');
  301 + $sheet->mergeCells('C3:D3');
  302 + $sheet->mergeCells('C4:D4');
  303 + $sheet->mergeCells('F3:F4');
  304 + $sheet->mergeCells('G3:I3');
  305 + $sheet->mergeCells('G4:I4');
  306 +
  307 + $spreadsheet->getDefaultStyle()->getFont()->setName('微软雅黑');//字体
  308 +
  309 + //设置默认宽
  310 + $sheet->getDefaultColumnDimension()->setWidth(8);
  311 + //设置高度
  312 + $sheet->getRowDimension(1)->setRowHeight(45);
  313 +// $sheet->getRowDimension(2)->setRowHeight(55);
  314 +
  315 + //***********************背景填充颜色*****************************
  316 + $sheet->getStyle( 'A1:M8')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
  317 + $sheet->getStyle( 'A1:M8')->getFill()->getStartColor()->setRGB('222B35');//背景颜色
  318 + //***********************画出单元格边框结束*****************************
  319 +
  320 + //标题
  321 + $sheet->setCellValue('B1', $arr['title']);
  322 + $sheet->getStyle('B1')->getFont()->setSize(18);//字体大小
  323 + $sheet->getStyle('B1')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  324 + $sheet->getStyle('B1')->getFont()->setBold(true);//字体加粗
  325 +
  326 + //甲方logo
  327 + $imageA = $arr['a_company']['logo'];
  328 + if(@fopen($imageA , 'r' ) ) {
  329 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  330 + $imageADrawing = new Drawing();
  331 + $imageADrawing->setPath($imageA);
  332 + // 设置图片的宽度
  333 + $imageADrawing->setResizeProportional(false);
  334 + $imageADrawing->setWidthAndHeight(40,40);
  335 + //图片显示在B3
  336 + $imageADrawing->setCoordinates('B3');
  337 + $imageADrawing->setWorksheet($sheet);
  338 + }
  339 +
  340 + $sheet->getStyle('B3:G7')->getFont()->setSize(8);//字体大小
  341 + $sheet->getStyle('C3:G3')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色
  342 + $sheet->getStyle('B6:G6')->getFont()->getColor()->setRGB('949494');//设置颜色为灰色
  343 + $sheet->getStyle('C4:G4')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  344 + $sheet->getStyle('B7:G7')->getFont()->getColor()->setRGB('FFFFFF');//设置颜色为白色
  345 +
  346 + //甲方公司
  347 + $sheet->setCellValue('C3', '甲方公司');
  348 + //甲方公司名称
  349 + $sheet->setCellValue('C4', $arr['a_company']['company_name']);
  350 +
  351 + //乙方logo
  352 + $imageB = $arr['b_company']['logo'];
  353 + if(@fopen($imageB , 'r' ) ) {
  354 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  355 + $objDrawing = new Drawing();
  356 + $objDrawing->setPath($imageB);
  357 + // 设置图片的宽度
  358 + $objDrawing->setResizeProportional(false);
  359 + $objDrawing->setWidthAndHeight(40,40);
  360 + //图片显示在F3
  361 + $objDrawing->setCoordinates('F3');
  362 + $objDrawing->setWorksheet($sheet);
  363 + }
  364 +
  365 + //乙方公司
  366 + $sheet->setCellValue('G3', '乙方公司');
  367 + //乙方公司名称
  368 + $sheet->setCellValue('G4', $arr['b_company']['company_name']);
  369 +
  370 + //项目组
  371 + $sheet->setCellValue('B6', '项目组');
  372 + //项目组名称
  373 + $sheet->setCellValue('B7', $arr['group_name']);
  374 +
  375 + //巡检日期
  376 + $sheet->setCellValue('E6', '巡检日期');
  377 + //巡检日期名称
  378 + $sheet->setCellValue('E7', $arr['create_time']);
  379 +
  380 + //巡检状态
  381 + $sheet->setCellValue('G6', '巡检状态');
  382 + //巡检状态名称
  383 + $sheet->setCellValue('G7', $arr['inspect_status']);
  384 +
  385 + //循环开始
  386 +
  387 + $cols = 10;
  388 + $cells = ['C','E','G','I','K'];
  389 + foreach($arr['point'] as $value){
  390 + $cols += 0;
  391 + //巡检点名称
  392 + $sheet->setCellValue('B'.$cols, $value['point_name']);
  393 + $sheet->getStyle('B'.$cols)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
  394 + //获取图片个数
  395 + $length = count($value['images']);
  396 + $col = ceil($length/5);
  397 + for($i=0;$i<$col;$i++){
  398 + $col_i = $cols+$i;
  399 + $sheet->getRowDimension($col_i)->setRowHeight(105);
  400 + $sheet->mergeCells('C'.$col_i.':D'.$col_i);
  401 + $sheet->mergeCells('E'.$col_i.':F'.$col_i);
  402 + $sheet->mergeCells('G'.$col_i.':H'.$col_i);
  403 + $sheet->mergeCells('I'.$col_i.':J'.$col_i);
  404 + $sheet->mergeCells('K'.$col_i.':L'.$col_i);
  405 + $key = 0;
  406 + foreach($value['images'] as $k=>$image_value){
  407 + $pre = $i+4*$i;
  408 + $next = $i+1+4*($i+1);
  409 + if($k>=$pre && $k<$next){
  410 + //巡检图片
  411 + $image = $image_value['image_url'];
  412 + if(@fopen($image , 'r' ) ) {
  413 + //这是一个坑,刚开始我把实例化图片类放在了循环外面,但是失败了,也就是每个图片都要实例化一次
  414 + $obj = new Drawing();
  415 + $obj->setPath($image);
  416 + // 设置图片的宽度
  417 + $obj->setResizeProportional(false);
  418 + $obj->setWidthAndHeight(105,130);
  419 + //图片显示在F3
  420 + $obj->setCoordinates($cells[$key].$col_i);
  421 + $obj->setWorksheet($sheet);
  422 + }
  423 + $key++;
  424 + }
  425 + }
  426 + }
  427 +
  428 + $cols += $col+1;
  429 + }
  430 + $sheet->getStyle( 'A9:M'.$cols)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
  431 + $sheet->getStyle( 'A9:M'.$cols)->getFill()->getStartColor()->setRGB('F3F3F4');//背景颜色浅灰色
  432 +
  433 +
  434 + $objWrite = IOFactory::createWriter($spreadsheet, 'Xls');
  435 +
  436 + //直接从浏览器中输出star
  437 +// header('pragma:public');
  438 +// header("Content-Disposition:attachment;filename=出货装箱单.xls");
  439 +// $objWrite->save('php://output');
  440 +// exit;
  441 + //直接从浏览器中输出end
  442 +
  443 + $file_name = $xlsName.'.xls';
  444 +
  445 + $files_url = ROOT_PATH . '/public/upload/export';
  446 + if(!is_dir($files_url)){
  447 + mkdir($files_url);
  448 + }
  449 + $file_url = ROOT_PATH . '/public/upload/export/'.$file_name;
  450 + $objWrite->save($file_url);
  451 +
  452 + $sys = $adminCommon->getOperateSys();
  453 + if($sys == 'Linux'){
  454 + chmod($file_url, 0777);//适用于linux
  455 + }
  456 + //相对路径
  457 + $url = 'upload/export/'.$file_name;
  458 + return $url;
  459 + }
  460 +
  461 +}
@@ -185,6 +185,7 @@ class AdminInspectAController extends AdminBaseController @@ -185,6 +185,7 @@ class AdminInspectAController extends AdminBaseController
185 $mark = $this->request->param('mark'); 185 $mark = $this->request->param('mark');
186 186
187 $adminCommon = new AdminCommonController(); 187 $adminCommon = new AdminCommonController();
  188 + $adminExcel = new AdminExcelDataController();
188 $res_ins = $adminCommon->inspectList(0,$param); 189 $res_ins = $adminCommon->inspectList(0,$param);
189 190
190 $arr_url = []; 191 $arr_url = [];
@@ -217,7 +218,7 @@ class AdminInspectAController extends AdminBaseController @@ -217,7 +218,7 @@ class AdminInspectAController extends AdminBaseController
217 $arr['point'] = $point; 218 $arr['point'] = $point;
218 219
219 //获取文件路径 220 //获取文件路径
220 - $url = $adminCommon->send_export($arr); 221 + $url = $adminExcel->inspectExcelData($arr);
221 $month = date('Y-m',$value['create_time']); 222 $month = date('Y-m',$value['create_time']);
222 $year = date('Y',$value['create_time']); 223 $year = date('Y',$value['create_time']);
223 if($mark == 'day'){ 224 if($mark == 'day'){
@@ -130,6 +130,7 @@ class AdminInspectBController extends AdminBaseController @@ -130,6 +130,7 @@ class AdminInspectBController extends AdminBaseController
130 $mark = $this->request->param('mark'); 130 $mark = $this->request->param('mark');
131 131
132 $adminCommon = new AdminCommonController(); 132 $adminCommon = new AdminCommonController();
  133 + $adminExcel = new AdminExcelDataController();
133 $res_ins = $adminCommon->inspectList(1,$param); 134 $res_ins = $adminCommon->inspectList(1,$param);
134 135
135 $arr_url = []; 136 $arr_url = [];
@@ -162,7 +163,7 @@ class AdminInspectBController extends AdminBaseController @@ -162,7 +163,7 @@ class AdminInspectBController extends AdminBaseController
162 $arr['point'] = $point; 163 $arr['point'] = $point;
163 164
164 //获取文件路径 165 //获取文件路径
165 - $url = $adminCommon->send_export($arr); 166 + $url = $adminExcel->inspectExcelData($arr);
166 $month = date('Y-m',$value['create_time']); 167 $month = date('Y-m',$value['create_time']);
167 $year = date('Y',$value['create_time']); 168 $year = date('Y',$value['create_time']);
168 if($mark == 'day'){ 169 if($mark == 'day'){
@@ -7,19 +7,18 @@ @@ -7,19 +7,18 @@
7 </ul> 7 </ul>
8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminCheck/index')}"> 8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminCheck/index')}">
9 项目名称: 9 项目名称:
10 - <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}"  
11 - placeholder="请输入项目名称"> 10 + <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}" id="project_name" placeholder="请输入项目名称">
12 11
13 月检时间: 12 月检时间:
14 - <input type="text" class="form-control js-bootstrap-datetime" name="start_time"  
15 - value="{$start_time|default=''}"  
16 - style="width: 140px;" autocomplete="off">-  
17 - <input type="text" class="form-control js-bootstrap-datetime" name="end_time"  
18 - value="{$end_time|default=''}"  
19 - style="width: 140px;" autocomplete="off"> &nbsp; 13 + <input type="text" class="form-control js-bootstrap-datetime" style="width:160px;" name="start_time" value="{$start_time|default=''}" autocomplete="off" id="start_time" placeholder="请输入开始时间">-
  14 + <input type="text" class="form-control js-bootstrap-datetime" style="width:160px;" name="end_time" value="{$end_time|default=''}" autocomplete="off" id="end_time" placeholder="请输入结束时间"> &nbsp;
20 <input type="submit" class="btn btn-primary" value="搜索"/> 15 <input type="submit" class="btn btn-primary" value="搜索"/>
  16 +
21 <a class="btn btn-danger" href="{:url('AdminCheck/index')}">清空</a> 17 <a class="btn btn-danger" href="{:url('AdminCheck/index')}">清空</a>
22 </form> 18 </form>
  19 +
  20 + <button class="btn btn-success" id="export_data">导出月检数据</button>
  21 +
23 <form method="post" class="js-ajax-form"> 22 <form method="post" class="js-ajax-form">
24 <table class="table table-hover table-bordered"> 23 <table class="table table-hover table-bordered">
25 <thead> 24 <thead>
@@ -63,4 +62,50 @@ @@ -63,4 +62,50 @@
63 </div> 62 </div>
64 <script src="__STATIC__/js/admin.js"></script> 63 <script src="__STATIC__/js/admin.js"></script>
65 </body> 64 </body>
66 -</html>  
  65 +</html>
  66 +
  67 +<script>
  68 + $(function(){
  69 + //导出数据
  70 + $('#export_data').click(function(){
  71 + var project_name = $('#project_name').val();
  72 + var start_time = $('#start_time').val();
  73 + var end_time = $('#end_time').val();
  74 + var code = checkData(start_time,end_time,project_name);
  75 + if(code == 1){
  76 + window.location.href = 'exportData?start_time='+start_time+'&end_time='+end_time+'&name='+project_name;
  77 + }
  78 + });
  79 + });
  80 +
  81 + //检查是否有可导出的数据
  82 + function checkData(start_time,end_time,project_name){
  83 + if(start_time == ''){
  84 + alert('请输入月检开始时间');
  85 + return false;
  86 + }
  87 + if(end_time == ''){
  88 + alert('请输入月检结束时间');
  89 + return false;
  90 + }
  91 + var code = 1;
  92 + $.ajax({
  93 + type:'GET',
  94 + url:'checkData' ,
  95 + data:{
  96 + 'start_time':start_time,
  97 + 'end_time':end_time,
  98 + 'name':project_name
  99 + },
  100 + dataType:'json',
  101 + async:false,//同步
  102 + success:function(data){
  103 + if (data.code == 0) {
  104 + alert(data.msg);
  105 + code = 0;
  106 + }
  107 + }
  108 + });
  109 + return code;
  110 + }
  111 +</script>
@@ -7,8 +7,7 @@ @@ -7,8 +7,7 @@
7 </ul> 7 </ul>
8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminInspectA/index')}"> 8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminInspectA/index')}">
9 项目名称: 9 项目名称:
10 - <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}"  
11 - placeholder="请输入项目名称"> 10 + <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}" id="project_name" placeholder="请输入项目名称">
12 11
13 巡检时间: 12 巡检时间:
14 <input type="text" class="form-control js-bootstrap-datetime" style="width:160px;" name="start_time" value="{$start_time|default=''}" autocomplete="off" id="start_time" placeholder="请输入开始时间">- 13 <input type="text" class="form-control js-bootstrap-datetime" style="width:160px;" name="start_time" value="{$start_time|default=''}" autocomplete="off" id="start_time" placeholder="请输入开始时间">-
@@ -65,37 +64,40 @@ @@ -65,37 +64,40 @@
65 $(function(){ 64 $(function(){
66 //按日导出 65 //按日导出
67 $('#export_day').click(function(){ 66 $('#export_day').click(function(){
  67 + var project_name = $('#project_name').val();
68 var start_time = $('#start_time').val(); 68 var start_time = $('#start_time').val();
69 var end_time = $('#end_time').val(); 69 var end_time = $('#end_time').val();
70 - var code = checkData(start_time,end_time); 70 + var code = checkData(start_time,end_time,project_name);
71 if(code == 1){ 71 if(code == 1){
72 - window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&mark=day'; 72 + window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=day';
73 } 73 }
74 }); 74 });
75 75
76 //按月导出 76 //按月导出
77 $('#export_month').click(function(){ 77 $('#export_month').click(function(){
  78 + var project_name = $('#project_name').val();
78 var start_time = $('#start_time').val(); 79 var start_time = $('#start_time').val();
79 var end_time = $('#end_time').val(); 80 var end_time = $('#end_time').val();
80 - var code = checkData(start_time,end_time); 81 + var code = checkData(start_time,end_time,project_name);
81 if(code == 1){ 82 if(code == 1){
82 - window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&mark=month'; 83 + window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=month';
83 } 84 }
84 }); 85 });
85 86
86 //按年导出 87 //按年导出
87 $('#export_year').click(function(){ 88 $('#export_year').click(function(){
  89 + var project_name = $('#project_name').val();
88 var start_time = $('#start_time').val(); 90 var start_time = $('#start_time').val();
89 var end_time = $('#end_time').val(); 91 var end_time = $('#end_time').val();
90 - var code = checkData(start_time,end_time); 92 + var code = checkData(start_time,end_time,project_name);
91 if(code == 1){ 93 if(code == 1){
92 - window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&mark=year'; 94 + window.location.href = 'exportInspectADay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=year';
93 } 95 }
94 }); 96 });
95 }); 97 });
96 98
97 //检查是否有可导出的数据 99 //检查是否有可导出的数据
98 - function checkData(start_time,end_time){ 100 + function checkData(start_time,end_time,project_name){
99 if(start_time == ''){ 101 if(start_time == ''){
100 alert('请输入巡检开始时间'); 102 alert('请输入巡检开始时间');
101 return false; 103 return false;
@@ -110,7 +112,8 @@ @@ -110,7 +112,8 @@
110 url:'checkData' , 112 url:'checkData' ,
111 data:{ 113 data:{
112 'start_time':start_time, 114 'start_time':start_time,
113 - 'end_time':end_time 115 + 'end_time':end_time,
  116 + 'name':project_name
114 }, 117 },
115 dataType:'json', 118 dataType:'json',
116 async:false,//同步 119 async:false,//同步
@@ -7,8 +7,7 @@ @@ -7,8 +7,7 @@
7 </ul> 7 </ul>
8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminInspectB/index')}"> 8 <form class="well form-inline margin-top-20" method="post" action="{:url('AdminInspectB/index')}">
9 项目名称: 9 项目名称:
10 - <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}"  
11 - placeholder="请输入项目名称"> 10 + <input class="form-control" type="text" name="name" style="width: 200px;" value="{:input('request.name')}" id="project_name" placeholder="请输入项目名称">
12 11
13 日检时间: 12 日检时间:
14 <input type="text" class="form-control js-bootstrap-datetime" name="start_time" value="{$start_time|default=''}" id="start_time" style="width: 160px;" placeholder="请输入日检开始时间" autocomplete="off">- 13 <input type="text" class="form-control js-bootstrap-datetime" name="start_time" value="{$start_time|default=''}" id="start_time" style="width: 160px;" placeholder="请输入日检开始时间" autocomplete="off">-
@@ -65,37 +64,40 @@ @@ -65,37 +64,40 @@
65 $(function(){ 64 $(function(){
66 //按日导出 65 //按日导出
67 $('#export_day').click(function(){ 66 $('#export_day').click(function(){
  67 + var project_name = $('#project_name').val();
68 var start_time = $('#start_time').val(); 68 var start_time = $('#start_time').val();
69 var end_time = $('#end_time').val(); 69 var end_time = $('#end_time').val();
70 - var code = checkData(start_time,end_time); 70 + var code = checkData(start_time,end_time,project_name);
71 if(code == 1){ 71 if(code == 1){
72 - window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&mark=day'; 72 + window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=day';
73 } 73 }
74 }); 74 });
75 75
76 //按月导出 76 //按月导出
77 $('#export_month').click(function(){ 77 $('#export_month').click(function(){
  78 + var project_name = $('#project_name').val();
78 var start_time = $('#start_time').val(); 79 var start_time = $('#start_time').val();
79 var end_time = $('#end_time').val(); 80 var end_time = $('#end_time').val();
80 - var code = checkData(start_time,end_time); 81 + var code = checkData(start_time,end_time,project_name);
81 if(code == 1){ 82 if(code == 1){
82 - window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&mark=month'; 83 + window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=month';
83 } 84 }
84 }); 85 });
85 86
86 //按年导出 87 //按年导出
87 $('#export_year').click(function(){ 88 $('#export_year').click(function(){
  89 + var project_name = $('#project_name').val();
88 var start_time = $('#start_time').val(); 90 var start_time = $('#start_time').val();
89 var end_time = $('#end_time').val(); 91 var end_time = $('#end_time').val();
90 - var code = checkData(start_time,end_time); 92 + var code = checkData(start_time,end_time,project_name);
91 if(code == 1){ 93 if(code == 1){
92 - window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&mark=year'; 94 + window.location.href = 'exportInspectBDay?start_time='+start_time+'&end_time='+end_time+'&name='+project_name+'&mark=year';
93 } 95 }
94 }); 96 });
95 }); 97 });
96 98
97 //检查是否有可导出的数据 99 //检查是否有可导出的数据
98 - function checkData(start_time,end_time){ 100 + function checkData(start_time,end_time,project_name){
99 if(start_time == ''){ 101 if(start_time == ''){
100 alert('请输入巡检开始时间'); 102 alert('请输入巡检开始时间');
101 return false; 103 return false;
@@ -110,7 +112,8 @@ @@ -110,7 +112,8 @@
110 url:'checkData' , 112 url:'checkData' ,
111 data:{ 113 data:{
112 'start_time':start_time, 114 'start_time':start_time,
113 - 'end_time':end_time 115 + 'end_time':end_time,
  116 + 'name':project_name
114 }, 117 },
115 dataType:'json', 118 dataType:'json',
116 async:false,//同步 119 async:false,//同步