feat: Tool store
parent
fad4ce9cd0
commit
823ac6b1a3
|
|
@ -20,7 +20,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="status-tag">
|
<div class="status-tag">
|
||||||
<slot name="tag"> <!-- 放标签 --> </slot>
|
<slot name="tag" :hoverShow="show"> <!-- 放标签 --> </slot>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</slot>
|
</slot>
|
||||||
|
|
@ -80,6 +80,7 @@ function cardLeave() {
|
||||||
function subHoveredEnter() {
|
function subHoveredEnter() {
|
||||||
subHovered.value = true
|
subHovered.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.card-box {
|
.card-box {
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dot-success {
|
||||||
|
height: 8px;
|
||||||
|
width: 8px;
|
||||||
|
background-color: var(--el-color-success);
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
// checkbox 一行一个样式
|
// checkbox 一行一个样式
|
||||||
.checkbox-group-block {
|
.checkbox-group-block {
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
|
|
|
||||||
|
|
@ -189,16 +189,23 @@
|
||||||
{{ $t('common.creator') }}: {{ item.nick_name }}
|
{{ $t('common.creator') }}: {{ item.nick_name }}
|
||||||
</el-text>
|
</el-text>
|
||||||
</template>
|
</template>
|
||||||
<template #tag>
|
<template #tag="{ hoverShow }">
|
||||||
<el-tag v-if="isShared" type="info" class="info-tag">
|
<el-tag v-if="isShared" type="info" class="info-tag">
|
||||||
{{ t('views.shared.title') }}
|
{{ t('views.shared.title') }}
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-button text @click.stop v-if="
|
<el-tooltip effect="dark" content="更新版本">
|
||||||
|
<el-button
|
||||||
|
text
|
||||||
|
@click.stop
|
||||||
|
v-if="
|
||||||
showUpdateStoreTool(item) && !isShared && permissionPrecise.edit(item.id)
|
showUpdateStoreTool(item) && !isShared && permissionPrecise.edit(item.id)
|
||||||
" @click="updateStoreTool(item)"
|
"
|
||||||
|
@click="updateStoreTool(item)"
|
||||||
>
|
>
|
||||||
<el-icon><Refresh /></el-icon>
|
<el-icon v-if="hoverShow"><Refresh /></el-icon>
|
||||||
|
<div v-else class="dot-success"></div>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|
@ -255,7 +262,11 @@
|
||||||
{{ $t('common.edit') }}
|
{{ $t('common.edit') }}
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<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)"
|
@click.stop="copyTool(item)"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-copy" class="color-secondary"></AppIcon>
|
<AppIcon iconName="app-copy" class="color-secondary"></AppIcon>
|
||||||
|
|
@ -295,7 +306,11 @@
|
||||||
{{ $t('views.shared.authorized_workspace') }}</el-dropdown-item
|
{{ $t('views.shared.authorized_workspace') }}</el-dropdown-item
|
||||||
>
|
>
|
||||||
<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)"
|
@click.stop="exportTool(item)"
|
||||||
>
|
>
|
||||||
<AppIcon iconName="app-export" class="color-secondary"></AppIcon>
|
<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 AddInternalToolDialog from '@/views/tool/toolStore/AddInternalToolDialog.vue'
|
||||||
import MoveToDialog from '@/components/folder-tree/MoveToDialog.vue'
|
import MoveToDialog from '@/components/folder-tree/MoveToDialog.vue'
|
||||||
import ResourceAuthorizationDrawer from '@/components/resource-authorization-drawer/index.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 { resetUrl } from '@/utils/common'
|
||||||
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
import { SourceTypeEnum } from '@/enums/common'
|
import { SourceTypeEnum } from '@/enums/common'
|
||||||
|
|
@ -367,7 +382,7 @@ import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
import permissionMap from '@/permission'
|
import permissionMap from '@/permission'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import ToolStoreApi from "@/api/tool/store.ts";
|
import ToolStoreApi from '@/api/tool/store.ts'
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { folder, user, tool } = useStore()
|
const { folder, user, tool } = useStore()
|
||||||
onBeforeRouteLeave((to, from) => {
|
onBeforeRouteLeave((to, from) => {
|
||||||
|
|
@ -643,8 +658,7 @@ function confirmAddInternalTool(data?: any, isEdit?: boolean) {
|
||||||
|
|
||||||
const storeTools = ref<any[]>([])
|
const storeTools = ref<any[]>([])
|
||||||
function getStoreToolList() {
|
function getStoreToolList() {
|
||||||
ToolStoreApi.getStoreToolList({ name: '' }, loading)
|
ToolStoreApi.getStoreToolList({ name: '' }, loading).then((res: any) => {
|
||||||
.then((res: any) => {
|
|
||||||
storeTools.value = res.data.apps
|
storeTools.value = res.data.apps
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -663,20 +677,23 @@ function showUpdateStoreTool(item: any) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStoreTool(item: any) {
|
function updateStoreTool(item: any) {
|
||||||
MsgConfirm(t('views.tool.toolStore.confirmTip') + item.name,
|
MsgConfirm(
|
||||||
t('views.tool.toolStore.updateStoreToolMessage'), {
|
t('views.tool.toolStore.confirmTip') + item.name,
|
||||||
|
t('views.tool.toolStore.updateStoreToolMessage'),
|
||||||
|
{
|
||||||
cancelButtonText: t('common.cancel'),
|
cancelButtonText: t('common.cancel'),
|
||||||
confirmButtonText: t('common.confirm'),
|
confirmButtonText: t('common.confirm'),
|
||||||
})
|
},
|
||||||
|
)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
const obj = {
|
const obj = {
|
||||||
download_url: item.downloadUrl,
|
download_url: item.downloadUrl,
|
||||||
download_callback_url: item.downloadCallbackUrl,
|
download_callback_url: item.downloadCallbackUrl,
|
||||||
icon: item.icon,
|
icon: item.icon,
|
||||||
versions: item.versions,
|
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)
|
.updateStoreTool(item.id, obj, loading)
|
||||||
.then(async (res: any) => {
|
.then(async (res: any) => {
|
||||||
if (res?.data) {
|
if (res?.data) {
|
||||||
|
|
@ -688,8 +705,7 @@ function updateStoreTool(item: any) {
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {})
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const elUploadRef = ref()
|
const elUploadRef = ref()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue