From 0a20aaa3fab5637332667c9d2da2c10e4f62a458 Mon Sep 17 00:00:00 2001 From: ssongliu Date: Thu, 23 Feb 2023 11:39:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E9=83=A8=E5=88=86=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/dto/image_repo.go | 3 +- backend/app/service/container_volume.go | 5 +- backend/app/service/image_repo.go | 23 -- frontend/src/api/interface/container.ts | 1 - frontend/src/lang/modules/en.ts | 7 + frontend/src/lang/modules/zh.ts | 7 + frontend/src/utils/docker.ts | 4 + .../views/container/compose/detail/index.vue | 6 +- .../src/views/container/compose/index.vue | 7 +- .../container/container/terminal/index.vue | 69 +++-- .../src/views/container/image/push/index.vue | 8 +- .../src/views/container/repo/delete/index.vue | 67 ----- frontend/src/views/container/repo/index.vue | 21 +- .../src/views/container/setting/index.vue | 19 +- frontend/src/views/container/volume/index.vue | 23 +- frontend/src/views/database/mysql/index.vue | 2 +- .../views/database/mysql/setting/index.vue | 19 +- .../database/mysql/setting/slow-log/index.vue | 2 +- .../database/mysql/setting/status/index.vue | 263 +++++++++++------- .../views/database/redis/setting/index.vue | 15 +- .../redis/setting/persistence/index.vue | 4 +- .../database/redis/setting/status/index.vue | 199 ++++++++----- 22 files changed, 409 insertions(+), 365 deletions(-) delete mode 100644 frontend/src/views/container/repo/delete/index.vue diff --git a/backend/app/dto/image_repo.go b/backend/app/dto/image_repo.go index ffa1bc313..a6bea3f70 100644 --- a/backend/app/dto/image_repo.go +++ b/backend/app/dto/image_repo.go @@ -40,6 +40,5 @@ type ImageRepoOption struct { } type ImageRepoDelete struct { - DeleteInsecure bool `json:"deleteInsecure"` - Ids []uint `json:"ids" validate:"required"` + Ids []uint `json:"ids" validate:"required"` } diff --git a/backend/app/service/container_volume.go b/backend/app/service/container_volume.go index 71766964c..f6259c855 100644 --- a/backend/app/service/container_volume.go +++ b/backend/app/service/container_volume.go @@ -55,7 +55,10 @@ func (u *ContainerService) PageVolume(req dto.SearchWithPage) (int64, interface{ for _, val := range item.Labels { tag = append(tag, val) } - createTime, _ := time.Parse("2006-01-02T15:04:05Z", item.CreatedAt) + if len(item.CreatedAt) > 19 { + item.CreatedAt = item.CreatedAt[0:19] + } + createTime, _ := time.Parse("2006-01-02T15:04:05", item.CreatedAt) data = append(data, dto.Volume{ CreatedAt: createTime, Name: item.Name, diff --git a/backend/app/service/image_repo.go b/backend/app/service/image_repo.go index 7eee0885c..d88ed3fb2 100644 --- a/backend/app/service/image_repo.go +++ b/backend/app/service/image_repo.go @@ -92,32 +92,9 @@ func (u *ImageRepoService) BatchDelete(req dto.ImageRepoDelete) error { return errors.New("The default value cannot be edit !") } } - if !req.DeleteInsecure { - if err := imageRepoRepo.Delete(commonRepo.WithIdsIn(req.Ids)); err != nil { - return err - } - return nil - } - repos, err := imageRepoRepo.List(commonRepo.WithIdsIn(req.Ids)) - if err != nil { - return err - } - for _, repo := range repos { - if repo.Protocol == "http" { - _ = u.handleRegistries("", repo.DownloadUrl, "delete") - } - if repo.Auth { - _, _ = cmd.Execf("docker logout %s://%s", repo.Protocol, repo.DownloadUrl) - } - } if err := imageRepoRepo.Delete(commonRepo.WithIdsIn(req.Ids)); err != nil { return err } - stdout, err := cmd.Exec("systemctl restart docker") - if err != nil { - return errors.New(string(stdout)) - } - return nil } diff --git a/frontend/src/api/interface/container.ts b/frontend/src/api/interface/container.ts index 6126b0207..a5fa00af0 100644 --- a/frontend/src/api/interface/container.ts +++ b/frontend/src/api/interface/container.ts @@ -157,7 +157,6 @@ export namespace Container { } export interface RepoDelete { ids: Array; - deleteInsecure: boolean; } export interface RepoInfo { id: number; diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 3355fdf03..334981343 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -336,11 +336,14 @@ export default { log: 'Logs', slowLog: 'Slowlogs', + noData: 'No slow log yet...', isOn: 'Is on', longQueryTime: 'Slow query threshold', status: 'The current state', + baseParam: 'Basic parameter', + performanceParam: 'Performance parameter', terminal: 'Terminal mode', second: 'Second', timeout: 'Timeout', @@ -403,6 +406,8 @@ export default { last10Min: 'Last 10 Minutes', newName: 'New name', + user: 'User', + command: 'Command', custom: 'Custom', emptyUser: 'When empty, you will log in as default', containerTerminal: 'Terminal', @@ -490,6 +495,8 @@ export default { registrieHelper: 'One in a row, for example:\n172.16.10.111:8081 \n172.16.10.112:8081', compose: 'Compose', + apps: 'Apps', + local: 'Local', createCompose: 'Create compose', composeTemplate: 'Compose template', createComposeTemplate: 'Create compose template', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index a147abe16..6ae05deac 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -295,6 +295,8 @@ export default { zipFormat: 'zip、tar.gz 压缩包结构:test.zip 或 test.tar.gz 压缩包内,必需包含 test.sql', currentStatus: '当前状态', + baseParam: '基础参数', + performanceParam: '性能参数', runTime: '启动时间', connections: '总连接数', bytesSent: '发送', @@ -344,6 +346,7 @@ export default { log: '日志', slowLog: '慢日志', + noData: '暂无慢日志...', isOn: '是否开启', longQueryTime: '慢查询阈值', @@ -417,6 +420,8 @@ export default { last10Min: '最近 10 分钟', newName: '新名称', + user: '用户', + command: '命令', custom: '自定义', containerTerminal: '终端', emptyUser: '为空时,将使用容器默认的用户登录', @@ -504,6 +509,8 @@ export default { registrieHelper: '一行一个,例:\n172.16.10.111:8081 \n172.16.10.112:8081', compose: '编排', + apps: '应用商店', + local: '本地', createCompose: '创建编排', composeTemplate: '编排模版', createComposeTemplate: '创建编排模版', diff --git a/frontend/src/utils/docker.ts b/frontend/src/utils/docker.ts index 4bb57676b..f2a135921 100644 --- a/frontend/src/utils/docker.ts +++ b/frontend/src/utils/docker.ts @@ -5,6 +5,10 @@ export function formatImageStdout(stdout: string) { for (let i = 0; i < lines.length; i++) { if (isJson(lines[i])) { const data = JSON.parse(lines[i]); + if (data.stream) { + lines[i] = data.stream; + continue; + } if (data.id) { lines[i] = data.id + ': ' + data.status; } else { diff --git a/frontend/src/views/container/compose/detail/index.vue b/frontend/src/views/container/compose/detail/index.vue index b517dad29..5627af81e 100644 --- a/frontend/src/views/container/compose/detail/index.vue +++ b/frontend/src/views/container/compose/detail/index.vue @@ -32,13 +32,12 @@ - diff --git a/frontend/src/views/container/image/push/index.vue b/frontend/src/views/container/image/push/index.vue index c9d6db83f..57c730ca8 100644 --- a/frontend/src/views/container/image/push/index.vue +++ b/frontend/src/views/container/image/push/index.vue @@ -13,7 +13,7 @@ - + @@ -27,7 +27,7 @@ /> - + @@ -114,8 +114,8 @@ const acceptParams = async (params: DialogProps): Promise => { drawerVisiable.value = true; form.tags = params.tags; form.repoID = 1; - form.tagName = ''; - form.name = ''; + form.tagName = form.tags.length !== 0 ? form.tags[0] : ''; + form.name = form.tags.length !== 0 ? form.tags[0] : ''; dialogData.value.repos = params.repos; }; const emit = defineEmits<{ (e: 'search'): void }>(); diff --git a/frontend/src/views/container/repo/delete/index.vue b/frontend/src/views/container/repo/delete/index.vue deleted file mode 100644 index 314af739e..000000000 --- a/frontend/src/views/container/repo/delete/index.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/frontend/src/views/container/repo/index.vue b/frontend/src/views/container/repo/index.vue index 893448763..fe0f45a5f 100644 --- a/frontend/src/views/container/repo/index.vue +++ b/frontend/src/views/container/repo/index.vue @@ -71,7 +71,6 @@ - @@ -80,7 +79,6 @@ import LayoutContent from '@/layout/layout-content.vue'; import ComplexTable from '@/components/complex-table/index.vue'; import TableSetting from '@/components/table-setting/index.vue'; import OperatorDialog from '@/views/container/repo/operator/index.vue'; -import DeleteDialog from '@/views/container/repo/delete/index.vue'; import { reactive, onMounted, ref } from 'vue'; import { dateFormat } from '@/utils/util'; import { Container } from '@/api/interface/container'; @@ -148,19 +146,14 @@ const onOpenDialog = async ( dialogRef.value!.acceptParams(params); }; -const dialogDeleteRef = ref(); const onDelete = async (row: Container.RepoInfo) => { - if (row.protocol === 'https') { - ElMessageBox.confirm(i18n.global.t('commons.msg.delete'), i18n.global.t('commons.button.delete'), { - confirmButtonText: i18n.global.t('commons.button.confirm'), - cancelButtonText: i18n.global.t('commons.button.cancel'), - }).then(async () => { - await deleteImageRepo({ ids: [row.id], deleteInsecure: false }); - search(); - }); - return; - } - dialogDeleteRef.value!.acceptParams({ ids: [row.id] }); + ElMessageBox.confirm(i18n.global.t('commons.msg.delete'), i18n.global.t('commons.button.delete'), { + confirmButtonText: i18n.global.t('commons.button.confirm'), + cancelButtonText: i18n.global.t('commons.button.cancel'), + }).then(async () => { + await deleteImageRepo({ ids: [row.id] }); + search(); + }); }; const buttons = [ diff --git a/frontend/src/views/container/setting/index.vue b/frontend/src/views/container/setting/index.vue index 5a318b281..2f6ee20a0 100644 --- a/frontend/src/views/container/setting/index.vue +++ b/frontend/src/views/container/setting/index.vue @@ -1,5 +1,5 @@