feat: Tool reaource
This commit is contained in:
parent
f744e8b109
commit
bf7d5c2e61
@ -37,6 +37,20 @@ const getToolListPage: (
|
|||||||
return get(`${prefix}/${page.current_page}/${page.page_size}`, param, loading)
|
return get(`${prefix}/${page.current_page}/${page.page_size}`, param, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取工具详情
|
||||||
|
* @param tool_id 工具id
|
||||||
|
* @param loading 加载器
|
||||||
|
* @returns 工具详情
|
||||||
|
*/
|
||||||
|
const getToolById: (tool_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
|
||||||
|
tool_id,
|
||||||
|
loading,
|
||||||
|
) => {
|
||||||
|
return get(`${prefix}/${tool_id}`, undefined, loading)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改工具
|
* 修改工具
|
||||||
* @param 参数
|
* @param 参数
|
||||||
@ -50,18 +64,6 @@ const putTool: (tool_id: string, data: toolData, loading?: Ref<boolean>) => Prom
|
|||||||
return put(`${prefix}/${tool_id}`, data, undefined, loading)
|
return put(`${prefix}/${tool_id}`, data, undefined, loading)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取工具详情
|
|
||||||
* @param tool_id 工具id
|
|
||||||
* @param loading 加载器
|
|
||||||
* @returns 工具详情
|
|
||||||
*/
|
|
||||||
const getToolById: (tool_id: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
|
|
||||||
tool_id,
|
|
||||||
loading,
|
|
||||||
) => {
|
|
||||||
return get(`${prefix}/${tool_id}`, undefined, loading)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除工具
|
* 删除工具
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { onBeforeRouteLeave, useRouter, useRoute } from 'vue-router'
|
import { onBeforeRouteLeave, useRouter, useRoute } from 'vue-router'
|
||||||
import { isAppIcon, resetUrl } from '@/utils/common'
|
import { resetUrl } from '@/utils/common'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
const { common, application } = useStore()
|
const { common, application } = useStore()
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import problemSystemShareApi from '@/api/system-shared/problem'
|
|||||||
import chatUserSystemShareApi from '@/api/system-shared/chat-user'
|
import chatUserSystemShareApi from '@/api/system-shared/chat-user'
|
||||||
import workspaceApi from '@/api/workspace/workspace'
|
import workspaceApi from '@/api/workspace/workspace'
|
||||||
import systemUserApi from '@/api/user/user'
|
import systemUserApi from '@/api/user/user'
|
||||||
import workspaceShare from '@/permission/knowledge/workspace-share'
|
import ToolResourceApi from '@/api/system-resource-management/tool'
|
||||||
|
|
||||||
// 普通 API
|
// 普通 API
|
||||||
const workspaceApiMap = {
|
const workspaceApiMap = {
|
||||||
@ -45,7 +45,7 @@ const systemShareApiMap = {
|
|||||||
const systemManageApiMap = {
|
const systemManageApiMap = {
|
||||||
// knowledge: knowledgeWorkspaceApi,
|
// knowledge: knowledgeWorkspaceApi,
|
||||||
// model: modelWorkspaceApi,
|
// model: modelWorkspaceApi,
|
||||||
// tool: toolSystemShareApi,
|
tool: ToolResourceApi,
|
||||||
} as any
|
} as any
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
|
|||||||
@ -210,7 +210,7 @@ import applicationApi from '@/api/application/application'
|
|||||||
import { nowDate, beforeDay } from '@/utils/time'
|
import { nowDate, beforeDay } from '@/utils/time'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import { copyClick } from '@/utils/clipboard'
|
import { copyClick } from '@/utils/clipboard'
|
||||||
import { isAppIcon, resetUrl } from '@/utils/common'
|
import { resetUrl } from '@/utils/common'
|
||||||
import { mapToUrlParams } from '@/utils/application'
|
import { mapToUrlParams } from '@/utils/application'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
|
|||||||
@ -307,7 +307,7 @@ import useStore from '@/stores'
|
|||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { useRouter, useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
import { isWorkFlow } from '@/utils/application'
|
import { isWorkFlow } from '@/utils/application'
|
||||||
import { isAppIcon, resetUrl } from '@/utils/common'
|
import { resetUrl } from '@/utils/common'
|
||||||
import { dateFormat } from '@/utils/time'
|
import { dateFormat } from '@/utils/time'
|
||||||
import { SourceTypeEnum, ValidType, ValidCount } from '@/enums/common'
|
import { SourceTypeEnum, ValidType, ValidCount } from '@/enums/common'
|
||||||
import permissionMap from '@/permission'
|
import permissionMap from '@/permission'
|
||||||
|
|||||||
@ -49,23 +49,23 @@
|
|||||||
>
|
>
|
||||||
<!-- <el-table-column type="selection" width="55" /> -->
|
<!-- <el-table-column type="selection" width="55" /> -->
|
||||||
<el-table-column width="220" :label="$t('common.name')" show-overflow-tooltip>
|
<el-table-column width="220" :label="$t('common.name')" show-overflow-tooltip>
|
||||||
<template #default="scope">
|
<template #default="{ row }">
|
||||||
<div class="table-name flex align-center">
|
<div class="table-name flex align-center">
|
||||||
<el-icon size="24" class="mr-8">
|
<el-icon size="24" class="mr-8">
|
||||||
<el-avatar
|
<el-avatar
|
||||||
v-if="isAppIcon(scope.row?.icon)"
|
v-if="row?.icon"
|
||||||
shape="square"
|
shape="square"
|
||||||
:size="24"
|
:size="24"
|
||||||
style="background: none"
|
style="background: none"
|
||||||
class="mr-8"
|
class="mr-8"
|
||||||
>
|
>
|
||||||
<img :src="resetUrl(scope.row?.icon)" alt="" />
|
<img :src="resetUrl(row?.icon)" alt="" />
|
||||||
</el-avatar>
|
</el-avatar>
|
||||||
<el-avatar v-else class="avatar-green" shape="square" :size="24">
|
<el-avatar v-else class="avatar-green" shape="square" :size="24">
|
||||||
<img src="@/assets/workflow/icon_tool.svg" style="width: 58%" alt="" />
|
<img src="@/assets/workflow/icon_tool.svg" style="width: 58%" alt="" />
|
||||||
</el-avatar>
|
</el-avatar>
|
||||||
</el-icon>
|
</el-icon>
|
||||||
{{ scope.row.name }}
|
{{ row.name }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -158,21 +158,136 @@
|
|||||||
{{ datetimeFormat(row.create_time) }}
|
{{ datetimeFormat(row.create_time) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column :label="$t('common.operation')" align="left" width="160" fixed="right">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span @click.stop>
|
||||||
|
<el-switch
|
||||||
|
v-model="row.is_active"
|
||||||
|
:before-change="() => changeState(row)"
|
||||||
|
size="small"
|
||||||
|
class="mr-4"
|
||||||
|
v-if="permissionPrecise.switch(row.id)"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
<el-divider direction="vertical" />
|
||||||
|
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('common.edit')"
|
||||||
|
placement="top"
|
||||||
|
v-if="row.template_id && permissionPrecise.edit(row.id)"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
@click.stop="addInternalTool(row, true)"
|
||||||
|
:title="$t('common.edit')"
|
||||||
|
>
|
||||||
|
<el-icon>
|
||||||
|
<EditPen />
|
||||||
|
</el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('common.edit')"
|
||||||
|
placement="top"
|
||||||
|
v-if="!row.template_id && permissionPrecise.edit(row.id)"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
@click.stop="openCreateDialog(row)"
|
||||||
|
:title="$t('common.edit')"
|
||||||
|
>
|
||||||
|
<el-icon>
|
||||||
|
<EditPen />
|
||||||
|
</el-icon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
|
<el-tooltip
|
||||||
|
effect="dark"
|
||||||
|
:content="$t('common.copy')"
|
||||||
|
placement="top"
|
||||||
|
v-if="!row.template_id && permissionPrecise.copy(row.id)"
|
||||||
|
>
|
||||||
|
<span class="mr-8">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
@click.stop="copyTool(row)"
|
||||||
|
:title="$t('common.copy')"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-copy"></AppIcon>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-dropdown trigger="click">
|
||||||
|
<el-button text @click.stop>
|
||||||
|
<el-icon>
|
||||||
|
<MoreFilled />
|
||||||
|
</el-icon>
|
||||||
|
</el-button>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item
|
||||||
|
v-if="row.init_field_list?.length > 0 && permissionPrecise.edit(row.id)"
|
||||||
|
@click.stop="configInitParams(row)"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-operation" class="mr-4"></AppIcon>
|
||||||
|
{{ $t('common.param.initParam') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
|
||||||
|
<el-dropdown-item
|
||||||
|
v-if="!row.template_id && permissionPrecise.export(row.id)"
|
||||||
|
@click.stop="exportTool(row)"
|
||||||
|
>
|
||||||
|
<AppIcon iconName="app-export"></AppIcon>
|
||||||
|
{{ $t('common.export') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
v-if="permissionPrecise.delete(row.id)"
|
||||||
|
divided
|
||||||
|
@click.stop="deleteTool(row)"
|
||||||
|
>
|
||||||
|
<el-icon><Delete /></el-icon>
|
||||||
|
{{ $t('common.delete') }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</app-table>
|
</app-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
|
<InitParamDrawer ref="InitParamDrawerRef" @refresh="refresh" />
|
||||||
|
<ToolFormDrawer ref="ToolFormDrawerRef" @refresh="refresh" :title="ToolDrawertitle" />
|
||||||
|
<AddInternalToolDialog ref="AddInternalToolDialogRef" @refresh="confirmAddInternalTool" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, reactive, computed } from 'vue'
|
import { onMounted, ref, reactive, computed } from 'vue'
|
||||||
|
import { cloneDeep } from 'lodash'
|
||||||
|
import InitParamDrawer from '@/views/tool/component/InitParamDrawer.vue'
|
||||||
import ToolResourceApi from '@/api/system-resource-management/tool'
|
import ToolResourceApi from '@/api/system-resource-management/tool'
|
||||||
|
import AddInternalToolDialog from '@/views/tool/toolStore/AddInternalToolDialog.vue'
|
||||||
|
import ToolFormDrawer from '@/views/tool/ToolFormDrawer.vue'
|
||||||
import { t } from '@/locales'
|
import { t } from '@/locales'
|
||||||
import { isAppIcon, resetUrl } from '@/utils/common'
|
import { resetUrl } from '@/utils/common'
|
||||||
import { ToolType } from '@/enums/tool'
|
import { ToolType } from '@/enums/tool'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
import { datetimeFormat } from '@/utils/time'
|
import { datetimeFormat } from '@/utils/time'
|
||||||
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
import { loadPermissionApi } from '@/utils/dynamics-api/permission-api.ts'
|
||||||
import UserApi from '@/api/user/user.ts'
|
import UserApi from '@/api/user/user.ts'
|
||||||
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
|
import permissionMap from '@/permission'
|
||||||
|
|
||||||
const { user } = useStore()
|
const { user } = useStore()
|
||||||
|
|
||||||
@ -194,6 +309,137 @@ const paginationConfig = reactive({
|
|||||||
const workspaceOptions = ref<any[]>([])
|
const workspaceOptions = ref<any[]>([])
|
||||||
const workspaceVisible = ref(false)
|
const workspaceVisible = ref(false)
|
||||||
const workspaceArr = ref<any[]>([])
|
const workspaceArr = ref<any[]>([])
|
||||||
|
|
||||||
|
const permissionPrecise = computed(() => {
|
||||||
|
return permissionMap['tool']['systemManage']
|
||||||
|
})
|
||||||
|
|
||||||
|
function exportTool(row: any) {
|
||||||
|
ToolResourceApi.exportTool(row.id, row.name, loading).catch((e: any) => {
|
||||||
|
if (e.response.status !== 403) {
|
||||||
|
e.response.data.text().then((res: string) => {
|
||||||
|
MsgError(`${t('views.application.tip.ExportError')}:${JSON.parse(res).message}`)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteTool(row: any) {
|
||||||
|
MsgConfirm(
|
||||||
|
`${t('views.tool.delete.confirmTitle')}:${row.name} ?`,
|
||||||
|
t('views.tool.delete.confirmMessage'),
|
||||||
|
{
|
||||||
|
confirmButtonText: t('common.confirm'),
|
||||||
|
cancelButtonText: t('common.cancel'),
|
||||||
|
confirmButtonClass: 'danger',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
ToolResourceApi.delTool(row.id, loading).then(() => {
|
||||||
|
getList()
|
||||||
|
MsgSuccess(t('common.deleteSuccess'))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
|
||||||
|
function configInitParams(item: any) {
|
||||||
|
ToolResourceApi.getToolById(item?.id, changeStateloading).then((res: any) => {
|
||||||
|
InitParamDrawerRef.value.open(res.data)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyTool(row: any) {
|
||||||
|
ToolDrawertitle.value = t('views.tool.copyTool')
|
||||||
|
const res = await ToolResourceApi.getToolById(row.id, changeStateloading)
|
||||||
|
const obj = cloneDeep(res.data)
|
||||||
|
delete obj['id']
|
||||||
|
obj['name'] = obj['name'] + ` ${t('common.copyTitle')}`
|
||||||
|
ToolFormDrawerRef.value.open(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
const ToolFormDrawerRef = ref()
|
||||||
|
const ToolDrawertitle = ref('')
|
||||||
|
|
||||||
|
function openCreateDialog(data?: any) {
|
||||||
|
// 有template_id的不允许编辑,是模板转换来的
|
||||||
|
if (data?.template_id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ToolDrawertitle.value = t('views.tool.editTool')
|
||||||
|
if (data) {
|
||||||
|
ToolResourceApi.getToolById(data?.id, loading).then((res: any) => {
|
||||||
|
ToolFormDrawerRef.value.open(res.data)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
ToolFormDrawerRef.value.open(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const AddInternalToolDialogRef = ref<InstanceType<typeof AddInternalToolDialog>>()
|
||||||
|
function addInternalTool(data?: any, isEdit?: boolean) {
|
||||||
|
AddInternalToolDialogRef.value?.open(data, isEdit)
|
||||||
|
}
|
||||||
|
|
||||||
|
function confirmAddInternalTool(data?: any, isEdit?: boolean) {
|
||||||
|
if (isEdit) {
|
||||||
|
ToolResourceApi.putTool(data?.id as string, { name: data.name }, loading).then((res: any) => {
|
||||||
|
MsgSuccess(t('common.saveSuccess'))
|
||||||
|
refresh()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const InitParamDrawerRef = ref()
|
||||||
|
async function changeState(row: any) {
|
||||||
|
if (row.is_active) {
|
||||||
|
MsgConfirm(
|
||||||
|
`${t('views.tool.disabled.confirmTitle')}${row.name} ?`,
|
||||||
|
t('views.tool.disabled.confirmMessage'),
|
||||||
|
{
|
||||||
|
confirmButtonText: t('common.status.disable'),
|
||||||
|
confirmButtonClass: 'danger',
|
||||||
|
},
|
||||||
|
).then(() => {
|
||||||
|
const obj = {
|
||||||
|
is_active: !row.is_active,
|
||||||
|
}
|
||||||
|
ToolResourceApi.putTool(row.id, obj, changeStateloading)
|
||||||
|
.then(() => {
|
||||||
|
getList()
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
const res = await ToolResourceApi.getToolById(row.id, changeStateloading)
|
||||||
|
if (
|
||||||
|
(!res.data.init_params || Object.keys(res.data.init_params).length === 0) &&
|
||||||
|
res.data.init_field_list &&
|
||||||
|
res.data.init_field_list.length > 0 &&
|
||||||
|
res.data.init_field_list.filter((item: any) => item.default_value && item.show_default_value)
|
||||||
|
.length !== res.data.init_field_list.length
|
||||||
|
) {
|
||||||
|
InitParamDrawerRef.value.open(res.data, !row.is_active)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
const obj = {
|
||||||
|
is_active: !row.is_active,
|
||||||
|
}
|
||||||
|
ToolResourceApi.putTool(row.id, obj, changeStateloading)
|
||||||
|
.then(() => {
|
||||||
|
getList()
|
||||||
|
return true
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function filterWorkspaceChange(val: string) {
|
function filterWorkspaceChange(val: string) {
|
||||||
if (val === 'clear') {
|
if (val === 'clear') {
|
||||||
workspaceArr.value = []
|
workspaceArr.value = []
|
||||||
@ -228,6 +474,16 @@ function getList() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function refresh(data?: any) {
|
||||||
|
if (data) {
|
||||||
|
getList()
|
||||||
|
} else {
|
||||||
|
paginationConfig.total = 0
|
||||||
|
paginationConfig.current_page = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getWorkspaceList()
|
getWorkspaceList()
|
||||||
getList()
|
getList()
|
||||||
|
|||||||
@ -309,18 +309,18 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, ref, reactive, computed, watch } from 'vue'
|
import { onMounted, ref, reactive, computed, watch } from 'vue'
|
||||||
import { cloneDeep, get } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
import { useRoute, onBeforeRouteLeave } from 'vue-router'
|
import { useRoute, onBeforeRouteLeave } from 'vue-router'
|
||||||
import InitParamDrawer from '@/views/tool/component/InitParamDrawer.vue'
|
import InitParamDrawer from '@/views/tool/component/InitParamDrawer.vue'
|
||||||
import ToolFormDrawer from '@/views/tool/ToolFormDrawer.vue'
|
import ToolFormDrawer from '@/views/tool/ToolFormDrawer.vue'
|
||||||
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
|
||||||
import AuthorizedWorkspace from '@/views/system-shared/AuthorizedWorkspaceDialog.vue'
|
import AuthorizedWorkspace from '@/views/system-shared/AuthorizedWorkspaceDialog.vue'
|
||||||
import MoveToDialog from '@/components/folder-tree/MoveToDialog.vue'
|
|
||||||
import { isAppIcon, resetUrl } from '@/utils/common'
|
|
||||||
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
|
||||||
import { SourceTypeEnum } from '@/enums/common'
|
|
||||||
import ToolStoreDialog from '@/views/tool/toolStore/ToolStoreDialog.vue'
|
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 { resetUrl } from '@/utils/common'
|
||||||
|
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
|
||||||
|
import { SourceTypeEnum } from '@/enums/common'
|
||||||
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
import { loadSharedApi } from '@/utils/dynamics-api/shared-api'
|
||||||
import permissionMap from '@/permission'
|
import permissionMap from '@/permission'
|
||||||
import useStore from '@/stores'
|
import useStore from '@/stores'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user