diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php index a1965571..079e75a3 100755 --- a/app/Http/Controllers/Api/ProjectController.php +++ b/app/Http/Controllers/Api/ProjectController.php @@ -703,6 +703,7 @@ class ProjectController extends AbstractController $task = ProjectTask::userTask($task_id); // $updateComplete = false; + $updateContent = false; if (Base::isDate($data['complete_at'])) { // 标记已完成 if ($task->complete_at) { @@ -719,11 +720,12 @@ class ProjectController extends AbstractController $updateComplete = true; } else { // 更新任务 - $result = $task->updateTask($data); + $result = $task->updateTask($data, $updateContent); } if (Base::isSuccess($result)) { $result['data'] = $task->toArray(); $result['data']['is_update_complete'] = $updateComplete; + $result['data']['is_update_content'] = $updateContent; $task->pushMsg('update', $result['data']); } return $result; @@ -814,7 +816,9 @@ class ProjectController extends AbstractController if (empty($task->dialog_id)) { return Base::retError('创建聊天失败'); } + $task->pushMsg('dialog'); return Base::retSuccess('success', [ + 'id' => $task->id, 'dialog_id' => $task->dialog_id, ]); }); diff --git a/app/Models/ProjectTask.php b/app/Models/ProjectTask.php index 95140009..9b60a45a 100644 --- a/app/Models/ProjectTask.php +++ b/app/Models/ProjectTask.php @@ -347,11 +347,12 @@ class ProjectTask extends AbstractModel /** * 修改任务 * @param $data + * @param $updateContent * @return array */ - public function updateTask($data) + public function updateTask($data, &$updateContent) { - return AbstractModel::transaction(function () use ($data) { + return AbstractModel::transaction(function () use ($data, &$updateContent) { // 标题 if (Arr::exists($data, 'name') && $this->name != $data['name']) { if (empty($data['name'])) { @@ -436,6 +437,7 @@ class ProjectTask extends AbstractModel ]); $this->desc = Base::getHtml($data['content']); $this->addLog("修改任务详细描述"); + $updateContent = true; } // 优先级 $p = false; @@ -624,7 +626,7 @@ class ProjectTask extends AbstractModel /** * 推送消息 * @param string $action - * @param array $data 发送内容,默认为[id, parent_id, project_id, column_id] + * @param array $data 发送内容,默认为[id, parent_id, project_id, column_id, dialog_id] * @param array $userid 指定会员,默认为项目所有成员 */ public function pushMsg($action, $data = null, $userid = null) @@ -638,6 +640,7 @@ class ProjectTask extends AbstractModel 'parent_id' => $this->parent_id, 'project_id' => $this->project_id, 'column_id' => $this->column_id, + 'dialog_id' => $this->dialog_id, ]; } if ($userid === null) { diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index 499b78a3..3ab6edeb 100644 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -996,12 +996,8 @@ export default { task_id: this.taskDetail.id, }, }).then(({data}) => { - this.$store.dispatch("saveTask", { - id: this.taskDetail.id, - dialog_id: data.dialog_id - }); + this.$store.commit("taskDialogSuccess", data); this.$nextTick(() => { - this.$store.dispatch("getDialogMsgList", data.dialog_id); this.$refs.dialog.sendMsg(this.msgText); this.msgText = ""; }); diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 4b48fb64..b8558a83 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -685,7 +685,15 @@ export default { data: post, method: 'post', }).then(result => { - commit("taskUpdateSuccess", result.data) + const {data} = result; + if (data.is_update_content === true) { + state.projectTaskContent[data.id] = post['content']; + if (data.id == state.projectOpenTask.id) { + state.projectOpenTask = Object.assign({}, state.projectOpenTask, {content: post['content']}); + } + data.is_update_content = false; + } + commit("taskUpdateSuccess", data) resolve(result) }).catch(result => { dispatch("getTaskBasic", post.task_id); @@ -1169,6 +1177,9 @@ export default { case 'upload': commit("taskUploadSuccess", data) break; + case 'dialog': + commit("taskDialogSuccess", data) + break; case 'archived': case 'delete': commit("taskDeleteSuccess", data) diff --git a/resources/assets/js/store/mutations.js b/resources/assets/js/store/mutations.js index 2cc6f7b5..0558ee9c 100644 --- a/resources/assets/js/store/mutations.js +++ b/resources/assets/js/store/mutations.js @@ -102,9 +102,12 @@ export default { if (data.parent_id) { this.dispatch("getTaskBasic", data.parent_id); } - if (data.is_update_complete) { + if (data.is_update_complete === true) { this.dispatch("getProjectBasic", {id: data.project_id}); } + if (data.is_update_content === true) { + this.dispatch("getTaskContent", data.id); + } this.dispatch("saveTask", data); }, @@ -138,6 +141,16 @@ export default { }); }, + /** + * 任务打开聊天 + * @param state + * @param data + */ + taskDialogSuccess(state, data) { + this.dispatch("saveTask", data); + this.dispatch("getDialogMsgList", data.dialog_id); + }, + /** * 删除任务 * @param state