|
@@ -1,5 +1,6 @@
|
|
|
<template>
|
|
|
<div class="chat bg-gray-900 comBg">
|
|
|
+ <Header ref="Header" v-show="false" />
|
|
|
<div class="flex flex-col items-center justify-center h-screen px-4">
|
|
|
<!-- onClick={() => navigate('/')} -->
|
|
|
<div
|
|
@@ -89,9 +90,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Header from "@/views/homeComponents/Header.vue"
|
|
|
import { streamChatWithWebApi } from "@/api/chat.js"
|
|
|
import { detailApi } from "@/api/detail.js"
|
|
|
+import { Message, MessageBox, Notification, Loading } from 'element-ui'
|
|
|
export default {
|
|
|
+ components: {
|
|
|
+ Header
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
info: {},
|
|
@@ -101,6 +107,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
+ console.log(this.$refs.Header, 'this.$refs.Header');
|
|
|
if (this.$route.query.characterId) {
|
|
|
this.getDetail(this.$route.query.characterId)
|
|
|
}
|
|
@@ -121,7 +128,7 @@ export default {
|
|
|
detailApi(id).then(res => {
|
|
|
console.log(res, '角色详情');
|
|
|
this.info = res.data
|
|
|
- let HistoryMessage = JSON.parse(localStorage.getItem(`[${123},${this.info.id}]`));
|
|
|
+ let HistoryMessage = JSON.parse(localStorage.getItem(`[userId:${123},aiId:${this.info.id}]`));
|
|
|
if (HistoryMessage) {
|
|
|
this.returnMessage = HistoryMessage
|
|
|
} else {
|
|
@@ -129,7 +136,7 @@ export default {
|
|
|
role: 'assistant',
|
|
|
content: this.info.firstContent
|
|
|
})
|
|
|
- localStorage.setItem(`[${123},${this.info.id}]`, JSON.stringify(this.returnMessage));
|
|
|
+ localStorage.setItem(`[userId:${123},aiId:${this.info.id}]`, JSON.stringify(this.returnMessage));
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -138,7 +145,7 @@ export default {
|
|
|
},
|
|
|
newStart() {
|
|
|
// 清空历史数据
|
|
|
- localStorage.removeItem(`[${123},${this.info.id}]`);
|
|
|
+ localStorage.removeItem(`[userId:${123},aiId:${this.info.id}]`);
|
|
|
this.returnMessage = []
|
|
|
this.getDetail(this.info.id)
|
|
|
},
|
|
@@ -156,7 +163,7 @@ export default {
|
|
|
role: 'user',
|
|
|
content: this.content
|
|
|
})
|
|
|
- let HistoryMessage = JSON.parse(localStorage.getItem(`[${123},${this.info.id}]`));
|
|
|
+ let HistoryMessage = JSON.parse(localStorage.getItem(`[userId:${123},aiId:${this.info.id}]`));
|
|
|
// 历史记录取最新的20条传给后端
|
|
|
if (HistoryMessage && HistoryMessage.length > 20) {
|
|
|
HistoryMessage = HistoryMessage.slice(HistoryMessage.length - 1, 20)
|
|
@@ -189,7 +196,7 @@ export default {
|
|
|
} else {
|
|
|
HistoryMessage = JSON.stringify(this.returnMessage)
|
|
|
}
|
|
|
- localStorage.setItem(`['userId:${123}',${this.info.id}]`, HistoryMessage);
|
|
|
+ localStorage.setItem(`[userId:${123},aiId:${this.info.id}]`, HistoryMessage);
|
|
|
|
|
|
clearInterval(messageInterval)
|
|
|
return
|
|
@@ -218,7 +225,7 @@ export default {
|
|
|
role: 'user',
|
|
|
content: this.content
|
|
|
})
|
|
|
- let HistoryMessage = JSON.parse(localStorage.getItem(`[${123},${this.info.id}]`));
|
|
|
+ let HistoryMessage = JSON.parse(localStorage.getItem(`[userId:${123},aiId:${this.info.id}]`));
|
|
|
// 历史记录取最新的20条传给后端
|
|
|
if (HistoryMessage && HistoryMessage.length > 20) {
|
|
|
HistoryMessage = HistoryMessage.slice(HistoryMessage.length - 1, 20)
|
|
@@ -265,7 +272,7 @@ export default {
|
|
|
} else {
|
|
|
HistoryMessage = JSON.stringify(this.returnMessage)
|
|
|
}
|
|
|
- localStorage.setItem(`[${123},${this.info.id}]`, HistoryMessage);
|
|
|
+ localStorage.setItem(`[userId:${123},aiId:${this.info.id}]`, HistoryMessage);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -274,7 +281,7 @@ export default {
|
|
|
// const txt = decoder.decode(value)
|
|
|
this.addMessage(txt)
|
|
|
// let data = JSON.parse(txt).message.content
|
|
|
- // console.log(txt, 'txt');
|
|
|
+ console.log(txt, 'txt');
|
|
|
// if (this.isJSON(txt) && JSON.parse(txt).code != 200) {
|
|
|
// let data = JSON.parse(txt)
|
|
|
// this.$message.error(data.msg)
|
|
@@ -285,14 +292,43 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
addMessage(value) {
|
|
|
+ // console.log(value, 'value');
|
|
|
for (let i = 0; i < value.length; i++) {
|
|
|
const element = value[i];
|
|
|
if (this.isJSON(element)) {
|
|
|
+ if(JSON.parse(element).code == 401) {
|
|
|
+ this.returnMessage.splice(this.returnMessage.length - 1, 1)
|
|
|
+ this.noLogin(element)
|
|
|
+ break;
|
|
|
+ }
|
|
|
let txt = JSON.parse(element).content
|
|
|
this.returnMessage[this.returnMessage.length - 1].content += txt
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ noLogin(value) {
|
|
|
+ let _this = this
|
|
|
+ MessageBox.confirm(
|
|
|
+ value.content,
|
|
|
+ "系统提示",
|
|
|
+ {
|
|
|
+ confirmButtonText: "前往登录",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then(() => {
|
|
|
+ // isRelogin.show = false;
|
|
|
+ this.$store.dispatch("LogOut").then(() => {
|
|
|
+ // location.href = "/";
|
|
|
+
|
|
|
+ _this.$refs.Header.showLogin()
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ // isRelogin.show = false;
|
|
|
+ });
|
|
|
+ },
|
|
|
isJSON(str) {
|
|
|
if (typeof str == 'string') {
|
|
|
try {
|