diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index 7289c1571..a661b8540 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -1239,6 +1239,7 @@ class ProjectController extends AbstractController $headings[] = Doo::translate('父级任务ID'); $headings[] = Doo::translate('所属项目'); $headings[] = Doo::translate('任务标题'); + $headings[] = Doo::translate('任务标签'); $headings[] = Doo::translate('任务开始时间'); $headings[] = Doo::translate('任务结束时间'); $headings[] = Doo::translate('完成时间'); @@ -1259,7 +1260,7 @@ class ProjectController extends AbstractController 'style' => 'font-weight: bold;padding-bottom: 4px;', ]; // - $builder = ProjectTask::select(['project_tasks.*', 'project_task_users.userid as ownerid']) + $builder = ProjectTask::with(['taskTag'])->select(['project_tasks.*', 'project_task_users.userid as ownerid']) ->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_id') ->where('project_task_users.owner', 1) ->whereIn('project_task_users.userid', $userid) @@ -1341,6 +1342,9 @@ class ProjectController extends AbstractController $task->parent_id ?: '-', Base::filterEmoji($task->project?->name) ?: '-', Base::filterEmoji($task->name), + $task->taskTag->map(function ($tag) { + return Base::filterEmoji($tag->name); + })->join(', ') ?: '-', $task->start_at ?: '-', $task->end_at ?: '-', $task->complete_at ?: '-', @@ -1463,6 +1467,7 @@ class ProjectController extends AbstractController $headings[] = Doo::translate('父级任务ID'); $headings[] = Doo::translate('所属项目'); $headings[] = Doo::translate('任务标题'); + $headings[] = Doo::translate('任务标签'); $headings[] = Doo::translate('任务开始时间'); $headings[] = Doo::translate('任务结束时间'); $headings[] = Doo::translate('任务计划用时'); @@ -1471,7 +1476,8 @@ class ProjectController extends AbstractController $headings[] = Doo::translate('创建人'); $data = []; // - ProjectTask::whereNull('complete_at') + ProjectTask::with(['taskTag']) + ->whereNull('complete_at') ->whereNotNull('end_at') ->where('end_at', '<=', Carbon::now()) ->orderBy('end_at') @@ -1502,11 +1508,14 @@ class ProjectController extends AbstractController $task->parent_id ?: '-', Base::filterEmoji($task->project?->name) ?: '-', Base::filterEmoji($task->name), + $task->taskTag->map(function ($tag) { + return Base::filterEmoji($tag->name); + })->join(', ') ?: '-', $task->start_at ?: '-', $task->end_at ?: '-', $planTime, $overTime, - implode("、", $ownerNames), + implode(', ', $ownerNames), Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})", ]; } diff --git a/resources/assets/js/pages/manage/components/ProjectTaskTag/add.vue b/resources/assets/js/pages/manage/components/ProjectTaskTag/add.vue index b5c483e1e..50e6d00ae 100644 --- a/resources/assets/js/pages/manage/components/ProjectTaskTag/add.vue +++ b/resources/assets/js/pages/manage/components/ProjectTaskTag/add.vue @@ -58,6 +58,12 @@ import Tags from "./tags.vue"; export default { name: "TaskTagAdd", components: {Tags}, + props: { + projectId: { + type: [Number, String], + required: true + } + }, data() { return { loadIng: 0, @@ -89,11 +95,25 @@ export default { } }, methods: { - onOpen(tag) { + onOpen(tag = null) { + if (tag === null) { + tag = this.getEmptyTag() + } this.editingTag = { ...tag } this.showEditModal = true }, + // 获取空标签对象 + getEmptyTag() { + return { + id: null, + project_id: this.projectId, + name: '', + desc: '', + color: '' + } + }, + // 保存标签 async handleSave() { if (!this.editingTag.name) { @@ -118,7 +138,7 @@ export default { const results = await Promise.all(savePromises) $A.messageSuccess(results.length === 1 ? results[0].msg : '全部保存成功') this.showEditModal = false - this.$emit('on-save') + this.$emit('on-save', results) } catch (error) { $A.messageError(error.msg || '保存失败') } diff --git a/resources/assets/js/pages/manage/components/ProjectTaskTag/index.vue b/resources/assets/js/pages/manage/components/ProjectTaskTag/index.vue index 08288e70a..765207b6e 100644 --- a/resources/assets/js/pages/manage/components/ProjectTaskTag/index.vue +++ b/resources/assets/js/pages/manage/components/ProjectTaskTag/index.vue @@ -7,7 +7,7 @@
-
@@ -16,7 +16,7 @@
{{$L('当前项目暂无任务标签')}}
- +
@@ -27,7 +27,7 @@
{{ item.desc }}
-
- - + +
@@ -73,17 +73,6 @@ export default { this.loadTags() }, methods: { - // 获取空标签对象 - getEmptyTag() { - return { - id: null, - project_id: this.projectId, - name: '', - desc: '', - color: '' - } - }, - // 加载标签列表 async loadTags() { this.loadIng++ @@ -103,13 +92,8 @@ export default { } }, - // 新建标签 - handleAdd() { - this.$refs.addTag.onOpen(this.getEmptyTag()) - }, - - // 编辑标签 - handleEdit(tag) { + // 新建、编辑标签 + handleAdd(tag) { this.$refs.addTag.onOpen(tag) }, diff --git a/resources/assets/js/pages/manage/components/ProjectTaskTag/select.vue b/resources/assets/js/pages/manage/components/ProjectTaskTag/select.vue index ef1679a70..a8b959d4b 100644 --- a/resources/assets/js/pages/manage/components/ProjectTaskTag/select.vue +++ b/resources/assets/js/pages/manage/components/ProjectTaskTag/select.vue @@ -48,7 +48,7 @@