47
47
class =" p-10px"
48
48
>
49
49
<!-- 文本消息 -->
50
- <MessageItem :content-type =" KeFuMessageContentTypeEnum.TEXT" :message =" item" >
51
- <div
52
- v-dompurify-html =" replaceEmoji(item.content)"
53
- class =" flex items-center"
54
- ></div >
50
+ <MessageItem :message =" item" >
51
+ <template v-if =" KeFuMessageContentTypeEnum .TEXT === item .contentType " >
52
+ <div
53
+ v-dompurify-html =" replaceEmoji(item.content)"
54
+ class =" flex items-center"
55
+ ></div >
56
+ </template >
55
57
</MessageItem >
56
58
<!-- 图片消息 -->
57
- <MessageItem :content-type = " KeFuMessageContentTypeEnum.IMAGE " : message =" item" >
59
+ <MessageItem :message =" item" >
58
60
<el-image
61
+ v-if =" KeFuMessageContentTypeEnum.IMAGE === item.contentType"
59
62
:initial-index =" 0"
60
63
:preview-src-list =" [item.content]"
61
64
:src =" item.content"
65
68
/>
66
69
</MessageItem >
67
70
<!-- 商品消息 -->
68
- <MessageItem :content-type = " KeFuMessageContentTypeEnum.PRODUCT " : message =" item" >
71
+ <MessageItem :message =" item" >
69
72
<ProductItem
73
+ v-if =" KeFuMessageContentTypeEnum.PRODUCT === item.contentType"
70
74
:picUrl =" getMessageContent(item).picUrl"
71
75
:price =" getMessageContent(item).price"
72
76
:skuText =" getMessageContent(item).introduction"
77
81
/>
78
82
</MessageItem >
79
83
<!-- 订单消息 -->
80
- <MessageItem :content-type =" KeFuMessageContentTypeEnum.ORDER" :message =" item" >
81
- <OrderItem :message =" item" class =" max-w-70%" />
84
+ <MessageItem :message =" item" >
85
+ <OrderItem
86
+ v-if =" KeFuMessageContentTypeEnum.ORDER === item.contentType"
87
+ :message =" item"
88
+ class =" max-w-70%"
89
+ />
82
90
</MessageItem >
83
91
</div >
84
92
<el-avatar
@@ -134,6 +142,7 @@ import { formatDate } from '@/utils/formatTime'
134
142
import dayjs from ' dayjs'
135
143
import relativeTime from ' dayjs/plugin/relativeTime'
136
144
import { debounce } from ' lodash-es'
145
+ import { jsonParse } from ' @/utils'
137
146
138
147
dayjs .extend (relativeTime )
139
148
@@ -153,7 +162,7 @@ const queryParams = reactive({
153
162
const total = ref (0 ) // 消息总条数
154
163
const refreshContent = ref (false ) // 内容刷新,主要解决会话消息页面高度不一致导致的滚动功能精度失效
155
164
/** 获悉消息内容 */
156
- const getMessageContent = computed (() => (item : any ) => JSON . parse (item .content ))
165
+ const getMessageContent = computed (() => (item : any ) => jsonParse (item .content ))
157
166
/** 获得消息列表 */
158
167
const getMessageList = async () => {
159
168
const res = await KeFuMessageApi .getKeFuMessagePage (queryParams )
@@ -171,9 +180,6 @@ const getMessageList = async () => {
171
180
}
172
181
/** 添加消息 */
173
182
const pushMessage = (message : any ) => {
174
- if (message .conversationId !== conversation .value .id ) {
175
- return
176
- }
177
183
if (messageList .value .some ((val ) => val .id === message .id )) {
178
184
return
179
185
}
@@ -193,6 +199,10 @@ const refreshMessageList = async (message?: any) => {
193
199
}
194
200
195
201
if (typeof message !== ' undefined' ) {
202
+ // 当前查询会话与消息所属会话不一致则不做处理
203
+ if (message .conversationId !== conversation .value .id ) {
204
+ return
205
+ }
196
206
pushMessage (message )
197
207
} else {
198
208
queryParams .pageNo = 1
@@ -297,7 +307,7 @@ const handleScroll = debounce(({ scrollTop }) => {
297
307
return
298
308
}
299
309
// 触顶自动加载下一页数据
300
- if (scrollTop === 0 ) {
310
+ if (Math . floor ( scrollTop ) === 0 ) {
301
311
handleOldMessage ()
302
312
}
303
313
const wrap = scrollbarRef .value ?.wrapRef
0 commit comments