From d12fb47902adced6debcfb8ffec0e8d16e7d3c11 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 15 Dec 2023 11:45:55 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=98=85=E8=AF=BB=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Models/WebSocketDialog.php | 14 +- package.json | 2 +- public/manifest.json | 338 +++++++++--------- .../js/pages/manage/components/DialogItem.vue | 11 +- .../pages/manage/components/DialogWrapper.vue | 48 +-- resources/assets/js/store/actions.js | 1 - .../sass/pages/components/dialog-wrapper.scss | 2 +- resources/mobile | 2 +- 8 files changed, 217 insertions(+), 201 deletions(-) diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 1fd288810..8dbcbcd2a 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -214,12 +214,14 @@ class WebSocketDialog extends AbstractModel if ($positionData) { $array = []; // @我的消息 - if ($this->mention > 0 - && $mention_id = intval($builder->clone()->whereMention(1)->orderByDesc('msg_id')->value('msg_id'))) { - $array[] = [ - 'msg_id' => $mention_id, - 'label' => Doo::translate('@我的消息'), - ]; + if ($this->mention > 0) { + $list = $builder->clone()->whereMention(1)->orderByDesc('msg_id')->take(20)->get(); + foreach ($list as $item) { + $array[] = [ + 'msg_id' => $item->msg_id, + 'label' => Doo::translate('@我的消息'), + ]; + } } // 最早一条未读消息 if ($this->unread > 0 diff --git a/package.json b/package.json index 1a55b87d2..0bdff025b 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "vue-resize-observer": "^2.0.16", "vue-router": "^3.6.5", "vue-template-compiler": "~2.6.14", - "vue-virtual-scroll-list-hi": "^2.3.5-3", + "vue-virtual-scroll-list-hi": "^2.3.5-5", "vuedraggable": "^2.24.3", "vuex": "^3.6.2" }, diff --git a/public/manifest.json b/public/manifest.json index ce9ec0686..c02dda7c6 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@ { "resources/assets/js/app.js": { - "file": "js/build/app.f90c9e3e.js", + "file": "js/build/app.5409cfd4.js", "src": "resources/assets/js/app.js", "isEntry": true, "dynamicImports": [ @@ -48,7 +48,7 @@ "node_modules/openpgp_hi/dist/lightweight/elliptic.min.mjs" ], "css": [ - "js/build/app.4018ad27.css" + "js/build/app.203ef42d.css" ], "assets": [ "js/build/iconfont.01196938.eot", @@ -116,7 +116,7 @@ ] }, "resources/assets/js/pages/index.vue": { - "file": "js/build/index.72268b14.js", + "file": "js/build/index.ba08cbdf.js", "src": "resources/assets/js/pages/index.vue", "isDynamicEntry": true, "imports": [ @@ -124,7 +124,7 @@ ] }, "resources/assets/js/pages/pro.vue": { - "file": "js/build/pro.bce5602e.js", + "file": "js/build/pro.ffd25679.js", "src": "resources/assets/js/pages/pro.vue", "isDynamicEntry": true, "imports": [ @@ -132,72 +132,72 @@ ] }, "resources/assets/js/pages/meeting.vue": { - "file": "js/build/meeting.ae0be743.js", + "file": "js/build/meeting.f8356dcc.js", "src": "resources/assets/js/pages/meeting.vue", "isDynamicEntry": true, "imports": [ - "_MeetingManager.157a8e79.js", + "_MeetingManager.4a237ffc.js", "resources/assets/js/app.js", - "_UserSelect.d40f773b.js" + "_UserSelect.fc698a23.js" ] }, - "_MeetingManager.157a8e79.js": { - "file": "js/build/MeetingManager.157a8e79.js", + "_MeetingManager.4a237ffc.js": { + "file": "js/build/MeetingManager.4a237ffc.js", "imports": [ "resources/assets/js/app.js", - "_UserSelect.d40f773b.js" + "_UserSelect.fc698a23.js" ] }, - "_UserSelect.d40f773b.js": { - "file": "js/build/UserSelect.d40f773b.js", + "_UserSelect.fc698a23.js": { + "file": "js/build/UserSelect.fc698a23.js", "imports": [ "resources/assets/js/app.js" ] }, "resources/assets/js/pages/manage.vue": { - "file": "js/build/manage.7bf30da2.js", + "file": "js/build/manage.35592a25.js", "src": "resources/assets/js/pages/manage.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_CheckinExport.b761a223.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_TaskDetail.70752a8f.js", - "_MeetingManager.157a8e79.js", + "_CheckinExport.9729a10a.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_TaskDetail.5750bc27.js", + "_MeetingManager.4a237ffc.js", "_longpress.43ca7fd9.js", - "_DialogWrapper.9bf66877.js", - "_ApproveExport.e429e543.js", - "_MicroApps.ba6f1ab6.js", - "_tip.c844ed98.js", - "_ReportEdit.637b895d.js", - "_ReportDetail.45324fdd.js", - "_ProjectLog.ae5859ae.js", - "_TaskMenu.324341d9.js", + "_DialogWrapper.e8834ea0.js", + "_ApproveExport.f86f20f6.js", + "_MicroApps.a7e8f75b.js", + "_tip.a932c7b9.js", + "_ReportEdit.5e7f1c59.js", + "_ReportDetail.9da2d191.js", + "_ProjectLog.835bf72b.js", + "_TaskMenu.15d0cd0e.js", "resources/assets/js/components/TEditor.vue", - "_ImgUpload.04f949c6.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue" ], "css": [ "js/build/manage.5dc9aad0.css" ] }, - "_CheckinExport.b761a223.js": { - "file": "js/build/CheckinExport.b761a223.js", + "_CheckinExport.9729a10a.js": { + "file": "js/build/CheckinExport.9729a10a.js", "imports": [ - "_UserSelect.d40f773b.js", - "_tip.c844ed98.js", + "_UserSelect.fc698a23.js", + "_tip.a932c7b9.js", "resources/assets/js/app.js", - "_ReportEdit.637b895d.js", - "_ReportDetail.45324fdd.js", - "_index.7b8784ed.js" + "_ReportEdit.5e7f1c59.js", + "_ReportDetail.9da2d191.js", + "_index.db7e91f3.js" ], "css": [ "js/build/ApproveExport.d0d486d1.css" ] }, - "_index.7b8784ed.js": { - "file": "js/build/index.7b8784ed.js", + "_index.db7e91f3.js": { + "file": "js/build/index.db7e91f3.js", "imports": [ "resources/assets/js/app.js" ] @@ -205,8 +205,8 @@ "_longpress.43ca7fd9.js": { "file": "js/build/longpress.43ca7fd9.js" }, - "_ApproveExport.e429e543.js": { - "file": "js/build/ApproveExport.e429e543.js", + "_ApproveExport.f86f20f6.js": { + "file": "js/build/ApproveExport.f86f20f6.js", "imports": [ "resources/assets/js/app.js" ], @@ -214,170 +214,170 @@ "js/build/ApproveExport.d0d486d1.css" ] }, - "_MicroApps.ba6f1ab6.js": { - "file": "js/build/MicroApps.ba6f1ab6.js", + "_MicroApps.a7e8f75b.js": { + "file": "js/build/MicroApps.a7e8f75b.js", "imports": [ "resources/assets/js/app.js", - "_DialogWrapper.9bf66877.js", - "_UserSelect.d40f773b.js" + "_DialogWrapper.e8834ea0.js", + "_UserSelect.fc698a23.js" ] }, - "_tip.c844ed98.js": { - "file": "js/build/tip.c844ed98.js", + "_tip.a932c7b9.js": { + "file": "js/build/tip.a932c7b9.js", "imports": [ "resources/assets/js/app.js" ] }, - "_TaskDetail.70752a8f.js": { - "file": "js/build/TaskDetail.70752a8f.js", + "_TaskDetail.5750bc27.js": { + "file": "js/build/TaskDetail.5750bc27.js", "imports": [ "resources/assets/js/app.js", - "_ProjectLog.ae5859ae.js", - "_DialogWrapper.9bf66877.js", - "_TaskMenu.324341d9.js", - "_UserSelect.d40f773b.js", + "_ProjectLog.835bf72b.js", + "_DialogWrapper.e8834ea0.js", + "_TaskMenu.15d0cd0e.js", + "_UserSelect.fc698a23.js", "resources/assets/js/components/TEditor.vue" ], "css": [ "js/build/TaskDetail.6f25b368.css" ] }, - "_ReportEdit.637b895d.js": { - "file": "js/build/ReportEdit.637b895d.js", + "_ReportEdit.5e7f1c59.js": { + "file": "js/build/ReportEdit.5e7f1c59.js", "imports": [ "resources/assets/js/app.js", - "_UserSelect.d40f773b.js" + "_UserSelect.fc698a23.js" ], "dynamicImports": [ "resources/assets/js/components/TEditor.vue" ] }, - "_ReportDetail.45324fdd.js": { - "file": "js/build/ReportDetail.45324fdd.js", + "_ReportDetail.9da2d191.js": { + "file": "js/build/ReportDetail.9da2d191.js", "imports": [ "resources/assets/js/app.js" ] }, - "_DialogWrapper.9bf66877.js": { - "file": "js/build/DialogWrapper.9bf66877.js", + "_DialogWrapper.e8834ea0.js": { + "file": "js/build/DialogWrapper.e8834ea0.js", "imports": [ "resources/assets/js/app.js", "_longpress.43ca7fd9.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_ImgUpload.04f949c6.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue", - "_tip.c844ed98.js" + "_tip.a932c7b9.js" ], "css": [ "js/build/DialogWrapper.c6b17693.css" ] }, "resources/assets/js/components/TEditor.vue": { - "file": "js/build/TEditor.c974c127.js", + "file": "js/build/TEditor.0634d394.js", "src": "resources/assets/js/components/TEditor.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_ImgUpload.04f949c6.js" + "_ImgUpload.9035f0af.js" ] }, - "_ImgUpload.04f949c6.js": { - "file": "js/build/ImgUpload.04f949c6.js", + "_ImgUpload.9035f0af.js": { + "file": "js/build/ImgUpload.9035f0af.js", "imports": [ "resources/assets/js/app.js" ] }, "resources/assets/js/pages/manage/approve/details.vue": { - "file": "js/build/details.8c149a54.js", + "file": "js/build/details.a34ff538.js", "src": "resources/assets/js/pages/manage/approve/details.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_ImgUpload.04f949c6.js" + "_ImgUpload.9035f0af.js" ] }, - "_ProjectLog.ae5859ae.js": { - "file": "js/build/ProjectLog.ae5859ae.js", + "_ProjectLog.835bf72b.js": { + "file": "js/build/ProjectLog.835bf72b.js", "imports": [ "resources/assets/js/app.js" ] }, - "_TaskMenu.324341d9.js": { - "file": "js/build/TaskMenu.324341d9.js", + "_TaskMenu.15d0cd0e.js": { + "file": "js/build/TaskMenu.15d0cd0e.js", "imports": [ "resources/assets/js/app.js" ] }, "resources/assets/js/pages/manage/dashboard.vue": { - "file": "js/build/dashboard.c9157605.js", + "file": "js/build/dashboard.880ebf74.js", "src": "resources/assets/js/pages/manage/dashboard.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_TaskMenu.324341d9.js" + "_TaskMenu.15d0cd0e.js" ] }, "resources/assets/js/pages/manage/calendar.vue": { - "file": "js/build/calendar.5fd95f30.js", + "file": "js/build/calendar.784ab4c7.js", "src": "resources/assets/js/pages/manage/calendar.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_TaskMenu.324341d9.js" + "_TaskMenu.15d0cd0e.js" ], "css": [ "js/build/calendar.05643a5b.css" ] }, "resources/assets/js/pages/manage/messenger.vue": { - "file": "js/build/messenger.59db367d.js", + "file": "js/build/messenger.b5389b4b.js", "src": "resources/assets/js/pages/manage/messenger.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_DialogWrapper.9bf66877.js", + "_DialogWrapper.e8834ea0.js", "_longpress.43ca7fd9.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_ImgUpload.04f949c6.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue", - "_tip.c844ed98.js" + "_tip.a932c7b9.js" ] }, "resources/assets/js/pages/manage/approve/index.vue": { - "file": "js/build/index.28620c70.js", + "file": "js/build/index.af308100.js", "src": "resources/assets/js/pages/manage/approve/index.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", "resources/assets/js/pages/manage/approve/details.vue", - "_index.7b8784ed.js", - "_ImgUpload.04f949c6.js", - "_ApproveExport.e429e543.js" + "_index.db7e91f3.js", + "_ImgUpload.9035f0af.js", + "_ApproveExport.f86f20f6.js" ], "css": [ "js/build/index.bc7e59ad.css" ] }, "resources/assets/js/pages/manage/apps.vue": { - "file": "js/build/apps.5a428470.js", + "file": "js/build/apps.a33cd382.js", "src": "resources/assets/js/pages/manage/apps.vue", "isDynamicEntry": true, "imports": [ - "_MicroApps.ba6f1ab6.js", + "_MicroApps.a7e8f75b.js", "resources/assets/js/app.js", - "_DialogWrapper.9bf66877.js", + "_DialogWrapper.e8834ea0.js", "_longpress.43ca7fd9.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_ImgUpload.04f949c6.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue", - "_tip.c844ed98.js" + "_tip.a932c7b9.js" ] }, "resources/assets/js/pages/manage/setting/index.vue": { - "file": "js/build/index.3a1e01b3.js", + "file": "js/build/index.4daa3a72.js", "src": "resources/assets/js/pages/manage/setting/index.vue", "isDynamicEntry": true, "imports": [ @@ -385,16 +385,16 @@ ] }, "resources/assets/js/pages/manage/setting/personal.vue": { - "file": "js/build/personal.306004e9.js", + "file": "js/build/personal.3fd4ac42.js", "src": "resources/assets/js/pages/manage/setting/personal.vue", "isDynamicEntry": true, "imports": [ - "_ImgUpload.04f949c6.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/app.js" ] }, "resources/assets/js/pages/manage/setting/checkin.vue": { - "file": "js/build/checkin.e200b6a6.js", + "file": "js/build/checkin.0cc797b0.js", "src": "resources/assets/js/pages/manage/setting/checkin.vue", "isDynamicEntry": true, "imports": [ @@ -405,7 +405,7 @@ ] }, "resources/assets/js/pages/manage/setting/language.vue": { - "file": "js/build/language.d1d967de.js", + "file": "js/build/language.fab38241.js", "src": "resources/assets/js/pages/manage/setting/language.vue", "isDynamicEntry": true, "imports": [ @@ -413,7 +413,7 @@ ] }, "resources/assets/js/pages/manage/setting/theme.vue": { - "file": "js/build/theme.b7d7f448.js", + "file": "js/build/theme.241d832b.js", "src": "resources/assets/js/pages/manage/setting/theme.vue", "isDynamicEntry": true, "imports": [ @@ -421,7 +421,7 @@ ] }, "resources/assets/js/pages/manage/setting/keyboard.vue": { - "file": "js/build/keyboard.cd5a5a82.js", + "file": "js/build/keyboard.56baf60f.js", "src": "resources/assets/js/pages/manage/setting/keyboard.vue", "isDynamicEntry": true, "imports": [ @@ -432,7 +432,7 @@ ] }, "resources/assets/js/pages/manage/setting/license.vue": { - "file": "js/build/license.adfb3b62.js", + "file": "js/build/license.a90ee4e8.js", "src": "resources/assets/js/pages/manage/setting/license.vue", "isDynamicEntry": true, "imports": [ @@ -443,7 +443,7 @@ ] }, "resources/assets/js/pages/manage/setting/password.vue": { - "file": "js/build/password.cf86c416.js", + "file": "js/build/password.b6911dd9.js", "src": "resources/assets/js/pages/manage/setting/password.vue", "isDynamicEntry": true, "imports": [ @@ -451,7 +451,7 @@ ] }, "resources/assets/js/pages/manage/setting/email.vue": { - "file": "js/build/email.92d646f2.js", + "file": "js/build/email.070d379a.js", "src": "resources/assets/js/pages/manage/setting/email.vue", "isDynamicEntry": true, "imports": [ @@ -459,7 +459,7 @@ ] }, "resources/assets/js/pages/manage/setting/system.vue": { - "file": "js/build/system.9b76f592.js", + "file": "js/build/system.15ded426.js", "src": "resources/assets/js/pages/manage/setting/system.vue", "isDynamicEntry": true, "imports": [ @@ -467,7 +467,7 @@ ] }, "resources/assets/js/pages/manage/setting/delete.vue": { - "file": "js/build/delete.013df486.js", + "file": "js/build/delete.ac3f9fc7.js", "src": "resources/assets/js/pages/manage/setting/delete.vue", "isDynamicEntry": true, "imports": [ @@ -475,7 +475,7 @@ ] }, "resources/assets/js/pages/manage/projectInvite.vue": { - "file": "js/build/projectInvite.e05a8b5c.js", + "file": "js/build/projectInvite.da838910.js", "src": "resources/assets/js/pages/manage/projectInvite.vue", "isDynamicEntry": true, "imports": [ @@ -486,32 +486,32 @@ ] }, "resources/assets/js/pages/manage/project.vue": { - "file": "js/build/project.026a35fe.js", + "file": "js/build/project.5a0dc780.js", "src": "resources/assets/js/pages/manage/project.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_ProjectLog.ae5859ae.js", - "_TaskMenu.324341d9.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_tip.c844ed98.js", - "_DialogWrapper.9bf66877.js", + "_ProjectLog.835bf72b.js", + "_TaskMenu.15d0cd0e.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_tip.a932c7b9.js", + "_DialogWrapper.e8834ea0.js", "_longpress.43ca7fd9.js", - "_ImgUpload.04f949c6.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue" ] }, "resources/assets/js/pages/manage/file.vue": { - "file": "js/build/file.3486bcca.js", + "file": "js/build/file.4a53d04e.js", "src": "resources/assets/js/pages/manage/file.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_index.7b8784ed.js", + "_index.db7e91f3.js", "_longpress.43ca7fd9.js", - "_UserSelect.d40f773b.js", - "_tip.c844ed98.js" + "_UserSelect.fc698a23.js", + "_tip.a932c7b9.js" ], "dynamicImports": [ "resources/assets/js/pages/manage/components/FilePreview.vue", @@ -519,27 +519,27 @@ ] }, "resources/assets/js/pages/manage/application.vue": { - "file": "js/build/application.cbd2048a.js", + "file": "js/build/application.ad2edf95.js", "src": "resources/assets/js/pages/manage/application.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_CheckinExport.b761a223.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_CheckinExport.9729a10a.js", "resources/assets/js/pages/manage/setting/checkin.vue", - "_tip.c844ed98.js", - "_ReportEdit.637b895d.js", - "_ReportDetail.45324fdd.js" + "_tip.a932c7b9.js", + "_ReportEdit.5e7f1c59.js", + "_ReportDetail.9da2d191.js" ] }, "resources/assets/js/pages/single/fileMsg.vue": { - "file": "js/build/fileMsg.472083af.js", + "file": "js/build/fileMsg.b534fc7f.js", "src": "resources/assets/js/pages/single/fileMsg.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "dynamicImports": [ "resources/assets/js/components/MDEditor/preview.js", @@ -553,19 +553,19 @@ "js/build/fileMsg.1a0b76dd.css" ] }, - "_IFrame.57e1db4e.js": { - "file": "js/build/IFrame.57e1db4e.js", + "_IFrame.e69da9fb.js": { + "file": "js/build/IFrame.e69da9fb.js", "imports": [ "resources/assets/js/app.js" ] }, "resources/assets/js/pages/single/fileTask.vue": { - "file": "js/build/fileTask.969f9d0e.js", + "file": "js/build/fileTask.11b1c96c.js", "src": "resources/assets/js/pages/single/fileTask.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "dynamicImports": [ "resources/assets/js/components/MDEditor/preview.js", @@ -580,26 +580,26 @@ ] }, "resources/assets/js/pages/single/file.vue": { - "file": "js/build/file.7572a2f7.js", + "file": "js/build/file.92abd50b.js", "src": "resources/assets/js/pages/single/file.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/pages/manage/components/FileContent.vue", "resources/assets/js/pages/manage/components/FilePreview.vue", "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "css": [ "js/build/file.1cbb23e7.css" ] }, "resources/assets/js/pages/manage/components/FileContent.vue": { - "file": "js/build/FileContent.88ecaebf.js", + "file": "js/build/FileContent.794ea4f7.js", "src": "resources/assets/js/pages/manage/components/FileContent.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "dynamicImports": [ "resources/assets/js/components/MDEditor/index.vue", @@ -615,12 +615,12 @@ ] }, "resources/assets/js/pages/manage/components/FilePreview.vue": { - "file": "js/build/FilePreview.37b36f26.js", + "file": "js/build/FilePreview.0bea6a67.js", "src": "resources/assets/js/pages/manage/components/FilePreview.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "dynamicImports": [ "resources/assets/js/components/MDEditor/preview.js", @@ -632,21 +632,21 @@ ] }, "resources/assets/js/pages/single/task.vue": { - "file": "js/build/task.263545f9.js", + "file": "js/build/task.d4a57dc0.js", "src": "resources/assets/js/pages/single/task.vue", "isDynamicEntry": true, "imports": [ - "_TaskDetail.70752a8f.js", + "_TaskDetail.5750bc27.js", "resources/assets/js/app.js", - "_ProjectLog.ae5859ae.js", - "_DialogWrapper.9bf66877.js", + "_ProjectLog.835bf72b.js", + "_DialogWrapper.e8834ea0.js", "_longpress.43ca7fd9.js", - "_index.7b8784ed.js", - "_UserSelect.d40f773b.js", - "_ImgUpload.04f949c6.js", + "_index.db7e91f3.js", + "_UserSelect.fc698a23.js", + "_ImgUpload.9035f0af.js", "resources/assets/js/pages/manage/approve/details.vue", - "_tip.c844ed98.js", - "_TaskMenu.324341d9.js", + "_tip.a932c7b9.js", + "_TaskMenu.15d0cd0e.js", "resources/assets/js/components/TEditor.vue" ], "css": [ @@ -654,7 +654,7 @@ ] }, "resources/assets/js/pages/single/validEmail.vue": { - "file": "js/build/validEmail.665124af.js", + "file": "js/build/validEmail.d522233d.js", "src": "resources/assets/js/pages/single/validEmail.vue", "isDynamicEntry": true, "imports": [ @@ -665,24 +665,24 @@ ] }, "resources/assets/js/pages/single/reportEdit.vue": { - "file": "js/build/reportEdit.b6b10e27.js", + "file": "js/build/reportEdit.55b1abac.js", "src": "resources/assets/js/pages/single/reportEdit.vue", "isDynamicEntry": true, "imports": [ - "_ReportEdit.637b895d.js", + "_ReportEdit.5e7f1c59.js", "resources/assets/js/app.js", - "_UserSelect.d40f773b.js" + "_UserSelect.fc698a23.js" ], "css": [ "js/build/reportEdit.5c397123.css" ] }, "resources/assets/js/pages/single/reportDetail.vue": { - "file": "js/build/reportDetail.cdd8b446.js", + "file": "js/build/reportDetail.2f5378a7.js", "src": "resources/assets/js/pages/single/reportDetail.vue", "isDynamicEntry": true, "imports": [ - "_ReportDetail.45324fdd.js", + "_ReportDetail.9da2d191.js", "resources/assets/js/app.js" ], "css": [ @@ -690,7 +690,7 @@ ] }, "resources/assets/js/pages/token.vue": { - "file": "js/build/token.93caa6d3.js", + "file": "js/build/token.48ad036f.js", "src": "resources/assets/js/pages/token.vue", "isDynamicEntry": true, "imports": [ @@ -701,7 +701,7 @@ ] }, "resources/assets/js/pages/login.vue": { - "file": "js/build/login.144dfbf1.js", + "file": "js/build/login.0f310630.js", "src": "resources/assets/js/pages/login.vue", "isDynamicEntry": true, "imports": [ @@ -709,7 +709,7 @@ ] }, "resources/assets/js/pages/404.vue": { - "file": "js/build/404.91f515ea.js", + "file": "js/build/404.2d7252e7.js", "src": "resources/assets/js/pages/404.vue", "isDynamicEntry": true, "imports": [ @@ -720,7 +720,7 @@ ] }, "resources/assets/js/components/PreviewImage/components/view.vue": { - "file": "js/build/view.0761fa35.js", + "file": "js/build/view.e615d973.js", "src": "resources/assets/js/components/PreviewImage/components/view.vue", "isDynamicEntry": true, "imports": [ @@ -731,7 +731,7 @@ ] }, "resources/assets/js/components/PreviewImage/components/swipe.vue": { - "file": "js/build/swipe.0152b3a7.js", + "file": "js/build/swipe.f4c84b15.js", "src": "resources/assets/js/components/PreviewImage/components/swipe.vue", "isDynamicEntry": true, "imports": [ @@ -755,7 +755,7 @@ "isDynamicEntry": true }, "node_modules/openpgp_hi/dist/lightweight/bn.interface.min.mjs": { - "file": "js/build/bn.interface.min.1505c2cc.js", + "file": "js/build/bn.interface.min.8a9c4b80.js", "src": "node_modules/openpgp_hi/dist/lightweight/bn.interface.min.mjs", "isDynamicEntry": true, "imports": [ @@ -764,7 +764,7 @@ ] }, "node_modules/openpgp_hi/dist/lightweight/bn.min.mjs": { - "file": "js/build/bn.min.34b06d10.js", + "file": "js/build/bn.min.6b534338.js", "src": "node_modules/openpgp_hi/dist/lightweight/bn.min.mjs", "isDynamicEntry": true, "imports": [ @@ -772,7 +772,7 @@ ] }, "node_modules/openpgp_hi/dist/lightweight/elliptic.min.mjs": { - "file": "js/build/elliptic.min.e8f0d006.js", + "file": "js/build/elliptic.min.4bbee5a6.js", "src": "node_modules/openpgp_hi/dist/lightweight/elliptic.min.mjs", "isDynamicEntry": true, "imports": [ @@ -781,7 +781,7 @@ ] }, "resources/assets/js/components/MDEditor/preview.js": { - "file": "js/build/preview.8e7cd4c6.js", + "file": "js/build/preview.fe3f86dc.js", "src": "resources/assets/js/components/MDEditor/preview.js", "isDynamicEntry": true, "imports": [ @@ -789,7 +789,7 @@ ] }, "resources/assets/js/components/AceEditor.vue": { - "file": "js/build/AceEditor.1ce688f0.js", + "file": "js/build/AceEditor.ca531066.js", "src": "resources/assets/js/components/AceEditor.vue", "isDynamicEntry": true, "imports": [ @@ -797,35 +797,35 @@ ] }, "resources/assets/js/components/OnlyOffice.vue": { - "file": "js/build/OnlyOffice.aabd49f9.js", + "file": "js/build/OnlyOffice.72a9482f.js", "src": "resources/assets/js/components/OnlyOffice.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "css": [ "js/build/OnlyOffice.97177ac3.css" ] }, "resources/assets/js/components/Drawio.vue": { - "file": "js/build/Drawio.997e27c4.js", + "file": "js/build/Drawio.3a6a22b1.js", "src": "resources/assets/js/components/Drawio.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_IFrame.57e1db4e.js" + "_IFrame.e69da9fb.js" ], "css": [ "js/build/Drawio.fc5c6326.css" ] }, "resources/assets/js/components/Minder.vue": { - "file": "js/build/Minder.a5032d4d.js", + "file": "js/build/Minder.d3c1fc05.js", "src": "resources/assets/js/components/Minder.vue", "isDynamicEntry": true, "imports": [ - "_IFrame.57e1db4e.js", + "_IFrame.e69da9fb.js", "resources/assets/js/app.js" ], "css": [ @@ -833,12 +833,12 @@ ] }, "resources/assets/js/components/MDEditor/index.vue": { - "file": "js/build/index.f691510c.js", + "file": "js/build/index.2058bed5.js", "src": "resources/assets/js/components/MDEditor/index.vue", "isDynamicEntry": true, "imports": [ "resources/assets/js/app.js", - "_ImgUpload.04f949c6.js" + "_ImgUpload.9035f0af.js" ], "css": [ "js/build/index.4d847d9e.css" diff --git a/resources/assets/js/pages/manage/components/DialogItem.vue b/resources/assets/js/pages/manage/components/DialogItem.vue index 99bb1e127..2c914d9b3 100644 --- a/resources/assets/js/pages/manage/components/DialogItem.vue +++ b/resources/assets/js/pages/manage/components/DialogItem.vue @@ -176,8 +176,17 @@ export default { if (this.$el.parentNode.classList.contains('inactive')) { return; } - // + // 标记已读 this.$store.dispatch("dialogMsgRead", this.source); + // 阅读最早未读消息之后如何还有未读信息则标记为已读 + if (this.isUnreadStart + && $A.getDialogUnread(this.dialogData, true) > 0) { + this.$store.dispatch("dialogMsgMark", { + dialog_id: this.source.dialog_id, + type: 'read', + after_msg_id: this.source.id, + }) + } }, formatTodoUser(data) { diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index e952ed949..90f5838e8 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -159,6 +159,7 @@ :estimate-size="dialogData.type=='group' ? 105 : 77" :keeps="25" :disabled="scrollDisabled" + @activity="onActivity" @scroll="onScroll" @range="onRange" @totop="onPrevPage" @@ -961,14 +962,21 @@ export default { }, positionMsg() { - const {unread, position_msgs} = this.dialogData + const {mention, unread, position_msgs} = this.dialogData if (!position_msgs || position_msgs.length === 0 || unread === 0 || this.allMsgs.length === 0) { return null } - const item = $A.cloneJSON(position_msgs[0]) + const item = $A.cloneJSON(position_msgs.find(item => { + if (mention === 0) { + return item.label === '{UNREAD}' + } + return true + })) if (item.label === '{UNREAD}') { - item.is_unread = unread > 1 item.label = this.$L(`未读消息${unread}条`) + item.is_unread = unread > 1 + } else { + item.is_unread = false } return item }, @@ -998,7 +1006,6 @@ export default { this.msgNew = 0 this.msgType = '' this.searchShow = false - this.msgReady = false this.unreadMsgId = 0 this.toBottomReGetMsg = false // @@ -1012,7 +1019,6 @@ export default { msg_type: this.msgType, }).then(_ => { this.openId = dialog_id; - this.onMsgReady() setTimeout(this.onSearchMsgId, 100) }).catch(_ => {}); // @@ -1465,21 +1471,6 @@ export default { return true }, - onMsgReady() { - let count = 0; - let offsetA = this.scrollInfo().offset - const func = () => { - const offsetB = this.scrollInfo().offset - if (++count > 10 || offsetA == offsetB) { - this.msgReady = true - return - } - offsetA = offsetB - setTimeout(func, 200); - } - setTimeout(func, 200); - }, - onSearchMsgId() { if (this.dialogSearchMsgId > 0 && this.openId === this.dialogId) { this.onPositionId(this.dialogSearchMsgId) @@ -2251,6 +2242,10 @@ export default { }) }, + onActivity(activity) { + this.msgReady = !activity + }, + onScroll(event) { if (this.operatePreventScroll === 0) { this.operateVisible = false; @@ -2987,8 +2982,19 @@ export default { if (this.positionLoad > 0) { return; } - // this.positionLoad++ + // + const positionMsgs = [] + this.dialogData.position_msgs.forEach(item => { + if (!this.allMsgs.find(({id}) => id == item.msg_id)?.read_at) { + positionMsgs.push(item) + } + }) + this.$store.dispatch("saveDialog", { + id: this.dialogData.id, + position_msgs: positionMsgs + }); + // const {msg_id} = this.positionMsg; this.$store.dispatch("dialogMsgMark", { dialog_id: this.dialogId, diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index ace277047..8ccc853b0 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -2315,7 +2315,6 @@ export default { if (nowTime < originalTime) { typeof data.unread !== "undefined" && delete data.unread typeof data.mention !== "undefined" && delete data.mention - typeof data.position_msgs !== "undefined" && delete data.position_msgs } state.cacheDialogs.splice(index, 1, Object.assign({}, original, data)); } else { diff --git a/resources/assets/sass/pages/components/dialog-wrapper.scss b/resources/assets/sass/pages/components/dialog-wrapper.scss index 56310989b..508fe33ff 100644 --- a/resources/assets/sass/pages/components/dialog-wrapper.scss +++ b/resources/assets/sass/pages/components/dialog-wrapper.scss @@ -1275,7 +1275,7 @@ position: absolute; top: 100px; right: 0; - z-index: 1; + z-index: 2; display: flex; align-items: center; justify-content: flex-end; diff --git a/resources/mobile b/resources/mobile index 3f318557a..99285ae93 160000 --- a/resources/mobile +++ b/resources/mobile @@ -1 +1 @@ -Subproject commit 3f318557a2d235c1e8bd9f22413258c5146a3720 +Subproject commit 99285ae935b9dff9327d9d21e13ff56755d9ac4f