table='washing_record'; $this->model = new WashingRecord(); } public function index(){ if(request()->isAjax()){ //分页参数 $length = input('rows',10,'intval'); //每页条数 $page = input('page',1,'intval'); //第几页 $start = ($page - 1) * $length; //分页开始位置 //排序 $sortRow = input('sidx','id','trim'); //排序列 $sort = input('sord','desc','trim'); //排序方式 $order = $sortRow.' '.$sort; $title = input('title','','trim'); if($title!=''){ $map[] = ['title','like','%'.$title.'%']; } $start1 = input('start','','trim'); if($start1 != ''){ $map[] = ['create_yyyymm','>=',date('Ymd',strtotime($start1))]; } $end = input('end','','trim'); if($end != ''){ $map[] = ['create_yyyymm','<=',date('Ymd',strtotime($end))]; } $mode = input('mode','','trim'); if($mode!=''){ $map[] = ['mode','=',$mode]; } $dep_id = input('dep_id','','trim'); if($dep_id!=''){ $map[] = ['dep_id','=',$dep_id]; } $map[] = ['del','=',0]; $map[] = ['org_id','=',$this->orgId]; $map= empty($map) ? true: $map; //数据查询 $lists = db($this->table)->where($map) ->limit($start,$length)->order('id desc')->select(); foreach ($lists as $k=>$v){ $lists[$k]['real_name'] = Db::name('user') ->where('id',$v['user_id']) ->value('real_name'); $lists[$k]['title'] = Db::name('address') ->where('id',$v['dep_id']) ->value('title'); $items = Db::name('washing_record_item') ->where('washing_record_id',$v['id']) ->select(); $s = ''; if(!empty($items)){ foreach ($items as $k1=>$v1){ $it = Db::name('washing_items') ->where('id',$v1['items_id']) ->value('title'); $s.=$it.':'.$v1['num'].' '; } } $lists[$k]['items'] = $s; } //数据返回 $totalCount = db($this->table)->where($map)->count(); $totalPage = ceil($totalCount/$length); $result['page'] = $page; $result['total'] = $totalPage; $result['records'] = $totalCount; $result['rows'] = $lists; return json($result); }else{ $address = (new \app\common\model\Address())->getListByType(9,$this->orgId); $this->assign('address',$address); $this->assign('ids',is_login()); return $this->fetch(); } } public function returnWash($id) { if (!$id) { $this->error('参数错误'); } $ret = $this->model->returnWash($id, $this->orgId); if (!$ret) { $this->error($this->model->getError()); } // model('ActionLog')->addlog(is_login(),34,'洗涤记录:归还',['id' => $id],cur_org_id()); $this->success('归还成功'); } public function confirmWash($id) { if(!request()->isPost()){ if (!$id) { $this->error('参数错误'); } $this->assign('id',$id); return $this->fetch(); } else { $sign = input('sign'); $img = input('img'); if (!$sign) { $this->error('请上传签名图'); } $ret = $this->model->confirmWash($id, $this->orgId, $sign,$img); if (!$ret) { $this->error($this->model->getError()); } // model('ActionLog')->addlog(is_login(),34,'洗涤记录:确认',['id' => $id],cur_org_id()); $this->success('确认成功'); } } /** * 新增/编辑 */ public function add($id=0){ if(request()->isPost()){ $data = request()->post(); if (empty($data['dep_id'])) { $this->error('地点不能为空'); } if (empty($data['items'])) { $this->error('物品不能为空'); } $items = json_decode( $data['items'],true); if (empty($items)) { $this->error('物品不能为空'); } foreach ($items as $k => $val) { if(empty($val['num'])){ $this->error($val['title'] . '数量不能为空'); } } foreach ($items as $k => $v) { $params['items'][$k] = [ 'items_id' => $v['id'], 'num' => $v['num'], ]; } $sqImg = input('sq_img',''); $sqSign = input('sq_sign',''); if(!$sqSign)$this->error('收取签名不能为空'); $params['dep_id'] = $data['dep_id']; $params['org_id'] = $this->orgId; $params['user_id'] = $this->userId; $params['sq_img'] = $sqImg; $params['sq_sign'] = $sqSign; $res = $this->model->addSave($params); if($res){ $this->success('操作成功',url('index')); }else{ $this->error($this->model->getError()); } }else{ $address = (new \app\common\model\Address())->getListByType(9,$this->orgId); $this->assign('dep',$address); $items = (new \app\common\model\WashingItems())->getList($this->orgId); $this->assign('items',$items); return $this->fetch(); } } /** * 删除记录 * @param int $id */ public function del($id=0){ if(!$id){ $this->error('参数错误'); } $res = db($this->table)->where('id',$id)->update([ 'del'=>1, 'del_time'=>getTime(), ]); if($res){ // model('ActionLog')->addlog(is_login(),34,'洗涤记录:删除',['id' => $id],cur_org_id()); $this->success('删除成功'); }else{ $this->error('删除失败'); } } public function washRecordExport(){ $start = input('start','','trim'); if($start != ''){ $map[] = ['create_yyyymm','>=',date('Ymd',strtotime($start))]; } $end = input('end','','trim'); if($end != ''){ $map[] = ['create_yyyymm','<=',date('Ymd',strtotime($end))]; } $mode = input('mode','','trim'); if($mode!=''){ $map[] = ['mode','=',$mode]; } $dep_id = input('dep_id','','trim'); if($dep_id!=''){ $map[] = ['dep_id','=',$dep_id]; } $map[] = ['del','=',0]; $map[] = ['org_id','=',$this->orgId]; $map= empty($map) ? true: $map; //数据查询 $lists = Db::name('washing_record')->where($map)->order('id asc')->select(); foreach ($lists as $k=>$v){ $lists[$k]['real_name'] = Db::name('user') ->where('id',$v['user_id']) ->value('real_name'); $lists[$k]['title'] = Db::name('address') ->where('id',$v['dep_id']) ->value('title'); $items = Db::name('washing_record_item') ->where('washing_record_id',$v['id']) ->select(); $s = ''; if(!empty($items)){ foreach ($items as $k1=>$v1){ $it = Db::name('washing_items') ->where('id',$v1['items_id']) ->value('title'); $s.=$it.':'.$v1['num'].' '; } } $lists[$k]['items'] = $s; } include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php'; //实例化PHPExcel类 $objPHPExcel = new \PHPExcel(); //激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //设置表格头(即excel表格的第一行) $objActSheet = $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '编号') ->setCellValue('B1', '操作人') ->setCellValue('C1', '地点') ->setCellValue('D1', '物品') ->setCellValue('E1', '领取时间') ->setCellValue('F1', '归还时间') ->setCellValue('G1', '确定时间') ->setCellValue('H1', '状态') ->setCellValue('I1', '收取签名') ->setCellValue('J1', '送达签名'); // 设置表格头水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('I1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('J1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('K1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('L1')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('I')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('J')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('K')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex(0)->getStyle('L')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(20); //循环刚取出来的数组,将数据逐一添加到excel表格。 for ($i = 0; $i < count($lists); $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $lists[$i]['id']); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $lists[$i]['real_name']); $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $lists[$i]['title']); $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $lists[$i]['items']); $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $lists[$i]['create_time']); $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $lists[$i]['return_time']); $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $lists[$i]['confirm_time']); if($lists[$i]['mode'] == 1){ $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已收取'); }elseif($lists[$i]['mode'] == 2){ $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已归还'); }else{ $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2),'已确认'); } $sqsignList = explode(".",$lists[$i]['sq_sign']); if($sqsignList){ $ext = end($sqsignList); $img =''; if ($ext == 'jpg' || $ext == 'jpeg'){ $img = @imagecreatefromjpeg($lists[$i]['sq_sign']); } if ($ext == 'png'){ $img = @imagecreatefrompng($lists[$i]['sq_sign']); } if($img){ //实例化图片操作类 $objDrawing = new \PHPExcel_Worksheet_MemoryDrawing(); $objDrawing->setImageResource($img); $objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法 $objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); $objDrawing->setHeight(40);//照片高度 $objDrawing->setWidth(40); //照片宽度 $objDrawing->setCoordinates('I'.($i+2));//图片要插入的单元格 $objDrawing->setOffsetX(8);//图片X轴偏移 $objDrawing->setOffsetY(8);//图片Y轴偏移 $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); //设置每一行高度 }else{ $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), ''); } }else{ $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), ''); } $signList = explode(".",$lists[$i]['sign']); if($signList){ $ext = end($signList); $img =''; if ($ext == 'jpg' || $ext == 'jpeg'){ $img = @imagecreatefromjpeg($lists[$i]['sign']); } if ($ext == 'png'){ $img = @imagecreatefrompng($lists[$i]['sign']); } if($img){ //实例化图片操作类 $objDrawing = new \PHPExcel_Worksheet_MemoryDrawing(); $objDrawing->setImageResource($img); $objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法 $objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT); $objDrawing->setHeight(40);//照片高度 $objDrawing->setWidth(40); //照片宽度 $objDrawing->setCoordinates('J'.($i+2));//图片要插入的单元格 $objDrawing->setOffsetX(8);//图片X轴偏移 $objDrawing->setOffsetY(8);//图片Y轴偏移 $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); //设置每一行高度 }else{ $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), ''); } }else{ $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), ''); } $objActSheet->getRowDimension($i + 2)->setRowHeight(40); // 行高 } //设置保存的Excel表格名称 $filename = '洗涤记录'.'_' . date('YmdHis', time()) . '.xls'; //设置当前激活的sheet表格名称 $objPHPExcel->getActiveSheet()->setTitle('洗涤记录'); //设置浏览器窗口下载表格 ob_end_clean(); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 return $objWriter->save('php://output'); } }