diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 53fc13b6..b6a802cd 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -60,24 +60,42 @@ class ProjectController extends AbstractController /** * 获取项目列表 * + * @apiParam {String} [all] 是否查看所有项目(限制管理员) * @apiParam {String} [archived] 归档状态 + * - all:全部 * - no:未归档(默认) * - yes:已归档 + * @apiParam {Object} [keys] 搜索条件 + * - keys.name 项目名称 * * @apiParam {Number} [page] 当前页,默认:1 * @apiParam {Number} [pagesize] 每页显示数量,默认:100,最大:200 */ public function lists() { - User::auth(); + $user = User::auth(); // + $all = Request::input('all'); $archived = Request::input('archived', 'no'); // - $builder = Project::select(Project::projectSelect)->authData(); + if ($all) { + $user->identity('admin'); + $builder = Project::select('projects.*'); + } else { + $builder = Project::select(Project::projectSelect)->authData(); + } + // if ($archived == 'yes') { - $builder->whereNotNull('archived_at'); + $builder->whereNotNull('projects.archived_at'); } elseif ($archived == 'no') { - $builder->whereNull('archived_at'); + $builder->whereNull('projects.archived_at'); + } + // + $keys = Request::input('keys'); + if (is_array($keys)) { + if ($keys['name']) { + $builder->where('projects.name', 'like', '%' . $keys['name'] . '%'); + } } $list = $builder->orderByDesc('projects.id')->paginate(Base::getPaginate(200, 100)); // diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 91e747ea..ad5e7630 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -80,6 +80,10 @@ class UsersController extends AbstractController if ($user->password != Base::md52($password, $user->encrypt)) { return $retError('账号或密码错误'); } + // + if (in_array('disable', $user->identity)) { + return $retError('帐号已停用...'); + } Cache::forget("code::" . $email); } // diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 765e206a..9f61615f 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -485,6 +485,16 @@ class ProjectTask extends AbstractModel $this->addLog("修改{任务}背景色:{$this->color} => {$data['color']}"); $this->color = $data['color']; } + // 列表 + if (Arr::exists($data, 'column_id')) { + $oldName = ProjectColumn::whereProjectId($this->project_id)->whereId($this->column_id)->value('name'); + $column = ProjectColumn::whereProjectId($this->project_id)->whereId($data['column_id'])->first(); + if (empty($column)) { + throw new ApiException('请选择正确的列表'); + } + $this->addLog("修改{任务}列表:{$oldName} => {$column->name}"); + $this->column_id = $column->id; + } // 内容 if (Arr::exists($data, 'content')) { ProjectTaskContent::updateInsert([ diff --git a/resources/assets/js/pages/manage.vue b/resources/assets/js/pages/manage.vue index 5a84fab6..f928df22 100644 --- a/resources/assets/js/pages/manage.vue +++ b/resources/assets/js/pages/manage.vue @@ -126,8 +126,8 @@ - + :title="$L('所有项目')"> + @@ -146,9 +146,10 @@ import TaskDetail from "./manage/components/TaskDetail"; import ProjectArchived from "./manage/components/ProjectArchived"; import notificationKoro from "notification-koro1"; import TeamManagement from "./manage/components/TeamManagement"; +import ProjectManagement from "./manage/components/ProjectManagement"; export default { - components: {TeamManagement, ProjectArchived, TaskDetail}, + components: {ProjectManagement, TeamManagement, ProjectArchived, TaskDetail}, data() { return { loadIng: 0, @@ -224,7 +225,7 @@ export default { {path: 'system', name: '系统设置', divided: true}, {path: 'priority', name: '任务等级'}, {path: 'allUser', name: '团队管理', divided: true}, - {path: 'allProject', name: '项目管理'}, + {path: 'allProject', name: '所有项目'}, {path: 'archivedProject', name: '已归档的项目'} ] } else { diff --git a/resources/assets/js/pages/manage/components/ProjectList.vue b/resources/assets/js/pages/manage/components/ProjectList.vue index 2bac1d49..aaa3be07 100644 --- a/resources/assets/js/pages/manage/components/ProjectList.vue +++ b/resources/assets/js/pages/manage/components/ProjectList.vue @@ -444,6 +444,8 @@ export default { 'userId', 'dialogs', + 'taskPriority', + 'projectId', 'projectLoad', 'tasks', @@ -763,6 +765,34 @@ export default { }, dropTask(task, command) { + if ($A.isJson(command)) { + if (command.name) { + // 修改背景色 + this.updateTask(task, { + color: command.color + }) + } + return; + } + if ($A.leftExists(command, 'column::')) { + // 修改列表 + this.updateTask(task, { + column_id: $A.leftDelete(command, 'column::') + }) + return; + } + if ($A.leftExists(command, 'priority::')) { + // 修改优先级 + let data = this.taskPriority[parseInt($A.leftDelete(command, 'priority::'))]; + if (data) { + this.updateTask(task, { + p_level: data.priority, + p_name: data.name, + p_color: data.color, + }) + } + return; + } switch (command) { case 'complete': if (task.complete_at) return; @@ -770,23 +800,18 @@ export default { complete_at: $A.formatDate("Y-m-d H:i:s") }) break; + case 'uncomplete': if (!task.complete_at) return; this.updateTask(task, { complete_at: false }) break; + case 'archived': case 'remove': this.archivedOrRemoveTask(task, command); break; - default: - if (command.name) { - this.updateTask(task, { - color: command.color - }) - } - break; } }, diff --git a/resources/assets/js/pages/manage/components/ProjectManagement.vue b/resources/assets/js/pages/manage/components/ProjectManagement.vue new file mode 100644 index 00000000..8ea82aa2 --- /dev/null +++ b/resources/assets/js/pages/manage/components/ProjectManagement.vue @@ -0,0 +1,162 @@ + + + diff --git a/resources/assets/js/pages/manage/components/TaskRow.vue b/resources/assets/js/pages/manage/components/TaskRow.vue index c0264cde..3c0031b5 100644 --- a/resources/assets/js/pages/manage/components/TaskRow.vue +++ b/resources/assets/js/pages/manage/components/TaskRow.vue @@ -70,13 +70,41 @@ -
{{columnName(item.column_id)}}
+ +
{{columnName(item.column_id)}}
+ + + {{column.name}} + + +
- {{item.p_name}} + + {{item.p_name}} + + + + {{item.name}} + + + -