From 1287da6ed05dbd32fb86e3b53e5daae8810686f2 Mon Sep 17 00:00:00 2001 From: teukkk Date: Fri, 20 Jun 2025 17:47:58 +0800 Subject: [PATCH] feat: toolStoreDialog --- ui/src/api/tool/tool.ts | 34 ++- ui/src/api/type/tool.ts | 7 +- ui/src/locales/lang/en-US/common.ts | 1 + ui/src/locales/lang/en-US/views/tool.ts | 11 + ui/src/locales/lang/zh-CN/common.ts | 1 + ui/src/locales/lang/zh-CN/views/tool.ts | 11 + ui/src/locales/lang/zh-Hant/common.ts | 1 + ui/src/locales/lang/zh-Hant/views/tool.ts | 11 + ui/src/views/tool/component/ToolCard.vue | 66 ++++++ .../views/tool/component/ToolStoreDialog.vue | 207 ++++++++++++++++++ ui/src/views/tool/index.vue | 17 ++ 11 files changed, 360 insertions(+), 7 deletions(-) create mode 100644 ui/src/views/tool/component/ToolCard.vue create mode 100644 ui/src/views/tool/component/ToolStoreDialog.vue diff --git a/ui/src/api/tool/tool.ts b/ui/src/api/tool/tool.ts index c1985ef1f..c240e46fc 100644 --- a/ui/src/api/tool/tool.ts +++ b/ui/src/api/tool/tool.ts @@ -2,7 +2,7 @@ import { Result } from '@/request/Result' import { get, post, del, put, exportFile } from '@/request/index' import { type Ref } from 'vue' import type { pageRequest } from '@/api/type/common' -import type { toolData } from '@/api/type/tool' +import type { toolData,AddInternalToolParam } from '@/api/type/tool' import useStore from '@/stores' @@ -84,16 +84,16 @@ const getToolById: (tool_id: string, loading?: Ref) => Promise ) => Promise> = (tool_id, loading) => { return del(`${prefix.value}/${tool_id}`, undefined, {}, loading) } const putToolIcon: ( - id: string, - data: any, - loading?: Ref + id: string, + data: any, + loading?: Ref ) => Promise> = (id, data, loading) => { return put(`${prefix.value}/${id}/edit_icon`, data, undefined, loading) } @@ -128,6 +128,26 @@ const postPylint: (code: string, loading?: Ref) => Promise> return post(`${prefix.value}/pylint`, { code }, {}, loading) } +/** + * 工具商店-系统内置列表 + */ +const getInternalToolList: ( + param?: any, + loading?: Ref, +) => Promise> = (param, loading) => { + return get('/workspace/internal/tool', param, loading) +} + +/** + * 工具商店-添加系统内置 + */ +const addInternalTool: (tool_id: string, param: AddInternalToolParam, loading?: Ref) => Promise> = ( + tool_id, + param, + loading, +) => { + return post(`${prefix.value}/${tool_id}/add_internal_tool`, param, undefined, loading) +} export default { getToolList, getToolListPage, @@ -139,5 +159,7 @@ export default { postPylint, exportTool, putToolIcon, - delTool + delTool, + getInternalToolList, + addInternalTool } diff --git a/ui/src/api/type/tool.ts b/ui/src/api/type/tool.ts index ecdf51566..867100451 100644 --- a/ui/src/api/type/tool.ts +++ b/ui/src/api/type/tool.ts @@ -10,4 +10,9 @@ interface toolData { folder_id?: string } -export type { toolData } +interface AddInternalToolParam { + name: string, + folder_id: string +} + +export type { toolData, AddInternalToolParam } diff --git a/ui/src/locales/lang/en-US/common.ts b/ui/src/locales/lang/en-US/common.ts index 00c8d5b46..7552d59b8 100644 --- a/ui/src/locales/lang/en-US/common.ts +++ b/ui/src/locales/lang/en-US/common.ts @@ -87,4 +87,5 @@ export default { otherSetting: 'Other Settings', username: 'username', importCreate: 'Import Create', + detail: 'Detail' } diff --git a/ui/src/locales/lang/en-US/views/tool.ts b/ui/src/locales/lang/en-US/views/tool.ts index 6da1a011b..16268cad1 100644 --- a/ui/src/locales/lang/en-US/views/tool.ts +++ b/ui/src/locales/lang/en-US/views/tool.ts @@ -6,6 +6,17 @@ export default { editTool: 'Edit Tool', copyTool: 'Copy Tool', importTool: 'Import Tool', + toolStore: { + title: 'Tool Store', + createFromToolStore: 'Create from Tool Store', + recommend: 'Recommended', + webSearch: 'Web Search', + databaseQuery: 'Database Query', + image: 'Image', + developer: 'Developer', + communication: 'Communication', + searchResult: '{count} search results for' + }, searchBar: { placeholder: 'Search by tool name', }, diff --git a/ui/src/locales/lang/zh-CN/common.ts b/ui/src/locales/lang/zh-CN/common.ts index 48cb5742f..db0935295 100644 --- a/ui/src/locales/lang/zh-CN/common.ts +++ b/ui/src/locales/lang/zh-CN/common.ts @@ -91,4 +91,5 @@ export default { otherSetting: '其他设置', username: '用户名', importCreate: '导入创建', + detail: '详情' } diff --git a/ui/src/locales/lang/zh-CN/views/tool.ts b/ui/src/locales/lang/zh-CN/views/tool.ts index ff5010b32..417c3dd73 100644 --- a/ui/src/locales/lang/zh-CN/views/tool.ts +++ b/ui/src/locales/lang/zh-CN/views/tool.ts @@ -4,6 +4,17 @@ export default { editTool: '编辑工具', copyTool: '复制函数', importTool: '导入函数', + toolStore: { + title: '工具商店', + createFromToolStore: '从工具商店创建', + recommend: '推荐', + webSearch: '联网搜索', + databaseQuery: '数据库查询', + image: '图像', + developer: '开发者', + communication: '通信', + searchResult: '的搜索结果 {count} 个' + }, enabled: '启用', disabled: { confirmTitle: '是否禁用工具:', diff --git a/ui/src/locales/lang/zh-Hant/common.ts b/ui/src/locales/lang/zh-Hant/common.ts index 1138940d4..91c96b94d 100644 --- a/ui/src/locales/lang/zh-Hant/common.ts +++ b/ui/src/locales/lang/zh-Hant/common.ts @@ -87,4 +87,5 @@ export default { otherSetting: '其他設定', username: '用戶名', importCreate: '導入創建', + detail: '详情' } diff --git a/ui/src/locales/lang/zh-Hant/views/tool.ts b/ui/src/locales/lang/zh-Hant/views/tool.ts index 52c8f7f0c..4e3670a52 100644 --- a/ui/src/locales/lang/zh-Hant/views/tool.ts +++ b/ui/src/locales/lang/zh-Hant/views/tool.ts @@ -6,6 +6,17 @@ export default { editTool: '編輯工具', copyTool: '複製工具', importTool: '匯入工具', + toolStore: { + title: '工具商店', + createFromToolStore: '從工具商店創建', + recommend: '推薦', + webSearch: '聯網搜索', + databaseQuery: '數據庫查詢', + image: '圖像', + developer: '開發者', + communication: '通信', + searchResult: '的搜索結果 {count} 個' + }, searchBar: { placeholder: '按工具名稱搜尋', }, diff --git a/ui/src/views/tool/component/ToolCard.vue b/ui/src/views/tool/component/ToolCard.vue new file mode 100644 index 000000000..710ed0a62 --- /dev/null +++ b/ui/src/views/tool/component/ToolCard.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/ui/src/views/tool/component/ToolStoreDialog.vue b/ui/src/views/tool/component/ToolStoreDialog.vue new file mode 100644 index 000000000..3f7642dd5 --- /dev/null +++ b/ui/src/views/tool/component/ToolStoreDialog.vue @@ -0,0 +1,207 @@ + + + + diff --git a/ui/src/views/tool/index.vue b/ui/src/views/tool/index.vue index 8f3588b4d..3aa443c76 100644 --- a/ui/src/views/tool/index.vue +++ b/ui/src/views/tool/index.vue @@ -97,6 +97,16 @@ + +
+ + + +
+
{{ $t('views.tool.toolStore.createFromToolStore') }}
+
+
+
@@ -312,6 +322,7 @@ + @@ -331,6 +342,7 @@ import { EditionConst, PermissionConst, RoleConst } from '@/utils/permission/dat import { hasPermission } from '@/utils/permission/index' import { FolderSource } from '@/enums/common' import { ComplexPermission } from '@/utils/permission/type' +import ToolStoreDialog from './component/ToolStoreDialog.vue' const { folder, user } = useStore() @@ -506,6 +518,11 @@ function configInitParams(item: any) { }) } +const toolStoreDialogRef = ref>() +function openToolStoreDialog() { + toolStoreDialogRef.value?.open() +} + const elUploadRef = ref() function importTool(file: any) { const formData = new FormData()