From 33a4100ed4c851fda542213d0aa6f66be309f4cc Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sun, 10 Nov 2024 13:09:27 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E3=80=91=E5=95=86=E5=9F=8E:=20=E5=AE=A2=E6=9C=8D=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E6=8E=92=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/mall/kefu.ts | 48 +++++----------------------------- 1 file changed, 7 insertions(+), 41 deletions(-) diff --git a/src/store/modules/mall/kefu.ts b/src/store/modules/mall/kefu.ts index 16f1dfc2..2aecee0d 100644 --- a/src/store/modules/mall/kefu.ts +++ b/src/store/modules/mall/kefu.ts @@ -63,48 +63,14 @@ export const useMallKefuStore = defineStore('mall-kefu', { } }, conversationSort() { - // TODO @puhui999:1)逻辑上,先按照置顶、再按照最后消息时间;2)感觉写的有一丢丢小复杂,发给大模型,看看有没可能简化哈。 - this.conversationList.sort((obj1, obj2) => { - // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 false,obj1 应该排在前面 - if (obj1.adminPinned && !obj2.adminPinned) { - return -1 + // 按置顶属性和最后消息时间排序 + this.conversationList.sort((a, b) => { + // 按照置顶排序,置顶的会在前面 + if (a.adminPinned !== b.adminPinned) { + return a.adminPinned ? -1 : 1 } - // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 true,obj2 应该排在前面 - if (!obj1.adminPinned && obj2.adminPinned) { - return 1 - } - - // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 true,比较 adminUnreadMessageCount 的值 - if (obj1.adminPinned && obj2.adminPinned) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 和 obj2.adminPinned 都为 false,比较 adminUnreadMessageCount 的值 - if (!obj1.adminPinned && !obj2.adminPinned) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 为 true,obj2.adminPinned 为 true,且 b 都大于 0,比较 adminUnreadMessageCount 的值 - if ( - obj1.adminPinned && - obj2.adminPinned && - obj1.adminUnreadMessageCount > 0 && - obj2.adminUnreadMessageCount > 0 - ) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - // 如果 obj1.adminPinned 为 false,obj2.adminPinned 为 false,且 b 都大于 0,比较 adminUnreadMessageCount 的值 - if ( - !obj1.adminPinned && - !obj2.adminPinned && - obj1.adminUnreadMessageCount > 0 && - obj2.adminUnreadMessageCount > 0 - ) { - return obj1.adminUnreadMessageCount - obj2.adminUnreadMessageCount - } - - return 0 + // 按照最后消息时间排序,最近的会在前面 + return (b.lastMessageTime as unknown as number) - (a.lastMessageTime as unknown as number) }) } }