request->token; $employee_id = $token['employee_id']; $org_id = $token['org_id']; $date = date('Y-m-d H:i:s'); $param = Request::only(['type'=>'','page'=>1,'limit'=>6]); $w[] = ['root_id','=',$token['root_org']]; $w[] = ['del','=',0]; $w[] = ['end_date','>=',$date]; if ($param['type']) { $param['type'] = $param['type']=='materialEvidence' ? 'evidencelist' : $param['type']; $param['type'] = $param['type']=='materialCase' ? 'material_case' : $param['type']; $w[] = ['type','=',$param['type']]; } $list = DailyTasksModel::with(['content'])->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->where($w)->page($param['page'],$param['limit'])->order('id desc')->select()->toArray(); // $type_arr = ['material_case'=>'MaterialCase','evidencelist'=>'MaterialEvidence','video'=>'Video','article'=>'Article','wxshowlist'=>'abc']; $type_name = ['material_case'=>'装修案例','evidencelist'=>'客户见证','video'=>'视频素材','article'=>'图文素材','wxshowlist'=>'朋友圈']; $data = []; foreach ($list as $k => $v) { $save = []; $save['title'] = $save['con'] = $save['img'] = ''; $save['end_date'] = $v['end_date']; $save['org_ids'] = $v['org_ids']; if ($v['type']=='material_case') { $save['title'] = $v['content']['title']; $save['con'] = strip_tags($v['content']['desc']); $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : []; }elseif ($v['type']=='evidencelist') { $save['title'] = $v['content']['title']; $save['con'] = strip_tags($v['content']['desc']); $save['img'] = $v['content']['pics'] ? $v['content']['pics'] : []; }elseif ($v['type']=='video') { $save['title'] = $v['content']['title']; $save['con'] = strip_tags($v['content']['description']); $save['img'] = $v['content']['video_url'] ? [$v['content']['video_url'].'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast'] : []; }elseif ($v['type']=='article') { $save['title'] = $v['content']['title']; $save['con'] = strip_tags($v['content']['content']); $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : []; }elseif ($v['type']=='wxshowlist') { // $save['title'] = $v['content']['title'];//朋友圈没有标题 $save['con'] = strip_tags($v['content']['content']); // 视频 if ($v['content']['type']==1) { $img = $v['content']['picture'] ?: []; foreach ($img as $k2 => $v2) { $img[$k2] = $v2.'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast'; } $save['img'] = $img; }elseif ($v['content']['type']==2) {//图片 $save['img'] = $v['content']['picture'] ? $v['content']['picture'] : []; }elseif ($v['content']['type']==3) { } } $save['id'] = $v['id']; if ($v['end_date'].' 23:59:59'>date('Y-m-d H:i:s')) { $save['state'] = '进行中'; }else{ $save['state'] = '已结束'; } $unix = strtotime($v['end_date'])-time(); $day = $this->date_switch($unix,$v['end_date']); $save['end_date'] = $day[0]; $save['color'] = $day[1]; // $save['type_name'] = $type_name[$v['type']]; $orgids = $v['org_ids'] ? explode(',',$v['org_ids']) : []; $w1 = []; $w1[] = ['org_id','in',$orgids]; $w1[] = ['root_id','=',$token['root_org']]; $w1[] = ['state','=','在职']; $w1[] = ['uid','>',0]; $eids = Employee::where($w1)->column('id'); $save['all_count'] = count($eids); $w2 = []; $eids = $v['employee_ids'] ? explode(',',$v['employee_ids']) : []; $w2[] = ['root_id','=',$token['root_org']]; $w2[] = ['id','in',$eids]; $w2[] = ['state','=','在职']; $w2[] = ['uid','>',0]; $save['count'] = Employee::where($w2)->count(); $data[] = $save; } $count = DailyTasksModel::where($w)->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->count(); $w3[] = ['root_id','=',$token['root_org']]; $w3[] = ['del','=',0]; $W3[] = ['end_date','<',$date]; //逾期 $overdue = DailyTasksModel::where($w3)->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->count(); //已完成 $w4[] = ['root_id','=',$token['root_org']]; $w4[] = ['del','=',0]; $complete = DailyTasksModel::where($w4)->whereRaw("(FIND_IN_SET($employee_id,employee_ids))")->count(); return json(['code' => 0, 'data' => $data, 'count' =>$count,'overdue'=>$overdue,'complete'=>$complete]); } private function date_switch($time,$date) { $dur = $time; $date = date('Y-m-d',strtotime($date)); if($dur <= 0){ return ['','']; }elseif($dur < 60){ $s = $dur.'秒内'; return [$s,'red']; }elseif($dur < 3600){ $s = floor($dur/60).'分钟内'; return [$s,'red']; }elseif($dur < 86400){ $s = floor($dur/3600).'小时内'; return [$s,'red']; }elseif($dur < 2678400){ $day = floor($dur/86400); if ($day==1) { $s = floor($dur/86400).'天内'; return [$s,'red']; } elseif($day<=3) { $s = floor($dur/86400).'天内'; return [$s,'grey']; }else{ $s = floor($dur/86400).'天内'; return [$date,'grey']; } // return floor($dur/86400).'天内'; }elseif($dur < 2678400*12){ $s = floor($dur/2678400).'月内'; return [$date,'grey']; }else{ $s = floor($dur/2678400/12).'年内'; return [$date,'grey']; } } //id 详情 public function read() { $id = input('id',0); $token = $this->request->token; $w[] = ['root_id','=',$token['root_org']]; $w[] = ['id','=',$id]; $row = DailyTasksModel::where($w)->findOrEmpty(); $wid = 0; if ($row->isEmpty()) return json(['code' => 1, 'data' => '数据不存在', 'msg' => '数据不存在']); if ($row->type == 'material_case') { $info = MaterialCase::where('id',$row->con_id)->field('id,title,cover_img,desc')->find(); $info->img = $info->cover_img; }elseif ($row->type == 'evidencelist') { $info = MaterialEvidence::where('id',$row->con_id)->field('id,title,pics,desc')->find(); $info->img = $info->pics; }elseif ($row->type == 'article') { $info = Article::where('id',$row->con_id)->field('id,title,cover_img,content')->find(); $info->img = $info->cover_img; $info->desc = $info->content; }elseif ($row->type=='video') { $info = Video::where('id',$row->con_id)->field('id,title,cover,description')->find(); $info->img = $info->cover; $info->desc = $info->description; }elseif ($row->type=='wxshowlist') { $info = DailyWechatArticle::where('id',$row->con_id)->field('id,content,picture,type')->find(); $info->desc = $info->content; $img = $info->picture ?: []; if ($info->type==1) { foreach ($img as $k2 => $v2) { $img[$k2] = $v2.'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast'; } $info->img = $img; }elseif ($info->type==2) { $info->img = $img; }else{ $info->img = $img; } $wid = $info->id; } $row->img = is_array($info->img) ? $info->img : ($info->img ? [$info->img] : []); $row->con = $info->title; $row->desc = strip_tags(str_replace("<br>","",$info->desc)); $row->wid = $wid; $org_ids = $row->employee_ids ? explode(',',$row->employee_ids) : []; $w1[] = ['id','in',$org_ids]; $w1[] = ['state','=','在职']; $w1[] = ['uid','>',0]; $row->employee = Employee::with(['userImg'=>function($query){ $query->visible(['headimgurl']); }])->where($w1)->field('id,name,org_id,uid')->select()->toArray(); $row->type = $row->type=='evidencelist' ? 'materialEvidence' : $row->type; $row->type = $row->type=='material_case' ? 'materialCase' : $row->type; $row->employee_count = count($row->employee); return json(['code' => 0, 'data' => $row]); } //完成任务 public function sign(){ $id = input('id',0); $token = $this->request->token; // $token['root_org'] = 23; // $token['employee_id'] = 25; $w[] = ['root_id','=',$token['root_org']]; $w[] = ['id','=',$id]; $row = DailyTasksModel::where($w)->findOrEmpty(); if ($row->isEmpty()) return json(['code' => 1, 'data' => '任务不存在', 'msg' => '任务不存在']); $org_ids = $row->org_ids ? explode(',',$row->org_ids) : []; $w1[] = ['org_id','in',$org_ids]; $w1[] = ['state','=','在职']; $w1[] = ['uid','>',0]; $eids = Employee::where($w1)->column('id'); $o_eids = $row->employee_ids ? explode(',',$row->employee_ids) : []; if(!in_array($token['employee_id'],$eids)) return json(['code' => 1, 'data' => '任务未指派', 'msg' => '任务未指派']); if(in_array($token['employee_id'],$o_eids)) return json(['code' => 1, 'data' => '任务已完成', 'msg' => '任务已完成']); $o_eids[] = $token['employee_id']; $o_eids = array_filter(array_unique($o_eids)); $grawth = round(count($o_eids)/count($eids)*100,2); $row->employee_ids = implode(',',$o_eids); $row->grawth = $grawth; $row->save(); return json(['code' => 1, 'data' => '任务完成', 'msg' => '任务完成']); } }