diff --git a/back/application/api/controller/Contract.php b/back/application/api/controller/Contract.php index ad2665a..6b90f30 100644 --- a/back/application/api/controller/Contract.php +++ b/back/application/api/controller/Contract.php @@ -77,7 +77,7 @@ class Contract extends Common { $param = request()->post(); - $FirstLeveType = db('partner_company')->where('company_type & 0x01', 1)->field('company_id as id, company_name as name')->select(); + $FirstLeveType = db('partner_company')->where('company_type & 0x01', 1)->field('company_id as id, company_name as name')->order('company_name asc')->select(); for ($i = 0; $i < count($FirstLeveType); $i++) { diff --git a/back/application/api/controller/Partner.php b/back/application/api/controller/Partner.php index a67a83e..a072e4e 100644 --- a/back/application/api/controller/Partner.php +++ b/back/application/api/controller/Partner.php @@ -237,6 +237,7 @@ class Partner extends Common //查找所有的签约客户公司 $result = db('partner_company')->where('company_type & 0x01', 1) ->field('company_id as id, company_name as name') + ->order('company_name asc') ->select(); for ($i=0; $iwhere('company_type & 0x02', 2) ->field('company_id as id, company_name as name') + ->order('company_name asc') ->select(); $ret = []; $item = []; diff --git a/back/application/api/controller/Work.php b/back/application/api/controller/Work.php index 1c995a8..8a28741 100644 --- a/back/application/api/controller/Work.php +++ b/back/application/api/controller/Work.php @@ -293,10 +293,10 @@ class Work extends Common if (1 == $user_info['user_role']) { $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } - if($param['task_processor'] != ''){ + if(isset($param['task_processor']) && $param['task_processor'] != ''){ $where['s.task_processor'] = $param['task_processor']; } $ret = db('work_task_info')->alias('s') @@ -318,7 +318,7 @@ class Work extends Common return $this->sendSuccess($ret); }else{ $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') @@ -445,7 +445,7 @@ class Work extends Common if (1 == $user_info['user_role']) { $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') @@ -468,7 +468,7 @@ class Work extends Common return $this->sendSuccess($ret); }else{ $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') @@ -572,7 +572,7 @@ class Work extends Common if (1 == $user_info['user_role']) { $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') @@ -586,7 +586,7 @@ class Work extends Common return $ret; }else{ $where = []; - if($param['task_state'] != ''){ + if(isset($param['task_state']) && $param['task_state'] != ''){ $where['s.task_state'] = $param['task_state']; } $ret = db('work_task_info')->alias('s') @@ -824,4 +824,283 @@ class Work extends Common return $ret; } + //获取内部客户参与的项目 - 分页版本 + public function GetWorkInfoByLoginIdPaginated() + { + $param = request()->post(); + $user_id = $param['user_id']; + $currPage = isset($param['currPage']) ? $param['currPage'] : 1; + $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10; + + $user = new User(); + $project_work = $this->GetProjectListPaginated($user_id, $currPage, $pageSize); + + for ($i = 0; $i < count($project_work['list']); $i++) { + $involve_manager = $project_work['list'][$i]['involve_manager']; + $info = $user->GetUserInfoByLoginId($involve_manager); + if ($info && isset($info['name'])) { + $project_work['list'][$i]['issue_creator_name'] = $info['name']; + } + } + + $res['list'] = $project_work['list']; + $res['total'] = $project_work['total']; + return $this->sendSuccess($res); + } + + //获取参与的客户项目列表 - 分页版本 + public function GetProjectListPaginated($user_id, $currPage, $pageSize) + { + //判断登录用户的角色,如果是管理员,就获取所有的项目信息 + $user_info = db('system_user')->where('id', $user_id)->find(); + + $query = db('project_info')->alias('p') + ->join('project_state s', 's.id =p.project_state', 'left') + ->where('p.project_state', '<', 10) //未关闭的项目 + ->field('p.*, s.desp as project_state_name,1 as project_types'); + + if (1 != $user_info['user_role']) { + $query->where(function ($query) use ($user_id) { + $query->where('p.involve_manager', $user_id) + ->whereor('p.involve_members', 'like', $user_id . ',%') + ->whereor('p.involve_members', 'like', '%,' . $user_id . ',%') + ->whereor('p.involve_members', 'like', $user_id . '') + ->whereor('p.involve_members', 'like', '%,' . $user_id); + }); + } + + // 获取分页数据 + $ret = $query->page($currPage, $pageSize)->select(); + + // 获取总数 + $totalQuery = db('project_info')->alias('p') + ->join('project_state s', 's.id =p.project_state', 'left') + ->where('p.project_state', '<', 10); + + if (1 != $user_info['user_role']) { + $totalQuery->where(function ($query) use ($user_id) { + $query->where('p.involve_manager', $user_id) + ->whereor('p.involve_members', 'like', $user_id . ',%') + ->whereor('p.involve_members', 'like', '%,' . $user_id . ',%') + ->whereor('p.involve_members', 'like', $user_id . '') + ->whereor('p.involve_members', 'like', '%,' . $user_id); + }); + } + + $total = $totalQuery->count(); + + //统计每个项目与登录用户有关的任务数 + for ($i = 0; $i < count($ret); $i++) { + $ret[$i]['issue_count'] = $this->GetProjectIssueCount($user_id, $ret[$i]['project_id']); + $ret[$i]['task_count'] = $this->GetProjectTaskCount($user_id, $ret[$i]['project_id']); + } + + return [ + 'list' => $ret, + 'total' => $total + ]; + } + + //获取项目问题列表 - 分页版本 + public function GetProjectIssueListPaginated() + { + $param = request()->post(); + $user = new User(); + $user_id = $param['user_id']; + $project_id = $param['project_id']; + $issue_state = $param['issue_state']; + $currPage = isset($param['currPage']) ? $param['currPage'] : 1; + $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10; + + $user_info = db('system_user')->where('id', $user_id)->find(); + + if (1 == $user_info['user_role']) { + $where = []; + if ($issue_state == 1) { + $where['s.issue_state'] = array('<', 10); //未关闭 + } else if ($issue_state == 2) { + $where['s.issue_state'] = array('>', 10);//已关闭 + } + + // 获取分页数据 + $query = db('project_issues')->alias('s') + ->join('project_info i', 'i.project_id =s.project_id', 'left') + ->join('project_issue_state t', 't.id =s.issue_state', 'left') + ->where('s.project_id', $project_id) + ->where($where) + ->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types'); + + $ret = $query->page($currPage, $pageSize)->select(); + + // 获取总数 + $total = db('project_issues')->alias('s') + ->join('project_info i', 'i.project_id =s.project_id', 'left') + ->join('project_issue_state t', 't.id =s.issue_state', 'left') + ->where('s.project_id', $project_id) + ->where($where) + ->count(); + + for ($i = 0; $i < count($ret); $i++) { + $info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']); + if ($info != "") { + $ret[$i]['issue_processor_name'] = $info['name']; + } else { + $ret[$i]['issue_processor_name'] = '-'; + } + $info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']); + $ret[$i]['issue_creator_name'] = $info['name']; + } + + $res['list'] = $ret; + $res['total'] = $total; + return $this->sendSuccess($res); + } else { + $where = []; + if ($issue_state == 1) { + $where['s.issue_state'] = array('<', 10); //未关闭 + } else if ($issue_state == 2) { + $where['s.issue_state'] = array('>', 10);//已关闭 + } + + // 获取分页数据 + $query = db('project_issues')->alias('s') + ->join('project_info i', 'i.project_id =s.project_id', 'left') + ->join('project_issue_state t', 't.id =s.issue_state', 'left') + ->where('s.project_id', $project_id) + ->where(function ($query) use ($user_id) { + $query->where('s.issue_processor', $user_id) + ->whereor('s.issue_creator', $user_id) + ->whereor('i.involve_manager', $user_id); + }) + ->where($where) + ->field('s.*, i.project_name, i.project_number, t.desp as issue_state_name, i.involve_manager,1 as project_types'); + + $ret = $query->page($currPage, $pageSize)->select(); + + // 获取总数 + $total = db('project_issues')->alias('s') + ->join('project_info i', 'i.project_id =s.project_id', 'left') + ->join('project_issue_state t', 't.id =s.issue_state', 'left') + ->where('s.project_id', $project_id) + ->where(function ($query) use ($user_id) { + $query->where('s.issue_processor', $user_id) + ->whereor('s.issue_creator', $user_id) + ->whereor('i.involve_manager', $user_id); + }) + ->where($where) + ->count(); + + for ($i = 0; $i < count($ret); $i++) { + $info = $user->GetUserInfoByLoginId($ret[$i]['issue_processor']); + if ($info != "") { + $ret[$i]['issue_processor_name'] = $info['name']; + } else { + $ret[$i]['issue_processor_name'] = '-'; + } + $info = $user->GetUserInfoByLoginId($ret[$i]['issue_creator']); + $ret[$i]['issue_creator_name'] = $info['name']; + } + + $res['list'] = $ret; + $res['total'] = $total; + return $this->sendSuccess($res); + } + } + + //获取运营Story列表 - 分页版本 + public function GetOperationStoryListPaginated() + { + $param = request()->post(); + $user = new User(); + $user_id = $param['user_id']; + $currPage = isset($param['currPage']) ? $param['currPage'] : 1; + $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 10; + + $user_info = db('system_user')->where('id', $user_id)->find(); + + if (1 == $user_info['user_role']) { + $where = []; + if(isset($param['story_state']) && $param['story_state'] != ''){ + $where['y.story_state'] = $param['story_state']; + } + + // 获取分页数据 + $query = db('work_story_info')->alias('y') + ->join('work_story_state p', 'p.id =y.story_state', 'left') + ->where('y.story_type', 2) + ->where('y.story_state', '<', 4) //未完成的Story + ->where($where) + ->field('y.*, p.desp as story_state_desp'); + + $ret = $query->page($currPage, $pageSize)->select(); + + // 获取总数 + $total = db('work_story_info')->alias('y') + ->join('work_story_state p', 'p.id =y.story_state', 'left') + ->where('y.story_type', 2) + ->where('y.story_state', '<', 4) + ->where($where) + ->count(); + + for ($i=0; $iGetUserInfoByLoginId($ret[$i]['story_manager']); + $ret[$i]['story_manager_name'] = $user_info['name']; + $ret[$i]['story_tasks'] = $this->GetOperationTaskCount($user_id,$ret[$i]['story_id']); + } + + $res['list'] = $ret; + $res['total'] = $total; + return $this->sendSuccess($res); + } else { + $where = []; + if(isset($param['story_state']) && $param['story_state'] != ''){ + $where['y.story_state'] = $param['story_state']; + } + + // 获取分页数据 + $query = db('work_story_info')->alias('y') + ->join('work_story_state p', 'p.id =y.story_state', 'left') + ->where('y.story_type', 2) + ->where('y.story_state', '<', 4) //未完成的Story + ->where($where) + ->where(function ($query) use ($user_id) { + $query->where('y.story_manager', $user_id) + ->whereor('y.story_member', 'like', $user_id . ',%') + ->whereor('y.story_member', 'like', '%,' . $user_id . ',%') + ->whereor('y.story_member', $user_id) + ->whereor('y.story_member', 'like', '%,' . $user_id); + }) + ->field('y.*, p.desp as story_state_desp'); + + $ret = $query->page($currPage, $pageSize)->select(); + + // 获取总数 + $total = db('work_story_info')->alias('y') + ->join('work_story_state p', 'p.id =y.story_state', 'left') + ->where('y.story_type', 2) + ->where('y.story_state', '<', 4) + ->where($where) + ->where(function ($query) use ($user_id) { + $query->where('y.story_manager', $user_id) + ->whereor('y.story_member', 'like', $user_id . ',%') + ->whereor('y.story_member', 'like', '%,' . $user_id . ',%') + ->whereor('y.story_member', $user_id) + ->whereor('y.story_member', 'like', '%,' . $user_id); + }) + ->count(); + + for ($i=0; $iGetUserInfoByLoginId($ret[$i]['story_manager']); + $ret[$i]['story_manager_name'] = $user_info['name']; + $ret[$i]['story_tasks'] = $this->GetOperationTaskCount($user_id,$ret[$i]['story_id']); + } + + $res['list'] = $ret; + $res['total'] = $total; + return $this->sendSuccess($res); + } + } + } \ No newline at end of file diff --git a/front/src/api/work.js b/front/src/api/work.js index 4269fd2..501743b 100644 --- a/front/src/api/work.js +++ b/front/src/api/work.js @@ -10,6 +10,15 @@ export default { }); }, + //获取项目类型列表 - 分页版本 + GetWorkInfoByLoginIdPaginated(param) { + return request({ + url: `/work/GetWorkInfoByLoginIdPaginated`, + method: "post", + data: param + }); + }, + GetDevelopIssueList(param) { return request({ url: `/work/GetDevelopIssueList`, @@ -26,6 +35,15 @@ export default { }); }, + //获取项目问题列表 - 分页版本 + GetProjectIssueListPaginated(param) { + return request({ + url: `/work/GetProjectIssueListPaginated`, + method: "post", + data: param + }); + }, + GetProjectTaskList(param) { return request({ url: `/work/GetProjectTaskList`, @@ -50,6 +68,15 @@ export default { }); }, + //获取运营Story列表 - 分页版本 + GetOperationStoryListPaginated(param) { + return request({ + url: `/work/GetOperationStoryListPaginated`, + method: "post", + data: param + }); + }, + GetProjectDevelopProcessor(param) { return request({ url: `/work/GetProjectDevelopProcessor`, diff --git a/front/src/views/workbench/inner/inner.vue b/front/src/views/workbench/inner/inner.vue index 0cbcaa6..a699771 100644 --- a/front/src/views/workbench/inner/inner.vue +++ b/front/src/views/workbench/inner/inner.vue @@ -132,13 +132,35 @@ +
我参与的工作 -
+ + + + + + + + + + + + + + +
@@ -193,6 +215,13 @@ + +
+ +
+
+ @@ -203,6 +232,7 @@ import notice from '@/api/notice' import ProjectIssueList from './projectissuelist.vue' import ProjectTaskList from './projecttasklist.vue' import WorkStoryList from './workstorylist.vue' +import WorkTaskList from './worktasklist.vue' import ProjectDetail from '@/views/components/ProjectDetail.vue' import project from '@/api/project' import develop from '@/api/develop' @@ -214,12 +244,20 @@ export default { ProjectIssueList, ProjectTaskList, WorkStoryList, + WorkTaskList, ProjectDetail }, data() { return { work_info_list: [], + work_info_total: 0, + work_info_pageNum: 1, + work_info_pageSize: 10, + work_story_list: [], + work_story_total: 0, + work_story_pageNum: 1, + work_story_pageSize: 10, dialogVisibleShowProjectIssueList: false, dialogVisibleShowProjectTaskList: false, dialogVisibleUpdateProcessorType: false, @@ -227,6 +265,8 @@ export default { dialogVisibleAddMember: false, dialogVisibleShowLog: false, dialogVisibleShowProjectDetail: false, + dialogVisibleShowWorkTask: false, + story_id: 0, project_id: 0, update_view: false, issue_list: [], @@ -285,6 +325,7 @@ export default { }, mounted() { this.get_work_info_list() + this.get_work_story_list() this.get_issue_type_list() this.handleSelectChange(this.selectedIssueTypeId) }, @@ -556,13 +597,35 @@ export default { }, get_work_info_list() { var param = { - user_id: localStorage.getItem('user_id') + user_id: localStorage.getItem('user_id'), + currPage: this.work_info_pageNum, + pageSize: this.work_info_pageSize } - work.GetWorkInfoByLoginId(param).then(res => { - this.work_info_list = res.data.data + work.GetWorkInfoByLoginIdPaginated(param).then(res => { + this.work_info_list = res.data.data.list + this.work_info_total = res.data.data.total console.log(res) }) }, + get_work_story_list() { + var param = { + user_id: localStorage.getItem('user_id'), + currPage: this.work_story_pageNum, + pageSize: this.work_story_pageSize + } + work.GetOperationStoryListPaginated(param).then(res => { + this.work_story_list = res.data.data.list + this.work_story_total = res.data.data.total + console.log(res) + }) + }, + + showWorkTask(storyId) { + this.story_id = storyId + this.dialogVisibleShowWorkTask = true + this.update_sub_component() + }, + showIssueList(project) { this.project_id = project.project_id //客户项目