diff --git a/ui/src/styles/element-plus.scss b/ui/src/styles/element-plus.scss index acf2ef494b6..5141a95e861 100644 --- a/ui/src/styles/element-plus.scss +++ b/ui/src/styles/element-plus.scss @@ -344,6 +344,8 @@ --el-checkbox-disabled-checked-input-fill: var(--mk-N400); --el-checkbox-disabled-checked-input-border-color: var(--mk-N400); --el-checkbox-disabled-checked-icon-color: white; + --el-checkbox-disabled-border-color: var(--mk-N400); + --el-checkbox-disabled-input-fill: var(--mk-N200); --el-checkbox-checked-text-color: var(--el-text-color-primary); margin: 0; height: unset; @@ -351,8 +353,12 @@ line-height: 22px; font-weight: 400; } - &__inner:before { - top: 6px !important; + &__inner { + &.is-disabled { + } + &:before { + top: 6px !important; + } } } @@ -785,6 +791,21 @@ &.is-checked + .el-radio__label { color: var(--el-text-color-primary) !important; } + &.is-disabled { + .el-radio__inner { + background-color: var(--mk-N200); + border-color: var(--mk-N400); + } + &.is-checked { + .el-radio__inner { + background-color: var(--mk-N400); + border-color: var(--mk-N400); + &::after { + background-color: var(--mk-N200); + } + } + } + } } &__inner { &::after { diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md index 205cf1eaaf3..27087540209 100644 --- a/ui/src/views/VIEW_README.md +++ b/ui/src/views/VIEW_README.md @@ -1061,11 +1061,15 @@ Layout 保留标题栏固定位置和外层间距,页面负责内部布局。 不新增权限判断或修改共享文档的查询边界。 Web、飞书和工作流知识库的非共享文档页在标题栏组合 -`document/import-document/ButtonImportDocument.vue`,复用详情上下文,不重复查询知识库。 +`document/import-document/ButtonImportDocument.vue`,页面传入已有路由变量 `knowledgeId`、 +`knowledgeType`(`KNOWLEDGE_TYPE_KEY` 标识),从详情上下文读取飞书 `folderToken` 和工作流图 `workflow`; +不传完整 `knowledge`,不重复查询知识库。 入口按类型挂载独立的 `WebImportDocumentDrawer.vue`、`LarkImportDocumentDrawer.vue`、 `WorkflowImportDocumentDrawer.vue`,关闭动画结束后卸载。 Web 和飞书使用全屏底部 Drawer,分别通过地址表单和飞书懒加载文件树进入文档处理策略; -策略复用 `DocumentStrategyForm`,首次挂载读取知识库策略,上一步保留草稿。 +策略复用 `DocumentStrategyForm`,使用组件默认策略,不回显知识库策略,上一步保留草稿。 +Web 抽屉只接收完整 Document API 与知识库 ID,地址和选择器初始为空; +飞书抽屉额外接收文件夹 Token,工作流抽屉只接收知识库 ID 和图数据;所有导入组件均不接收 `KnowledgeDetail`。 Web 地址按行去空白、去重并校验 HTTP/HTTPS;空选择器提交 `body`。 飞书按 `meta.folder_token` 查询目录并读取全部分页,已导入文档勾选且不可重复导入; 全选覆盖当前已加载节点,选择文件夹时由树懒加载子节点,加载期间禁止进入下一步。 diff --git a/ui/src/views/knowledge-detail/library/document/import-document/ButtonImportDocument.vue b/ui/src/views/knowledge-detail/library/document/import-document/ButtonImportDocument.vue index ab3d3c56fb7..60376231f08 100644 --- a/ui/src/views/knowledge-detail/library/document/import-document/ButtonImportDocument.vue +++ b/ui/src/views/knowledge-detail/library/document/import-document/ButtonImportDocument.vue @@ -1,30 +1,43 @@ - + 导入文档 @@ -149,42 +145,41 @@ defineExpose({ open }) 导入文档前,建议规范文档的分段标识。 - - - - - 全部文档 - - - - - - - - {{ data.name }} - 已导入 - - - - + + + + 全部文档 + + + + + + + + + {{ data.name }} + 已导入 + + + 文档处理策略 - + diff --git a/ui/src/views/knowledge-detail/library/document/import-document/WebImportDocumentDrawer.vue b/ui/src/views/knowledge-detail/library/document/import-document/WebImportDocumentDrawer.vue index d56bf692358..aa3e4c5fc73 100644 --- a/ui/src/views/knowledge-detail/library/document/import-document/WebImportDocumentDrawer.vue +++ b/ui/src/views/knowledge-detail/library/document/import-document/WebImportDocumentDrawer.vue @@ -2,12 +2,11 @@ import { computed, ref, useTemplateRef } from 'vue' import type { FormInstance, FormRules } from 'element-plus' import type DocumentApi from '@/api/admin/workspace/knowledge/document' -import type { KnowledgeDetail } from '@/api/types' import DocumentStrategyForm from '@/views/knowledge/create-knowledge/components/DocumentStrategyForm.vue' import { MsgSuccess } from '@/utils/message' defineOptions({ name: 'WebImportDocumentDrawer' }) -const props = defineProps<{ api: typeof DocumentApi; knowledge: KnowledgeDetail }>() +const props = defineProps<{ api: typeof DocumentApi; knowledgeId: string }>() const emit = defineEmits<{ refresh: []; closed: [] }>() /* Web 地址与处理策略 */ @@ -15,10 +14,10 @@ const visible = ref(false) const loading = ref(false) const activeStep = ref(0) const strategyMounted = ref(false) -const form = ref({ addresses: '', selector: String(props.knowledge.meta?.selector ?? '') }) +const form = ref({ source_url: '', selector: '' }) const sourceUrls = computed(() => [ ...new Set( - form.value.addresses + form.value.source_url .split(/\r?\n/) .map((url) => url.trim()) .filter(Boolean), @@ -27,23 +26,7 @@ const sourceUrls = computed(() => [ const formRef = ref() const strategyRef = useTemplateRef>('strategyRef') const rules: FormRules = { - addresses: [ - { required: true, whitespace: true, message: '请输入文档地址', trigger: 'blur' }, - { - validator: (_rule, _value, callback) => { - const valid = sourceUrls.value.every((address) => { - try { - const url = new URL(address) - return ['http:', 'https:'].includes(url.protocol) && Boolean(url.hostname) - } catch { - return false - } - }) - callback(valid ? undefined : new Error('请输入正确的文档地址,一行一个,仅支持 HTTP 或 HTTPS')) - }, - trigger: 'blur', - }, - ], + source_url: [{ required: true, whitespace: true, message: '请输入文档地址', trigger: 'blur' }], } function open() { visible.value = true @@ -60,9 +43,6 @@ function handleNext() { /* 表单展示校验错误。 */ }) } -function handleStrategyMounted() { - strategyRef.value?.setStrategy(props.knowledge.doc_strategy) -} function handleSubmit() { if (loading.value || !strategyRef.value) return loading.value = true @@ -71,13 +51,13 @@ function handleSubmit() { .then((valid) => { if (!valid || !strategyRef.value) return return props.api - .postWebDocument(props.knowledge.id, { + .postWebDocument(props.knowledgeId, { source_url_list: sourceUrls.value, selector: form.value.selector.trim() || 'body', doc_strategy: strategyRef.value.getStrategy(), }) .then(() => { - MsgSuccess('导入任务提交成功') + MsgSuccess('导入成功') visible.value = false emit('refresh') }) @@ -93,7 +73,7 @@ defineExpose({ open }) - + 导入文档 @@ -107,8 +87,8 @@ defineExpose({ open }) 基本信息 - - + + @@ -117,7 +97,7 @@ defineExpose({ open }) 文档处理策略 - + diff --git a/ui/src/views/knowledge-detail/library/document/import-document/WorkflowImportDocumentDrawer.vue b/ui/src/views/knowledge-detail/library/document/import-document/WorkflowImportDocumentDrawer.vue index d53a021fbc4..ec99044da9a 100644 --- a/ui/src/views/knowledge-detail/library/document/import-document/WorkflowImportDocumentDrawer.vue +++ b/ui/src/views/knowledge-detail/library/document/import-document/WorkflowImportDocumentDrawer.vue @@ -1,10 +1,11 @@