【代码优化】MALL:客服聊天

This commit is contained in:
YunaiV
2024-07-17 20:15:41 +08:00
parent 4abd246d96
commit e8a0eb08d6
4 changed files with 16 additions and 2 deletions

View File

@@ -161,6 +161,7 @@ const queryParams = reactive({
}) })
const total = ref(0) // 消息总条数 const total = ref(0) // 消息总条数
const refreshContent = ref(false) // 内容刷新,主要解决会话消息页面高度不一致导致的滚动功能精度失效 const refreshContent = ref(false) // 内容刷新,主要解决会话消息页面高度不一致导致的滚动功能精度失效
/** 获悉消息内容 */ /** 获悉消息内容 */
const getMessageContent = computed(() => (item: any) => jsonParse(item.content)) const getMessageContent = computed(() => (item: any) => jsonParse(item.content))
/** 获得消息列表 */ /** 获得消息列表 */
@@ -178,6 +179,7 @@ const getMessageList = async () => {
} }
refreshContent.value = true refreshContent.value = true
} }
/** 添加消息 */ /** 添加消息 */
const pushMessage = (message: any) => { const pushMessage = (message: any) => {
if (messageList.value.some((val) => val.id === message.id)) { if (messageList.value.some((val) => val.id === message.id)) {
@@ -217,6 +219,7 @@ const refreshMessageList = async (message?: any) => {
await handleToNewMessage() await handleToNewMessage()
} }
} }
const getNewMessageList = async (val: KeFuConversationRespVO) => { const getNewMessageList = async (val: KeFuConversationRespVO) => {
// 会话切换,重置相关参数 // 会话切换,重置相关参数
queryParams.pageNo = 1 queryParams.pageNo = 1
@@ -231,6 +234,7 @@ const getNewMessageList = async (val: KeFuConversationRespVO) => {
await refreshMessageList() await refreshMessageList()
} }
defineExpose({ getNewMessageList, refreshMessageList }) defineExpose({ getNewMessageList, refreshMessageList })
const showKeFuMessageList = computed(() => !isEmpty(conversation.value)) // 是否显示聊天区域 const showKeFuMessageList = computed(() => !isEmpty(conversation.value)) // 是否显示聊天区域
const skipGetMessageList = computed(() => { const skipGetMessageList = computed(() => {
// 已加载到最后一页的话则不触发新的消息获取 // 已加载到最后一页的话则不触发新的消息获取

View File

@@ -1,3 +1,4 @@
<!-- 目录是不是叫 member 好点然后这个组件是 MemberInfo里面有浏览足迹 -->
<template> <template>
<div v-show="!isEmpty(conversation)" class="kefu"> <div v-show="!isEmpty(conversation)" class="kefu">
<div class="header-title h-60px flex justify-center items-center">他的足迹</div> <div class="header-title h-60px flex justify-center items-center">他的足迹</div>
@@ -7,9 +8,9 @@
</el-tabs> </el-tabs>
<div> <div>
<el-scrollbar ref="scrollbarRef" always height="calc(100vh - 400px)" @scroll="handleScroll"> <el-scrollbar ref="scrollbarRef" always height="calc(100vh - 400px)" @scroll="handleScroll">
<!-- 最近浏览 --> <!-- 最近浏览 -->
<ProductBrowsingHistory v-if="activeName === 'a'" ref="productBrowsingHistoryRef" /> <ProductBrowsingHistory v-if="activeName === 'a'" ref="productBrowsingHistoryRef" />
<!-- 订单列表 --> <!-- 订单列表 -->
<OrderBrowsingHistory v-if="activeName === 'b'" ref="orderBrowsingHistoryRef" /> <OrderBrowsingHistory v-if="activeName === 'b'" ref="orderBrowsingHistoryRef" />
</el-scrollbar> </el-scrollbar>
</div> </div>
@@ -29,6 +30,7 @@ import { ElScrollbar as ElScrollbarType } from 'element-plus/es/components/scrol
defineOptions({ name: 'MemberBrowsingHistory' }) defineOptions({ name: 'MemberBrowsingHistory' })
const activeName = ref('a') const activeName = ref('a')
/** tab 切换 */ /** tab 切换 */
const productBrowsingHistoryRef = ref<InstanceType<typeof ProductBrowsingHistory>>() const productBrowsingHistoryRef = ref<InstanceType<typeof ProductBrowsingHistory>>()
const orderBrowsingHistoryRef = ref<InstanceType<typeof OrderBrowsingHistory>>() const orderBrowsingHistoryRef = ref<InstanceType<typeof OrderBrowsingHistory>>()
@@ -37,7 +39,9 @@ const handleClick = async (tab: TabsPaneContext) => {
await nextTick() await nextTick()
await getHistoryList() await getHistoryList()
} }
/** 获得历史数据 */ /** 获得历史数据 */
// TODO @puhui不要用 a、b 哈。就订单列表、浏览列表这种噶
const getHistoryList = async () => { const getHistoryList = async () => {
switch (activeName.value) { switch (activeName.value) {
case 'a': case 'a':
@@ -50,6 +54,7 @@ const getHistoryList = async () => {
break break
} }
} }
/** 加载下一页数据 */ /** 加载下一页数据 */
const loadMore = async () => { const loadMore = async () => {
switch (activeName.value) { switch (activeName.value) {
@@ -63,6 +68,7 @@ const loadMore = async () => {
break break
} }
} }
/** 浏览历史初始化 */ /** 浏览历史初始化 */
const conversation = ref<KeFuConversationRespVO>({} as KeFuConversationRespVO) // 用户会话 const conversation = ref<KeFuConversationRespVO>({} as KeFuConversationRespVO) // 用户会话
const initHistory = async (val: KeFuConversationRespVO) => { const initHistory = async (val: KeFuConversationRespVO) => {

View File

@@ -21,6 +21,7 @@ const skipGetMessageList = computed(() => {
// 已加载到最后一页的话则不触发新的消息获取 // 已加载到最后一页的话则不触发新的消息获取
return total.value > 0 && Math.ceil(total.value / queryParams.pageSize) === queryParams.pageNo return total.value > 0 && Math.ceil(total.value / queryParams.pageSize) === queryParams.pageNo
}) // 跳过消息获取 }) // 跳过消息获取
/** 获得浏览记录 */ /** 获得浏览记录 */
const getHistoryList = async (val: KeFuConversationRespVO) => { const getHistoryList = async (val: KeFuConversationRespVO) => {
queryParams.userId = val.userId queryParams.userId = val.userId
@@ -28,6 +29,7 @@ const getHistoryList = async (val: KeFuConversationRespVO) => {
total.value = res.total total.value = res.total
list.value = res.list list.value = res.list
} }
/** 加载下一页数据 */ /** 加载下一页数据 */
const loadMore = async () => { const loadMore = async () => {
if (skipGetMessageList.value) { if (skipGetMessageList.value) {

View File

@@ -32,6 +32,7 @@ const skipGetMessageList = computed(() => {
// 已加载到最后一页的话则不触发新的消息获取 // 已加载到最后一页的话则不触发新的消息获取
return total.value > 0 && Math.ceil(total.value / queryParams.pageSize) === queryParams.pageNo return total.value > 0 && Math.ceil(total.value / queryParams.pageSize) === queryParams.pageNo
}) // 跳过消息获取 }) // 跳过消息获取
/** 获得浏览记录 */ /** 获得浏览记录 */
const getHistoryList = async (val: KeFuConversationRespVO) => { const getHistoryList = async (val: KeFuConversationRespVO) => {
queryParams.userId = val.userId queryParams.userId = val.userId
@@ -39,6 +40,7 @@ const getHistoryList = async (val: KeFuConversationRespVO) => {
total.value = res.total total.value = res.total
list.value = res.list list.value = res.list
} }
/** 加载下一页数据 */ /** 加载下一页数据 */
const loadMore = async () => { const loadMore = async () => {
if (skipGetMessageList.value) { if (skipGetMessageList.value) {