|
...
|
...
|
@@ -6,7 +6,7 @@ |
|
|
|
<div class="chat-messages" ref="messagesContainer">
|
|
|
|
<div v-for="(message, index) in messages" :key="index" :class="['message', message.type]">
|
|
|
|
<div class="message-content">
|
|
|
|
<div class="message-text" v-html="message.text"></div>
|
|
|
|
<div class="message-text" style="white-space: pre-wrap;" v-html="message.text"></div>
|
|
|
|
<div v-if="message.type === 'assistant' && message.similarity" class="message-meta">
|
|
|
|
相似度: {{ (message.similarity * 100).toFixed(2) }}%
|
|
|
|
<div v-if="message.fileBase64">
|
|
...
|
...
|
@@ -19,7 +19,7 @@ |
|
|
|
<!-- 流式响应时显示的临时消息 -->
|
|
|
|
<div v-if="streamingMessage" class="message assistant">
|
|
|
|
<div class="message-content">
|
|
|
|
<div class="message-text">{{ streamingMessage }}</div>
|
|
|
|
<div class="message-text" style="white-space: pre-wrap;">{{ streamingMessage }}</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-if="loading" class="message assistant">
|
|
...
|
...
|
@@ -50,7 +50,7 @@ |
|
|
|
</div>
|
|
|
|
<div class="preview-content">
|
|
|
|
<div v-if="previewType === 'txt' || previewType === 'md'" class="text-preview">
|
|
|
|
<pre>{{ previewContent }}</pre>
|
|
|
|
<pre style="white-space: pre-wrap;">{{ previewContent }}</pre>
|
|
|
|
</div>
|
|
|
|
<div v-else-if="previewType === 'pdf'" class="pdf-preview" ref="pdfPreview"></div>
|
|
|
|
<div v-else-if="previewType === 'docx'" class="docx-preview" ref="docxPreview"></div>
|
|
...
|
...
|
@@ -275,6 +275,7 @@ const sendButtonMessage = async (buttonValue: string) => { |
|
|
|
scrollToBottom();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
// 显示文件预览
|
|
|
|
const showPreview = async (message: any) => {
|
|
|
|
try {
|
|
...
|
...
|
@@ -671,6 +672,7 @@ onBeforeUnmount(() => { |
|
|
|
|
|
|
|
.message-text {
|
|
|
|
font-size: 15px;
|
|
|
|
white-space: pre-wrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.message-meta {
|
...
|
...
|
|