|
@@ -12,10 +12,10 @@
|
|
</div>
|
|
</div>
|
|
<div class="content">
|
|
<div class="content">
|
|
<div class="leftImg">
|
|
<div class="leftImg">
|
|
- <img src="https://fallfor.ai/public/img/uploads/11/img_1715399022390_00024-654400262.jpg" alt="">
|
|
|
|
|
|
+ <img :src="baseApi + info.picture" alt="">
|
|
<div class="aiInfo">
|
|
<div class="aiInfo">
|
|
<span class="photo">
|
|
<span class="photo">
|
|
- <img src="https://fallfor.ai/public/img/uploads/11/img_1715399064396_1 (2).gif">
|
|
|
|
|
|
+ <img :src="baseApi + info.picture">
|
|
</span>
|
|
</span>
|
|
<div class="info">
|
|
<div class="info">
|
|
<div class="name">{{ info.characterName }}</div>
|
|
<div class="name">{{ info.characterName }}</div>
|
|
@@ -35,15 +35,15 @@
|
|
<!-- ai返回的信息 -->
|
|
<!-- ai返回的信息 -->
|
|
<div class="pt-2 photo">
|
|
<div class="pt-2 photo">
|
|
<img
|
|
<img
|
|
- src="https://fallfor.ai/public/img/uploads/11/img_1715399064396_1 (2).gif"
|
|
|
|
- class="rounded-full w-14"
|
|
|
|
|
|
+ :src="baseApi + info.picture"
|
|
|
|
+ class="rounded-full w-14 h-14 object-cover"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="message fex-1 ml-4 mt-2 p-2 rounded-r-md rounded-bl-md text-xs" >
|
|
<div class="message fex-1 ml-4 mt-2 p-2 rounded-r-md rounded-bl-md text-xs" >
|
|
<div v-show="!item.content" class="loadingMessage" >
|
|
<div v-show="!item.content" class="loadingMessage" >
|
|
<div v-loading="!item.content" element-loading-background="rgba(0, 0, 0, 0.0)"></div>
|
|
<div v-loading="!item.content" element-loading-background="rgba(0, 0, 0, 0.0)"></div>
|
|
</div>
|
|
</div>
|
|
- <p v-show="item.content" v-html="item.content"> </p>
|
|
|
|
|
|
+ <p v-show="item.content">{{ item.content }} </p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- 用户发送的信息 -->
|
|
<!-- 用户发送的信息 -->
|
|
@@ -51,7 +51,7 @@
|
|
<div class="pt-2 photo">
|
|
<div class="pt-2 photo">
|
|
<img
|
|
<img
|
|
src="@/assets/images/default_avatar_user.png"
|
|
src="@/assets/images/default_avatar_user.png"
|
|
- class="rounded-full w-14"
|
|
|
|
|
|
+ class="rounded-full w-14 h-14 object-cover"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="message fex-1 mr-4 mt-2 p-2 rounded-l-md rounded-br-md text-xs">
|
|
<div class="message fex-1 mr-4 mt-2 p-2 rounded-l-md rounded-br-md text-xs">
|
|
@@ -108,8 +108,10 @@ export default {
|
|
watch: {
|
|
watch: {
|
|
returnMessage: {
|
|
returnMessage: {
|
|
handler(newVal, lodVal) {
|
|
handler(newVal, lodVal) {
|
|
- let messages = this.$refs.messages
|
|
|
|
- messages.scrollTop = messages.scrollHeight
|
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ let messages = this.$refs.messages
|
|
|
|
+ messages.scrollTop = messages.scrollHeight
|
|
|
|
+ })
|
|
},
|
|
},
|
|
deep: true
|
|
deep: true
|
|
}
|
|
}
|
|
@@ -145,7 +147,7 @@ export default {
|
|
this.getStreamChatWithWeb()
|
|
this.getStreamChatWithWeb()
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- async getStreamChatWithWeb() {
|
|
|
|
|
|
+ async getStreamChatWithWeb_old() {
|
|
this.messageLoading = true
|
|
this.messageLoading = true
|
|
if (!this.content) {
|
|
if (!this.content) {
|
|
return
|
|
return
|
|
@@ -207,7 +209,7 @@ export default {
|
|
index += 1
|
|
index += 1
|
|
}, 50)
|
|
}, 50)
|
|
},
|
|
},
|
|
- async getStreamChatWithWeb_old() {
|
|
|
|
|
|
+ async getStreamChatWithWeb() {
|
|
this.messageLoading = true
|
|
this.messageLoading = true
|
|
if (!this.content) {
|
|
if (!this.content) {
|
|
return
|
|
return
|
|
@@ -222,7 +224,7 @@ export default {
|
|
HistoryMessage = HistoryMessage.slice(HistoryMessage.length - 1, 20)
|
|
HistoryMessage = HistoryMessage.slice(HistoryMessage.length - 1, 20)
|
|
}
|
|
}
|
|
let params = {
|
|
let params = {
|
|
- historyMessage: HistoryMessage || [],
|
|
|
|
|
|
+ HistoryMessage: HistoryMessage || [],
|
|
characterId: this.info.id,
|
|
characterId: this.info.id,
|
|
prompt: this.content
|
|
prompt: this.content
|
|
}
|
|
}
|
|
@@ -231,6 +233,9 @@ export default {
|
|
role: 'assistant',
|
|
role: 'assistant',
|
|
content: ''
|
|
content: ''
|
|
})
|
|
})
|
|
|
|
+ // 清空输入框的值
|
|
|
|
+ this.content = ''
|
|
|
|
+
|
|
let res = await streamChatWithWebApi(params)
|
|
let res = await streamChatWithWebApi(params)
|
|
console.log(res, 'res');
|
|
console.log(res, 'res');
|
|
this.messageLoading = false
|
|
this.messageLoading = false
|
|
@@ -240,11 +245,6 @@ export default {
|
|
this.returnMessage.splice(this.returnMessage.length - 1, 1)
|
|
this.returnMessage.splice(this.returnMessage.length - 1, 1)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- // 清空输入框的值
|
|
|
|
- this.content = ''
|
|
|
|
-
|
|
|
|
- console.log(res, 'res>>>');
|
|
|
|
- return
|
|
|
|
const reader = res.body.getReader()
|
|
const reader = res.body.getReader()
|
|
const decoder=new TextDecoder()
|
|
const decoder=new TextDecoder()
|
|
while(1){
|
|
while(1){
|
|
@@ -270,18 +270,27 @@ export default {
|
|
}
|
|
}
|
|
|
|
|
|
//txt就是一个一个的字 然后添加到页面上就可以了
|
|
//txt就是一个一个的字 然后添加到页面上就可以了
|
|
- const txt = decoder.decode(value)
|
|
|
|
|
|
+ const txt = decoder.decode(value).split('data:')
|
|
// const txt = decoder.decode(value)
|
|
// const txt = decoder.decode(value)
|
|
-
|
|
|
|
- let data = JSON.parse(txt).message.content
|
|
|
|
- console.log(data, 'data');
|
|
|
|
|
|
+ this.addMessage(txt)
|
|
|
|
+ // let data = JSON.parse(txt).message.content
|
|
|
|
+ // console.log(txt, 'txt');
|
|
// if (this.isJSON(txt) && JSON.parse(txt).code != 200) {
|
|
// if (this.isJSON(txt) && JSON.parse(txt).code != 200) {
|
|
// let data = JSON.parse(txt)
|
|
// let data = JSON.parse(txt)
|
|
// this.$message.error(data.msg)
|
|
// this.$message.error(data.msg)
|
|
// this.returnMessage.splice(this.returnMessage.length - 1, 1)
|
|
// this.returnMessage.splice(this.returnMessage.length - 1, 1)
|
|
// break;
|
|
// break;
|
|
// }
|
|
// }
|
|
- this.returnMessage[this.returnMessage.length - 1].content += txt
|
|
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ addMessage(value) {
|
|
|
|
+ for (let i = 0; i < value.length; i++) {
|
|
|
|
+ const element = value[i];
|
|
|
|
+ if (this.isJSON(element)) {
|
|
|
|
+ let txt = JSON.parse(element).content
|
|
|
|
+ this.returnMessage[this.returnMessage.length - 1].content += txt
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
isJSON(str) {
|
|
isJSON(str) {
|