feat: Tool store

v3.2
wangdan-fit2cloud 2025-09-11 18:04:24 +08:00
parent fad4ce9cd0
commit 823ac6b1a3
3 changed files with 47 additions and 23 deletions

View File

@ -20,7 +20,7 @@
</div>
<div class="status-tag">
<slot name="tag"> <!-- 放标签 --> </slot>
<slot name="tag" :hoverShow="show"> <!-- 放标签 --> </slot>
</div>
</div>
</slot>
@ -80,6 +80,7 @@ function cardLeave() {
function subHoveredEnter() {
subHovered.value = true
}
</script>
<style lang="scss" scoped>
.card-box {

View File

@ -236,6 +236,13 @@
}
}
.dot-success {
height: 8px;
width: 8px;
background-color: var(--el-color-success);
border-radius: 50%;
}
// checkbox
.checkbox-group-block {
.el-checkbox {

View File

@ -189,16 +189,23 @@
{{ $t('common.creator') }}: {{ item.nick_name }}
</el-text>
</template>
<template #tag>
<template #tag="{ hoverShow }">
<el-tag v-if="isShared" type="info" class="info-tag">
{{ t('views.shared.title') }}
</el-tag>
<el-button text @click.stop v-if="
showUpdateStoreTool(item) && !isShared && permissionPrecise.edit(item.id)
" @click="updateStoreTool(item)"
>
<el-icon><Refresh /></el-icon>
</el-button>
<el-tooltip effect="dark" content="更新版本">
<el-button
text
@click.stop
v-if="
showUpdateStoreTool(item) && !isShared && permissionPrecise.edit(item.id)
"
@click="updateStoreTool(item)"
>
<el-icon v-if="hoverShow"><Refresh /></el-icon>
<div v-else class="dot-success"></div>
</el-button>
</el-tooltip>
</template>
<template #footer>
@ -255,7 +262,11 @@
{{ $t('common.edit') }}
</el-dropdown-item>
<el-dropdown-item
v-if="!item.template_id && permissionPrecise.copy(item.id) && item.tool_type!== 'MCP'"
v-if="
!item.template_id &&
permissionPrecise.copy(item.id) &&
item.tool_type !== 'MCP'
"
@click.stop="copyTool(item)"
>
<AppIcon iconName="app-copy" class="color-secondary"></AppIcon>
@ -295,7 +306,11 @@
{{ $t('views.shared.authorized_workspace') }}</el-dropdown-item
>
<el-dropdown-item
v-if="!item.template_id && permissionPrecise.export(item.id) && item.tool_type!== 'MCP'"
v-if="
!item.template_id &&
permissionPrecise.export(item.id) &&
item.tool_type !== 'MCP'
"
@click.stop="exportTool(item)"
>
<AppIcon iconName="app-export" class="color-secondary"></AppIcon>
@ -359,7 +374,7 @@ import ToolStoreDialog from '@/views/tool/toolStore/ToolStoreDialog.vue'
import AddInternalToolDialog from '@/views/tool/toolStore/AddInternalToolDialog.vue'
import MoveToDialog from '@/components/folder-tree/MoveToDialog.vue'
import ResourceAuthorizationDrawer from '@/components/resource-authorization-drawer/index.vue'
import McpToolConfigDialog from "@/views/tool/component/McpToolConfigDialog.vue";
import McpToolConfigDialog from '@/views/tool/component/McpToolConfigDialog.vue'
import { resetUrl } from '@/utils/common'
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
import { SourceTypeEnum } from '@/enums/common'
@ -367,7 +382,7 @@ import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
import permissionMap from '@/permission'
import useStore from '@/stores'
import { t } from '@/locales'
import ToolStoreApi from "@/api/tool/store.ts";
import ToolStoreApi from '@/api/tool/store.ts'
const route = useRoute()
const { folder, user, tool } = useStore()
onBeforeRouteLeave((to, from) => {
@ -643,10 +658,9 @@ function confirmAddInternalTool(data?: any, isEdit?: boolean) {
const storeTools = ref<any[]>([])
function getStoreToolList() {
ToolStoreApi.getStoreToolList({ name: '' }, loading)
.then((res: any) => {
storeTools.value = res.data.apps
})
ToolStoreApi.getStoreToolList({ name: '' }, loading).then((res: any) => {
storeTools.value = res.data.apps
})
}
function showUpdateStoreTool(item: any) {
@ -663,20 +677,23 @@ function showUpdateStoreTool(item: any) {
}
function updateStoreTool(item: any) {
MsgConfirm(t('views.tool.toolStore.confirmTip') + item.name,
t('views.tool.toolStore.updateStoreToolMessage'), {
MsgConfirm(
t('views.tool.toolStore.confirmTip') + item.name,
t('views.tool.toolStore.updateStoreToolMessage'),
{
cancelButtonText: t('common.cancel'),
confirmButtonText: t('common.confirm'),
})
},
)
.then(() => {
const obj = {
download_url: item.downloadUrl,
download_callback_url: item.downloadCallbackUrl,
icon: item.icon,
versions: item.versions,
label: item.label
label: item.label,
}
loadSharedApi({type: 'tool', systemType: apiType.value})
loadSharedApi({ type: 'tool', systemType: apiType.value })
.updateStoreTool(item.id, obj, loading)
.then(async (res: any) => {
if (res?.data) {
@ -688,8 +705,7 @@ function updateStoreTool(item: any) {
getList()
})
})
.catch(() => {
})
.catch(() => {})
}
const elUploadRef = ref()