处理搜索跳转指定聊天记录后向下查,数据会错乱的问题

This commit is contained in:
wangyifeng 2025-03-24 09:50:57 +08:00
parent c2a9676b09
commit 84cca43b52
2 changed files with 18 additions and 23 deletions

View File

@ -2,6 +2,7 @@
import { textReplaceEmoji } from '@/utils/emojis' import { textReplaceEmoji } from '@/utils/emojis'
import { textReplaceLink, textReplaceMention } from '@/utils/strings' import { textReplaceLink, textReplaceMention } from '@/utils/strings'
import { ITalkRecordExtraText, ITalkRecord } from '@/types/chat' import { ITalkRecordExtraText, ITalkRecord } from '@/types/chat'
import { computed } from 'vue'
const props = defineProps<{ const props = defineProps<{
extra: ITalkRecordExtraText extra: ITalkRecordExtraText
@ -12,15 +13,14 @@ const props = defineProps<{
const float = props.data.float const float = props.data.float
let textContent = props.extra?.content || '' const textContent = computed(() => {
let text = props.extra?.content || ''
textContent = textReplaceLink(textContent) text = textReplaceLink(text)
if (props.data.talk_type == 2) {
if (props.data.talk_type == 2) { text = textReplaceMention(text, '#1890ff')
textContent = textReplaceMention(textContent, '#1890ff') }
} return textReplaceEmoji(text)
})
textContent = textReplaceEmoji(textContent)
</script> </script>
<template> <template>

View File

@ -194,17 +194,10 @@
</div> </div>
<div class="load-toolbar pointer" style="transform: scaleY(-1);"> <div class="load-toolbar pointer" style="transform: scaleY(-1);">
<span v-if="loadConfig.status == 0">正在加载数据中 ...</span> <span v-if="loadConfig.status == 0">正在加载数据中 ...</span>
<span v-else-if="loadConfig.status == 1" @click="onScrollToLower"> <span v-if="loadConfig.status == 1" @click="onScrollToLower">
查看更多消息 ... 查看更多消息 ...
</span> </span>
<span <span v-if="loadConfig.status == 2" class="no-more">
v-else-if="
loadConfig.status != 0 &&
loadConfig.status != 1 &&
state.localPageLoadDone
"
class="no-more"
>
没有更多消息了 没有更多消息了
</span> </span>
</div> </div>
@ -1116,6 +1109,9 @@ watch(
) { ) {
// //
state.value.localPageLoadDone = true state.value.localPageLoadDone = true
if (dialogueList?.records?.[0]?.sequence !== 1) {
loadConfig.status = 1
}
} else { } else {
state.value.localPageLoadDone = false state.value.localPageLoadDone = false
} }
@ -1227,9 +1223,9 @@ const onScrollToUpper = async () => {
virtualList.value = tempVirtualList virtualList.value = tempVirtualList
.concat( .concat(
dialogueList.records.slice( dialogueList.records.slice(
Math.min(recordIndex + 11, dialogueList.records.length), recordIndex + 1,
dialogueList.records.length, Math.min(recordIndex + 11, dialogueList.records.length)
), )
) )
.reverse() .reverse()
@ -1522,12 +1518,11 @@ const doMentionUser = (mentionSelect) => {
// mention // mention
const mentionObj = { const mentionObj = {
id: mentionSelect.user_id, // 使 user_id erp_user_id id: mentionSelect.user_id, // 使 user_id erp_user_id
nickname: mentionSelect.nickname nickname: mentionSelect.nickname,
} }
getMentionSelectLists([mentionObj]) getMentionSelectLists([mentionObj])
} }
let avatarPressTimer = null let avatarPressTimer = null
let currentPressItem = null let currentPressItem = null