From d25c035fc0d132abeb0356040e75ac31174fc7d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Tue, 4 Feb 2025 23:52:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20axios=E8=BD=ACalova.js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/apps/benchmark/index.ts | 7 +- web/src/api/apps/docker/index.ts | 6 +- web/src/api/apps/fail2ban/index.ts | 23 +++---- web/src/views/apps/benchmark/IndexView.vue | 6 +- web/src/views/apps/docker/IndexView.vue | 6 +- web/src/views/apps/fail2ban/IndexView.vue | 75 ++++++++-------------- web/src/views/apps/fail2ban/types.ts | 8 --- 7 files changed, 47 insertions(+), 84 deletions(-) delete mode 100644 web/src/views/apps/fail2ban/types.ts diff --git a/web/src/api/apps/benchmark/index.ts b/web/src/api/apps/benchmark/index.ts index 9e49e13b..85af8d38 100644 --- a/web/src/api/apps/benchmark/index.ts +++ b/web/src/api/apps/benchmark/index.ts @@ -1,9 +1,6 @@ -import type { AxiosResponse } from 'axios' - -import { request } from '@/utils' +import { http } from '@/utils' export default { // 运行评分 - test: (name: string, multi: boolean): Promise> => - request.post('/apps/benchmark/test', { name, multi }) + test: (name: string, multi: boolean): any => http.Post('/apps/benchmark/test', { name, multi }) } diff --git a/web/src/api/apps/docker/index.ts b/web/src/api/apps/docker/index.ts index 964eb4ed..7ecb5788 100644 --- a/web/src/api/apps/docker/index.ts +++ b/web/src/api/apps/docker/index.ts @@ -1,4 +1,6 @@ import { http } from '@/utils' -export const getConfig = () => http.Get('/apps/docker/config') -export const updateConfig = (config: string) => http.Post('/apps/docker/config', { config }) +export default { + getConfig: (): any => http.Get('/apps/docker/config'), + updateConfig: (config: string): any => http.Post('/apps/docker/config', { config }) +} diff --git a/web/src/api/apps/fail2ban/index.ts b/web/src/api/apps/fail2ban/index.ts index 094ee9af..9f67256f 100644 --- a/web/src/api/apps/fail2ban/index.ts +++ b/web/src/api/apps/fail2ban/index.ts @@ -1,24 +1,19 @@ -import type { AxiosResponse } from 'axios' - -import { request } from '@/utils' +import { http } from '@/utils' export default { // 保护列表 - jails: (page: number, limit: number): Promise> => - request.get('/apps/fail2ban/jails', { params: { page, limit } }), + jails: (page: number, limit: number): any => + http.Get('/apps/fail2ban/jails', { params: { page, limit } }), // 添加保护 - add: (data: any): Promise> => request.post('/apps/fail2ban/jails', data), + add: (data: any): any => http.Post('/apps/fail2ban/jails', data), // 删除保护 - delete: (name: string): Promise> => - request.delete('/apps/fail2ban/jails', { data: { name } }), + delete: (name: string): any => http.Delete('/apps/fail2ban/jails', { name }), // 封禁列表 - jail: (name: string): Promise> => request.get('/apps/fail2ban/jails/' + name), + jail: (name: string): any => http.Get('/apps/fail2ban/jails/' + name), // 解封 IP - unban: (name: string, ip: string): Promise> => - request.post('/apps/fail2ban/unban', { name, ip }), + unban: (name: string, ip: string): any => http.Post('/apps/fail2ban/unban', { name, ip }), // 获取白名单 - whitelist: (): Promise> => request.get('/apps/fail2ban/whiteList'), + whitelist: (): any => http.Get('/apps/fail2ban/whiteList'), // 设置白名单 - setWhitelist: (ip: string): Promise> => - request.post('/apps/fail2ban/whiteList', { ip }) + setWhitelist: (ip: string): any => http.Post('/apps/fail2ban/whiteList', { ip }) } diff --git a/web/src/views/apps/benchmark/IndexView.vue b/web/src/views/apps/benchmark/IndexView.vue index 26a4695e..bad7867c 100644 --- a/web/src/views/apps/benchmark/IndexView.vue +++ b/web/src/views/apps/benchmark/IndexView.vue @@ -102,11 +102,11 @@ const handleTest = async () => { current.value = test if (test != 'memory' && test != 'disk') { for (let j = 0; j < 2; j++) { - const { data } = await benchmark.test(test, j === 1) - cpu.value[test as keyof typeof cpu.value][j === 1 ? 'multi' : 'single'] = data + cpu.value[test as keyof typeof cpu.value][j === 1 ? 'multi' : 'single'] = + await benchmark.test(test, j === 1) } } else { - const { data } = await benchmark.test(test, false) + const data = await benchmark.test(test, false) if (test === 'memory') { memory.value = data } else { diff --git a/web/src/views/apps/docker/IndexView.vue b/web/src/views/apps/docker/IndexView.vue index a0e68e82..5f768bcc 100644 --- a/web/src/views/apps/docker/IndexView.vue +++ b/web/src/views/apps/docker/IndexView.vue @@ -6,14 +6,14 @@ defineOptions({ import Editor from '@guolao/vue-monaco-editor' import { NButton, NPopconfirm } from 'naive-ui' -import { getConfig, updateConfig } from '@/api/apps/docker' +import docker from '@/api/apps/docker' import systemctl from '@/api/panel/systemctl' const currentTab = ref('status') const status = ref(false) const isEnabled = ref(false) -const { data: config }: { data: any } = useRequest(getConfig, { +const { data: config } = useRequest(docker.getConfig, { initialData: { config: '' } @@ -36,7 +36,7 @@ const getIsEnabled = async () => { } const handleSaveConfig = async () => { - useRequest(() => updateConfig(config.value)).onSuccess(() => { + useRequest(() => docker.updateConfig(config.value)).onSuccess(() => { window.$message.success('保存成功') }) } diff --git a/web/src/views/apps/fail2ban/IndexView.vue b/web/src/views/apps/fail2ban/IndexView.vue index 985450d0..e1458739 100644 --- a/web/src/views/apps/fail2ban/IndexView.vue +++ b/web/src/views/apps/fail2ban/IndexView.vue @@ -10,7 +10,6 @@ import app from '@/api/panel/app' import systemctl from '@/api/panel/systemctl' import website from '@/api/panel/website' import { renderIcon } from '@/utils' -import type { Jail } from '@/views/apps/fail2ban/types' const currentTab = ref('status') const status = ref(false) @@ -65,13 +64,6 @@ const jailsColumns: any = [ { title: '最大尝试', key: 'max_retry', minWidth: 150, ellipsis: { tooltip: true } }, { title: '封禁时间', key: 'ban_time', minWidth: 150, ellipsis: { tooltip: true } }, { title: '周期', key: 'find_time', minWidth: 150, ellipsis: { tooltip: true } }, - { - title: '日志路径', - key: 'log_path', - minWidth: 150, - resizable: true, - ellipsis: { tooltip: true } - }, { title: '操作', key: 'actions', @@ -126,8 +118,6 @@ const jailsColumns: any = [ } ] -const jails = ref([]) - const banedIPColumns: any = [ { title: 'IP', @@ -173,22 +163,10 @@ const banedIPColumns: any = [ } ] -const pagination = reactive({ - page: 1, - pageCount: 1, - pageSize: 20, - itemCount: 0, - showQuickJumper: true, - showSizePicker: true, - pageSizes: [20, 50, 100, 200] -}) - const websites = ref([]) const getWhiteList = async () => { - await fail2ban.whitelist().then((res: any) => { - white.value = res.data - }) + white.value = await fail2ban.whitelist() } const handleSaveWhiteList = async () => { @@ -207,24 +185,14 @@ const getWebsiteList = async (page: number, limit: number) => { addJailModel.value.website_name = websites.value[0]?.value } -const getJails = async (page: number, limit: number) => { - const { data } = await fail2ban.jails(page, limit) - return data -} - -const onPageChange = (page: number) => { - pagination.page = page - getJails(page, pagination.pageSize).then((res) => { - jails.value = res.items - pagination.itemCount = res.total - pagination.pageCount = res.total / pagination.pageSize + 1 - }) -} - -const onPageSizeChange = (pageSize: number) => { - pagination.pageSize = pageSize - onPageChange(1) -} +const { loading, data, page, total, pageSize, pageCount, refresh } = usePagination( + (page, pageSize) => fail2ban.jails(page, pageSize), + { + initialData: { total: 0, list: [] }, + total: (res: any) => res.total, + data: (res: any) => res.items + } +) const getStatus = async () => { await systemctl.status('fail2ban').then((res: any) => { @@ -275,19 +243,19 @@ const handleReload = async () => { const handleAddJail = async () => { await fail2ban.add(addJailModel.value) + await refresh() window.$message.success('添加成功') addJailModal.value = false - onPageChange(1) } const handleDeleteJail = async (name: string) => { await fail2ban.delete(name) + await refresh() window.$message.success('删除成功') - onPageChange(1) } const getJailInfo = async (name: string) => { - const { data } = await fail2ban.jail(name) + const data = await fail2ban.jail(name) jailCurrentlyBan.value = data.currently_ban jailTotalBan.value = data.total_ban jailBanedList.value = data.baned_list @@ -300,10 +268,10 @@ const handleUnBan = async (name: string, ip: string) => { } onMounted(() => { + refresh() getStatus() getIsEnabled() getWhiteList() - onPageChange(1) app.isInstalled('nginx').then((res) => { if (res.data.installed) { getWebsiteList(1, 10000) @@ -389,12 +357,21 @@ onMounted(() => { striped remote :scroll-x="1000" - :loading="false" + :loading="loading" :columns="jailsColumns" - :data="jails" + :data="data" :row-key="(row: any) => row.name" - @update:page="onPageChange" - @update:page-size="onPageSizeChange" + v-model:page="page" + v-model:pageSize="pageSize" + :pagination="{ + page: page, + pageCount: pageCount, + pageSize: pageSize, + itemCount: total, + showQuickJumper: true, + showSizePicker: true, + pageSizes: [20, 50, 100, 200] + }" /> diff --git a/web/src/views/apps/fail2ban/types.ts b/web/src/views/apps/fail2ban/types.ts deleted file mode 100644 index 55573429..00000000 --- a/web/src/views/apps/fail2ban/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface Jail { - name: string - enabled: boolean - log_path: string - max_retry: number - find_time: number - ban_time: number -}