【优化】mall 客服触顶自动加载下一页数据

This commit is contained in:
puhui999 2024-07-10 15:53:48 +08:00
parent fa0892980d
commit 993d070560

View File

@ -2,14 +2,6 @@
<el-container v-if="showKeFuMessageList" class="kefu"> <el-container v-if="showKeFuMessageList" class="kefu">
<el-header> <el-header>
<div class="kefu-title">{{ conversation.userNickname }}</div> <div class="kefu-title">{{ conversation.userNickname }}</div>
<!-- 加载历史消息 -->
<div
v-show="loadingMore"
class="loadingMore flex justify-center items-center cursor-pointer"
@click="handleOldMessage"
>
加载更多
</div>
</el-header> </el-header>
<el-main class="kefu-content overflow-visible"> <el-main class="kefu-content overflow-visible">
<el-scrollbar ref="scrollbarRef" always height="calc(100vh - 495px)" @scroll="handleScroll"> <el-scrollbar ref="scrollbarRef" always height="calc(100vh - 495px)" @scroll="handleScroll">
@ -248,15 +240,16 @@ const handleToNewMessage = async () => {
} }
/** 加载历史消息 */ /** 加载历史消息 */
const loadingMore = ref(false) //
const loadHistory = ref(false) // const loadHistory = ref(false) //
const handleScroll = async ({ scrollTop }) => { const handleScroll = async ({ scrollTop }) => {
const messageTotal = messageList.value.length const messageTotal = messageList.value.length
if (total.value > 0 && messageTotal > 0 && messageTotal === total.value) { if (total.value > 0 && messageTotal > 0 && messageTotal === total.value) {
return return
} }
// 20 //
loadingMore.value = scrollTop < 20 if (scrollTop === 0) {
await handleOldMessage()
}
} }
const handleOldMessage = async () => { const handleOldMessage = async () => {
// //
@ -265,7 +258,6 @@ const handleOldMessage = async () => {
// //
queryParams.pageNo += 1 queryParams.pageNo += 1
await getMessageList(conversation.value) await getMessageList(conversation.value)
loadingMore.value = false
// //
scrollbarRef.value!.setScrollTop(innerRef.value!.clientHeight - oldPageHeight) scrollbarRef.value!.setScrollTop(innerRef.value!.clientHeight - oldPageHeight)
} }
@ -293,17 +285,6 @@ const showTime = computed(() => (item: KeFuMessageRespVO, index: number) => {
line-height: 60px; line-height: 60px;
} }
.loadingMore {
width: 100%;
height: 50px;
background-color: #eee;
color: #666;
text-align: center;
line-height: 50px;
transform: translateY(-100%);
transition: transform 0.3s ease-in-out;
}
&-content { &-content {
.newMessageTip { .newMessageTip {
position: absolute; position: absolute;