From 091f5fcb429d87bdb94292a9bef40af59280dfec Mon Sep 17 00:00:00 2001 From: wangdan-fit2cloud Date: Sun, 30 Aug 2026 19:25:17 +0800 Subject: [PATCH] feat: tool and format --- ui/.editorconfig | 2 +- ui/.prettierignore | 2 + ui/.prettierrc.json | 2 +- ui/src/api/admin/auth/base-info.ts | 6 +- ui/src/api/admin/auth/current-user.ts | 6 +- ui/src/api/admin/auth/external-login.ts | 9 +- ui/src/api/admin/auth/login.ts | 7 +- ui/src/api/admin/core/request.ts | 108 +-- ui/src/api/admin/model-provider.ts | 33 +- .../system/chat-user/chat-user-auth-scan.ts | 6 +- .../admin/system/chat-user/chat-user-auth.ts | 6 +- .../system/chat-user/chat-user-groups.ts | 22 +- .../api/admin/system/chat-user/chat-user.ts | 10 +- ui/src/api/admin/system/common.ts | 6 +- ui/src/api/admin/system/operate-log.ts | 8 +- .../admin/system/resource-authorization.ts | 36 +- ui/src/api/admin/system/role.ts | 26 +- .../system/settings/auth-scan-setting.ts | 6 +- .../api/admin/system/settings/auth-setting.ts | 8 +- .../admin/system/settings/email-setting.ts | 6 +- .../admin/system/settings/theme-setting.ts | 4 +- .../admin/system/shared-resources/model.ts | 12 +- ui/src/api/admin/system/user-groups.ts | 37 +- ui/src/api/admin/system/user-manage.ts | 20 +- ui/src/api/admin/system/workspace.ts | 22 +- ui/src/api/admin/tool-store.ts | 8 +- .../workspace/application/application.ts | 18 +- ui/src/api/admin/workspace/common.ts | 4 +- ui/src/api/admin/workspace/folder.ts | 7 +- .../admin/workspace/knowledge/knowledge.ts | 10 +- ui/src/api/admin/workspace/model/model.ts | 12 +- ui/src/api/admin/workspace/shared.ts | 16 +- ui/src/api/admin/workspace/tool/store.ts | 23 +- ui/src/api/admin/workspace/tool/tool.ts | 9 +- ui/src/api/enums/application.ts | 5 +- ui/src/api/enums/chat-user.ts | 11 +- ui/src/api/enums/knowledge.ts | 8 +- ui/src/api/enums/model.ts | 7 +- ui/src/api/enums/resource-authorization.ts | 14 +- ui/src/api/enums/system-role.ts | 6 +- ui/src/api/enums/tool.ts | 15 +- ui/src/api/types/common.ts | 5 +- ui/src/api/types/login.ts | 5 +- ui/src/api/types/model.ts | 5 +- ui/src/api/types/tool.ts | 4 +- ui/src/assets/iconfont.js | 2 +- ui/src/chat.ts | 4 +- ui/src/components/COMPONENT_README.md | 146 ++-- .../business/folder-tree/FolderFormDialog.vue | 40 +- .../business/folder-tree/MoveToDialog.vue | 132 ++-- .../business/folder-tree/VirtualizedTree.vue | 39 +- .../components/business/folder-tree/index.vue | 207 ++--- .../components/business/folder-tree/types.ts | 8 +- .../business/model-select/index.vue | 61 +- .../business/workspace-dropdown/index.vue | 15 +- .../workspace-relation-tags/index.vue | 17 +- ui/src/components/codemirror-editor/Json.vue | 12 +- .../components/codemirror-editor/python.vue | 31 +- .../components/global/mk-collapse/index.vue | 26 +- .../global/mk-complex-search/index.vue | 47 +- ui/src/components/global/mk-dialog/index.vue | 31 +- ui/src/components/global/mk-drawer/index.vue | 10 +- .../components/global/mk-dropdown/index.vue | 16 +- .../global/mk-dropdown/mk-dropdown-item.vue | 11 +- ui/src/components/global/mk-empty/index.vue | 36 +- .../global/mk-filterable-dropdown/index.vue | 33 +- .../global/mk-icon/KnowledgeIcon.vue | 11 +- ui/src/components/global/mk-icon/ToolIcon.vue | 25 +- ui/src/components/global/mk-icon/index.vue | 4 +- .../global/mk-infinite-scroll/index.vue | 44 +- .../components/global/mk-list-item/index.vue | 27 +- .../global/mk-search-input/index.vue | 21 +- .../global/mk-status-label/index.vue | 12 +- ui/src/components/global/mk-table/index.vue | 26 +- .../global/mk-table/mk-table-filter.vue | 48 +- .../mk-table/mk-table-more-dropdown.vue | 11 +- .../components/global/mk-tag-group/index.vue | 5 +- .../global/mk-view-layout/index.vue | 87 +-- .../global/mk-view-layout/layout-aside.vue | 61 +- .../mk-view-layout/layout-batch-footer.vue | 21 +- ui/src/components/mk-date-range/index.vue | 16 +- ui/src/components/mk-drag-upload/index.vue | 35 +- ui/src/components/mk-dynamics-form/Demo.vue | 32 +- .../components/mk-dynamics-form/FormItem.vue | 48 +- .../mk-dynamics-form/FormItemLabel.vue | 4 +- .../constructor/BasicInfoConstructor.vue | 63 +- .../mk-dynamics-form/constructor/index.vue | 64 +- .../items/DatePickerConstructor.vue | 76 +- .../items/JsonInputConstructor.vue | 34 +- .../items/KnowledgeConstructor.vue | 63 +- .../constructor/items/ModelConstructor.vue | 104 +-- .../constructor/items/MultiRowConstructor.vue | 68 +- .../items/MultiSelectConstructor.vue | 75 +- .../items/PasswordInputConstructor.vue | 57 +- .../items/RadioCardConstructor.vue | 71 +- .../constructor/items/RadioRowConstructor.vue | 64 +- .../items/SingleSelectConstructor.vue | 62 +- .../constructor/items/SliderConstructor.vue | 62 +- .../items/SwitchInputConstructor.vue | 28 +- .../items/TextInputConstructor.vue | 59 +- .../items/TextareaInputConstructor.vue | 68 +- .../items/TreeSelectConstructor.vue | 140 +--- .../items/UploadInputConstructor.vue | 72 +- .../constructor/visibility/ConditionRow.vue | 66 +- .../constructor/visibility/FieldSelector.vue | 19 +- .../constructor/visibility/index.vue | 43 +- .../constructor/visibility/utils.ts | 23 +- ui/src/components/mk-dynamics-form/index.vue | 94 +-- .../mk-dynamics-form/items/JsonInput.vue | 4 +- .../mk-dynamics-form/items/MultiRow.vue | 5 +- .../mk-dynamics-form/items/PasswordInput.vue | 7 +- .../items/complex/ArrayObjectCard.vue | 9 +- .../items/complex/ObjectCard.vue | 4 +- .../items/complex/TabCard.vue | 16 +- .../items/knowledge/Knowledge.vue | 26 +- .../items/label/TooltipLabel.vue | 11 +- .../mk-dynamics-form/items/model/Model.vue | 62 +- .../mk-dynamics-form/items/radio/Radio.vue | 9 +- .../items/radio/RadioButton.vue | 9 +- .../items/radio/RadioCard.vue | 18 +- .../items/select/MultiSelect.vue | 19 +- .../items/select/SingleSelect.vue | 9 +- .../mk-dynamics-form/items/slider/Slider.vue | 2 +- .../items/table/ProgressTableItem.vue | 12 +- .../items/table/TableCheckbox.vue | 41 +- .../items/table/TableRadio.vue | 28 +- .../mk-dynamics-form/items/tree/Tree.vue | 118 +-- .../items/upload/LocalFileUpload.vue | 44 +- .../items/upload/UploadInput.vue | 36 +- ui/src/components/mk-dynamics-form/type.ts | 20 +- ui/src/components/mk-form-list/index.vue | 31 +- ui/src/components/mk-logo/LogoFull.vue | 37 +- ui/src/components/mk-logo/LogoIcon.vue | 54 +- ui/src/components/mk-search-list/index.vue | 23 +- ui/src/components/mk-source-card/index.vue | 22 +- .../mk-source-card-action-dropdown.vue | 12 +- .../mk-source-card/mk-source-card-action.vue | 10 +- ui/src/constants/auth.ts | 14 +- ui/src/constants/folder.ts | 20 +- ui/src/constants/theme.ts | 44 +- ui/src/layout/AppLayout.vue | 4 +- ui/src/layout/LayoutHeader.vue | 15 +- ui/src/layout/LayoutSidebar.vue | 9 +- ui/src/layout/avatar-dropdown/index.vue | 3 +- .../header-workspace-dropdown/index.vue | 13 +- ui/src/layout/sidebar/SystemSidebar.vue | 41 +- ui/src/layout/sidebar/WorkspaceSidebar.vue | 14 +- ui/src/main.ts | 4 +- ui/src/permission/core/common.ts | 56 +- ui/src/permission/core/data.ts | 3 +- ui/src/permission/core/index.ts | 40 +- .../permission/modules/application/system.ts | 3 +- .../modules/application/workspace.ts | 3 +- ui/src/permission/modules/index.ts | 8 +- ui/src/permission/modules/knowledge/share.ts | 3 +- ui/src/permission/modules/knowledge/system.ts | 3 +- .../permission/modules/knowledge/workspace.ts | 3 +- .../permission/modules/system/appearance.ts | 5 +- .../modules/system/authorization.ts | 20 +- ui/src/permission/modules/system/chatAuth.ts | 4 +- .../permission/modules/system/chatUserAuth.ts | 4 +- ui/src/permission/modules/system/email.ts | 5 +- ui/src/permission/modules/system/homepage.ts | 5 +- ui/src/permission/modules/system/index.ts | 16 +- ui/src/permission/modules/system/loginAuth.ts | 5 +- .../permission/modules/system/operationLog.ts | 6 +- ui/src/permission/modules/system/portal.ts | 5 +- ui/src/permission/policy.ts | 14 +- ui/src/router/admin/index.ts | 14 +- ui/src/router/admin/login/index.ts | 14 +- ui/src/router/admin/system/index.ts | 175 +---- ui/src/router/admin/utils.ts | 5 +- .../admin/workspace/modules/application.ts | 15 +- ui/src/router/admin/workspace/modules/home.ts | 7 +- .../admin/workspace/modules/knowledge.ts | 15 +- .../router/admin/workspace/modules/model.ts | 7 +- ui/src/router/admin/workspace/modules/tool.ts | 7 +- ui/src/router/chat/index.ts | 5 +- ui/src/router/chat/routes.ts | 9 +- ui/src/stores/auth.ts | 23 +- ui/src/stores/theme.ts | 15 +- ui/src/stores/user.ts | 5 +- ui/src/styles/STYLE_README.md | 6 +- ui/src/styles/app.scss | 12 +- ui/src/styles/element-plus.scss | 53 +- ui/src/styles/variables.scss | 6 +- ui/src/utils/common.ts | 1 - ui/src/utils/icon.ts | 2 - ui/src/utils/message.ts | 28 +- ui/src/utils/number.ts | 7 +- ui/src/utils/use-responsive.ts | 3 +- ui/src/views/VIEW_README.md | 83 +- ui/src/views/application/ApplicationView.vue | 31 +- .../components/ApplicationCard.vue | 15 +- .../components/ApplicationCreateDropdown.vue | 36 +- ui/src/views/application/template.ts | 728 ++++-------------- ui/src/views/home/HomeView.vue | 1 - ui/src/views/knowledge/DocumentDetailView.vue | 5 +- .../views/knowledge/KnowledgeDetailView.vue | 5 +- ui/src/views/knowledge/KnowledgeView.vue | 30 +- .../knowledge/components/KnowledgeCard.vue | 15 +- ui/src/views/login/ForgotPasswordView.vue | 46 +- ui/src/views/login/LoginView.vue | 47 +- ui/src/views/login/components/LoginLayout.vue | 21 +- ui/src/views/login/constants.ts | 6 +- ui/src/views/login/modes/AccountLogin.vue | 94 +-- ui/src/views/login/modes/QrCodeLogin.vue | 21 +- .../login/scanComponents/dingtalkQrCode.vue | 5 +- .../views/login/scanComponents/larkQrCode.vue | 13 +- ui/src/views/model/ModelView.vue | 93 +-- .../AdvancedSettingsTable.vue | 33 +- .../ModelParamDialog.vue | 21 +- .../views/model/components/ModelProvider.vue | 94 +-- .../model/create-model/CreateModelDrawer.vue | 148 +--- .../model/create-model/ModelCreateButton.vue | 22 +- .../create-model/SelectProviderDrawer.vue | 15 +- .../model-card/{index.vue => ModelCard.vue} | 37 +- .../model/model-card/ModelDownloadStatus.vue | 18 +- .../{delete-model => }/DeleteModelAction.vue | 10 +- .../EditModelAction.vue | 22 +- .../EditModelDrawer.vue | 72 +- .../model/model-card/action-dropdown/index.ts | 6 +- .../ParamSettingAction.vue | 16 +- .../ParamSettingDrawer.vue | 8 +- .../authentication/AuthenticationView.vue | 7 +- .../chat/authentication/EditSCANDrawer.vue | 36 +- .../chat/authentication/components/CAS.vue | 34 +- .../chat/authentication/components/LDAP.vue | 52 +- .../chat/authentication/components/OAuth2.vue | 65 +- .../chat/authentication/components/OIDC.vue | 57 +- .../authentication/components/SCANLogin.vue | 26 +- .../chat/user-groups/GroupsListView.vue | 44 +- .../dialog/CreateGroupMemberDialog.vue | 26 +- .../dialog/CreateOrUpdateGroupDialog.vue | 22 +- .../system/chat/users/UserFromDrawer.vue | 91 +-- .../views/system/chat/users/UserListView.vue | 35 +- .../users/dialog/BatchSetUserGroupDialog.vue | 27 +- .../chat/users/dialog/ImportUsersDialog.vue | 45 +- .../chat/users/dialog/QuotaSettingsDialog.vue | 60 +- .../chat/users/dialog/UserPwdDialog.vue | 47 +- .../system/identity/groups/GroupsListView.vue | 79 +- .../groups/dialog/CreateGroupMemberDialog.vue | 16 +- .../dialog/CreateOrUpdateGroupDialog.vue | 26 +- .../ResourceAuthorizationView.vue | 112 +-- .../components/PermissionTable.vue | 82 +- .../components/UserAuthorizationList.vue | 24 +- .../components/UserGroupAuthorizationList.vue | 16 +- .../resource-authorization/constants.ts | 24 +- .../dialog/BatchSetPermissionDialog.vue | 10 +- .../system/identity/roles/AddMemberDrawer.vue | 33 +- .../system/identity/roles/RoleListView.vue | 32 +- .../roles/components/RoleMemberList.vue | 25 +- .../RolePermissionConfiguration.vue | 73 +- .../roles/dialog/CreateOrUpdateRoleDialog.vue | 30 +- .../system/identity/users/UserFromDrawer.vue | 77 +- .../system/identity/users/UserListView.vue | 43 +- .../users/components/UserGroupSetting.vue | 44 +- .../users/dialog/BatchSetUserRoleDialog.vue | 69 +- .../identity/users/dialog/UserPwdDialog.vue | 47 +- .../identity/workspaces/AddMemberDrawer.vue | 58 +- .../identity/workspaces/WorkspaceListView.vue | 62 +- .../dialog/CreateOrUpdateWorkspaceDialog.vue | 34 +- .../operate-logs/OperateLogListView.vue | 42 +- .../dialog/CleanStrategyDialog.vue | 14 +- .../authentication/AuthenticationView.vue | 7 +- .../authentication/EditSCANDrawer.vue | 36 +- .../authentication/components/CAS.vue | 34 +- .../authentication/components/LDAP.vue | 52 +- .../components/LoginSetting.vue | 108 +-- .../authentication/components/OAuth2.vue | 65 +- .../authentication/components/OIDC.vue | 57 +- .../authentication/components/SCANLogin.vue | 24 +- .../authentication/components/Saml2.vue | 53 +- .../settings/email/EmailSettingsView.vue | 21 +- .../system/settings/theme/LoginPreview.vue | 53 +- .../settings/theme/ThemeSettingView.vue | 342 ++++---- .../shared-resources/SharedModelview.vue | 82 +- ui/src/views/tool/McpConfigDialog.vue | 28 - ui/src/views/tool/ToolView.vue | 136 ++-- .../tool/components/CreateToolDropdown.vue | 69 +- .../OpenToolStoreButton.vue} | 13 +- .../python-code/GenerateCodeDialog.vue | 608 --------------- .../views/tool/tool-card/InitParamDialog.vue | 38 +- ui/src/views/tool/tool-card/ToolCard.vue | 57 ++ .../views/tool/tool-card/ToolStatusSwitch.vue | 75 ++ .../tool/tool-card/UpdateVersionButton.vue | 36 +- .../{copy-tool => }/CopyToolAction.vue | 38 +- .../{delete-tool => }/DeleteToolAction.vue | 10 +- .../{edit-tool => }/EditToolAction.vue | 92 +-- .../{export-tool => }/ExportToolAction.vue | 6 +- .../action-dropdown/InitParamAction.vue | 43 ++ .../action-dropdown/MoveToolAction.vue | 60 ++ .../tool/tool-card/action-dropdown/index.ts | 11 +- .../mcp-config-action/McpConfigAction.vue | 41 + .../mcp-config-action/McpConfigDialog.vue | 38 + ui/src/views/tool/tool-card/index.vue | 166 ---- .../tool/tool-form/DataSourceFormDrawer.vue | 77 +- ui/src/views/tool/tool-form/McpFormDrawer.vue | 73 +- .../tool/tool-form/SkillToolFormDrawer.vue | 71 +- .../tool/tool-form/StoreToolFormDialog.vue | 125 +++ .../tool/tool-form/WorkflowFormDialog.vue | 68 +- .../component}/init-field/InitFieldDialog.vue | 56 +- .../component}/init-field/InitFieldTable.vue | 17 +- .../input-field/InputFieldDialog.vue | 59 +- .../input-field/InputFieldTable.vue | 7 +- .../component}/python-code/CodeSetting.vue | 4 +- .../tool-form/tool-custom/ToolDebugDrawer.vue | 65 +- .../tool-form/tool-custom/ToolFormDrawer.vue | 78 +- .../tool/tool-store/AddStoreToolDialog.vue | 85 -- .../views/tool/tool-store/ToolStoreCard.vue | 61 -- .../tool/tool-store/ToolStoreDetailDrawer.vue | 31 +- .../views/tool/tool-store/ToolStoreDialog.vue | 321 ++------ .../tool-store/component/ToolStoreCard.vue | 89 +++ .../workflow/ApplicationWorkflowView.vue | 27 +- .../components/WorkflowComponentMenu.vue | 10 +- .../workflow-canvas/component/NodeControl.vue | 4 +- ui/src/workflow-canvas/component/NodeMenu.vue | 46 +- .../workflow-canvas/component/NodeSearch.vue | 16 +- ui/src/workflow-canvas/config/constants.ts | 12 +- ui/src/workflow-canvas/config/menu.ts | 198 +---- ui/src/workflow-canvas/config/node-data.ts | 416 ++-------- ui/src/workflow-canvas/config/node-mapping.ts | 39 +- ui/src/workflow-canvas/core/CustomLine.vue | 9 +- ui/src/workflow-canvas/core/NodeCascader.vue | 64 +- ui/src/workflow-canvas/core/NodeContainer.vue | 198 +---- ui/src/workflow-canvas/core/edge.ts | 101 +-- ui/src/workflow-canvas/core/loop-edge.ts | 24 +- ui/src/workflow-canvas/core/shortcut.ts | 42 +- ui/src/workflow-canvas/core/teleport.ts | 21 +- ui/src/workflow-canvas/core/validate.ts | 54 +- ui/src/workflow-canvas/core/workflow-node.ts | 121 +-- ui/src/workflow-canvas/index.vue | 60 +- .../nodes/ai-chat-node/index.ts | 6 +- .../nodes/ai-chat-node/index.vue | 63 +- .../workflow-canvas/nodes/base-node/index.ts | 6 +- .../workflow-canvas/nodes/base-node/index.vue | 35 +- .../workflow-canvas/nodes/reply-node/index.ts | 6 +- .../nodes/reply-node/index.vue | 25 +- .../workflow-canvas/nodes/start-node/index.ts | 6 +- .../nodes/start-node/index.vue | 24 +- ui/src/workflow-canvas/plugins/dagre.ts | 32 +- .../workflow-canvas/store/api/system/index.ts | 4 +- .../store/api/workspace/index.ts | 5 +- ui/src/workflow-canvas/store/index.ts | 9 +- ui/src/workflow-canvas/types.ts | 2 +- 345 files changed, 3085 insertions(+), 11012 deletions(-) create mode 100644 ui/.prettierignore rename ui/src/views/model/model-card/{index.vue => ModelCard.vue} (71%) rename ui/src/views/model/model-card/action-dropdown/{delete-model => }/DeleteModelAction.vue (84%) rename ui/src/views/model/model-card/action-dropdown/{edit-model => edit-model-action}/EditModelAction.vue (63%) rename ui/src/views/model/model-card/action-dropdown/{edit-model => edit-model-action}/EditModelDrawer.vue (74%) rename ui/src/views/model/model-card/action-dropdown/{param-setting => param-setting-action}/ParamSettingAction.vue (68%) rename ui/src/views/model/model-card/action-dropdown/{param-setting => param-setting-action}/ParamSettingDrawer.vue (94%) delete mode 100644 ui/src/views/tool/McpConfigDialog.vue rename ui/src/views/tool/{tool-store/ToolStoreOpenButton.vue => components/OpenToolStoreButton.vue} (63%) delete mode 100644 ui/src/views/tool/components/python-code/GenerateCodeDialog.vue create mode 100644 ui/src/views/tool/tool-card/ToolCard.vue create mode 100644 ui/src/views/tool/tool-card/ToolStatusSwitch.vue rename ui/src/views/tool/tool-card/action-dropdown/{copy-tool => }/CopyToolAction.vue (73%) rename ui/src/views/tool/tool-card/action-dropdown/{delete-tool => }/DeleteToolAction.vue (85%) rename ui/src/views/tool/tool-card/action-dropdown/{edit-tool => }/EditToolAction.vue (62%) rename ui/src/views/tool/tool-card/action-dropdown/{export-tool => }/ExportToolAction.vue (91%) create mode 100644 ui/src/views/tool/tool-card/action-dropdown/InitParamAction.vue create mode 100644 ui/src/views/tool/tool-card/action-dropdown/MoveToolAction.vue create mode 100644 ui/src/views/tool/tool-card/action-dropdown/mcp-config-action/McpConfigAction.vue create mode 100644 ui/src/views/tool/tool-card/action-dropdown/mcp-config-action/McpConfigDialog.vue delete mode 100644 ui/src/views/tool/tool-card/index.vue create mode 100644 ui/src/views/tool/tool-form/StoreToolFormDialog.vue rename ui/src/views/tool/{components => tool-form/component}/init-field/InitFieldDialog.vue (50%) rename ui/src/views/tool/{components => tool-form/component}/init-field/InitFieldTable.vue (87%) rename ui/src/views/tool/{components => tool-form/component}/input-field/InputFieldDialog.vue (57%) rename ui/src/views/tool/{components => tool-form/component}/input-field/InputFieldTable.vue (91%) rename ui/src/views/tool/{components => tool-form/component}/python-code/CodeSetting.vue (92%) delete mode 100644 ui/src/views/tool/tool-store/AddStoreToolDialog.vue delete mode 100644 ui/src/views/tool/tool-store/ToolStoreCard.vue create mode 100644 ui/src/views/tool/tool-store/component/ToolStoreCard.vue diff --git a/ui/.editorconfig b/ui/.editorconfig index 3b510aa687b..0ab3c174e72 100644 --- a/ui/.editorconfig +++ b/ui/.editorconfig @@ -5,4 +5,4 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true end_of_line = lf -max_line_length = 100 +max_line_length = 150 diff --git a/ui/.prettierignore b/ui/.prettierignore new file mode 100644 index 00000000000..e34ce3480e9 --- /dev/null +++ b/ui/.prettierignore @@ -0,0 +1,2 @@ +src/assets/iconfont.js +src/components.d.ts diff --git a/ui/.prettierrc.json b/ui/.prettierrc.json index 29a2402ef05..cd3e24731f3 100644 --- a/ui/.prettierrc.json +++ b/ui/.prettierrc.json @@ -2,5 +2,5 @@ "$schema": "https://json.schemastore.org/prettierrc", "semi": false, "singleQuote": true, - "printWidth": 100 + "printWidth": 150 } diff --git a/ui/src/api/admin/auth/base-info.ts b/ui/src/api/admin/auth/base-info.ts index 5a980e6fb38..8e32226cda5 100644 --- a/ui/src/api/admin/auth/base-info.ts +++ b/ui/src/api/admin/auth/base-info.ts @@ -19,8 +19,4 @@ const getThemeInfo = () => { return get('/display/info') } -export default { - getLoginConfig, - getBaseProfile, - getThemeInfo, -} +export default { getLoginConfig, getBaseProfile, getThemeInfo } diff --git a/ui/src/api/admin/auth/current-user.ts b/ui/src/api/admin/auth/current-user.ts index c95da041b28..f6ac52656c1 100644 --- a/ui/src/api/admin/auth/current-user.ts +++ b/ui/src/api/admin/auth/current-user.ts @@ -19,8 +19,4 @@ const getCurrentUserRoleList = () => { return get('/role_list/current_user') } -export default { - getCurrentUserInfo, - getCurrentUserRoleList, - getCurrentUserWorkspaceList, -} +export default { getCurrentUserInfo, getCurrentUserRoleList, getCurrentUserWorkspaceList } diff --git a/ui/src/api/admin/auth/external-login.ts b/ui/src/api/admin/auth/external-login.ts index ac22eee60ae..8600bfcd3aa 100644 --- a/ui/src/api/admin/auth/external-login.ts +++ b/ui/src/api/admin/auth/external-login.ts @@ -33,11 +33,4 @@ const getLarkOauthCallback = (code: string) => { return get('/lark/oauth2', { code }) } -export default { - getDingTalkCallback, - getDingTalkOauthCallback, - getExternalAuthSetting, - getLarkOauthCallback, - getQrCodeSources, - getSamlLoginUrl, -} +export default { getDingTalkCallback, getDingTalkOauthCallback, getExternalAuthSetting, getLarkOauthCallback, getQrCodeSources, getSamlLoginUrl } diff --git a/ui/src/api/admin/auth/login.ts b/ui/src/api/admin/auth/login.ts index cf53460234f..05ce6944773 100644 --- a/ui/src/api/admin/auth/login.ts +++ b/ui/src/api/admin/auth/login.ts @@ -23,9 +23,4 @@ const getCaptcha = (username?: string) => { return get('/user/captcha', { username }) } -export default { - getCaptcha, - postLdapLogin, - postLogin, - postLogout, -} +export default { getCaptcha, postLdapLogin, postLogin, postLogout } diff --git a/ui/src/api/admin/core/request.ts b/ui/src/api/admin/core/request.ts index f3f748d7a60..9dfe0120dd6 100644 --- a/ui/src/api/admin/core/request.ts +++ b/ui/src/api/admin/core/request.ts @@ -1,11 +1,6 @@ /** 提供 Admin API 的 Axios 实例与常用 HTTP 请求封装。 */ -import axios, { - AxiosHeaders, - type AxiosRequestConfig, - type AxiosResponse, - type InternalAxiosRequestConfig, -} from 'axios' +import axios, { AxiosHeaders, type AxiosRequestConfig, type AxiosResponse, type InternalAxiosRequestConfig } from 'axios' import router from '@/router/admin' import { useStore } from '@/stores' import type { ApiResponse, LoadingTarget } from './types' @@ -98,11 +93,7 @@ async function getResponseErrorMessage(error: unknown) { return responseData?.message } -async function downloadExportResponse( - response: AxiosResponse, - fileName: string, - mimeType = 'application/octet-stream', -) { +async function downloadExportResponse(response: AxiosResponse, fileName: string, mimeType = 'application/octet-stream') { if (response.data.type.includes('application/json')) { const text = await response.data.text() try { @@ -123,11 +114,7 @@ async function downloadExportResponse( return true } -export const request = axios.create({ - baseURL: `${ADMIN_BASE_PATH.replace(/\/+$/, '')}/api`, - timeout: DEFAULT_TIMEOUT, - withCredentials: false, -}) +export const request = axios.create({ baseURL: `${ADMIN_BASE_PATH.replace(/\/+$/, '')}/api`, timeout: DEFAULT_TIMEOUT, withCredentials: false }) request.interceptors.request.use(setRequestHeaders) @@ -151,8 +138,7 @@ request.interceptors.response.use( const requestUrl = error.config?.url ?? '' const status = error.response?.status const responseMessage = await getResponseErrorMessage(error) - const skipGlobalErrorMessage = (error.config as ExportRequestConfig | undefined) - ?.skipGlobalErrorMessage + const skipGlobalErrorMessage = (error.config as ExportRequestConfig | undefined)?.skipGlobalErrorMessage if (error.code === 'ECONNABORTED') { MsgError(error.message) @@ -169,11 +155,7 @@ request.interceptors.response.use( if (status === 403) { MsgError(responseMessage || 'No permission to access') } - if ( - error.code !== 'ECONNABORTED' && - ![401, 403, 404].includes(status ?? 0) && - !skipGlobalErrorMessage - ) { + if (error.code !== 'ECONNABORTED' && ![401, 403, 404].includes(status ?? 0) && !skipGlobalErrorMessage) { MsgError(responseMessage || error.message) } @@ -184,10 +166,7 @@ request.interceptors.response.use( /** * 统一解包标准 API 响应,并同步可选的 loading 状态。 */ -export async function promise( - requestPromise: Promise>>, - loading?: LoadingTarget, -) { +export async function promise(requestPromise: Promise>>, loading?: LoadingTarget) { startLoading(loading) try { const response = await requestPromise @@ -198,33 +177,15 @@ export async function promise( } /** 发送 GET 请求。 */ -export function get( - url: string, - params?: Dict, - loading?: LoadingTarget, - timeout?: number, -) { +export function get(url: string, params?: Dict, loading?: LoadingTarget, timeout?: number) { return promise(request.get>(url, { params, timeout }), loading) } /** 发送指定方法的 Blob 请求并触发浏览器下载。 */ -export async function downloadRequest( - url: string, - method: string, - data?: unknown, - params?: Dict, - loading?: LoadingTarget, -): Promise { +export async function downloadRequest(url: string, method: string, data?: unknown, params?: Dict, loading?: LoadingTarget): Promise { startLoading(loading) try { - const response = await request.request({ - url, - method, - data, - params, - responseType: 'blob', - skipGlobalErrorMessage: true, - } as ExportRequestConfig) + const response = await request.request({ url, method, data, params, responseType: 'blob', skipGlobalErrorMessage: true } as ExportRequestConfig) return downloadExportResponse(response, 'download') } finally { @@ -233,19 +194,10 @@ export async function downloadRequest( } /** 发送 GET 请求并将 Blob 响应下载为文件。 */ -export async function getExportFile( - fileName: string, - url: string, - params?: Dict, - loading?: LoadingTarget, -): Promise { +export async function getExportFile(fileName: string, url: string, params?: Dict, loading?: LoadingTarget): Promise { startLoading(loading) try { - const response = await request.get(url, { - params, - responseType: 'blob', - skipGlobalErrorMessage: true, - } as ExportRequestConfig) + const response = await request.get(url, { params, responseType: 'blob', skipGlobalErrorMessage: true } as ExportRequestConfig) return downloadExportResponse(response, fileName) } finally { @@ -254,20 +206,10 @@ export async function getExportFile( } /** 发送 POST 请求并将 Blob 响应下载为 Excel 文件。 */ -export async function postExportExcel( - fileName: string, - url: string, - params?: Dict, - data?: TData, - loading?: LoadingTarget, -): Promise { +export async function postExportExcel(fileName: string, url: string, params?: Dict, data?: TData, loading?: LoadingTarget): Promise { startLoading(loading) try { - const response = await request.post(url, data, { - params, - responseType: 'blob', - skipGlobalErrorMessage: true, - } as ExportRequestConfig) + const response = await request.post(url, data, { params, responseType: 'blob', skipGlobalErrorMessage: true } as ExportRequestConfig) return downloadExportResponse(response, fileName, 'application/vnd.ms-excel') } finally { @@ -276,35 +218,17 @@ export async function postExportExcel( } /** 发送 POST 请求。 */ -export function post( - url: string, - data?: TData, - params?: Dict, - loading?: LoadingTarget, - timeout?: number, -) { +export function post(url: string, data?: TData, params?: Dict, loading?: LoadingTarget, timeout?: number) { return promise(request.post>(url, data, { params, timeout }), loading) } /** 发送 PUT 请求。 */ -export function put( - url: string, - data?: TData, - params?: Dict, - loading?: LoadingTarget, - timeout?: number, -) { +export function put(url: string, data?: TData, params?: Dict, loading?: LoadingTarget, timeout?: number) { return promise(request.put>(url, data, { params, timeout }), loading) } /** 发送 DELETE 请求。 */ -export function del( - url: string, - params?: Dict, - data?: TData, - loading?: LoadingTarget, - timeout?: number, -) { +export function del(url: string, params?: Dict, data?: TData, loading?: LoadingTarget, timeout?: number) { return promise(request.delete>(url, { params, data, timeout }), loading) } diff --git a/ui/src/api/admin/model-provider.ts b/ui/src/api/admin/model-provider.ts index 413b0ed3e9a..f53230b04cf 100644 --- a/ui/src/api/admin/model-provider.ts +++ b/ui/src/api/admin/model-provider.ts @@ -1,10 +1,5 @@ import { get } from './core/request' -import type { - BaseModelOption, - DynamicFormField, - ModelProviderItem, - ModelTypeOption, -} from '@/api/types' +import type { BaseModelOption, DynamicFormField, ModelProviderItem, ModelTypeOption } from '@/api/types' const prefix = '/provider' @@ -20,20 +15,12 @@ const getProviderListByModelType = (modelType: string) => { /** 获取创建模型所需的动态表单。 */ const getModelCreateForm = (provider: string, modelType: string, modelName: string) => { - return get(`${prefix}/model_form`, { - model_name: modelName, - model_type: modelType, - provider, - }) + return get(`${prefix}/model_form`, { model_name: modelName, model_type: modelType, provider }) } /** 获取基础模型的动态参数表单。 */ const getBaseModelParamsForm = (provider: string, modelType: string, modelName: string) => { - return get(`${prefix}/model_params_form`, { - model_name: modelName, - model_type: modelType, - provider, - }) + return get(`${prefix}/model_params_form`, { model_name: modelName, model_type: modelType, provider }) } /** 获取供应商支持的模型类型。 */ @@ -43,17 +30,7 @@ const getModelTypeList = (provider: string) => { /** 获取供应商指定类型下的基础模型。 */ const getBaseModelList = (provider: string, modelType: string) => { - return get(`${prefix}/model_list`, { - model_type: modelType, - provider, - }) + return get(`${prefix}/model_list`, { model_type: modelType, provider }) } -export default { - getBaseModelList, - getBaseModelParamsForm, - getModelCreateForm, - getModelTypeList, - getProviderList, - getProviderListByModelType, -} +export default { getBaseModelList, getBaseModelParamsForm, getModelCreateForm, getModelTypeList, getProviderList, getProviderListByModelType } diff --git a/ui/src/api/admin/system/chat-user/chat-user-auth-scan.ts b/ui/src/api/admin/system/chat-user/chat-user-auth-scan.ts index f1719987be0..b30c39c87fa 100644 --- a/ui/src/api/admin/system/chat-user/chat-user-auth-scan.ts +++ b/ui/src/api/admin/system/chat-user/chat-user-auth-scan.ts @@ -18,8 +18,4 @@ const putValidateQrLoginPlatform = (payload: QrLoginPlatformPayload) => { return put(prefix, payload) } -export default { - getQrLoginPlatforms, - postQrLoginPlatform, - putValidateQrLoginPlatform, -} +export default { getQrLoginPlatforms, postQrLoginPlatform, putValidateQrLoginPlatform } diff --git a/ui/src/api/admin/system/chat-user/chat-user-auth.ts b/ui/src/api/admin/system/chat-user/chat-user-auth.ts index 7424beef1ba..8317d159938 100644 --- a/ui/src/api/admin/system/chat-user/chat-user-auth.ts +++ b/ui/src/api/admin/system/chat-user/chat-user-auth.ts @@ -17,8 +17,4 @@ const postAuthSettingConnection = (payload: AuthProviderSettingPayload) => { const putAuthSetting = (authType: AuthProviderType, payload: AuthProviderSettingPayload) => { return put(`${prefix}/${authType}/info`, payload) } -export default { - getAuthSetting, - postAuthSettingConnection, - putAuthSetting, -} +export default { getAuthSetting, postAuthSettingConnection, putAuthSetting } diff --git a/ui/src/api/admin/system/chat-user/chat-user-groups.ts b/ui/src/api/admin/system/chat-user/chat-user-groups.ts index 4a234a7299f..08ab7e99266 100644 --- a/ui/src/api/admin/system/chat-user/chat-user-groups.ts +++ b/ui/src/api/admin/system/chat-user/chat-user-groups.ts @@ -21,31 +21,17 @@ const deleteChatUserGroup = (groupId: string) => { /** 获取用户组成员分页列表。 */ const getChatUserGroupMembers = (groupId: string, page: ParamsPage, query?: Dict) => { - return get>( - `${prefix}/${groupId}/user_list/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${prefix}/${groupId}/user_list/${page.currentPage}/${page.pageSize}`, query) } /** 添加对话用户组成员。 */ const postChatUserGroupMembers = (groupId: string, userIds: string[]) => { - return post<{ user_ids: string[] }, boolean>(`${prefix}/${groupId}/add_member`, { - user_ids: userIds, - }) + return post<{ user_ids: string[] }, boolean>(`${prefix}/${groupId}/add_member`, { user_ids: userIds }) } /** 移除对话用户组成员。 */ const postRemoveChatUserGroupMembers = (groupId: string, relationIds: string[]) => { - return post<{ group_relation_ids: string[] }, boolean>(`${prefix}/${groupId}/remove_member`, { - group_relation_ids: relationIds, - }) + return post<{ group_relation_ids: string[] }, boolean>(`${prefix}/${groupId}/remove_member`, { group_relation_ids: relationIds }) } -export default { - deleteChatUserGroup, - getChatUserGroupMembers, - getChatUserGroups, - postChatUserGroup, - postChatUserGroupMembers, - postRemoveChatUserGroupMembers, -} +export default { deleteChatUserGroup, getChatUserGroupMembers, getChatUserGroups, postChatUserGroup, postChatUserGroupMembers, postRemoveChatUserGroupMembers } diff --git a/ui/src/api/admin/system/chat-user/chat-user.ts b/ui/src/api/admin/system/chat-user/chat-user.ts index d8eb5cd0978..17e64cc8760 100644 --- a/ui/src/api/admin/system/chat-user/chat-user.ts +++ b/ui/src/api/admin/system/chat-user/chat-user.ts @@ -23,10 +23,7 @@ const getChatUser = () => { /** 获取对话用户分页列表。 */ const getChatUserPage = (page: ParamsPage, query?: Dict) => { - return get>( - `${prefix}/user_manage/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${prefix}/user_manage/${page.currentPage}/${page.pageSize}`, query) } /** 创建对话用户。 */ @@ -71,10 +68,7 @@ const postChatUserQuota = (userId: string, payload: ChatUserQuotaPayload) => { /** 批量设置对话用户 Token 配额。 */ const postBatchSetChatUserQuota = (request: BatchSetChatUserQuotaRequest) => { - return post( - `${prefix}/batch_quota`, - request, - ) + return post(`${prefix}/batch_quota`, request) } /** 获取可导入的对话用户来源。 */ diff --git a/ui/src/api/admin/system/common.ts b/ui/src/api/admin/system/common.ts index f8b5c591711..31edf5b554f 100644 --- a/ui/src/api/admin/system/common.ts +++ b/ui/src/api/admin/system/common.ts @@ -16,8 +16,4 @@ const getWorkspaceMembers = (workspaceId: string, query?: Dict) => { return get(`/workspace/${workspaceId}/user_member`, query) } -export default { - getDefaultPassword, - getAllUsers, - getWorkspaceMembers, -} +export default { getDefaultPassword, getAllUsers, getWorkspaceMembers } diff --git a/ui/src/api/admin/system/operate-log.ts b/ui/src/api/admin/system/operate-log.ts index 46bdd72fd1c..a2073045024 100644 --- a/ui/src/api/admin/system/operate-log.ts +++ b/ui/src/api/admin/system/operate-log.ts @@ -29,10 +29,4 @@ const postOperateLogCleanTime = (cleanTime: number) => { return post<{ clean_time: number }, boolean>(`${prefix}/save`, { clean_time: cleanTime }) } -export default { - exportOperateLog, - getOperateLogCleanTime, - getOperateLogMenuOptions, - getOperateLogPage, - postOperateLogCleanTime, -} +export default { exportOperateLog, getOperateLogCleanTime, getOperateLogMenuOptions, getOperateLogPage, postOperateLogCleanTime } diff --git a/ui/src/api/admin/system/resource-authorization.ts b/ui/src/api/admin/system/resource-authorization.ts index 057fed45532..8962af83355 100644 --- a/ui/src/api/admin/system/resource-authorization.ts +++ b/ui/src/api/admin/system/resource-authorization.ts @@ -1,40 +1,16 @@ import { get, put } from '../core/request' -import type { - Dict, - ResourceAuthorizationType, - ResourcePermissionItem, - ResourcePermissionPayload, -} from '@/api/types' +import type { Dict, ResourceAuthorizationType, ResourcePermissionItem, ResourcePermissionPayload } from '@/api/types' /** 系统管理资源授权 */ const prefix = (workspaceId: string) => `/workspace/${workspaceId}/user_resource_permission` /** 获取指定空间、指定用户、指定资源类型的权限列表。 */ -const getUserResourcePermissions = ( - workspaceId: string, - userId: string, - resource: ResourceAuthorizationType, - query?: Dict, -) => { - return get( - `${prefix(workspaceId)}/user/${userId}/resource/${resource}`, - query, - ) +const getUserResourcePermissions = (workspaceId: string, userId: string, resource: ResourceAuthorizationType, query?: Dict) => { + return get(`${prefix(workspaceId)}/user/${userId}/resource/${resource}`, query) } /** 更新指定空间、指定用户、指定资源类型的权限列表。 */ -const putUserResourcePermissions = ( - workspaceId: string, - userId: string, - resource: ResourceAuthorizationType, - permissions: ResourcePermissionPayload[], -) => { - return put( - `${prefix(workspaceId)}/user/${userId}/resource/${resource}`, - permissions, - ) +const putUserResourcePermissions = (workspaceId: string, userId: string, resource: ResourceAuthorizationType, permissions: ResourcePermissionPayload[]) => { + return put(`${prefix(workspaceId)}/user/${userId}/resource/${resource}`, permissions) } -export default { - getUserResourcePermissions, - putUserResourcePermissions, -} +export default { getUserResourcePermissions, putUserResourcePermissions } diff --git a/ui/src/api/admin/system/role.ts b/ui/src/api/admin/system/role.ts index b574f42935b..7cda1e82ef1 100644 --- a/ui/src/api/admin/system/role.ts +++ b/ui/src/api/admin/system/role.ts @@ -1,14 +1,6 @@ import { del, get, post } from '../core/request' import type { ParamsPage, ResponsePage } from '../core/types' -import type { - CreateRoleMembersRequest, - Dict, - RoleItem, - RoleMember, - RolePermissionModule, - RolePayload, - SaveRolePermissionRequest, -} from '@/api/types' +import type { CreateRoleMembersRequest, Dict, RoleItem, RoleMember, RolePermissionModule, RolePayload, SaveRolePermissionRequest } from '@/api/types' const prefix = '/system/role' @@ -39,10 +31,7 @@ const postRolePermissions = (roleId: string, permissions: SaveRolePermissionRequ /** 获取指定角色的成员分页列表。 */ const getRoleMemberList = (roleId: string, page: ParamsPage, query?: Dict) => { - return get>( - `${prefix}/${roleId}/user_list/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${prefix}/${roleId}/user_list/${page.currentPage}/${page.pageSize}`, query) } /** 为指定角色添加成员。 */ @@ -55,13 +44,4 @@ const deleteRoleMember = (roleId: string, userRelationId: string) => { return del(`${prefix}/${roleId}/remove_member/${userRelationId}`) } -export default { - deleteRole, - deleteRoleMember, - getRoleList, - getRoleMemberList, - getRolePermissionList, - postRole, - postRoleMembers, - postRolePermissions, -} +export default { deleteRole, deleteRoleMember, getRoleList, getRoleMemberList, getRolePermissionList, postRole, postRoleMembers, postRolePermissions } diff --git a/ui/src/api/admin/system/settings/auth-scan-setting.ts b/ui/src/api/admin/system/settings/auth-scan-setting.ts index f01e9b988f9..7f1a2013552 100644 --- a/ui/src/api/admin/system/settings/auth-scan-setting.ts +++ b/ui/src/api/admin/system/settings/auth-scan-setting.ts @@ -18,8 +18,4 @@ const postValidateQrLoginPlatform = (payload: QrLoginPlatformPayload) => { return post(`${prefix}`, payload) } -export default { - getQrLoginPlatforms, - postValidateQrLoginPlatform, - putQrLoginPlatform, -} +export default { getQrLoginPlatforms, postValidateQrLoginPlatform, putQrLoginPlatform } diff --git a/ui/src/api/admin/system/settings/auth-setting.ts b/ui/src/api/admin/system/settings/auth-setting.ts index 7aed58f4897..1c1e843b9da 100644 --- a/ui/src/api/admin/system/settings/auth-setting.ts +++ b/ui/src/api/admin/system/settings/auth-setting.ts @@ -28,10 +28,4 @@ const putLoginSetting = (payload: LoginAuthSettingPayload) => { return put(`${prefix}/setting`, payload) } -export default { - getAuthSetting, - getLoginSetting, - postAuthSettingConnection, - putAuthSetting, - putLoginSetting, -} +export default { getAuthSetting, getLoginSetting, postAuthSettingConnection, putAuthSetting, putLoginSetting } diff --git a/ui/src/api/admin/system/settings/email-setting.ts b/ui/src/api/admin/system/settings/email-setting.ts index b55d1edea7b..291e9ad3a37 100644 --- a/ui/src/api/admin/system/settings/email-setting.ts +++ b/ui/src/api/admin/system/settings/email-setting.ts @@ -18,8 +18,4 @@ const putEmailSetting = (payload: EmailSettingPayload) => { return put(prefix, payload) } -export default { - getEmailSetting, - postEmailSettingTest, - putEmailSetting, -} +export default { getEmailSetting, postEmailSettingTest, putEmailSetting } diff --git a/ui/src/api/admin/system/settings/theme-setting.ts b/ui/src/api/admin/system/settings/theme-setting.ts index a9ed6b1aff4..9720cdae350 100644 --- a/ui/src/api/admin/system/settings/theme-setting.ts +++ b/ui/src/api/admin/system/settings/theme-setting.ts @@ -6,6 +6,4 @@ const putThemeSetting = (payload: FormData) => { return put('/settings/theme', payload) } -export default { - putThemeSetting, -} +export default { putThemeSetting } diff --git a/ui/src/api/admin/system/shared-resources/model.ts b/ui/src/api/admin/system/shared-resources/model.ts index cb3f6edbe07..f6f54642505 100644 --- a/ui/src/api/admin/system/shared-resources/model.ts +++ b/ui/src/api/admin/system/shared-resources/model.ts @@ -51,14 +51,4 @@ const putPauseModelDownload = (modelId: string) => { return put(`${prefix}/${modelId}/pause_download`) } -export default { - deleteModel, - getModelDetail, - getModelList, - getModelMeta, - getModelParamsForm, - postModel, - putModel, - putModelParamsForm, - putPauseModelDownload, -} +export default { deleteModel, getModelDetail, getModelList, getModelMeta, getModelParamsForm, postModel, putModel, putModelParamsForm, putPauseModelDownload } diff --git a/ui/src/api/admin/system/user-groups.ts b/ui/src/api/admin/system/user-groups.ts index f86fa9814f0..a60679b1adf 100644 --- a/ui/src/api/admin/system/user-groups.ts +++ b/ui/src/api/admin/system/user-groups.ts @@ -20,43 +20,18 @@ const deleteSystemUserGroup = (workspaceId: string, groupId: string) => { } /** 获取指定系统用户组的成员分页列表。 */ -const getSystemUserGroupMembers = ( - workspaceId: string, - groupId: string, - page: ParamsPage, - query?: Dict, -) => { - return get>( - `${prefix(workspaceId)}/${groupId}/user_list/${page.currentPage}/${page.pageSize}`, - query, - ) +const getSystemUserGroupMembers = (workspaceId: string, groupId: string, page: ParamsPage, query?: Dict) => { + return get>(`${prefix(workspaceId)}/${groupId}/user_list/${page.currentPage}/${page.pageSize}`, query) } /** 向指定系统用户组添加成员。 */ const postSystemUserGroupMembers = (workspaceId: string, groupId: string, userIds: string[]) => { - return post<{ user_ids: string[] }, boolean>(`${prefix(workspaceId)}/${groupId}/add_member`, { - user_ids: userIds, - }) + return post<{ user_ids: string[] }, boolean>(`${prefix(workspaceId)}/${groupId}/add_member`, { user_ids: userIds }) } /** 从指定系统用户组移除成员。 */ -const postRemoveSystemUserGroupMembers = ( - workspaceId: string, - groupId: string, - relationIds: string[], -) => { - return del<{ group_relation_ids: string[] }, boolean>( - `${prefix(workspaceId)}/${groupId}/remove_member`, - undefined, - { group_relation_ids: relationIds }, - ) +const postRemoveSystemUserGroupMembers = (workspaceId: string, groupId: string, relationIds: string[]) => { + return del<{ group_relation_ids: string[] }, boolean>(`${prefix(workspaceId)}/${groupId}/remove_member`, undefined, { group_relation_ids: relationIds }) } -export default { - deleteSystemUserGroup, - getSystemUserGroupMembers, - getSystemUserGroups, - postRemoveSystemUserGroupMembers, - postSystemUserGroup, - postSystemUserGroupMembers, -} +export default { deleteSystemUserGroup, getSystemUserGroupMembers, getSystemUserGroups, postRemoveSystemUserGroupMembers, postSystemUserGroup, postSystemUserGroupMembers } diff --git a/ui/src/api/admin/system/user-manage.ts b/ui/src/api/admin/system/user-manage.ts index 98ad97e1246..fff44808db7 100644 --- a/ui/src/api/admin/system/user-manage.ts +++ b/ui/src/api/admin/system/user-manage.ts @@ -1,13 +1,6 @@ import { del, get, post, put } from '../core/request' import type { ResponsePage, ParamsPage, PasswordRequest } from '../core/types' -import type { - Dict, - SystemUser, - SystemUserPayload, - SystemUserUpdateRequest, - BatchSetUserRolesRequest, - BatchSetUserWorkspaceRolesRequest, -} from '@/api/types' +import type { Dict, SystemUser, SystemUserPayload, SystemUserUpdateRequest, BatchSetUserRolesRequest, BatchSetUserWorkspaceRolesRequest } from '@/api/types' const prefix = '/user_manage' @@ -51,13 +44,4 @@ const postBatchSetUserWorkspaceRoles = (payload: BatchSetUserWorkspaceRolesReque return post(`${prefix}/batch/add_role_ee`, payload) } -export default { - deleteUser, - getUserManagePage, - postUser, - postBatchDeleteUsers, - postBatchSetUserRoles, - postBatchSetUserWorkspaceRoles, - putUser, - putUserPassword, -} +export default { deleteUser, getUserManagePage, postUser, postBatchDeleteUsers, postBatchSetUserRoles, postBatchSetUserWorkspaceRoles, putUser, putUserPassword } diff --git a/ui/src/api/admin/system/workspace.ts b/ui/src/api/admin/system/workspace.ts index ca75d5b7e1e..17bdbe8240d 100644 --- a/ui/src/api/admin/system/workspace.ts +++ b/ui/src/api/admin/system/workspace.ts @@ -1,11 +1,6 @@ import { del, get, post } from '../core/request' import type { ParamsPage, ResponsePage } from '../core/types' -import type { - CreateWorkspaceMemberPayload, - Dict, - WorkspaceItem, - WorkspaceMemberItem, -} from '@/api/types' +import type { CreateWorkspaceMemberPayload, Dict, WorkspaceItem, WorkspaceMemberItem } from '@/api/types' const prefix = '/system/workspace' @@ -19,10 +14,7 @@ const getSystemWorkspaceList = () => { // TODO 工作空间管理员接口 /workspace 未区分 const getWorkspaceMemberList = (workspace_id: string, page: ParamsPage, query?: Dict) => { - return get>( - `${prefix}/${workspace_id}/user_list/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${prefix}/${workspace_id}/user_list/${page.currentPage}/${page.pageSize}`, query) } /** 新建或更新工作空间。 */ @@ -42,10 +34,7 @@ const deleteWorkspace = (workspaceId: string) => { /** 新增工作空间成员。 */ const postWorkspaceMembers = (workspaceId: string, members: CreateWorkspaceMemberPayload[]) => { - return post( - `${prefix}/${workspaceId}/add_member`, - members, - ) + return post(`${prefix}/${workspaceId}/add_member`, members) } /** 移除工作空间成员。 */ @@ -61,10 +50,7 @@ export interface WorkspaceBatchRemoveResult { /** 批量移除工作空间成员。 */ const postBatchRemoveWorkspaceMembers = (workspaceId: string, userRelationIds: string[]) => { - return post<{ user_relation_ids: string[] }, WorkspaceBatchRemoveResult>( - `${prefix}/${workspaceId}/batch_remove_member`, - { user_relation_ids: userRelationIds }, - ) + return post<{ user_relation_ids: string[] }, WorkspaceBatchRemoveResult>(`${prefix}/${workspaceId}/batch_remove_member`, { user_relation_ids: userRelationIds }) } export default { diff --git a/ui/src/api/admin/tool-store.ts b/ui/src/api/admin/tool-store.ts index 6c82edbee90..f48677dcc36 100644 --- a/ui/src/api/admin/tool-store.ts +++ b/ui/src/api/admin/tool-store.ts @@ -26,10 +26,4 @@ const getStoreApplicationList = (query?: Dict) => { return get('/workspace/store/application_template', query) } -export default { - getInternalToolList, - getStoreApplicationList, - getStoreKnowledgeList, - getStoreToolList, - getStoreToolWorkflowList, -} +export default { getInternalToolList, getStoreApplicationList, getStoreKnowledgeList, getStoreToolList, getStoreToolWorkflowList } diff --git a/ui/src/api/admin/workspace/application/application.ts b/ui/src/api/admin/workspace/application/application.ts index 99c7f16d3cd..c4f77723b06 100644 --- a/ui/src/api/admin/workspace/application/application.ts +++ b/ui/src/api/admin/workspace/application/application.ts @@ -10,10 +10,7 @@ const getPrefix = () => { /** 获取工作空间智能体列表。 */ const getApplicationPage = (page: ParamsPage, query?: Dict) => { - return get>( - `${getPrefix()}/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${getPrefix()}/${page.currentPage}/${page.pageSize}`, query) } /** 获取工作空间智能体详情。 */ @@ -35,16 +32,7 @@ const putApplication = (applicationId: string, data: ApplicationFormPayload) => /** 发布工作空间智能体。 */ const putApplicationPublish = (applicationId: string) => { - return put, ApplicationDetail>( - `${getPrefix()}/${applicationId}/publish`, - {}, - ) + return put, ApplicationDetail>(`${getPrefix()}/${applicationId}/publish`, {}) } -export default { - getApplicationPage, - getApplicationDetail, - postApplicationImport, - putApplication, - putApplicationPublish, -} +export default { getApplicationPage, getApplicationDetail, postApplicationImport, putApplication, putApplicationPublish } diff --git a/ui/src/api/admin/workspace/common.ts b/ui/src/api/admin/workspace/common.ts index e5a490ac731..2349d4b62d4 100644 --- a/ui/src/api/admin/workspace/common.ts +++ b/ui/src/api/admin/workspace/common.ts @@ -8,6 +8,4 @@ const getAllUsers = (query?: Dict) => { return get(`/workspace/${workspaceId}/user_list`, query) } -export default { - getAllUsers, -} +export default { getAllUsers } diff --git a/ui/src/api/admin/workspace/folder.ts b/ui/src/api/admin/workspace/folder.ts index 1277918dadd..7dcd3ae7760 100644 --- a/ui/src/api/admin/workspace/folder.ts +++ b/ui/src/api/admin/workspace/folder.ts @@ -27,9 +27,4 @@ const deleteFolder = (folderId: string, source: FolderSource) => { return del(`${getPrefix(source)}/${folderId}`) } -export default { - deleteFolder, - getFolderTree, - postFolder, - putFolder, -} +export default { deleteFolder, getFolderTree, postFolder, putFolder } diff --git a/ui/src/api/admin/workspace/knowledge/knowledge.ts b/ui/src/api/admin/workspace/knowledge/knowledge.ts index 3a37b838628..aaf3e3291f8 100644 --- a/ui/src/api/admin/workspace/knowledge/knowledge.ts +++ b/ui/src/api/admin/workspace/knowledge/knowledge.ts @@ -10,10 +10,7 @@ const getPrefix = () => { /** 获取工作空间知识库分页列表。 */ const getKnowledgePage = (page: ParamsPage, query?: Dict) => { - return get>( - `${getPrefix()}/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${getPrefix()}/${page.currentPage}/${page.pageSize}`, query) } /** 删除工作空间知识库。 */ @@ -21,7 +18,4 @@ const deleteKnowledge = (knowledgeId: string) => { return del(`${getPrefix()}/${knowledgeId}`) } -export default { - deleteKnowledge, - getKnowledgePage, -} +export default { deleteKnowledge, getKnowledgePage } diff --git a/ui/src/api/admin/workspace/model/model.ts b/ui/src/api/admin/workspace/model/model.ts index bb171300c35..abd678157aa 100644 --- a/ui/src/api/admin/workspace/model/model.ts +++ b/ui/src/api/admin/workspace/model/model.ts @@ -52,14 +52,4 @@ const putPauseModelDownload = (modelId: string) => { return put(`${getPrefix()}/${modelId}/pause_download`) } -export default { - deleteModel, - getModelDetail, - getModelList, - getModelMeta, - getModelParamsForm, - postModel, - putModel, - putModelParamsForm, - putPauseModelDownload, -} +export default { deleteModel, getModelDetail, getModelList, getModelMeta, getModelParamsForm, postModel, putModel, putModelParamsForm, putPauseModelDownload } diff --git a/ui/src/api/admin/workspace/shared.ts b/ui/src/api/admin/workspace/shared.ts index 6abef947c9c..0d9172f2d14 100644 --- a/ui/src/api/admin/workspace/shared.ts +++ b/ui/src/api/admin/workspace/shared.ts @@ -15,22 +15,12 @@ const getModelList = (query?: Dict) => { /** 获取工作空间共享的工具列表。 */ const getToolPage = (page: ParamsPage, query?: Dict) => { - return get>( - `${getPrefix()}/tool/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${getPrefix()}/tool/${page.currentPage}/${page.pageSize}`, query) } /** 获取工作空间共享的知识库列表。 */ const getKnowledgePage = (page: ParamsPage, query?: Dict) => { - return get>( - `${getPrefix()}/knowledge/${page.currentPage}/${page.pageSize}`, - query, - ) + return get>(`${getPrefix()}/knowledge/${page.currentPage}/${page.pageSize}`, query) } -export default { - getKnowledgePage, - getModelList, - getToolPage, -} +export default { getKnowledgePage, getModelList, getToolPage } diff --git a/ui/src/api/admin/workspace/tool/store.ts b/ui/src/api/admin/workspace/tool/store.ts index fb8a41b12a6..664d3c759f4 100644 --- a/ui/src/api/admin/workspace/tool/store.ts +++ b/ui/src/api/admin/workspace/tool/store.ts @@ -1,10 +1,5 @@ import { post } from '../../core/request' -import type { - AddInternalToolPayload, - AddStoreToolPayload, - ToolItem, - UpdateStoreToolPayload, -} from '@/api/types' +import type { AddInternalToolPayload, AddStoreToolPayload, ToolItem, UpdateStoreToolPayload } from '@/api/types' import { getWorkspaceId } from '@/utils/resource-context' const getToolPrefix = () => { @@ -14,10 +9,7 @@ const getToolPrefix = () => { /** 将系统内置工具添加到当前工作空间。 */ const postInternalTool = (toolId: string, payload: AddInternalToolPayload) => { - return post( - `${getToolPrefix()}/${toolId}/add_internal_tool`, - payload, - ) + return post(`${getToolPrefix()}/${toolId}/add_internal_tool`, payload) } /** 将商店工具添加到当前工作空间。 */ @@ -27,14 +19,7 @@ const postStoreTool = (toolId: string, payload: AddStoreToolPayload) => { /** 将工作空间中的商店工具更新到最新版本。 */ const postStoreToolUpdate = (toolId: string, payload: UpdateStoreToolPayload) => { - return post( - `${getToolPrefix()}/${toolId}/update_store_tool`, - payload, - ) + return post(`${getToolPrefix()}/${toolId}/update_store_tool`, payload) } -export default { - postInternalTool, - postStoreTool, - postStoreToolUpdate, -} +export default { postInternalTool, postStoreTool, postStoreToolUpdate } diff --git a/ui/src/api/admin/workspace/tool/tool.ts b/ui/src/api/admin/workspace/tool/tool.ts index 36ab97c064a..35936d867cb 100644 --- a/ui/src/api/admin/workspace/tool/tool.ts +++ b/ui/src/api/admin/workspace/tool/tool.ts @@ -80,17 +80,12 @@ const postToolTestConnection = (payload: ToolPayload) => { /** 批量删除工作空间工具。 */ const putBatchDeleteTools = (toolIds: string[]) => { - return put<{ id_list: string[] }, boolean>(`${getPrefix()}/batch_delete`, { - id_list: toolIds, - }) + return put<{ id_list: string[] }, boolean>(`${getPrefix()}/batch_delete`, { id_list: toolIds }) } /** 批量移动工作空间工具。 */ const putBatchMoveTools = (toolIds: string[], folderId: string) => { - return put<{ folder_id: string; id_list: string[] }, boolean>(`${getPrefix()}/batch_move`, { - folder_id: folderId, - id_list: toolIds, - }) + return put<{ folder_id: string; id_list: string[] }, boolean>(`${getPrefix()}/batch_move`, { folder_id: folderId, id_list: toolIds }) } export default { diff --git a/ui/src/api/enums/application.ts b/ui/src/api/enums/application.ts index 1dae8c640c7..ea209a25941 100644 --- a/ui/src/api/enums/application.ts +++ b/ui/src/api/enums/application.ts @@ -1,5 +1,2 @@ /** 后端智能体类型枚举值。 */ -export const APPLICATION_TYPE = { - SIMPLE: 'SIMPLE', - WORK_FLOW: 'WORK_FLOW', -} as const +export const APPLICATION_TYPE = { SIMPLE: 'SIMPLE', WORK_FLOW: 'WORK_FLOW' } as const diff --git a/ui/src/api/enums/chat-user.ts b/ui/src/api/enums/chat-user.ts index db04d4593c8..c44c5356dca 100644 --- a/ui/src/api/enums/chat-user.ts +++ b/ui/src/api/enums/chat-user.ts @@ -1,12 +1,5 @@ /** 对话用户 Token 配额模式枚举值;新增或修改配额模式时以此处为唯一数据源。 */ -export const QUOTA_TYPE = { - UNLIMITED: 'UNLIMITED', - PERIODIC: 'PERIODIC', -} as const +export const QUOTA_TYPE = { UNLIMITED: 'UNLIMITED', PERIODIC: 'PERIODIC' } as const /** 对话用户 Token 配额周期单位枚举值;新增或修改周期单位时以此处为唯一数据源。 */ -export const PERIOD_TYPE = { - DAY: 'DAY', - WEEK: 'WEEK', - MONTH: 'MONTH', -} as const +export const PERIOD_TYPE = { DAY: 'DAY', WEEK: 'WEEK', MONTH: 'MONTH' } as const diff --git a/ui/src/api/enums/knowledge.ts b/ui/src/api/enums/knowledge.ts index 7040c16130d..26cfd5dfb80 100644 --- a/ui/src/api/enums/knowledge.ts +++ b/ui/src/api/enums/knowledge.ts @@ -1,9 +1,3 @@ /** 后端知识库类型。 */ // TODO v3不再用数字表示 待修改 -export const KNOWLEDGE_TYPE = { - BASE: 0, - WEB: 1, - LARK: 2, - YUQUE: 3, - WORKFLOW: 4, -} as const +export const KNOWLEDGE_TYPE = { BASE: 0, WEB: 1, LARK: 2, YUQUE: 3, WORKFLOW: 4 } as const diff --git a/ui/src/api/enums/model.ts b/ui/src/api/enums/model.ts index 8cc8066b3cf..74a25b2494b 100644 --- a/ui/src/api/enums/model.ts +++ b/ui/src/api/enums/model.ts @@ -1,7 +1,2 @@ /** 后端 Workspace 模型状态枚举值。 */ -export const MODEL_STATUS = { - DOWNLOAD: 'DOWNLOAD', - ERROR: 'ERROR', - PAUSE_DOWNLOAD: 'PAUSE_DOWNLOAD', - SUCCESS: 'SUCCESS', -} as const +export const MODEL_STATUS = { DOWNLOAD: 'DOWNLOAD', ERROR: 'ERROR', PAUSE_DOWNLOAD: 'PAUSE_DOWNLOAD', SUCCESS: 'SUCCESS' } as const diff --git a/ui/src/api/enums/resource-authorization.ts b/ui/src/api/enums/resource-authorization.ts index 13bdb5c0474..1777d4559d1 100644 --- a/ui/src/api/enums/resource-authorization.ts +++ b/ui/src/api/enums/resource-authorization.ts @@ -1,15 +1,5 @@ /** 后端资源授权的资源类型。 */ -export const RESOURCE_TYPE = { - APPLICATION: 'APPLICATION', - KNOWLEDGE: 'KNOWLEDGE', - MODEL: 'MODEL', - TOOL: 'TOOL', -} as const +export const RESOURCE_TYPE = { APPLICATION: 'APPLICATION', KNOWLEDGE: 'KNOWLEDGE', MODEL: 'MODEL', TOOL: 'TOOL' } as const /** 后端资源授权的权限值。 */ -export const RESOURCE_PERMISSION = { - MANAGE: 'MANAGE', - NOT_AUTH: 'NOT_AUTH', - ROLE: 'ROLE', - VIEW: 'VIEW', -} as const +export const RESOURCE_PERMISSION = { MANAGE: 'MANAGE', NOT_AUTH: 'NOT_AUTH', ROLE: 'ROLE', VIEW: 'VIEW' } as const diff --git a/ui/src/api/enums/system-role.ts b/ui/src/api/enums/system-role.ts index 9638f264a4b..819c700191e 100644 --- a/ui/src/api/enums/system-role.ts +++ b/ui/src/api/enums/system-role.ts @@ -1,6 +1,2 @@ /** 后端角色类型枚举值;新增或修改角色类型时以此处为唯一数据源。 */ -export const ROLE_TYPE = { - ADMIN: 'ADMIN', - USER: 'USER', - WORKSPACE_MANAGE: 'WORKSPACE_MANAGE', -} as const +export const ROLE_TYPE = { ADMIN: 'ADMIN', USER: 'USER', WORKSPACE_MANAGE: 'WORKSPACE_MANAGE' } as const diff --git a/ui/src/api/enums/tool.ts b/ui/src/api/enums/tool.ts index 3ccb47742cb..187edf89932 100644 --- a/ui/src/api/enums/tool.ts +++ b/ui/src/api/enums/tool.ts @@ -1,16 +1,5 @@ /** 后端 Workspace 工具作用域枚举值。 */ -export const TOOL_SCOPE = { - INTERNAL: 'INTERNAL', - SHARED: 'SHARED', - WORKSPACE: 'WORKSPACE', -} as const +export const TOOL_SCOPE = { INTERNAL: 'INTERNAL', SHARED: 'SHARED', WORKSPACE: 'WORKSPACE' } as const /** 后端 Workspace 工具类型枚举值。 */ -export const TOOL_TYPE = { - CUSTOM: 'CUSTOM', - DATA_SOURCE: 'DATA_SOURCE', - INTERNAL: 'INTERNAL', - MCP: 'MCP', - SKILL: 'SKILL', - WORKFLOW: 'WORKFLOW', -} as const +export const TOOL_TYPE = { CUSTOM: 'CUSTOM', DATA_SOURCE: 'DATA_SOURCE', INTERNAL: 'INTERNAL', MCP: 'MCP', SKILL: 'SKILL', WORKFLOW: 'WORKFLOW' } as const diff --git a/ui/src/api/types/common.ts b/ui/src/api/types/common.ts index ce30b1ae210..6b653445f4b 100644 --- a/ui/src/api/types/common.ts +++ b/ui/src/api/types/common.ts @@ -17,10 +17,7 @@ export interface OptionItem +export type QrCodeProvider = Extract export interface QrCodeConfig { agent_id?: string diff --git a/ui/src/api/types/model.ts b/ui/src/api/types/model.ts index 2e7815d25b9..09f660e6a92 100644 --- a/ui/src/api/types/model.ts +++ b/ui/src/api/types/model.ts @@ -54,10 +54,7 @@ export interface DynamicFormField { } export interface DynamicFormLabel { - attrs?: { - tooltip?: string - [key: string]: unknown - } + attrs?: { tooltip?: string; [key: string]: unknown } input_type: string label: string type?: string diff --git a/ui/src/api/types/tool.ts b/ui/src/api/types/tool.ts index 47ac65ded7a..ed8e69f5c60 100644 --- a/ui/src/api/types/tool.ts +++ b/ui/src/api/types/tool.ts @@ -122,9 +122,7 @@ export interface ToolStoreItem { } export interface ToolStoreResponse { - additionalProperties: { - tags: ToolStoreTag[] - } + additionalProperties: { tags: ToolStoreTag[] } apps: Omit[] } diff --git a/ui/src/assets/iconfont.js b/ui/src/assets/iconfont.js index c6474a99a97..051efd638ed 100644 --- a/ui/src/assets/iconfont.js +++ b/ui/src/assets/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_5200172='',(l=>{var a=(h=(h=document.getElementsByTagName("script"))[h.length-1]).getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var v,o,t,i,c,d=function(a,h){h.parentNode.insertBefore(a,h)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}v=function(){var a,h=document.createElement("div");h.innerHTML=l._iconfont_svg_string_5200172,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(a=document.body).firstChild?d(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(v,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),v()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(t=v,i=l.document,c=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,e())})}function e(){c||(c=!0,t())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}e()}})(window); \ No newline at end of file +window._iconfont_svg_string_5200172='',(l=>{var a=(h=(h=document.getElementsByTagName("script"))[h.length-1]).getAttribute("data-injectcss"),h=h.getAttribute("data-disable-injectsvg");if(!h){var o,v,t,i,c,d=function(a,h){h.parentNode.insertBefore(a,h)};if(a&&!l.__iconfont__svg__cssinject__){l.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}o=function(){var a,h=document.createElement("div");h.innerHTML=l._iconfont_svg_string_5200172,(h=h.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",h=h,(a=document.body).firstChild?d(h,a.firstChild):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),o()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(t=o,i=l.document,c=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,e())})}function e(){c||(c=!0,t())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}e()}})(window); \ No newline at end of file diff --git a/ui/src/chat.ts b/ui/src/chat.ts index 07a6a6bb81a..596e0e89b14 100644 --- a/ui/src/chat.ts +++ b/ui/src/chat.ts @@ -13,8 +13,6 @@ const app = createApp(App) app.use(pinia) app.use(router) -app.use(ElementPlus, { - locale: zhCn, -}) +app.use(ElementPlus, { locale: zhCn }) app.mount('#app') diff --git a/ui/src/components/COMPONENT_README.md b/ui/src/components/COMPONENT_README.md index b35ec433b53..98ece809cfe 100644 --- a/ui/src/components/COMPONENT_README.md +++ b/ui/src/components/COMPONENT_README.md @@ -37,7 +37,7 @@ src/components/ │ ├── folder-tree/ # Workspace 文件夹虚拟树及固定 CRUD 业务 │ │ ├── index.vue │ │ ├── FolderFormDialog.vue -│ │ ├── MoveFolderDialog.vue +│ │ ├── MoveToDialog.vue │ │ ├── VirtualizedTree.vue │ │ └── types.ts │ ├── model-select/ @@ -127,6 +127,7 @@ import PythonCodeEditor from '@/components/codemirror-editor/python.vue' import JsonInput from '@/components/codemirror-editor/Json.vue' import MkSourceCard from '@/components/mk-source-card/index.vue' import FolderTree from '@/components/business/folder-tree/index.vue' +import MoveToDialog from '@/components/business/folder-tree/MoveToDialog.vue' import ModelSelect from '@/components/business/model-select/index.vue' import WorkspaceDropdown from '@/components/business/workspace-dropdown/index.vue' import WorkspaceRelationTags from '@/components/business/workspace-relation-tags/index.vue' @@ -214,12 +215,12 @@ Element Plus 使用 `ElOnlyChild` 处理浮层触发器。`el-tooltip`、`el-pop ### MkDialog -全局对话框组件,统一使用 `el-scrollbar` 包裹内容并为默认插槽提供 `p-6` 内边距。默认显示关闭 -按钮、关闭时销毁内容,同时禁止点击遮罩或按 Escape 关闭;这些默认行为可以通过同名 Props -覆盖。Element Plus Dialog 的其他属性和事件通过 `$attrs` 透传,`header`、`subtitle`、默认和 -`footer` 插槽保持可用。`subtitle` 位于标题下方的 Header 区域,并统一使用 -`mb-6 text-sm text-N600` 样式;仅使用 `subtitle` 时,组件仍会按照 Element Plus 原生的标题 -ID 和样式类渲染 `title`。内容区域超出最大高度后显示滚动条。 +全局对话框组件,Header 高度统一为 `60px`,使用 `el-scrollbar` 包裹内容并为默认插槽提供 `p-6` +内边距。默认显示关闭按钮、关闭时销毁内容,同时禁止点击遮罩或按 Escape 关闭;这些默认行为可以 +通过同名 Props 覆盖。Element Plus Dialog 的其他属性和事件通过 `$attrs` 透传,`header`、 +`subtitle`、默认和 `footer` 插槽保持可用。`subtitle` 位于标题下方的 Header 区域,并统一使用 +`mt-2 text-N600` 样式;仅使用 `subtitle` 时,组件仍会按照 Element Plus 原生的标题 ID 和样式类 +渲染 `title`。内容区域超出最大高度后显示滚动条。 ```vue @@ -252,10 +253,11 @@ Escape 关闭;这些默认行为可以通过同名 Props 覆盖。Element Plus ``` 业务 Dialog 和 Drawer 的状态生命周期保持一致:`open()` 先调用 `resetData()`,再回填编辑数据并 -显示浮层;取消、提交成功或其他关闭操作直接将 `v-model` 绑定的可见状态设为 `false`,不额外定义或 -向父组件暴露 `close()`;组件统一监听 `closed` 调用 `resetData()`,确保所有关闭路径都在关闭动画 -结束后完成清理。`resetData()` 应统一重置表单、提交状态、临时选项和表单校验,不把清理逻辑散落在 -`open()`、取消按钮或提交成功回调中。 +显示浮层;取消、提交成功或其他关闭操作通常直接将 `v-model` 绑定的可见状态设为 `false`。当浮层 +只负责收集数据,而提交数据的接收校验或异步请求由父组件负责时,可以向父组件暴露 `close()`,由 +父组件在数据接收或请求成功后关闭浮层,校验拒绝或请求失败时保持浮层打开。组件统一监听 `closed` +调用 `resetData()`,确保所有关闭路径都在关闭动画结束后完成清理。`resetData()` 应统一重置表单、 +提交状态、临时选项和表单校验,不把清理逻辑散落在 `open()`、取消按钮或提交成功回调中。 ### MkComplexSearch @@ -285,12 +287,7 @@ Escape 关闭;这些默认行为可以通过同名 Props 覆盖。Element Plus @@ -336,12 +333,7 @@ Element Plus Dropdown 属性和事件通过 `$attrs` 传入,并暴露 `handleO 当前原始选项;选择后先更新 `v-model`,再通过 `select` 返回未经转换的原始选项。 ```vue - + @@ -353,8 +345,9 @@ Element Plus Dropdown 属性和事件通过 `$attrs` 传入,并暴露 `handleO ### MkViewLayout -路由页面的通用内容结构,统一提供满高弹性布局及可选左侧栏。标题优先使用 `title` Prop,未传入 -时读取当前路由的 `meta.title`。`aside` 作用域插槽提供 `title` 和对应区域的 `Header` 包装组件, +路由页面及全高浮层的通用内容结构,统一提供满高弹性布局及可选左侧栏。标题优先使用 `title` +Prop,未传入时读取当前路由的 `meta.title`;显式传入 `title=""` 可隐藏默认标题。`aside` +作用域插槽提供 `title` 和对应区域的 `Header` 包装组件, 默认作用域插槽另外提供主内容区的 `Footer` 包装组件;插槽未渲染 `Header` 时,组件会自动显示当前 标题,页面需要添加操作区或自定义标题时再显式渲染 `Header`。Header 固定在主内容区顶部,其余 默认插槽内容由组件统一放入 @@ -363,6 +356,9 @@ Element Plus Dropdown 属性和事件通过 `$attrs` 传入,并暴露 `handleO 或全高 Drawer 右侧内容的操作按钮。页面可以在同一个插槽中组织标题、内容、底栏和空状态,并只写 一次业务状态判断。传入 `aside` 插槽后才会渲染左侧栏;左右结构上方的独立内容放入 `top` 插槽。 页面加载状态通过 `loading` Prop 传入,由组件将 Element Plus Loading 遮罩绑定到整个布局根节点。 +主内容区滚动时通过 `scroll` 事件返回 `scrollTop` 和 `scrollLeft`;需要由分类导航等外部交互定位 +主内容时,通过组件 Ref 调用公开的 `setScrollTop()`。`getScrollContainer()` 返回主内容区实际滚动 +元素,可传给 `el-anchor` 等需要显式滚动容器的组件。 默认插槽没有渲染 `Header` 时会自动显示当前标题;显式渲染后则由页面控制标题内容。`collapsible` 默认为 `false`;传入后,展开状态仅在鼠标移入侧栏或焦点进入侧栏时显示收起按钮,收起状态始终显示 展开按钮。收起时释放侧栏宽度,页面不需要自行维护折叠状态。 @@ -516,12 +512,7 @@ Element Plus 的 `v-infinite-scroll`。组件通过 `v-model` 管理已经加载 分页配置可省略;省略时不显示分页器。`pageSizes` 默认为 `[10, 20, 50, 100]`: ```ts -const paginationConfig = ref({ - currentPage: 1, - pageSize: 20, - pageSizes: [10, 20, 50, 100], - total: 0, -}) +const paginationConfig = ref({ currentPage: 1, pageSize: 20, pageSizes: [10, 20, 50, 100], total: 0 }) ``` 使用 `v-model:pagination-config` 接收页码和每页数量变化,也可以监听 `current-change` 和 @@ -529,13 +520,7 @@ const paginationConfig = ref({ `size-change` 中重新加载数据,不要重复修改页码。 ```vue - + ``` @@ -664,13 +649,7 @@ function handleDateRangeChange({ startTime, endTime }: MkDateRangeValue) { import MkDragUpload from '@/components/mk-drag-upload/index.vue' - + @@ -758,12 +737,7 @@ import MkSourceCard from '@/components/mk-source-card/index.vue' 批量选择模式由页面显式控制: ```vue - +

工具描述

``` @@ -795,11 +769,7 @@ import MkFormList from '@/components/mk-form-list/index.vue' const roleSettings = defineModel<{ roleId: string; workspaceIds: string[] }[]>({ required: true }) - +