From 7a236b437808e9aee169d7044a9d152e864500a3 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 21 May 2026 14:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(im):=20=E4=BF=AE=20L-13/L-16?= =?UTF-8?q?=EF=BC=9APagedScroller=20=E5=8A=A0=20itemKey=20=E9=98=B2?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E4=B9=B1=E4=BD=8D=E3=80=81=E7=A7=81=E8=81=8A?= =?UTF-8?q?=20Message.targetId=20=E6=94=B9=E5=AF=B9=E7=AB=AF=20userId?= =?UTF-8?q?=E3=80=81=E6=8A=BD=20getPrivateMessagePeerId=20=E6=94=B6?= =?UTF-8?q?=E6=95=9B=204=20=E5=A4=84=20peer=20=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/im/home/components/PagedScroller.vue | 17 ++++++++++++++++- .../picker/GroupMemberPickerPanel.vue | 2 +- .../im/home/composables/useMessagePuller.ts | 9 +++++---- .../components/message/MessageReadStatus.vue | 4 ++-- src/views/im/home/store/websocketStore.ts | 14 +++++++++----- src/views/im/home/types/index.ts | 2 +- src/views/im/utils/message.ts | 15 +++++++++++++++ 7 files changed, 49 insertions(+), 14 deletions(-) diff --git a/src/views/im/home/components/PagedScroller.vue b/src/views/im/home/components/PagedScroller.vue index f3561efe2..c970d48a3 100644 --- a/src/views/im/home/components/PagedScroller.vue +++ b/src/views/im/home/components/PagedScroller.vue @@ -5,7 +5,12 @@ - 通过 slot 暴露每一项,让调用方自己决定渲染 --> - +
(), { pageSize: 30, @@ -33,6 +39,15 @@ const props = withDefaults( } ) +/** 解析每条 item 的 :key:caller 传 itemKey 则按字段取,无效 / 缺失回退索引,避免传错字段时全表 undefined key */ +function resolveItemKey(item: T, idx: number): string | number { + if (!props.itemKey || item == null || typeof item !== 'object') { + return idx + } + const value = (item as Record)[props.itemKey] + return typeof value === 'string' || typeof value === 'number' ? value : idx +} + const scrollbarRef = useTemplateRef>('scrollbarRef') const page = ref(1) diff --git a/src/views/im/home/components/picker/GroupMemberPickerPanel.vue b/src/views/im/home/components/picker/GroupMemberPickerPanel.vue index e47511155..ecb948be2 100644 --- a/src/views/im/home/components/picker/GroupMemberPickerPanel.vue +++ b/src/views/im/home/components/picker/GroupMemberPickerPanel.vue @@ -21,7 +21,7 @@
- +