|
@@ -11,11 +11,11 @@
|
|
|
<div v-for="(message, index) in messages" :key="index"
|
|
|
:class="['message', message.role === 'user' ? 'user' : 'assistant']">
|
|
|
<div class="avatar" v-if="message.content">
|
|
|
- <img :src="message.role === 'user' ? userAvatar : assistantAvatar" :alt="message.role">
|
|
|
+ <img :src="message.role === 'user' ? userStore.userInfo.headUrl||userAvatar : assistantAvatar" :alt="message.role">
|
|
|
</div>
|
|
|
<div class="content" v-if="message.content">
|
|
|
<div class="text markdown-body" v-html="message.content"></div>
|
|
|
- <div class="message-actions" v-if="message.role === 'assistant'">
|
|
|
+ <div class="message-actions" v-if="message.role === 'assistant' && !loading">
|
|
|
<div class="left-actions">
|
|
|
<button class="action-btn" @click="copyContent(message.content)">
|
|
|
<img src="@/assets/icon-copy.png" alt="复制">
|
|
@@ -184,6 +184,7 @@ const toggleKnowledge = (id) => {
|
|
|
const scrollToBottom = async () => {
|
|
|
await nextTick()
|
|
|
if (messagesRef.value) {
|
|
|
+ console.log('messagesRef.value',messagesRef.value);
|
|
|
messagesRef.value.scrollTop = messagesRef.value.scrollHeight
|
|
|
}
|
|
|
}
|
|
@@ -236,10 +237,9 @@ const handleSend = async () => {
|
|
|
// 清空输入框
|
|
|
inputMessage.value = ''
|
|
|
|
|
|
- await scrollToBottom()
|
|
|
-
|
|
|
// 开始流式响应
|
|
|
loading.value = true
|
|
|
+ await scrollToBottom()
|
|
|
simulateStreamResponse(currentMessage)
|
|
|
}
|
|
|
|
|
@@ -635,6 +635,7 @@ onMounted(async () => {
|
|
|
img{
|
|
|
width: 40px;
|
|
|
height: 40px;
|
|
|
+ border-radius: 50%;
|
|
|
}
|
|
|
}
|
|
|
.text {
|