feat: add functionality to add internal shared tools with API integration

This commit is contained in:
CaptainB 2025-07-02 17:46:58 +08:00
parent 32dd4b41b6
commit 5ab5ab71a5
4 changed files with 37 additions and 6 deletions

View File

@ -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'
const prefix = '/system/shared/tool'
@ -121,6 +121,17 @@ const postPylint: (code: string, loading?: Ref<boolean>) => Promise<Result<any>>
}
/**
* -
*/
const addInternalTool: (
tool_id: string,
param: AddInternalToolParam,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (tool_id, param, loading) => {
return post(`${prefix}/${tool_id}/add_internal_tool`, param, undefined, loading)
}
export default {
getToolList,
@ -134,4 +145,5 @@ export default {
exportTool,
putToolIcon,
delTool,
addInternalTool
}

View File

@ -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 {AddInternalToolParam, toolData} from '@/api/type/tool'
import useStore from '@/stores'
@ -128,6 +128,17 @@ const postPylint: (code: string, loading?: Ref<boolean>) => Promise<Result<any>>
return post(`${prefix.value}/pylint`, { code }, {}, loading)
}
/**
* -
*/
const addInternalTool: (
tool_id: string,
param: AddInternalToolParam,
loading?: Ref<boolean>,
) => Promise<Result<any>> = (tool_id, param, loading) => {
return post(`${prefix.value}/${tool_id}/add_internal_tool`, param, undefined, loading)
}
export default {
getToolList,
@ -141,4 +152,5 @@ export default {
exportTool,
putToolIcon,
delTool,
addInternalTool
}

View File

@ -287,7 +287,7 @@
<InitParamDrawer ref="InitParamDrawerRef" @refresh="refresh" />
<ToolFormDrawer ref="ToolFormDrawerRef" @refresh="refresh" :title="ToolDrawertitle" />
<CreateFolderDialog ref="CreateFolderDialogRef" v-if="!isShared" />
<ToolStoreDialog ref="toolStoreDialogRef" @refresh="refresh" />
<ToolStoreDialog ref="toolStoreDialogRef" :api-type="apiType" @refresh="refresh" />
<AddInternalToolDialog ref="AddInternalToolDialogRef" @refresh="confirmAddInternalTool" />
<AuthorizedWorkspace
ref="AuthorizedWorkspaceDialogRef"
@ -319,7 +319,6 @@ import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import permissionMap from '@/permission'
import useStore from '@/stores'
import { t } from '@/locales'
import {loadPermissionApi} from "@/utils/dynamics-api/permission-api.ts";
const route = useRoute()
const { folder, user, tool } = useStore()
onBeforeRouteLeave((to, from) => {

View File

@ -68,13 +68,19 @@ import ToolCard from './ToolCard.vue'
import { MsgSuccess } from '@/utils/message'
import InternalDescDrawer from './InternalDescDrawer.vue'
import AddInternalToolDialog from './AddInternalToolDialog.vue'
import {loadSharedApi} from "@/utils/dynamics-api/shared-api.ts";
interface ToolCategory {
id: string
title: string
tools: any[]
}
const props = defineProps({
apiType: {
type: String as () => 'workspace' | 'systemShare' | 'systemManage',
default: 'workspace'
},
})
const emit = defineEmits(['refresh'])
const dialogVisible = ref(false)
@ -171,7 +177,9 @@ function handleOpenAdd(data?: any, isEdit?: boolean) {
const addLoading = ref(false)
async function handleAdd(tool: any) {
try {
await ToolStoreApi.addInternalTool(tool.id, { name: tool.name, folder_id: folderId.value }, addLoading)
await loadSharedApi({ type: 'tool', systemType: props.apiType })
.addInternalTool(tool.id, { name: tool.name, folder_id: folderId.value }, addLoading)
// await ToolStoreApi.addInternalTool(tool.id, { name: tool.name, folder_id: folderId.value }, addLoading)
emit('refresh')
MsgSuccess(t('common.addSuccess'))
dialogVisible.value = false