diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index e669e98b..4e7c8cea 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\Api; +use App\Models\ProjectTask; +use App\Models\ProjectTaskFile; use App\Models\User; use App\Models\WebSocketDialog; use App\Models\WebSocketDialogMsg; @@ -247,11 +249,36 @@ class DialogController extends AbstractController if (Base::isError($data)) { return Base::retError($data['msg']); } else { - $msg = $data['data']; - $msg['thumb'] = Base::unFillUrl($msg['thumb']); - $msg['size'] *= 1024; + $fileData = $data['data']; + $fileData['thumb'] = Base::unFillUrl($fileData['thumb']); + $fileData['size'] *= 1024; // - return WebSocketDialogMsg::sendMsg($dialog_id, 'file', $msg, $user->userid, $extra_int, $extra_str); + if ($dialog->type === 'group') { + if ($dialog->group_type === 'task') { + $task = ProjectTask::whereDialogId($dialog->id)->first(); + if ($task) { + $file = ProjectTaskFile::createInstance([ + 'project_id' => $task->project_id, + 'task_id' => $task->id, + 'name' => $fileData['name'], + 'size' => $fileData['size'], + 'ext' => $fileData['ext'], + 'path' => $fileData['path'], + 'thumb' => $fileData['thumb'], + 'userid' => $user->userid, + ]); + $file->save(); + } + } + } + // + $result = WebSocketDialogMsg::sendMsg($dialog_id, 'file', $fileData, $user->userid, $extra_int, $extra_str); + if (Base::isSuccess($result)) { + if (isset($task)) { + $result['data']['task_id'] = $task->id; + } + } + return $result; } } diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index bf1ac009..36d448fb 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -163,7 +163,7 @@ class WebSocketDialogMsg extends AbstractModel $task = new WebSocketDialogMsgTask($userids, $dialogMsg->toArray()); Task::deliver($task); // - return Base::retSuccess('发送成功', $dialogMsg); + return Base::retSuccess('发送成功', $dialogMsg->toArray()); }); } diff --git a/resources/assets/js/pages/manage/components/DialogUpload.vue b/resources/assets/js/pages/manage/components/DialogUpload.vue index 011d38bb..2ef539b0 100644 --- a/resources/assets/js/pages/manage/components/DialogUpload.vue +++ b/resources/assets/js/pages/manage/components/DialogUpload.vue @@ -59,6 +59,9 @@ export default { if (res.ret === 1) { file.data = res.data; this.$emit('on-success', file); + if (res.data.task_id) { + this.$store.dispatch("getTaskFiles", res.data.task_id) + } } else { $A.modalWarning({ title: '发送失败', diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 1d20db73..3ae58587 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -39,6 +39,8 @@ :rows="1" :autosize="{ minRows: 1, maxRows: 3 }" :maxlength="255" + @on-focus="onEventFocus" + @on-blur="onEventblur" @on-keydown="chatKeydown" @on-input-paste="pasteDrag" :placeholder="$L('输入消息...')" /> @@ -141,13 +143,10 @@ export default { text: this.msgText, }, }).then(({data}) => { - this.$store.dispatch("dialogMsgSplice", {id: tempId, data}); + this.$store.dispatch("dialogMsgUpdate", {id: tempId, data}); }).catch(({msg}) => { - $A.modalWarning({ - title: '发送失败', - content: msg - }); - this.$store.dispatch("dialogMsgSplice", {id: tempId}); + $A.modalError(msg); + this.$store.dispatch("dialogMsgUpdate", {id: tempId}); }); // this.msgText = ''; @@ -214,11 +213,11 @@ export default { break; case 'error': - this.$store.dispatch("dialogMsgSplice", {id: file.tempId}); + this.$store.dispatch("dialogMsgUpdate", {id: file.tempId}); break; case 'success': - this.$store.dispatch("dialogMsgSplice", {id: file.tempId, data: file.data}); + this.$store.dispatch("dialogMsgUpdate", {id: file.tempId, data: file.data}); break; } }, @@ -248,6 +247,14 @@ export default { this.goBottom(); }, + onEventFocus(e) { + this.$emit("on-focus", e) + }, + + onEventblur(e) { + this.$emit("on-blur", e) + }, + formatTime(date) { let time = Math.round(new Date(date).getTime() / 1000), string = ''; diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 4c4fd7ab..91ed75fa 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -8,7 +8,7 @@ -