employee->root_id); View::assign('org', $org); $orgids = orgSubIds(request()->employee->root_id); View::assign('orgids', json_encode($orgids)); return View::fetch(); } /** * 发送日报列表视图 */ public function sent() { return View::fetch(); } /** * 抄送给我的日报列表视图 */ public function received() { return View::fetch(); } /* * 列表数据 */ public function list() { $page = Request::param('page',1, 'intval'); $limit = Request::param('limit', 10, 'intval'); $type = Request::param('type', '', 'trim'); $org = Request::param('org', '', 'intval'); $emp_id = Request::param('emp_id', '', 'intval'); $employee = request()->employee; $uid = $employee['uid']; $root_id = $employee['root_id']; $u_where[] = ['root_id', '=', $root_id]; if ($org) { $u_where[] = ['org_id', '=', $org]; } if ($emp_id) { $u_where[] = ['id', '=', $emp_id]; } $uids = Employee::where($u_where)->column('uid'); $uids = array_values(array_filter(array_unique($uids))); $uids_arr = implode(',', $uids); $list = DailyWorkModel::with(['user' => function ($query) { $query->field('id,headimgurl'); },'employee']); $where[] = ['uid', 'in', $uids_arr]; $where[] = ['del', '=', 0]; if ($type) { $where[] = ['type', '=', $type]; } $list->where($where); $data = $list->field('id,uid,current_work,next_plan,addtime,unread_comments,type,reporting_object,reporting_object_view')->order('addtime','desc')->page($page , $limit)->select()->toArray(); $count = $list->count(); $dailyWork = []; foreach($data as &$rs) { $rs['org_name'] = Org::where('id', $rs['org_id'])->value('name'); //我收到的日报记录是否已经阅读 $rs['view'] = in_array($uid , explode(',',$rs['reporting_object_view'])) ? true : false; $rs['date'] = date('Y-m-d',strtotime($rs['addtime'])); $rs['time'] = date('H:i',strtotime($rs['addtime'])); $reporting_object = explode(',', $rs['reporting_object']); $rs['reporting_object'] = (new Employee())->where('uid', 'in', $reporting_object)->field('id,name,headimgurl')->select(); /*if($rs['date'] == date('Y-m-d')){ $dailyWork['今天'][] = $rs; }elseif($rs['date'] == date("Y-m-d",strtotime("-1 day"))){ $dailyWork['昨天'][] = $rs; }else{ $dailyWork[$rs['date']][] = $rs; }*/ } return json(['code'=>0 , 'msg'=>'查询成功' , 'data'=> $data , 'page'=>ceil($count/10), 'count'=> $count]); } /* * 发送日报视图 */ public function submit_work($type) { View::assign('type',$type); $employee = request()->employee; $Employee = Employee::with(['org' => function ($query) { $query->field('id,pid'); }])->where(['uid'=>$employee['uid']])->field('is_manager,org_id')->find()->toArray(); $where = [ 'org_id' => $Employee['is_manager'] == 0 ? $Employee['org_id'] : $Employee['org']['pid'], 'is_manager' => 1 ]; $last = Employee::with(['user' => function ($query) { $query->field('id,headimgurl'); }])->where($where)->field('id,uid,name')->select()->toArray(); $defaultCheckUid = array_column($last, 'id'); $defaultCheckUid = implode(',',$defaultCheckUid); View::assign('defaultCheckUid',$defaultCheckUid); View::assign('user',$last); return View::fetch(); } /* * 发送日报提交报名 */ public function add_submit_work() { $param = Request::only(['current_work', 'next_plan', 'other_matters','enclosure_file','objct_id','type']); $employee = request()->employee; $data = [ 'current_work' => $param['current_work'], 'next_plan' => $param['next_plan'], 'other_matters' => $param['other_matters'], 'enclosure_file' => isset($param['enclosure_file']) ? implode(',',$param['enclosure_file']) : '', 'uid' => $employee['uid'], 'type' => $param['type'] ]; $uid = Employee::where('id','in',$param['objct_id'])->column('uid'); $data['reporting_object'] = implode(',',$uid); DailyWorkModel::create($data); return json(['code'=>0 , 'msg'=>'发送成功']); } /* *抄送人列表 */ public function report_object() { if (!Request::isAjax()) { return View::fetch(); } $keyword = Request::param('keyword'); $objct_id = Request::param('objct_id'); $employee = request()->employee; $uid = $employee['uid']; $Employee = Employee::with(['org'])->where(['uid'=>$uid])->find(); $where = [ 'org_id' => $Employee['is_manager'] == 0 ? $Employee['org_id'] : $Employee['org']['pid'], 'is_manager' => 1 ]; $lastId = !empty($objct_id) ? explode(',',$objct_id) : Employee::where($where)->column('id'); if(!empty($keyword)) { $condition[] = ['name','like','%'.$keyword.'%']; } if($Employee['org']['pid'] == 0){ $condition[] = ['org_id' , '=' , $Employee['org']['id']]; }else{ $path = explode('-',$Employee['org']['path']); $orgId = Org::whereLike('path' , '%'.$path[0].'-'.$path[1].'-'.'%')->column('id'); $zero_org = Org::where([['pid', '=', 0], ['path', 'like', '%'.$path[0].'-'.'%']])->select(); // 可能出现匹配不准确的情况 如 pid=0 path=23- pid=0 path=123- foreach ($zero_org as $v){ $path_zero = explode(',', $v['path']); if ($path_zero[0] == $path[0].'-'){ $orgId[] = $v['id']; } } $condition[] = ['org_id','in',$orgId]; } $list = Employee::with(['user' => function ($query) { $query->field('id,headimgurl'); }])->where('uid','<>',$uid) ->where($condition) ->field('id,name,uid') ->select()->toArray(); $SortArray = []; foreach($list as $rs) { $letter = strtoupper(hanziInitials($rs['name'])); $data = [ 'id'=>$rs['id'], 'name'=>$rs['name'], 'uid'=>$rs['uid'], 'headimgurl'=>$rs['user']['headimgurl'], 'checked'=>in_array($rs['id'] , $lastId) ? true : false ]; $SortArray[$letter][] = $data; } //首字母排序 ksort($SortArray); return json(['code'=>0 , 'msg'=>'抄送人员列表' , 'data'=>$SortArray]); } /* * 日报详情 * category : sent发送 , received收到 */ public function details($id , $category) { $employee = request()->employee; $uid = $employee['uid']; $data = DailyWorkModel::with(['user' => function ($query) { $query->field('id,headimgurl'); },'employee']) ->where(['id'=>$id , 'del'=>0]) ->field('id,uid,type,current_work,next_plan,other_matters,enclosure_file,reporting_object,addtime,unread_comments,reporting_object_view') ->find(); $reporting_object = Employee::with(['user' => function ($query) { $query->field('id,headimgurl'); }])->where('uid','in',$data['reporting_object'])->field('uid,name')->select(); //自己查看详情评论阅读数清零 if($data['uid'] == $uid && $data['unread_comments'] > 0) { $data->unread_comments = 0; $data->save(); } //抄送人查看详情浏览记录 $rs = array_values(explode(',',$data['reporting_object'])); $rsview = array_values(explode(',',$data['reporting_object_view'])); if(in_array($uid , $rs) && !in_array($uid , $rsview)) { $data->reporting_object_view = empty($data['reporting_object_view']) ? $uid : $data['reporting_object_view'].','.$uid; $data->save(); } //汇报对象展示 $data['reporting_object'] = $reporting_object; View::assign('data',$data); View::assign('category',$category); return View::fetch(); } /* * 评论列表 */ public function comment_list() { $param = Request::only(['id','page']); $list = DailyWorkComment::with(['employee','joinemployee','user'])->where(['join_id'=>$param['id']])->field('id,uid,comment,pid,parent_uid,addtime')->page($param['page'] , 10)->order('addtime')->select(); $count = DailyWorkComment::where(['join_id'=>$param['id']])->count(); return json(['code'=>0 , 'msg'=>'评论列表' , 'data'=>$list , 'page'=>ceil($count/10)]); } /* * 发送评论 */ public function send_comments() { $param = Request::only(['daily_work_id','parent_id','parent_uid','comment']); $work = DailyWorkModel::where(['id'=>$param['daily_work_id'] , 'del'=>0])->field('id,unread_comments')->find(); if(!$work) return json(['code'=>1 , 'msg'=>'日报内容不存在']); if(empty($param['comment'])) return json(['code'=>1 , 'msg'=>'请输入评论内容']); $employee = request()->employee; $uid = $employee['uid']; $data = [ 'uid' => $uid, 'comment' => $param['comment'], 'join_id' => $param['daily_work_id'], 'pid' => $param['parent_id'], 'parent_uid' => $param['parent_uid'] ]; DailyWorkComment::insert($data); //评论时日报评论数增加 $work->unread_comments += 1; $work->save(); return json(['code'=>0 , 'msg'=>'评论成功']); } }