assign('breadcrumb1','灯谜活动'); $this->assign('breadcrumb2','答题记录'); } /** * 列表页 * * */ public function index(Model $Model,RiddleActive $RiddleActive,Custom $Custom){ // 接受参数 $activeId = request('active_id',0); $customCode = request('custom_code',''); $startTime = request('start_time',''); $endTime = request('end_time',''); // 查询条件 $map = []; // 编码转ID $customUid = $customCode ? $Custom->codeToId($customCode) : 0; if( $customUid ) $map[] = ['riddle_active_record.custom_uid','=',$customUid]; if( $activeId ) $map[] = ['riddle_active_record.active_id','=',$activeId]; if( $startTime ) $map[] = ['riddle_active_record.insert_time','>=',strtotime($startTime)]; if( $endTime ) $map[] = ['riddle_active_record.insert_time','<=',strtotime($endTime)]; // 查询数据 $list = $Model->query() ->join('riddle_active','riddle_active.id','=','riddle_active_record.active_id') ->join('custom','custom.uid','=','riddle_active_record.custom_uid') ->where($map) ->select(['riddle_active_record.*','custom.weiban_extid','custom.username','riddle_active.name as active_name']) ->orderByDesc('riddle_active_record.id') ->paginate(config('page_num',10)); // 循环处理数据 foreach ($list as $key => $value) { // id转编号 $value['custom_code'] = $Custom->idToCode($value['custom_uid']); // 重组 $list[$key] = $value; } // 获取列表 $activeList = $RiddleActive->query()->get(['id','name'])->toArray(); // 分配数据 $this->assign('empty', '~~暂无数据'); $this->assign('list',$list); $this->assign('activeList',$activeList); // 加载模板 return $this->fetch(); } /** * 导出表格 * * */ public function down_excel(Model $Model,Custom $Custom){ // 接受参数 $activeId = request('active_id',0); $customCode = request('custom_code',''); $startTime = request('start_time',''); $endTime = request('end_time',''); // 查询条件 $map = []; // 编码转ID $customUid = $customCode ? $Custom->codeToId($customCode) : 0; if( $customUid ) $map[] = ['riddle_active_record.custom_uid','=',$customUid]; if( $activeId ) $map[] = ['riddle_active_record.active_id','=',$activeId]; if( $startTime ) $map[] = ['riddle_active_record.insert_time','>=',strtotime($startTime)]; if( $endTime ) $map[] = ['riddle_active_record.insert_time','<=',strtotime($endTime)]; // 查询数据 $list = $Model->query() ->join('riddle_active','riddle_active.id','=','riddle_active_record.active_id') ->join('custom','custom.uid','=','riddle_active_record.custom_uid') ->where($map) ->select([ 'riddle_active_record.id', 'riddle_active.id as active_id', 'riddle_active.name as active_name', 'custom.uid as custom_uid', 'custom.username', 'riddle_active_record.is_answer', 'custom.weiban_extid', 'riddle_active_record.insert_time as answer_time', ])->orderByDesc('riddle_active_record.id')->get()->toArray(); // 循环处理数据 foreach ($list as $key => $value) { // 数据处理 $value['custom_uid'] = $Custom->idToCode($value['custom_uid']); $value['username'] = hide_phone($value['username']); $value['is_answer'] = $value['is_answer'] ? '是' : '否'; $value['answer_time']= date('Y-m-d H:i:s',$value['answer_time']); // 重组 $list[$key] = $value; } // 去下载 $this->toDown($list); } /** * 去下载 */ private function toDown($data){ // xlsx文件保存路径 $excel = new \Vtiful\Kernel\Excel(['path' =>public_path().'/uploads/']); $filePath = $excel->fileName('tutorial01.xlsx', 'sheet1')->header(['记录ID','活动ID','活动名称','客户编码','客户昵称','是否答对','微伴ID','答题时间'])->data($data)->output(); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header('Content-Disposition: attachment;filename="灯谜活动答题记录'.date('Y-m-d His').'.xlsx"'); header('Content-Length: ' . filesize($filePath)); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Cache-Control: max-age=0'); header('Pragma: public'); ob_clean(); flush(); // 输出文件,成功删除文件路径 if ( copy($filePath, 'php://output') ) @unlink($filePath); } }