|
11 | 11 | <script setup lang="ts"> |
12 | 12 | import Menu from '@/components/menu.vue' |
13 | 13 | import { ref } from 'vue'; |
14 | | -import { useRouter } from 'vue-router' |
| 14 | +import { useRouter, useRoute } from 'vue-router' |
15 | 15 | import { storeToRefs } from "pinia"; |
16 | 16 | import { knowledgeStore } from "@/stores/knowledge"; |
17 | 17 | const usemenuStore = knowledgeStore(); |
18 | 18 | import useKnowledgeBase from '@/hooks/useKnowledgeBase' |
19 | 19 | import UploadMask from '@/components/upload-mask.vue' |
| 20 | +import { getKnowledgeBaseById } from '@/api/knowledge-base/index' |
| 21 | +import { MessagePlugin } from 'tdesign-vue-next' |
20 | 22 | let { requestMethod } = useKnowledgeBase() |
21 | 23 | const router = useRouter(); |
| 24 | +const route = useRoute(); |
22 | 25 | let ismask = ref(false) |
23 | 26 | let dropzone = ref(); |
24 | 27 | let uploadInput = ref(); |
25 | | -const dragover = (event) => { |
| 28 | +
|
| 29 | +// 获取当前知识库ID |
| 30 | +const getCurrentKbId = async (): Promise<string | null> => { |
| 31 | + let kbId = (route.params as any)?.kbId as string |
| 32 | + if (!kbId && route.name === 'chat' && (route.params as any)?.kbId) { |
| 33 | + kbId = (route.params as any).kbId |
| 34 | + } |
| 35 | + return kbId || null |
| 36 | +} |
| 37 | +
|
| 38 | +// 检查知识库初始化状态 |
| 39 | +const checkKnowledgeBaseInitialization = async (): Promise<boolean> => { |
| 40 | + const currentKbId = await getCurrentKbId(); |
| 41 | + |
| 42 | + if (!currentKbId) { |
| 43 | + MessagePlugin.error("缺少知识库ID"); |
| 44 | + return false; |
| 45 | + } |
| 46 | + |
| 47 | + try { |
| 48 | + const kbResponse = await getKnowledgeBaseById(currentKbId); |
| 49 | + const kb = kbResponse.data; |
| 50 | + |
| 51 | + // 检查知识库是否已初始化(有 EmbeddingModelID 和 SummaryModelID) |
| 52 | + if (!kb.embedding_model_id || kb.embedding_model_id === '' || |
| 53 | + !kb.summary_model_id || kb.summary_model_id === '') { |
| 54 | + MessagePlugin.warning("该知识库尚未完成初始化配置,请先前往设置页面配置模型信息后再上传文件"); |
| 55 | + return false; |
| 56 | + } |
| 57 | + return true; |
| 58 | + } catch (error) { |
| 59 | + console.error('获取知识库信息失败:', error); |
| 60 | + MessagePlugin.error("获取知识库信息失败,无法上传文件"); |
| 61 | + return false; |
| 62 | + } |
| 63 | +} |
| 64 | +
|
| 65 | +const dragover = (event: DragEvent) => { |
26 | 66 | event.preventDefault(); |
27 | 67 | ismask.value = true; |
28 | 68 | if (((window.innerWidth - event.clientX) < 50) || ((window.innerHeight - event.clientY) < 50) || event.clientX < 50 || event.clientY < 50) { |
29 | 69 | ismask.value = false |
30 | 70 | } |
31 | 71 | } |
32 | | -const drop = (event) => { |
| 72 | +const drop = async (event: DragEvent) => { |
33 | 73 | event.preventDefault(); |
34 | 74 | ismask.value = false |
35 | | - const DataTransferItemList = event.dataTransfer.items; |
36 | | - for (const dataTransferItem of DataTransferItemList) { |
37 | | - const fileEntry = dataTransferItem.webkitGetAsEntry(); |
38 | | - if (fileEntry) { |
39 | | - fileEntry.file((file: file) => { |
40 | | - requestMethod(file, uploadInput) |
41 | | - router.push('/platform/knowledge-bases?upload=true') |
42 | | - }) |
| 75 | + |
| 76 | + // 检查知识库初始化状态 |
| 77 | + const isInitialized = await checkKnowledgeBaseInitialization(); |
| 78 | + if (!isInitialized) { |
| 79 | + return; |
| 80 | + } |
| 81 | + |
| 82 | + const DataTransferItemList = event.dataTransfer?.items; |
| 83 | + if (DataTransferItemList) { |
| 84 | + for (const dataTransferItem of DataTransferItemList) { |
| 85 | + const fileEntry = dataTransferItem.webkitGetAsEntry() as FileSystemFileEntry | null; |
| 86 | + if (fileEntry) { |
| 87 | + fileEntry.file((file: File) => { |
| 88 | + requestMethod(file, uploadInput) |
| 89 | + // 修复页面跳转问题:不跳转,让上传成功后的逻辑处理 |
| 90 | + }) |
| 91 | + } |
43 | 92 | } |
44 | 93 | } |
45 | 94 | } |
46 | | -const dragstart = (event) => { |
| 95 | +const dragstart = (event: DragEvent) => { |
47 | 96 | event.preventDefault(); |
48 | 97 | } |
49 | 98 | </script> |
|
0 commit comments