feat(消息处理): 添加消息内容解析和格式化功能
This commit is contained in:
parent
4edf4fd034
commit
7a78f5bdae
|
|
@ -137,6 +137,7 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 用户消息 -->
|
<!-- 用户消息 -->
|
||||||
|
<!-- 0 用户消息 -->
|
||||||
<view
|
<view
|
||||||
class="message-right"
|
class="message-right"
|
||||||
v-if="message.interactMode === 0"
|
v-if="message.interactMode === 0"
|
||||||
|
|
@ -153,9 +154,10 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- AI消息 -->
|
<!-- AI消息 -->
|
||||||
|
<!-- 1 Ai回复 3 热门回复 -->
|
||||||
<view
|
<view
|
||||||
class="message-left"
|
class="message-left"
|
||||||
v-if="message.interactMode === 1"
|
v-if="message.interactMode === 1 || message.interactMode === 3"
|
||||||
:id="'msg-' + message.id"
|
:id="'msg-' + message.id"
|
||||||
>
|
>
|
||||||
<image
|
<image
|
||||||
|
|
@ -816,9 +818,49 @@ export default {
|
||||||
this.handleGetConversationDetail();
|
this.handleGetConversationDetail();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 处理消息内容,如果是JSON格式则解析并格式化
|
||||||
|
processMessageContent(message) {
|
||||||
|
try {
|
||||||
|
// 尝试解析 JSON
|
||||||
|
const parsed = JSON.parse(message);
|
||||||
|
|
||||||
|
// 如果是对象且包含特定字段,进行格式化
|
||||||
|
if (typeof parsed === "object" && parsed !== null) {
|
||||||
|
let content = "";
|
||||||
|
|
||||||
|
// 提取字段
|
||||||
|
const { answerTypeLabel, imageUrl, nearbyPaths } = parsed;
|
||||||
|
|
||||||
|
// 拼接内容,如果有值则添加并换行
|
||||||
|
if (answerTypeLabel) content += `${answerTypeLabel}\n`;
|
||||||
|
if (imageUrl) content += `${imageUrl}\n`;
|
||||||
|
if (nearbyPaths) content += `${nearbyPaths}\n`;
|
||||||
|
|
||||||
|
// 如果提取到了内容,返回处理后的文本;否则返回原文本(避免误判)
|
||||||
|
// 去除末尾多余的换行符
|
||||||
|
return content ? content.trim() : message;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// 解析失败,说明不是JSON格式,直接返回原消息
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
},
|
||||||
|
|
||||||
// 公共排序:按时间升序;时间相同,用户消息(interactMode=0)在前
|
// 公共排序:按时间升序;时间相同,用户消息(interactMode=0)在前
|
||||||
sortMessages(list = []) {
|
sortMessages(list = []) {
|
||||||
return (list || []).sort((a, b) => {
|
const processedList = (list || []).map((item) => {
|
||||||
|
// 对每条消息进行处理
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
message: this.processMessageContent(item.message),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log("processedList", processedList);
|
||||||
|
|
||||||
|
return processedList.sort((a, b) => {
|
||||||
const timeA = new Date(a.sendDate).getTime();
|
const timeA = new Date(a.sendDate).getTime();
|
||||||
const timeB = new Date(b.sendDate).getTime();
|
const timeB = new Date(b.sendDate).getTime();
|
||||||
if (timeA === timeB) return a.interactMode - b.interactMode;
|
if (timeA === timeB) return a.interactMode - b.interactMode;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue