Skip to content

Commit 6fc0558

Browse files
feat: tool
1 parent edee4ba commit 6fc0558

File tree

6 files changed

+107
-32
lines changed

6 files changed

+107
-32
lines changed
File renamed without changes.

ui/src/locales/lang/en-US/common.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,6 @@ export default {
8484
},
8585
info: 'Base Information',
8686
otherSetting: 'Other Settings',
87-
username: 'username'
87+
username: 'username',
88+
importCreate: 'Import Create',
8889
}

ui/src/locales/lang/zh-CN/common.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,6 @@ export default {
8888
},
8989
info: '基本信息',
9090
otherSetting: '其他设置',
91-
username: '用户名'
91+
username: '用户名',
92+
importCreate: '导入创建',
9293
}

ui/src/locales/lang/zh-Hant/common.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,6 @@ export default {
8484
},
8585
info: '使用者資訊',
8686
otherSetting: '其他設定',
87-
username: '用户名'
87+
username: '用戶名',
88+
importCreate: '導入創建',
8889
}

ui/src/views/application/index.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@
9797
>
9898
<div class="flex align-center">
9999
<el-avatar shape="square" class="mt-4" :size="36" style="background: none">
100-
<img src="@/assets/application/icon_import_app.svg" alt="" />
100+
<img src="@/assets/icon_import.svg" alt="" />
101101
</el-avatar>
102102
<div class="pre-wrap ml-8">
103-
<div class="lighter">{{ $t('views.application.importApplication') }}</div>
103+
<div class="lighter">{{ $t('common.importCreate') }}</div>
104104
</div>
105105
</div>
106106
</el-upload>
@@ -344,7 +344,6 @@ function clickFolder(item: any) {
344344
getList()
345345
}
346346
347-
348347
function getAccessToken(id: string) {
349348
applicationList.value
350349
.filter((app) => app.id === id)[0]
@@ -456,6 +455,7 @@ const importApplication = (file: any) => {
456455
ApplicaitonApi.importApplication(formData, loading)
457456
.then(async (res: any) => {
458457
if (res?.data) {
458+
applicationList.value = []
459459
getList()
460460
}
461461
})

ui/src/views/tool/index.vue

Lines changed: 98 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,59 @@
4444
<el-option v-for="u in user_options" :key="u.id" :value="u.id" :label="u.username" />
4545
</el-select>
4646
</div>
47-
<el-button class="ml-16" type="primary"> {{ $t('common.create') }}</el-button>
47+
<el-dropdown trigger="click">
48+
<el-button type="primary" class="ml-8">
49+
{{ $t('common.create') }}
50+
<el-icon class="el-icon--right">
51+
<arrow-down />
52+
</el-icon>
53+
</el-button>
54+
<template #dropdown>
55+
<el-dropdown-menu class="create-dropdown">
56+
<el-dropdown-item @click="openCreateDialog()">
57+
<div class="flex align-center">
58+
<el-avatar class="avatar-green" shape="square" :size="32">
59+
<img src="@/assets/node/icon_tool.svg" style="width: 58%" alt="" />
60+
</el-avatar>
61+
<div class="pre-wrap ml-8">
62+
<div class="lighter">空白创建</div>
63+
</div>
64+
</div>
65+
</el-dropdown-item>
66+
<el-dropdown-item>
67+
<el-upload
68+
ref="elUploadRef"
69+
:file-list="[]"
70+
action="#"
71+
multiple
72+
:auto-upload="false"
73+
:show-file-list="false"
74+
:limit="1"
75+
:on-change="(file: any, fileList: any) => importTool(file)"
76+
>
77+
<div class="flex align-center">
78+
<el-avatar shape="square" class="mt-4" :size="36" style="background: none">
79+
<img src="@/assets/icon_import.svg" alt="" />
80+
</el-avatar>
81+
<div class="pre-wrap ml-8">
82+
<div class="lighter">{{ $t('common.importCreate') }}</div>
83+
</div>
84+
</div>
85+
</el-upload>
86+
</el-dropdown-item>
87+
<el-dropdown-item @click="openCreateFolder" divided>
88+
<div class="flex align-center">
89+
<AppIcon iconName="app-folder" style="font-size: 32px"></AppIcon>
90+
<div class="pre-wrap ml-4">
91+
<div class="lighter">
92+
{{ $t('components.folder.addFolder') }}
93+
</div>
94+
</div>
95+
</div>
96+
</el-dropdown-item>
97+
</el-dropdown-menu>
98+
</template>
99+
</el-dropdown>
48100
</div>
49101
</template>
50102

@@ -64,6 +116,7 @@
64116
:title="item.name"
65117
:description="item.desc || $t('common.noData')"
66118
class="cursor"
119+
@click="clickFolder(item)"
67120
>
68121
<template #icon>
69122
<el-avatar shape="square" :size="32" style="background: none">
@@ -188,16 +241,18 @@
188241
</ContentContainer>
189242
<InitParamDrawer ref="InitParamDrawerRef" @refresh="refresh" />
190243
<ToolFormDrawer ref="ToolFormDrawerRef" @refresh="refresh" :title="ToolDrawertitle" />
244+
<CreateFolderDialog ref="CreateFolderDialogRef" @refresh="refreshFolder" />
191245
</LayoutContainer>
192246
</template>
193247

194248
<script lang="ts" setup>
195249
import { onMounted, ref, reactive, computed } from 'vue'
196250
import { cloneDeep, get } from 'lodash'
197-
import ToolApi from '@/api/shared/tool'
251+
import ToolApi from '@/api/tool/tool'
198252
import useStore from '@/stores'
199253
import InitParamDrawer from '@/views/tool/component/InitParamDrawer.vue'
200254
import ToolFormDrawer from './ToolFormDrawer.vue'
255+
import CreateFolderDialog from '@/components/folder-tree/CreateFolderDialog.vue'
201256
import { t } from '@/locales'
202257
import { isAppIcon } from '@/utils/common'
203258
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
@@ -337,12 +392,24 @@ function refresh(data: any) {
337392
getList()
338393
}
339394
395+
function refreshFolder() {
396+
toolList.value = []
397+
getFolder()
398+
getList()
399+
}
400+
340401
function folderClickHandel(row: any) {
341402
currentFolder.value = row
342403
toolList.value = []
343404
getList()
344405
}
345406
407+
function clickFolder(item: any) {
408+
currentFolder.value.id = item.id
409+
toolList.value = []
410+
getList()
411+
}
412+
346413
function copyTool(row: any) {
347414
ToolDrawertitle.value = t('views.tool.copyTool')
348415
const obj = cloneDeep(row)
@@ -368,8 +435,8 @@ function deleteTool(row: any) {
368435
{
369436
confirmButtonText: t('common.confirm'),
370437
cancelButtonText: t('common.cancel'),
371-
confirmButtonClass: 'danger'
372-
}
438+
confirmButtonClass: 'danger',
439+
},
373440
)
374441
.then(() => {
375442
ToolApi.delTool(row.id, loading).then(() => {
@@ -387,29 +454,34 @@ function configInitParams(item: any) {
387454
})
388455
}
389456
457+
const CreateFolderDialogRef = ref()
458+
function openCreateFolder() {
459+
CreateFolderDialogRef.value.open('TOOL', currentFolder.value.parent_id)
460+
}
390461
391-
// function importTool(file: any) {
392-
// const formData = new FormData()
393-
// formData.append('file', file.raw, file.name)
394-
// elUploadRef.value.clearFiles()
395-
// ToolApi
396-
// .postImportTool(formData, loading)
397-
// .then(async (res: any) => {
398-
// if (res?.data) {
399-
// searchHandle()
400-
// }
401-
// })
402-
// .catch((e: any) => {
403-
// if (e.code === 400) {
404-
// MsgConfirm(t('common.tip'), t('views.application.tip.professionalMessage'), {
405-
// cancelButtonText: t('common.confirm'),
406-
// confirmButtonText: t('common.professional')
407-
// }).then(() => {
408-
// window.open('https://maxkb.cn/pricing.html', '_blank')
409-
// })
410-
// }
411-
// })
412-
// }
462+
const elUploadRef = ref()
463+
function importTool(file: any) {
464+
const formData = new FormData()
465+
formData.append('file', file.raw, file.name)
466+
elUploadRef.value.clearFiles()
467+
ToolApi.postImportTool(formData, loading)
468+
.then(async (res: any) => {
469+
if (res?.data) {
470+
toolList.value = []
471+
getList()
472+
}
473+
})
474+
.catch((e: any) => {
475+
if (e.code === 400) {
476+
MsgConfirm(t('common.tip'), t('views.application.tip.professionalMessage'), {
477+
cancelButtonText: t('common.confirm'),
478+
confirmButtonText: t('common.professional'),
479+
}).then(() => {
480+
window.open('https://maxkb.cn/pricing.html', '_blank')
481+
})
482+
}
483+
})
484+
}
413485
414486
onMounted(() => {
415487
getFolder()

0 commit comments

Comments
 (0)