diff --git a/app/home/controller/Api.php b/app/home/controller/Api.php index 3843493..6e1fd6f 100644 --- a/app/home/controller/Api.php +++ b/app/home/controller/Api.php @@ -53,6 +53,17 @@ class api extends BaseController return table_assign(0, '', $res); } + function isAuthProject($uid) + { + if($uid == 1){ + return 1; + } + $map = []; + $map[] = ['name', '=', 'project_admin']; + $map[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',uids)")]; + $count = Db::name('DataAuth')->where($map)->count(); + return $count; + } //首页项目 public function get_project_list() { @@ -61,18 +72,28 @@ class api extends BaseController $res['data'] = []; if($exist){ $project_ids = Db::name('ProjectUser')->where(['uid' => $this->uid, 'delete_time' => 0])->column('project_id'); + $where =[]; + $where[] = ['a.delete_time', '=', 0]; + if($this->isAuthProject($this->uid)==0){ + $where[] = ['a.id', 'in', $project_ids]; + } $list = Db::name('Project') ->field('a.id,a.name,a.status,a.create_time,a.start_time,a.end_time,u.name as director_name') ->alias('a') ->join('Admin u', 'a.director_uid = u.id') - ->where([['a.delete_time', '=', 0], ['a.id', 'in', $project_ids]]) + ->where($where) ->order('a.id desc') ->limit(8) ->select()->toArray(); - foreach ($list as $key => $val) { - $list[$key]['create_time'] = date('Y-m-d :H:i', $val['create_time']); - $list[$key]['plan_time'] = date('Y-m-d', $list[$key]['start_time']) . ' 至 ' . date('Y-m-d', $list[$key]['end_time']); - $list[$key]['status_name'] = \app\project\model\Project::$Status[(int) $val['status']]; + foreach ($list as $key => &$val) { + $val['create_time'] = date('Y-m-d :H:i', $val['create_time']); + if($val['end_time']>0){ + $val['plan_time'] = date('Y-m-d', $val['start_time']) . ' 至 ' . date('Y-m-d', $val['end_time']); + } + else{ + $val['plan_time'] = '-'; + } + $val['status_name'] = \app\project\model\Project::$Status[(int) $val['status']]; } $res['data'] = $list; } @@ -94,8 +115,9 @@ class api extends BaseController $map1[] = ['admin_id', '=', $this->uid]; $map2[] = ['director_uid', '=', $this->uid]; $map3[] = ['', 'exp', Db::raw("FIND_IN_SET({$this->uid},assist_admin_ids)")]; - - $whereOr =[$map1,$map2,$map3]; + if($this->isAuthProject($this->uid)==0){ + $whereOr =[$map1,$map2,$map3]; + } $where[] = ['delete_time', '=', 0]; $list = Db::name('ProjectTask') ->where(function ($query) use ($whereOr) { @@ -108,10 +130,15 @@ class api extends BaseController ->order('id desc') ->limit(8) ->select()->toArray(); - foreach ($list as $key => $val) { - $list[$key]['director_name'] = Db::name('Admin')->where(['id' => $val['director_uid']])->value('name'); - $list[$key]['end_time'] = date('Y-m-d', $val['end_time']); - $list[$key]['flow_name'] = \app\project\model\ProjectTask::$FlowStatus[(int) $val['flow_status']]; + foreach ($list as $key => &$val) { + $val['director_name'] = Db::name('Admin')->where(['id' => $val['director_uid']])->value('name'); + if($val['end_time']>0){ + $val['end_time'] = date('Y-m-d', $val['end_time']); + } + else{ + $val['end_time'] = '-'; + } + $val['flow_name'] = \app\project\model\ProjectTask::$FlowStatus[(int) $val['flow_status']]; } $res['data'] = $list; } diff --git a/app/project/common.php b/app/project/common.php index 28494b0..03220f7 100644 --- a/app/project/common.php +++ b/app/project/common.php @@ -10,6 +10,18 @@ ====================== */ use think\facade\Db; +//是否是项目管理员,count>1即有权限 +function isAuthProject($uid) +{ + if($uid == 1){ + return 1; + } + $map = []; + $map[] = ['name', '=', 'project_admin']; + $map[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',uids)")]; + $count = Db::name('DataAuth')->where($map)->count(); + return $count; +} //写入日志 function add_project_log($uid,$module,$param,$old) { diff --git a/app/project/model/ProjectTask.php b/app/project/model/ProjectTask.php index 18961c1..c42ba56 100644 --- a/app/project/model/ProjectTask.php +++ b/app/project/model/ProjectTask.php @@ -52,12 +52,14 @@ class ProjectTask extends Model if (!empty($param['project_id'])) { $where[] = ['project_id', '=', $param['project_id']]; } else { - $project_ids = Db::name('ProjectUser')->where(['uid' => $param['uid'], 'delete_time' => 0])->column('project_id'); - $map1[] = ['admin_id', '=', $param['uid']]; - $map2[] = ['director_uid', '=', $param['uid']]; - $map3[] = ['', 'exp', Db::raw("FIND_IN_SET({$param['uid']},assist_admin_ids)")]; - $map4[] = ['project_id', 'in', $project_ids]; - $whereOr =[$map1,$map2,$map3,$map4]; + if (isAuthProject($param['uid'])==0) { + $project_ids = Db::name('ProjectUser')->where(['uid' => $param['uid'], 'delete_time' => 0])->column('project_id'); + $map1[] = ['admin_id', '=', $param['uid']]; + $map2[] = ['director_uid', '=', $param['uid']]; + $map3[] = ['', 'exp', Db::raw("FIND_IN_SET({$param['uid']},assist_admin_ids)")]; + $map4[] = ['project_id', 'in', $project_ids]; + $whereOr =[$map1,$map2,$map3,$map4]; + } } if (!empty($param['type'])) { $where[] = ['type', '=', $param['type']]; @@ -77,6 +79,7 @@ class ProjectTask extends Model if (!empty($param['keywords'])) { $where[] = ['title|content', 'like', '%' . $param['keywords'] . '%']; } + $where[] = ['delete_time', '=', 0]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; @@ -91,7 +94,10 @@ class ProjectTask extends Model ->order('id desc') ->paginate($rows, false, ['query' => $param]) ->each(function ($item, $key) { - $item['director_name'] = Db::name('Admin')->where(['id' => $item['director_uid']])->value('name'); + $item['director_name'] = '-'; + if ($item['director_uid'] > 0) { + $item['director_name'] = Db::name('Admin')->where(['id' => $item['director_uid']])->value('name'); + } $assist_admin_names = Db::name('Admin')->where([['id', 'in', $item['assist_admin_ids']]])->column('name'); $item['cate_name'] = Db::name('WorkCate')->where(['id' => $item['cate']])->value('title'); if (empty($assist_admin_names)) { @@ -104,14 +110,20 @@ class ProjectTask extends Model } else { $item['project_name'] = Db::name('Project')->where(['id' => $item['project_id']])->value('name'); } - $item['end_time'] = date('Y-m-d', $item['end_time']); - $item['delay'] = 0; - if ($item['over_time'] > 0 && $item['flow_status'] < 4) { - $item['delay'] = countDays($item['end_time'], date('Y-m-d', $item['over_time'])); - } - if ($item['over_time'] == 0 && $item['flow_status'] < 4) { - $item['delay'] = countDays($item['end_time']); - } + + $item['delay'] = 0; + if ($item['end_time'] > 0) { + $item['end_time'] = date('Y-m-d', $item['end_time']); + if ($item['over_time'] > 0 && $item['flow_status'] < 4) { + $item['delay'] = countDays($item['end_time'], date('Y-m-d', $item['over_time'])); + } + if ($item['over_time'] == 0 && $item['flow_status'] < 4) { + $item['delay'] = countDays($item['end_time']); + } + } + else{ + $item['end_time'] = '-'; + } $item['priority_name'] = self::$Priority[(int) $item['priority']]; $item['flow_name'] = self::$FlowStatus[(int) $item['flow_status']]; $item['type_name'] = self::$Type[(int) $item['type']]; @@ -130,10 +142,13 @@ class ProjectTask extends Model $detail['project_name'] = Db::name('Project')->where(['id' => $detail['project_id']])->value('name'); } $detail['admin_name'] = Db::name('Admin')->where(['id' => $detail['admin_id']])->value('name'); - $detail['director_name'] = Db::name('Admin')->where(['id' => $detail['director_uid']])->value('name'); $detail['work_hours'] = Db::name('Schedule')->where(['delete_time' => 0, 'tid' => $detail['id']])->sum('labor_time'); $detail['cate_name'] = Db::name('WorkCate')->where(['id' => $detail['cate']])->value('title'); - $detail['director_name'] = Db::name('Admin')->where(['id' => $detail['director_uid']])->value('name'); + + $detail['director_name']= ''; + if($detail['director_uid'] > 0){ + $detail['director_name'] = Db::name('Admin')->where(['id' => $detail['director_uid']])->value('name'); + } $detail['logs'] = Db::name('ProjectLog')->where(['module' => 'task', 'task_id' => $detail['id']])->count(); $detail['comments'] = Db::name('ProjectComment')->where(['module' => 4, 'delete_time' => 0, 'topic_id' => $detail['id']])->count(); $detail['assist_admin_names'] = ''; @@ -145,14 +160,19 @@ class ProjectTask extends Model $detail['flow_name'] = self::$FlowStatus[(int) $detail['flow_status']]; $detail['type_name'] = self::$Type[(int) $detail['type']]; $detail['times'] = time_trans($detail['create_time']); - $detail['end_time'] = date('Y-m-d', $detail['end_time']); - $detail['delay'] = 0; - if ($detail['over_time'] > 0 && $detail['flow_status'] < 4) { - $detail['delay'] = countDays($detail['end_time'], date('Y-m-d', $detail['over_time'])); - } - if ($detail['over_time'] == 0 && $detail['flow_status'] < 4) { - $detail['delay'] = countDays($detail['end_time']); - } + $detail['delay'] = 0; + if($detail['end_time']>0){ + $detail['end_time'] = date('Y-m-d', $detail['end_time']); + if ($detail['over_time'] > 0 && $detail['flow_status'] < 4) { + $detail['delay'] = countDays($detail['end_time'], date('Y-m-d', $detail['over_time'])); + } + if ($detail['over_time'] == 0 && $detail['flow_status'] < 4) { + $detail['delay'] = countDays($detail['end_time']); + } + } + else{ + $detail['end_time'] = ''; + } } return $detail; }