diff --git a/web/src/components/GraphDetailPanel.vue b/web/src/components/GraphDetailPanel.vue index 4df34962..86fb9ff7 100644 --- a/web/src/components/GraphDetailPanel.vue +++ b/web/src/components/GraphDetailPanel.vue @@ -97,7 +97,7 @@ const filteredEdgeProperties = computed(() => { \ No newline at end of file diff --git a/web/src/views/GraphView.vue b/web/src/views/GraphView.vue index adde1629..32c5b6e7 100644 --- a/web/src/views/GraphView.vue +++ b/web/src/views/GraphView.vue @@ -30,7 +30,14 @@ - 上传文件 + 上传文件 + 上传文件 为{{ unindexedCount }}个节点添加索引 @@ -73,6 +80,9 @@
+ + 导出数据 + 说明 @@ -91,14 +101,12 @@ :unindexed-count="unindexedCount" :model-matched="modelMatched" @index-nodes="indexNodes" - @export-data="exportGraphData" />
@@ -144,6 +152,32 @@ + + +
+ +
+

如需上传文档到当前选中的知识库,请前往对应的知识库详情页面进行操作:

+
+ + 前往知识库详情页 + +
+
+
+
+ import { computed, onMounted, reactive, ref, h } from 'vue'; +import { useRouter } from 'vue-router'; import { message } from 'ant-design-vue'; import { useConfigStore } from '@/stores/config'; -import { UploadOutlined, SyncOutlined, GlobalOutlined, InfoCircleOutlined, SearchOutlined, ReloadOutlined, LoadingOutlined, HighlightOutlined } from '@ant-design/icons-vue'; +import { UploadOutlined, SyncOutlined, GlobalOutlined, InfoCircleOutlined, SearchOutlined, ReloadOutlined, LoadingOutlined, HighlightOutlined, DatabaseOutlined, ExportOutlined } from '@ant-design/icons-vue'; import HeaderComponent from '@/components/HeaderComponent.vue'; import { neo4jApi, unifiedApi } from '@/apis/graph_api'; import { useUserStore } from '@/stores/user'; @@ -193,6 +228,7 @@ const configStore = useConfigStore(); const cur_embed_model = computed(() => configStore.config?.embed_model); const modelMatched = computed(() => !graphInfo?.value?.embed_model_name || graphInfo.value.embed_model_name === cur_embed_model.value) +const router = useRouter(); const graphRef = ref(null) const graphInfo = ref(null) const fileList = ref([]); @@ -207,6 +243,7 @@ const state = reactive({ searchLoading: false, showModal: false, showInfoModal: false, + showUploadTipModal: false, processing: false, indexing: false, showPage: true, @@ -458,6 +495,33 @@ const getDatabaseName = () => { return selectedDb ? selectedDb.label : state.selectedDbId; }; +const getUploadTipMessage = () => { + if (isNeo4j.value) { + return 'Neo4j 图数据库支持通过上传 JSONL 格式文件直接导入实体和关系数据。'; + } else { + const selectedDb = state.dbOptions.find(db => db.value === state.selectedDbId); + const dbType = selectedDb?.type || '未知'; + const dbName = selectedDb?.label || getDatabaseName(); + return `当前选择的是 ${dbType.toUpperCase()} 类型的知识库"${dbName}",该类型知识库需要在文档知识库页面上传文档,系统会自动从中提取知识图谱。`; + } +}; + +const goToDatabasePage = () => { + state.showUploadTipModal = false; + + // 如果不是 Neo4j,需要找到对应的知识库 ID 并跳转 + if (!isNeo4j.value) { + const selectedDb = state.dbOptions.find(db => db.value === state.selectedDbId); + if (selectedDb && selectedDb.type !== 'neo4j') { + // 跳转到对应的知识库详情页面 + router.push(`/database/${state.selectedDbId}`); + } else { + // 如果找不到对应的数据库,跳转到数据库列表页面 + router.push('/database'); + } + } +}; + \ No newline at end of file