employee->root_id]; $w[] = ['del','=',0]; $data['count'] = DailyTasksModel::where($w)->count(); $w[] = ['end_date','>=',$date]; $data['ing_count'] = DailyTasksModel::where($w)->where('grawth is null or grawth <> 100')->count(); $w1[] = ['root_id','=',request()->employee->root_id]; $w1[] = ['del','=',0]; $w1[] = ['grawth','=',100]; $data['pass_count'] = DailyTasksModel::where($w1)->count(); $w2[] = ['root_id','=',request()->employee->root_id]; $w2[] = ['del','=',0]; // $w2[] = ['grawth','<',100]; $w2[] = ['end_date','<',$date]; $data['no_count'] = DailyTasksModel::where($w2)->where('(grawth is null or grawth < 100)')->count(); $data['grawth'] = $data['count']==0 ? '0%' : round($data['pass_count']/$data['count']*100,2).'%'; View::assign('data',$data); return View::fetch(); } /* * 任务列表 */ public function list() { $param = Request::only(['type'=>'','page'=>1,'limit'=>6]); $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['del','=',0]; if ($param['type']) { $w[] = ['type','=',$param['type']]; } // return json(['code' => 0, 'data' => $list, 'count' =>$count]); // $list = DailyTasksModel::with(['content'])->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['img'] = $img; } } $save['id'] = $v['id']; if ($v['end_date'].' 23:59:59'>date('Y-m-d H:i:s')) { $save['state'] = '进行中'; }else{ $save['state'] = '已结束'; } $save['end_date'] = $v['end_date'] ?: '未设置 '; // $save['type_name'] = $type_name[$v['type']]; $orgids = $v['org_ids'] ? explode(',',$v['org_ids']) : []; $w1 = []; $w1[] = ['org_id','in',$orgids]; $w1[] = ['root_id','=',request()->employee->root_id]; $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','=',request()->employee->root_id]; $w2[] = ['id','in',$eids]; $w2[] = ['state','=','在职']; $w2[] = ['uid','>',0]; $save['count'] = Employee::where($w2)->count(); $data[] = $save; } $count = DailyTasksModel::where($w)->count(); return json(['code' => 0, 'data' => $data, 'count' =>$count]); } //完成情况 public function person(){ $id = input('id',0); View::assign('id',$id); return View::fetch(); } //完成情况 public function person_list(){ $id = input('id',0); $type = input('type'); $page = input('page',1); $limit = input('limit',10); $w[] = ['id','=',$id]; $w[] = ['root_id','=',request()->employee->root_id]; $row = DailyTasksModel::where($w)->findOrEmpty(); if ($row->isEmpty()) { return json(['code' => 1, 'data' =>'任务不存在', 'msg' =>'任务不存在']); } $type_arr = ['material_case'=>'MaterialCase','evidencelist'=>'MaterialEvidence','video'=>'Video','article'=>'Article','wxshowlist'=>'abc']; $row->type = $type_arr[$row->type]; $orgids = $row->org_ids ? explode(',',$row->org_ids) : []; $eids = $row->employee_ids ? explode(',',$row->employee_ids) : []; $w1 = []; $w1[] = ['org_id','in',$orgids]; $w1[] = ['root_id','=',request()->employee->root_id]; $w1[] = ['state','=','在职']; $w1[] = ['uid','>',0]; $list = Employee::with(['oneOrg'=>function($query){ $query->visible(['name','id'])->bind(['org_name'=>'name']); }])->where($w1)->field(['org_id','name','id'])->page($page,$limit)->select()->toArray(); foreach ($list as $k => $v) { $list[$k]['state'] = in_array($v['id'],$eids) ? '已执行' : '未执行'; } $count = Employee::where($w1)->count(); return json(['code' => 0, 'data' => $list, 'count' =>$count]); } //指派弹框 public function assign_org(){ $id = input('id',0); $type = input('type',''); View::assign('id',$id); View::assign('type',$type); //获取任务 $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['con_id','=',$id]; $w[] = ['type','=',$type]; // $w[] = ['del','=',0]; $list = DailyTasksModel::where($w)->order('id desc')->select()->toArray(); foreach ($list as $k => $v) { $list[$k]['count'] = $v['org_ids'] ? count(array_filter(explode(',',$v['org_ids']))) : 0; $list[$k]['edit'] = $v['end_date'].' 23:59:59'>date('Y-m-d H:i:s') ? 0 : 1; } $count = count($list); View::assign('data',$list); View::assign('count',$count); return View::fetch(); } //指派 public function assign_org_edit(){ $id = input('id',0); $cate = input('cate',''); $type = 'org';//org组织 $select_id = input('select_id',0); $org = Org::where('id',$select_id)->value('path'); $org_ids = Org::where([['path','like',$org.'%']])->column('id'); $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['type','=',$cate]; $w[] = ['con_id','=',$id]; $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))]; $row = DailyTasksModel::where($w)->findOrEmpty(); $ids = $row->isEmpty() ? [] : explode(',',$row->org_ids); $save['root_id'] = request()->employee->root_id; $save['con_id'] = $id; $save['type'] = $cate; $save['addtime'] = date('Y-m-d H:i:s',input('time')); if ($row->isEmpty()) { $save['end_date'] = date('Y-m-d',strtotime('+1 day')).' 23:59:59'; }elseif(!$row->end_date){ $save['end_date'] = date('Y-m-d',strtotime('+1 day')).' 23:59:59'; } // $save['org_ids'] = implode(',',$org_ids); $res = input('res',0); $arr = $ids ? array_diff($ids,$org_ids) : []; $save['org_ids'] = $res ? array_merge($org_ids,$arr) : $arr; $save['org_ids'] = implode(',',$save['org_ids']); $save['del'] = 1; if ($row->isEmpty()) { $id = DailyTasksModel::insertGetId($save); }else{ DailyTasksModel::where($w)->update($save); $id = $row->id; } return json(['code' => 0, 'data' => $org_ids, 'checkOrg' =>'']); } //获取指派部门 public function get_orgs(){ $id = input('id',0); $cate = input('cate',''); $page = input('page',1); $limit = input('limit',10); $root_id = request()->employee->root_id; $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['type','=',$cate]; $w[] = ['con_id','=',$id]; $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))]; $row = DailyTasksModel::where($w)->findOrEmpty(); if ($row->isEmpty() || !$row->org_ids) { return json(['code' => 0, 'data' =>[], 'checkOrg' =>'']); } $keyword = input('keyword',''); if ($keyword) { $w1[] = ['name','like','%'.trim($keyword).'%']; } $w1[] = ['id','in',explode(',',$row->org_ids)]; $list = Org::withCount(['employee'=>function($query) use ($root_id){ $query->where([['root_id','=',$root_id],['state','=','在职'],['uid','>',0]]); }])->where($w1)->field(['name','id'])->page($page,$limit)->select()->toArray(); $count = Org::where($w1)->count(); return json(['code' => 0, 'data' => $list, 'count' =>$count]); } /* * 取消指派 */ public function del_assign() { $id = input('id',0); $cate = input('cate',''); $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['type','=',$cate]; $w[] = ['con_id','=',$id]; $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))]; $row = DailyTasksModel::where($w)->findOrEmpty(); $eid = input('eid',0); if ($row->isEmpty()) { return json(['code' => 1, 'data' => '取消失败', 'msg' => '取消失败']); } if ($id && $eid) { if ($eid == -1) { DailyTasksModel::where($w)->update(['org_ids'=>'']); }else{ $arr = $row->org_ids; $arr = array_filter(array_diff(explode(',',$arr),[$eid])); DailyTasksModel::where($w)->update(['org_ids'=>implode(',',$arr)]); } } return json(['code' => 0, 'data' => '取消成功', 'msg' => '取消成功']); } /* * 指派组织 */ public function get_person() { $root_id = request()->employee->root_id; $keyword = input('keyword',''); $where = [ ['path', 'like', $root_id . '-%'], ['status', '=', 1] ]; if ($keyword) { // $where[] = ['name','like','%'.trim($keyword).'%']; } $count = Employee::where([['root_id','=',$root_id],['state','like','%在职%'],['uid','>',0]])->group('org_id')->column('count(*) count','org_id'); $allnodes = Org::where($where)->field('id,pid,name title,level,org_type,info,path')->order('level asc, id asc')->select()->toArray(); foreach ($allnodes as $k => $v) { $allnodes[$k]['count'] = isset($count[$v['id']]) ? $count[$v['id']] : 0;//本部门人数 $allnodes[$k]['all_count'] = 0;//包含子部门总数 $allnodes[$k]['org_class'] = 'org_'.$v['id']; $allnodes[$k]['per_class'] = 'per_org_'.$v['id']; $allnodes[$k]['type'] = 'org'; foreach ($allnodes as $k2 => $v2) { if (strpos($v2['path'],$v['path']) !== false) { $allnodes[$k]['all_count'] = isset($count[$v2['id']]) ? $count[$v2['id']]+$allnodes[$k]['all_count'] : $allnodes[$k]['all_count']; } } $allnodes[$k]['title'] = $allnodes[$k]['title'].' ('.$allnodes[$k]['all_count'].')'; } $tree = $this->tree($allnodes,0); // $info = TrainClass::where(['root_id'=>request()->employee->root_id , 'id'=>$id])->value('train_employee'); return json(['code' => 0, 'data' => $tree, 'checkOrg' =>'']); } public function tree($data,$pid = 0) { $new_arr = []; foreach($data as $k => $v){ if($v['pid'] == $pid) { $children = $this->tree($data, $v['id']); $v['children'] = $children; if (empty($v['children'])) $v['disabled']=true; $new_arr[] =$v; } } return $new_arr; } /* * 保存最后完成日期 */ public function save_date() { $id = input('id',0); $cate = input('cate',''); $date = input('date'); $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['type','=',$cate]; $w[] = ['con_id','=',$id]; $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))]; $row = DailyTasksModel::where($w)->findOrEmpty(); if ($row->isEmpty()) { return json(['code' =>1, 'data' =>'请选择指派部门','msg' =>'请选择指派部门']); } if ($date.' 23:59:59' < $row->addtime) { return json(['code' =>1, 'data' =>'最迟完成时间要大于当前时间','msg' =>'最迟完成时间要大于当前时间']); } $row->end_date = $date.' 23:59:59'; $row->del = 0; $row->save(); return json(['code' =>0, 'data' =>'设置成功','msg' =>'设置成功']); } /* * 取消任务 */ public function del_task() { $id = input('id',0); $cate = input('cate',''); $eid = input('eid'); $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['id','=',$eid]; $w[] = ['del','=',0]; $row = DailyTasksModel::where($w)->findOrEmpty(); if ($row->isEmpty()) { return json(['code' =>1, 'data' =>'任务不存在','msg' =>'任务不存在']); } $row->del = 1; $row->save(); return json(['code' =>0, 'data' =>'取消成功','msg' =>'取消成功']); } }