|
@@ -1,13 +1,6 @@
|
|
|
<template>
|
|
|
<div class="chart-content-chat heightFull d-flex flex-column position-relative overflow-hidden">
|
|
|
- <v-btn
|
|
|
- class="history"
|
|
|
- color="indigo lighten-1"
|
|
|
- dark
|
|
|
- @click.stop="drawer = !drawer"
|
|
|
- >
|
|
|
- 最近会话
|
|
|
- </v-btn>
|
|
|
+ <slot></slot>
|
|
|
<div class="chart-content-chat-title mb-3">
|
|
|
<v-tabs>
|
|
|
<v-tab>AI 取数</v-tab>
|
|
@@ -230,49 +223,19 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <v-navigation-drawer
|
|
|
- v-model="drawer"
|
|
|
- absolute
|
|
|
- temporary
|
|
|
- right
|
|
|
- width="300"
|
|
|
- overlay-opacity="0"
|
|
|
- >
|
|
|
- <v-list dense>
|
|
|
- <v-list-item-group
|
|
|
- v-model="selected"
|
|
|
- color="primary"
|
|
|
- @change="onSelectConversation"
|
|
|
- >
|
|
|
- <v-list-item
|
|
|
- v-for="(conversation) in conversationList"
|
|
|
- :key="conversation.conversation_id"
|
|
|
- >
|
|
|
- <v-list-item-content>
|
|
|
- <v-list-item-title>{{ conversation.conversation_title }}</v-list-item-title>
|
|
|
- </v-list-item-content>
|
|
|
- </v-list-item>
|
|
|
- </v-list-item-group>
|
|
|
- </v-list>
|
|
|
- </v-navigation-drawer>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import {
|
|
|
getAsk,
|
|
|
- addFeedback,
|
|
|
- getConversations,
|
|
|
- getConversationsById
|
|
|
+ addFeedback
|
|
|
} from '@/api/dataChart'
|
|
|
import { mapGetters } from 'vuex'
|
|
|
export default {
|
|
|
name: 'dataChartEditChat',
|
|
|
data () {
|
|
|
return {
|
|
|
- selected: null,
|
|
|
- lastSelected: null,
|
|
|
- drawer: false,
|
|
|
routingMode: undefined,
|
|
|
chips: [
|
|
|
{ text: '聊天模式', value: 'chat_direct' },
|
|
@@ -294,17 +257,13 @@ export default {
|
|
|
}
|
|
|
],
|
|
|
abortController: null,
|
|
|
- conversationId: undefined,
|
|
|
- conversationList: []
|
|
|
+ conversationId: undefined
|
|
|
// trueData: false
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
...mapGetters(['userInfo'])
|
|
|
},
|
|
|
- created () {
|
|
|
- this.getConversationList()
|
|
|
- },
|
|
|
methods: {
|
|
|
onNew () {
|
|
|
this.abortController.abort('')
|
|
@@ -413,48 +372,28 @@ export default {
|
|
|
}
|
|
|
this.$emit('render', data)
|
|
|
},
|
|
|
- async getConversationList () {
|
|
|
- try {
|
|
|
- const { data } = await getConversations({ limit: 5 })
|
|
|
- this.conversationList = data.conversations
|
|
|
- } catch (error) {
|
|
|
- this.$snackbar.error(error)
|
|
|
- }
|
|
|
- },
|
|
|
- async onSelectConversation (index) {
|
|
|
- if (!index) {
|
|
|
- setTimeout(() => {
|
|
|
- this.selected = this.lastSelected
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- this.lastSelected = index
|
|
|
- try {
|
|
|
- const { data } = await getConversationsById(this.conversationList[index].conversation_id)
|
|
|
- this.items.splice(1, this.items.length - 1, ...data.messages.map(e => {
|
|
|
- if (e.role === 'user') {
|
|
|
- return {
|
|
|
- type: 2,
|
|
|
- user: '游客',
|
|
|
- content: e.content
|
|
|
- }
|
|
|
- }
|
|
|
+ update (data) {
|
|
|
+ this.items.splice(1, this.items.length - 1, ...data.messages.map(e => {
|
|
|
+ if (e.role === 'user') {
|
|
|
return {
|
|
|
- type: 1,
|
|
|
- content: e.metadata,
|
|
|
- showSnackbar: false,
|
|
|
- dataValidation: false,
|
|
|
- question: e.content, // 记录当前问题
|
|
|
- showMenu: false,
|
|
|
- model: {
|
|
|
- dataAxis: null,
|
|
|
- typeAxis: null
|
|
|
- }
|
|
|
+ type: 2,
|
|
|
+ user: '游客',
|
|
|
+ content: e.content
|
|
|
}
|
|
|
- }))
|
|
|
- } catch (error) {
|
|
|
- this.$snackbar.error(error)
|
|
|
- }
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ type: 1,
|
|
|
+ content: e.metadata,
|
|
|
+ showSnackbar: false,
|
|
|
+ dataValidation: false,
|
|
|
+ question: e.content, // 记录当前问题
|
|
|
+ showMenu: false,
|
|
|
+ model: {
|
|
|
+ dataAxis: null,
|
|
|
+ typeAxis: null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }))
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -531,10 +470,4 @@ export default {
|
|
|
.element::-webkit-scrollbar {
|
|
|
display: none; /* Chrome/Safari/Opera */
|
|
|
}
|
|
|
-.history {
|
|
|
- position: absolute;
|
|
|
- right: 20px;
|
|
|
- top: 20px;
|
|
|
- z-index: 1;
|
|
|
-}
|
|
|
</style>
|