123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- <?php
- namespace app\sys\controller;
- use app\logics\OrgLogic;
- use app\model\User;
- use think\facade\View;
- use think\facade\Request;
- use app\logics\EmployeeLogic;
- use app\model\Employee;
- use app\model\Org;
- use app\model\DailyWork as DailyWorkModel;
- use app\model\DailyWorkComment;
- class DailyWork
- {
- /**
- * 选择日报进入
- */
- public function work()
- {
- // 部门
- $org = OrgLogic::struc(request()->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'=>'评论成功']);
- }
- }
|