diff --git a/src/api/base/repository.ts b/src/api/base/repository.ts new file mode 100644 index 0000000..ce15cfe --- /dev/null +++ b/src/api/base/repository.ts @@ -0,0 +1,10 @@ +import { defHttp } from '@/utils/axios/index' + +/** + * @description 获取知识库文件列表 + */ +export async function repositoryFileList(id: string) { + return defHttp.get({ + url: `/open-gpts/qanything/getFileList?kbId=${id}`, + }) +} diff --git a/src/assets/svg/file_only.svg b/src/assets/svg/file_only.svg new file mode 100644 index 0000000..aa58c15 --- /dev/null +++ b/src/assets/svg/file_only.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/AppMessage/index.vue b/src/components/AppMessage/index.vue index 23419c8..c74ad62 100644 --- a/src/components/AppMessage/index.vue +++ b/src/components/AppMessage/index.vue @@ -11,9 +11,13 @@ import { copyText } from '@/utils/copyTextToClipboard' import { useMessageStore } from '@/store/moules/messageStore/index' const props = defineProps({ + elIndex: { + type: Number, + default: 0, + }, height: { type: String, - default: 'calc(100% - 120px)', + default: '100%', }, list: { type: Array as PropType, @@ -27,12 +31,13 @@ const props = defineProps({ const emit = defineEmits(['onScrollTop', 'reloadMessage']) -defineExpose({ getScrollTopDistance, seamlessScrollToTop }) +defineExpose({ seamlessScrollToTop, getElementOffsetTop }) const messageStore = useMessageStore() -const messageRef = ref(null) -const elHeight = ref(0) // 旧列表的高度 +const messageRef = ref(null) +const filstDivTop = ref(0) + const defaultScrollTop = ref(0) // 默认滚动距离 const isAutoScroll = ref(true) // 是否自动滚动 const conversationData = computed(() => messageStore.getConversationData) @@ -86,26 +91,16 @@ async function seamlessScrollToTop() { if (!messageRef.value) { return } - await getScrollTopDistance() - messageRef.value.scrollTo(0, elHeight.value) + messageRef.value.scrollTo(0, filstDivTop.value) } /** - * @description: 获取前10个元素的总高度,用于无缝滚动顶部的距离 - * @param size 获取的元素个数,默认为10 + * @description: 获取某个元素的滚动条位置 */ -async function getScrollTopDistance(size = 10) { - if (!messageRef.value || messageRef.value.children.length < size) { - return +async function getElementOffsetTop() { + if (messageRef.value) { + filstDivTop.value = messageRef.value.children[props.elIndex].offsetTop } - await nextTick() - elHeight.value = 0 - Array.from(messageRef.value.children).slice(0, size).forEach((item) => { - elHeight.value = elHeight.value + item.clientHeight - }) - - // +130 主要是做了个补充 - elHeight.value += 130 } /** @@ -126,7 +121,7 @@ onMounted(async () => {
@@ -145,7 +140,7 @@ onMounted(async () => { || conversationData?.type === MenuTypeEnum.REPOSITORY || conversationData?.type === MenuTypeEnum.VISUAL_ANALYSIS " - editor-id="preview-only-ai" + :editor-id="`preview-only-ai${index}`" :model-value="item.content" />
@@ -183,7 +178,7 @@ onMounted(async () => { diff --git a/src/components/AppTextarea/index.vue b/src/components/AppTextarea/index.vue index effab39..cd063a4 100644 --- a/src/components/AppTextarea/index.vue +++ b/src/components/AppTextarea/index.vue @@ -69,7 +69,7 @@ function stopMessage() { diff --git a/src/views/repository/index.vue b/src/views/repository/index.vue index 2eae58a..4f90fb0 100644 --- a/src/views/repository/index.vue +++ b/src/views/repository/index.vue @@ -1,8 +1,10 @@