From 009b7f6d7b1e81e43e5d20fcb862ee46a211daf9 Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Sat, 10 Oct 2026 10:59:11 +0800 Subject: [PATCH] feat: import document --- .../api/admin/workspace/knowledge/document.ts | 2 +- ui/src/styles/STYLE_README.md | 5 + ui/src/styles/element-plus.scss | 12 ++ ui/src/views/VIEW_README.md | 11 +- .../LarkImportDocumentDrawer.vue | 150 +++++++++--------- .../WebImportDocumentDrawer.vue | 4 +- .../components/SyncLogTable.vue | 4 +- .../components/PermissionTable.vue | 15 +- 8 files changed, 103 insertions(+), 100 deletions(-) diff --git a/ui/src/api/admin/workspace/knowledge/document.ts b/ui/src/api/admin/workspace/knowledge/document.ts index d5f76637b2b..3a637e49633 100644 --- a/ui/src/api/admin/workspace/knowledge/document.ts +++ b/ui/src/api/admin/workspace/knowledge/document.ts @@ -29,7 +29,7 @@ const getDocumentPage = (knowledgeId: string, page: ParamsPage, query?: Dict put(`${getPrefix(knowledgeId)}/batch_create`, documents) -/** 按处理策略解析文本文件,返回分段与原文件关联信息。 */ +/** 分段预览 */ const postSplitDocuments = (knowledgeId: string, files: File[], strategy: DocumentStrategy) => { const data = new FormData() files.forEach((file) => data.append('file', file)) diff --git a/ui/src/styles/STYLE_README.md b/ui/src/styles/STYLE_README.md index 6d479f43077..b7b1c48fe45 100644 --- a/ui/src/styles/STYLE_README.md +++ b/ui/src/styles/STYLE_README.md @@ -505,6 +505,11 @@ Tailwind v4 的 `border` 只设置边框宽度和样式,不提供 `--tw-border `height: auto`。Element Plus 默认尺寸未定义 `--el-button-size`,必须回退到 32px 的 `--el-component-size`,避免高度由内容和内边距撑开;业务需要的内边距和禁用颜色单独保留。 +树形 Table 的名称列统一通过 `el-table-column` 的 `class-name="expand-name-column"` +启用同行布局。样式维护在 `element-plus.scss` 的 table 分组,令单元格使用纵向居中的 Flex, +并禁止展开图标、缩进和占位元素收缩,使长名称截断时保持目录层级。 +资源授权 `PermissionTable` 和飞书导入表格共用该类,页面不再重复声明对应的 `:deep()` 样式。 + Tree 的 `.el-tree-node__content` 统一保留 4px 底部间距,使同级节点及展开后的父子节点行 保持一致间距;规则维护在 `element-plus.scss` 的 tree 分组。 diff --git a/ui/src/styles/element-plus.scss b/ui/src/styles/element-plus.scss index 5141a95e861..0abb1fe379a 100644 --- a/ui/src/styles/element-plus.scss +++ b/ui/src/styles/element-plus.scss @@ -1116,6 +1116,18 @@ border-right: 1px solid var(--el-table-border-color); } + /* 树形名称列:展开图标、缩进与业务内容同行。 */ + .expand-name-column > .cell { + align-items: center; + display: flex; + + .el-table__expand-icon, + .el-table__indent, + .el-table__placeholder { + flex-shrink: 0; + } + } + [class*='el-table__row--level'] .el-table__expand-icon { align-items: center; display: inline-flex; diff --git a/ui/src/views/VIEW_README.md b/ui/src/views/VIEW_README.md index 77fdc5d81e5..27bae14a629 100644 --- a/ui/src/views/VIEW_README.md +++ b/ui/src/views/VIEW_README.md @@ -1068,14 +1068,19 @@ Web、飞书和工作流知识库的非共享文档页在标题栏组合 不传完整 `knowledge`,不重复查询知识库。 入口按类型挂载独立的 `WebImportDocumentDrawer.vue`、`LarkImportDocumentDrawer.vue`、 `WorkflowImportDocumentDrawer.vue`,关闭动画结束后卸载。 -Web 和飞书使用全屏底部 Drawer,分别通过地址表单和飞书懒加载文件树进入文档处理策略; +Web 和飞书使用全屏底部 Drawer,分别通过地址表单和飞书 `MkTable` 懒加载目录表格进入文档处理策略; 策略复用 `DocumentStrategyForm`,使用组件默认策略,不回显知识库策略,上一步保留草稿。 Web 抽屉只接收完整 Document API 与知识库 ID,地址和选择器初始为空; 飞书抽屉额外接收文件夹 Token,工作流抽屉只接收知识库 ID 和图数据;所有导入组件均不接收 `KnowledgeDetail`。 Web 地址按行去空白、去重并校验 HTTP/HTTPS;空选择器提交 `body`。 飞书按 `meta.folder_token` 查询目录并读取全部分页,已导入文档勾选且不可重复导入; -全选覆盖当前已加载节点,选择文件夹时由树懒加载子节点,加载期间禁止进入下一步。 -正式导入只提交未导入的文件,不将文件夹作为文档。 +表格使用原生 `type="selection"` 选择列和名称列,表头全选覆盖当前已加载节点; +初始化仅加载根目录,文件夹默认收起,展开与收起由 Table 维护。 +不重复保存表格选择状态,在下一步通过 `getSelectionRows()` 获取待导入文档。 +文件夹持续保留懒加载标记,由 Table 维护层级和缩进,避免与普通树数据混用导致层级丢失。 +原生选择维护已加载节点的父子联动与半选,勾选文件夹不请求子目录,只有展开时加载。 +展开已选文件夹时新加载的节点继承勾选,加载期间禁止进入下一步。 +正式导入沿用 v2,仅过滤已导入项,保留所选文件夹的名称、Token 和类型,不在前端递归展开文件夹。 两者提交成功关闭并刷新列表,失败保留输入、选择和策略。 工作流导入 Drawer 与 DebugDrawer 使用相同的三步 Action,直接引用 `views/workflow/knowledge/debug/action/` 的 DataSource、KnowledgeBase 和 Result, diff --git a/ui/src/views/knowledge-detail/library/document/import-document/LarkImportDocumentDrawer.vue b/ui/src/views/knowledge-detail/library/document/import-document/LarkImportDocumentDrawer.vue index bd5d3c81ea6..975122d7037 100644 --- a/ui/src/views/knowledge-detail/library/document/import-document/LarkImportDocumentDrawer.vue +++ b/ui/src/views/knowledge-detail/library/document/import-document/LarkImportDocumentDrawer.vue @@ -1,6 +1,6 @@