feat: 对话日志
This commit is contained in:
parent
eb0b630fbb
commit
18dc8a0cfb
@ -115,6 +115,9 @@
|
|||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
height: 23px;
|
height: 23px;
|
||||||
}
|
}
|
||||||
|
tr.hightlight {
|
||||||
|
background: var(--el-table-current-row-bg-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-pagination .el-select .el-input {
|
.el-pagination .el-select .el-input {
|
||||||
|
|||||||
@ -9,7 +9,11 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<h4>{{ data?.name }}</h4>
|
<h4>{{ data?.name }}</h4>
|
||||||
</template>
|
</template>
|
||||||
<div v-loading="paginationConfig.current_page === 1 && loading">
|
<div
|
||||||
|
v-loading="paginationConfig.current_page === 1 && loading"
|
||||||
|
class="h-full"
|
||||||
|
style="padding: 24px 0"
|
||||||
|
>
|
||||||
<div v-infinite-scroll="loadDataset" :infinite-scroll-disabled="disabledScroll">
|
<div v-infinite-scroll="loadDataset" :infinite-scroll-disabled="disabledScroll">
|
||||||
<AiChat :data="data" :record="recordList" log></AiChat>
|
<AiChat :data="data" :record="recordList" log></AiChat>
|
||||||
</div>
|
</div>
|
||||||
@ -24,8 +28,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div>
|
<div>
|
||||||
<el-button :disabled="loading">上一条</el-button>
|
<el-button>上一条</el-button>
|
||||||
<el-button :disabled="loading">下一条</el-button>
|
<el-button>下一条</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-drawer>
|
</el-drawer>
|
||||||
@ -44,6 +48,8 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['changeId', 'close'])
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const {
|
const {
|
||||||
params: { id }
|
params: { id }
|
||||||
@ -75,6 +81,7 @@ function closeHandel() {
|
|||||||
currentChatId.value = ''
|
currentChatId.value = ''
|
||||||
paginationConfig.total = 0
|
paginationConfig.total = 0
|
||||||
paginationConfig.current_page = 1
|
paginationConfig.current_page = 1
|
||||||
|
emit('close')
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadDataset() {
|
function loadDataset() {
|
||||||
@ -93,11 +100,21 @@ function getChatRecord() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function nextRecord(id: string) {
|
||||||
|
// currentChatId.value = id
|
||||||
|
// emit('changeId', id)
|
||||||
|
// recordList.value = []
|
||||||
|
// paginationConfig.total = 0
|
||||||
|
// paginationConfig.current_page = 1
|
||||||
|
// getChatRecord()
|
||||||
|
// }
|
||||||
|
|
||||||
const open = (id: string) => {
|
const open = (id: string) => {
|
||||||
currentChatId.value = id
|
currentChatId.value = id
|
||||||
getChatRecord()
|
getChatRecord()
|
||||||
visible.value = true
|
visible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open
|
open
|
||||||
})
|
})
|
||||||
@ -106,7 +123,7 @@ defineExpose({
|
|||||||
.chat-record-drawer {
|
.chat-record-drawer {
|
||||||
.el-drawer__body {
|
.el-drawer__body {
|
||||||
background: var(--app-layout-bg-color);
|
background: var(--app-layout-bg-color);
|
||||||
padding: 24px 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -159,7 +159,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
|
|||||||
)
|
)
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
emit('updateContent', res.data)
|
emit('updateContent', res.data)
|
||||||
loading.value = false
|
dialogVisible.value = false
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
console.log('error submit!', fields)
|
console.log('error submit!', fields)
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
@changePage="getList"
|
@changePage="getList"
|
||||||
@row-click="rowClickHandle"
|
@row-click="rowClickHandle"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
|
:row-class-name="setRowClass"
|
||||||
>
|
>
|
||||||
<el-table-column prop="abstract" label="摘要" show-overflow-tooltip />
|
<el-table-column prop="abstract" label="摘要" show-overflow-tooltip />
|
||||||
<el-table-column prop="chat_record_count" label="对话提问数" align="right" />
|
<el-table-column prop="chat_record_count" label="对话提问数" align="right" />
|
||||||
@ -66,7 +67,7 @@
|
|||||||
</LayoutContainer>
|
</LayoutContainer>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, reactive, computed } from 'vue'
|
import { ref, onMounted, reactive, watch, computed } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import ChatRecordDrawer from './component/ChatRecordDrawer.vue'
|
import ChatRecordDrawer from './component/ChatRecordDrawer.vue'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
@ -105,17 +106,67 @@ const paginationConfig = reactive({
|
|||||||
page_size: 20,
|
page_size: 20,
|
||||||
total: 0
|
total: 0
|
||||||
})
|
})
|
||||||
const tableData = ref([])
|
const tableData = ref<any[]>([])
|
||||||
|
|
||||||
const history_day = ref(7)
|
const history_day = ref(7)
|
||||||
const search = ref('')
|
const search = ref('')
|
||||||
const detail = ref<any>(null)
|
const detail = ref<any>(null)
|
||||||
|
|
||||||
|
const currentChatId = ref('')
|
||||||
|
|
||||||
|
// watch(
|
||||||
|
// () => currentChatId.value,
|
||||||
|
// (val) => {
|
||||||
|
// const index = tableData.value.findIndex((item: any) => item.id === val)
|
||||||
|
// if (isFirst(index)) {
|
||||||
|
// prevChatId.value = ''
|
||||||
|
// } else {
|
||||||
|
// prevChatId.value = tableData.value[index - 1]?.id
|
||||||
|
// }
|
||||||
|
// console.log(isLast(index))
|
||||||
|
// if (isLast(index)) {
|
||||||
|
// nextChatId.value = ''
|
||||||
|
// } else {
|
||||||
|
// if (tableData.value[index + 1]) {
|
||||||
|
// nextChatId.value = tableData.value[index + 1]?.id
|
||||||
|
// // } else {
|
||||||
|
// // paginationConfig.current_page += 1
|
||||||
|
// // getList()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// { immediate: true }
|
||||||
|
// )
|
||||||
|
|
||||||
|
function isFirst(index: number) {
|
||||||
|
if (index === 0 && paginationConfig.current_page === 1) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isLast(index: number) {
|
||||||
|
console.log((paginationConfig.current_page - 1) * paginationConfig.page_size + index + 1)
|
||||||
|
if (
|
||||||
|
(paginationConfig.current_page - 1) * paginationConfig.page_size + index + 1 ===
|
||||||
|
paginationConfig.total
|
||||||
|
) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function rowClickHandle(row: any) {
|
function rowClickHandle(row: any) {
|
||||||
// router.push({ path: `/dataset/${id}/${row.id}` })
|
currentChatId.value = row.id
|
||||||
ChatRecordRef.value.open(row.id)
|
ChatRecordRef.value.open(row.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setRowClass = ({ row }: any) => {
|
||||||
|
return currentChatId.value === row?.id ? 'hightlight' : ''
|
||||||
|
}
|
||||||
|
|
||||||
function deleteLog(row: any) {
|
function deleteLog(row: any) {
|
||||||
MsgConfirm(`是否删除对话:${row.abstract} ?`, `删除后无法恢复,请谨慎操作。`, {
|
MsgConfirm(`是否删除对话:${row.abstract} ?`, `删除后无法恢复,请谨慎操作。`, {
|
||||||
confirmButtonText: '删除',
|
confirmButtonText: '删除',
|
||||||
@ -151,6 +202,9 @@ function getList() {
|
|||||||
}
|
}
|
||||||
logApi.getChatLog(id as string, paginationConfig, obj, loading).then((res) => {
|
logApi.getChatLog(id as string, paginationConfig, obj, loading).then((res) => {
|
||||||
tableData.value = res.data.records
|
tableData.value = res.data.records
|
||||||
|
if (currentChatId.value) {
|
||||||
|
currentChatId.value = tableData.value[0]?.id
|
||||||
|
}
|
||||||
paginationConfig.total = res.data.total
|
paginationConfig.total = res.data.total
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user