diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 72cd19ca..01abb7ec 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -52,6 +52,7 @@ class WebSocketDialog extends AbstractModel $dialog->people = $builder->count(); // 对方信息 $dialog->dialog_user = null; + $dialog->group_info = null; switch ($dialog->type) { case "user": $dialog_user = $builder->where('userid', '!=', $userid)->first(); @@ -60,9 +61,11 @@ class WebSocketDialog extends AbstractModel break; case "group": if ($dialog->group_type === 'project') { - $dialog->name = Project::whereDialogId($dialog->id)->value('name'); + $dialog->group_info = Project::select(['id', 'name'])->whereDialogId($dialog->id)->first(); + $dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; } elseif ($dialog->group_type === 'task') { - $dialog->name = ProjectTask::whereDialogId($dialog->id)->value('name'); + $dialog->group_info = ProjectTask::select(['id', 'name'])->whereDialogId($dialog->id)->first(); + $dialog->name = $dialog->group_info ? $dialog->group_info->name : ''; } break; } diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 3ae58587..f7394f60 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -6,8 +6,18 @@ @dragleave.prevent="chatDragOver(false, $event)">
-

{{dialogDetail.name}}

- ({{peopleNum}}) +
+

{{dialogDetail.name}}

+ ({{peopleNum}}) +
+
diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 91ed75fa..89d01d81 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -49,14 +49,13 @@ -
- +
+
{{$L('选择一个会话开始聊天')}}
-
@@ -140,6 +139,7 @@ export default { openContacts(user) { this.$store.dispatch("openDialogUserid", user.userid); this.tabActive = 'dialog'; + this.scrollIntoActive(); }, getContactsList() { @@ -219,7 +219,7 @@ export default { let active = this.$refs.list.querySelector(".active") if (active) { scrollIntoView(active, { - behavior: 'smooth', + behavior: 'instant', scrollMode: 'if-needed', }); } diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 618dfe5f..0ff7da80 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -510,26 +510,25 @@ export default { if (state.projectChatShow) { dispatch("toggleBoolean", "projectChatShow"); } - state.dialogId = 0; // - let data = {id: task_id}; + let data = state.method.isJson(task_id) ? task_id : {id: task_id}; state.projectDetail.project_column.some(({project_task}) => { - const task = project_task.find(({id}) => id === task_id); + const task = project_task.find(({id}) => id === data.id); if (task) { data = Object.assign(data, task); return true } }); // - data.content = state.projectTaskContent[task_id] || "" - data.files = state.projectTaskFiles[task_id] || [] - data.sub_task = state.projectSubTask[task_id] || [] + data.content = state.projectTaskContent[data.id] || "" + data.files = state.projectTaskFiles[data.id] || [] + data.sub_task = state.projectSubTask[data.id] || [] // state.projectOpenTask = Object.assign({}, data, {_show: true}); - dispatch("getTaskOne", task_id); - dispatch("getTaskContent", task_id); - dispatch("getTaskFiles", task_id); - dispatch("getSubTask", task_id); + dispatch("getTaskOne", data.id); + dispatch("getTaskContent", data.id); + dispatch("getTaskFiles", data.id); + dispatch("getSubTask", data.id); }, /** diff --git a/resources/assets/sass/pages/components/dialog-wrapper.scss b/resources/assets/sass/pages/components/dialog-wrapper.scss index 3806c532..98a33b57 100644 --- a/resources/assets/sass/pages/components/dialog-wrapper.scss +++ b/resources/assets/sass/pages/components/dialog-wrapper.scss @@ -10,25 +10,53 @@ z-index: 1; .dialog-title { display: flex; - align-items: center; - padding: 0 32px; - margin-top: 20px; - > h2 { - font-size: 18px; - font-weight: 600; + flex-direction: column; + justify-content: center; + padding: 0 30px; + height: 68px; + position: relative; + &:after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: #f2f2f2; } - > em { - font-style: normal; - font-size: 17px; - font-weight: 500; - padding-left: 6px; + .main-title { + display: flex; + align-items: center; + line-height: 22px; + > h2 { + font-size: 18px; + font-weight: 600; + } + > em { + font-style: normal; + font-size: 17px; + font-weight: 500; + padding-left: 6px; + } + } + .sub-title { + flex-shrink: 0; + font-size: 12px; + line-height: 20px; + margin-top: 2px; + color: #aaaaaa; + &.pointer { + cursor: pointer; + &:hover { + color: #888888; + } + } } } .dialog-scroller { position: relative; flex: 1; padding: 0 32px; - margin-top: 18px; overflow: auto; .dialog-list { > ul { @@ -38,6 +66,9 @@ align-items: flex-end; list-style: none; margin-bottom: 16px; + &:first-child { + margin-top: 16px; + } .dialog-avatar { position: relative; margin-bottom: 20px; diff --git a/resources/assets/sass/pages/page-messenger.scss b/resources/assets/sass/pages/page-messenger.scss index 9edc3dcf..1c362487 100644 --- a/resources/assets/sass/pages/page-messenger.scss +++ b/resources/assets/sass/pages/page-messenger.scss @@ -94,6 +94,7 @@ } .dialog-box { flex: 1; + width: 0; display: flex; flex-direction: column; padding-left: 12px;