From c2c1d4eeb96ed81bf5a00f0f09d8721c0ec54020 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Thu, 26 Jun 2025 20:03:02 +0800 Subject: [PATCH] feat: make folder_id optional in KnowledgeSerializer query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1057489 --user=刘瑞斌 【知识库】-文档迁移功能报错,无法选择文件夹和目标知识库 https://www.tapd.cn/62980211/s/1719276 --- apps/knowledge/serializers/knowledge.py | 6 ++++-- ui/src/views/document/component/SelectKnowledgeDialog.vue | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/knowledge/serializers/knowledge.py b/apps/knowledge/serializers/knowledge.py index ff1890bca..7b37740b8 100644 --- a/apps/knowledge/serializers/knowledge.py +++ b/apps/knowledge/serializers/knowledge.py @@ -109,7 +109,7 @@ class HitTestSerializer(serializers.Serializer): class KnowledgeSerializer(serializers.Serializer): class Query(serializers.Serializer): workspace_id = serializers.CharField(required=True) - folder_id = serializers.CharField(required=True) + folder_id = serializers.CharField(required=False, label=_('folder id'), allow_null=True) name = serializers.CharField(required=False, label=_('knowledge name'), allow_null=True, allow_blank=True, max_length=64, min_length=1) desc = serializers.CharField(required=False, label=_('knowledge description'), allow_null=True, @@ -196,7 +196,9 @@ class KnowledgeSerializer(serializers.Serializer): def list(self): self.is_valid(raise_exception=True) - folder_id = self.data.get('folder_id', self.data.get("workspace_id")) + folder_id = self.data.get('folder_id') + if not folder_id: + folder_id = self.data.get('workspace_id') root = KnowledgeFolder.objects.filter(id=folder_id).first() if not root: raise serializers.ValidationError(_('Folder not found')) diff --git a/ui/src/views/document/component/SelectKnowledgeDialog.vue b/ui/src/views/document/component/SelectKnowledgeDialog.vue index a41bdf163..b004ca045 100644 --- a/ui/src/views/document/component/SelectKnowledgeDialog.vue +++ b/ui/src/views/document/component/SelectKnowledgeDialog.vue @@ -59,11 +59,14 @@ import { ref, watch, computed } from 'vue' import { useRoute } from 'vue-router' import { loadSharedApi } from '@/utils/dynamics-api/shared-api' +import useStore from "@/stores"; const route = useRoute() const { params: { id }, // id为knowledgeID } = route as any +const { user } = useStore() + const apiType = computed(() => { if (route.path.includes('shared')) { return 'systemShare' @@ -96,9 +99,9 @@ const defaultProps = { const loadTree = (node: any, resolve: any) => { console.log(node) if (node.isLeaf) return resolve([]) - const folder_id = node.level === 0 ? '' : node.data.id + const folder_id = node.level === 0 ? user.getWorkspaceId() : node.data.id loadSharedApi({ type: 'knowledge', systemType: apiType.value }) - .getKnowledgeList(folder_id, loading) + .getKnowledgeList({folder_id: folder_id}, loading) .then((res: any) => { resolve(res.data) })