From 66d5fd6ca44e9285a5119583104c9796617cc4be Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Sat, 6 Sep 2025 21:32:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=B9=E5=99=A8=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 +- README_EN.md | 31 +- frontend/package.json | 8 +- frontend/src/common/commonEnum.ts | 2 + frontend/src/common/config.ts | 2 +- frontend/src/common/utils/string.ts | 8 +- frontend/src/components/enumtag/EnumTag.vue | 2 +- .../src/components/monaco/RealLogViewer.vue | 14 +- frontend/src/i18n/en/db.ts | 2 +- frontend/src/i18n/en/docker.ts | 4 + frontend/src/i18n/en/menu.ts | 2 + frontend/src/i18n/zh-cn/db.ts | 2 +- frontend/src/i18n/zh-cn/docker.ts | 4 + frontend/src/i18n/zh-cn/menu.ts | 2 + frontend/src/i18n/zh-cn/tag.ts | 2 + .../views/ops/component/ResourceOpPanel.vue | 29 - frontend/src/views/ops/component/TagTree.vue | 276 ---- .../db/component/sqleditor/DbSqlEditor.vue | 143 +- .../ops/db/component/table/DbTableData.vue | 24 +- frontend/src/views/ops/db/resource/NodeDb.vue | 13 + .../src/views/ops/db/resource/NodeDbInst.vue | 6 +- frontend/src/views/ops/db/resource/index.ts | 53 +- .../views/ops/docker/ContainerConfList.vue | 170 +++ .../src/views/ops/docker/CotainerConfEdit.vue | 115 ++ frontend/src/views/ops/docker/api.ts | 34 +- .../ops/docker/container/ContainerCreate.vue | 18 +- .../ops/docker/container/ContainerList.vue | 44 +- .../ops/docker/container/ContainerLog.vue | 46 +- .../src/views/ops/docker/image/ImageList.vue | 20 +- .../views/ops/docker/resource/ContainerOp.vue | 47 + .../src/views/ops/docker/resource/index.ts | 46 + frontend/src/views/ops/es/EsOperation.vue | 1201 ----------------- .../src/views/ops/machine/ScriptManage.vue | 2 +- .../src/views/ops/redis/resource/index.ts | 2 +- .../src/views/ops/resource/BaseTreeNode.vue | 2 +- .../src/views/ops/resource/ResourceOp.vue | 60 +- frontend/src/views/ops/tag/TagTreeList.vue | 4 +- server/go.mod | 4 +- server/internal/docker/api/api.go | 1 + server/internal/docker/api/container.go | 48 +- server/internal/docker/api/container_conf.go | 96 ++ server/internal/docker/api/docker.go | 7 +- server/internal/docker/api/form/container.go | 14 +- server/internal/docker/api/form/image.go | 1 - server/internal/docker/api/image.go | 29 +- server/internal/docker/api/vo/container.go | 21 + .../docker/application/application.go | 13 + .../internal/docker/application/container.go | 144 ++ .../docker/application/dto/container.go | 8 + server/internal/docker/dkm/client.go | 35 +- .../docker/domain/entity/contrainer.go | 14 + server/internal/docker/domain/entity/query.go | 16 + .../docker/domain/repository/container.go | 14 + server/internal/docker/imsg/en.go | 7 + server/internal/docker/imsg/imsg.go | 2 + server/internal/docker/imsg/zh_cn.go | 2 + .../docker/infra/persistence/container.go | 33 + .../docker/infra/persistence/persistence.go | 9 + server/internal/docker/init/init.go | 13 +- server/internal/pkg/config/app.go | 2 +- server/internal/pkg/consts/consts.go | 1 + server/internal/tag/api/tag_tree.go | 4 + server/internal/tag/domain/entity/tag_tree.go | 1 + server/migration/migrations/v1_10.go | 53 + 64 files changed, 1208 insertions(+), 1856 deletions(-) delete mode 100644 frontend/src/views/ops/component/ResourceOpPanel.vue delete mode 100644 frontend/src/views/ops/component/TagTree.vue create mode 100644 frontend/src/views/ops/db/resource/NodeDb.vue create mode 100644 frontend/src/views/ops/docker/ContainerConfList.vue create mode 100644 frontend/src/views/ops/docker/CotainerConfEdit.vue create mode 100644 frontend/src/views/ops/docker/resource/ContainerOp.vue create mode 100644 frontend/src/views/ops/docker/resource/index.ts delete mode 100644 frontend/src/views/ops/es/EsOperation.vue create mode 100644 server/internal/docker/api/container_conf.go create mode 100644 server/internal/docker/api/vo/container.go create mode 100644 server/internal/docker/application/application.go create mode 100644 server/internal/docker/application/container.go create mode 100644 server/internal/docker/application/dto/container.go create mode 100644 server/internal/docker/domain/entity/contrainer.go create mode 100644 server/internal/docker/domain/entity/query.go create mode 100644 server/internal/docker/domain/repository/container.go create mode 100644 server/internal/docker/infra/persistence/container.go create mode 100644 server/internal/docker/infra/persistence/persistence.go diff --git a/README.md b/README.md index b6d9f193..a1206d93 100644 --- a/README.md +++ b/README.md @@ -51,42 +51,36 @@ http://go.mayfly.run #### 首页 -![首页](https://foruda.gitee.com/images/1714378104294194769/149fd257_1240250.png "屏幕截图") +![首页](https://foruda.gitee.com/images/1757163736351080323/afb6b330_1240250.png "屏幕截图") -#### 机器操作 +#### 资源管理 -##### 状态查看 +![资源树](https://foruda.gitee.com/images/1757163958991119284/83eb2171_1240250.png "屏幕截图") -![机器状态查看](https://foruda.gitee.com/images/1714378556642584686/93c46ec0_1240250.png "屏幕截图") +#### 资源操作 -##### ssh 终端 +![终端操作](https://foruda.gitee.com/images/1757164093410206293/1c7dda30_1240250.png) -![终端操作](https://foruda.gitee.com/images/1714378353790214943/2864ba66_1240250.png "屏幕截图") - -##### 文件操作 - -![文件操作](https://foruda.gitee.com/images/1714378417206086701/74a188d8_1240250.png "屏幕截图") +![文件操作](https://foruda.gitee.com/images/1757164149388450531/0542398c_1240250.png) ![文件查看](https://foruda.gitee.com/images/1714378482611638688/7753faf6_1240250.png "屏幕截图") -#### 数据库操作 -##### sql 编辑器 +![sql编辑器](https://foruda.gitee.com/images/1757164386318836686/c3b17a52_1240250.png) -![sql编辑器](https://foruda.gitee.com/images/1714378747473077515/3c9387c0_1240250.png "屏幕截图") -##### 在线增删改查数据 +![选表查数据](https://foruda.gitee.com/images/1757164281011401749/5109485f_1240250.png) -![选表查数据](https://foruda.gitee.com/images/1714378625059063750/3951e5a8_1240250.png "屏幕截图") -#### Redis 操作 +![redis操作](https://foruda.gitee.com/images/1757164442298752845/4af1b296_1240250.png) -![redis操作](https://foruda.gitee.com/images/1714378855845451114/4c3f0097_1240250.png "屏幕截图") - -#### Mongo 操作 ![mongo操作](https://foruda.gitee.com/images/1714378916425714642/77fc0ed9_1240250.png "屏幕截图") +![es操作](https://foruda.gitee.com/images/1757164553845346963/b5b70381_1240250.png) + +![容器操作](https://foruda.gitee.com/images/1757164625186816754/2b195e25_1240250.png) + #### 工单流程审批 ![流程审批](https://foruda.gitee.com/images/1714379057627690037/ad136862_1240250.png "屏幕截图") diff --git a/README_EN.md b/README_EN.md index cccccb8e..f3b5e407 100644 --- a/README_EN.md +++ b/README_EN.md @@ -46,40 +46,35 @@ account/password:test/test123. ![首页](https://foruda.gitee.com/images/1714378104294194769/149fd257_1240250.png "屏幕截图") -#### Machine Operation +#### Resource Manage -##### Status +![资源树](https://foruda.gitee.com/images/1757163958991119284/83eb2171_1240250.png "屏幕截图") -![机器状态查看](https://foruda.gitee.com/images/1714378556642584686/93c46ec0_1240250.png "屏幕截图") +#### Resource Operation -##### SSH Terminal +![终端操作](https://foruda.gitee.com/images/1757164093410206293/1c7dda30_1240250.png) -![终端操作](https://foruda.gitee.com/images/1714378353790214943/2864ba66_1240250.png "屏幕截图") - -##### File Operation - -![文件操作](https://foruda.gitee.com/images/1714378417206086701/74a188d8_1240250.png "屏幕截图") +![文件操作](https://foruda.gitee.com/images/1757164149388450531/0542398c_1240250.png) ![文件查看](https://foruda.gitee.com/images/1714378482611638688/7753faf6_1240250.png "屏幕截图") -#### Database Operation -##### SQL Editor +![sql编辑器](https://foruda.gitee.com/images/1757164386318836686/c3b17a52_1240250.png) -![sql编辑器](https://foruda.gitee.com/images/1714378747473077515/3c9387c0_1240250.png "屏幕截图") -##### Add, delete, update and check data online +![选表查数据](https://foruda.gitee.com/images/1757164281011401749/5109485f_1240250.png) -![选表查数据](https://foruda.gitee.com/images/1714378625059063750/3951e5a8_1240250.png "屏幕截图") -#### Redis Operation +![redis操作](https://foruda.gitee.com/images/1757164442298752845/4af1b296_1240250.png) -![redis操作](https://foruda.gitee.com/images/1714378855845451114/4c3f0097_1240250.png "屏幕截图") - -#### Mongo Operation ![mongo操作](https://foruda.gitee.com/images/1714378916425714642/77fc0ed9_1240250.png "屏幕截图") +![es操作](https://foruda.gitee.com/images/1757164553845346963/b5b70381_1240250.png) + +![容器操作](https://foruda.gitee.com/images/1757164625186816754/2b195e25_1240250.png) + + #### Work order process approval ![流程审批](https://foruda.gitee.com/images/1714379057627690037/ad136862_1240250.png "屏幕截图") diff --git a/frontend/package.json b/frontend/package.json index 641bad8a..496bc2b2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,7 @@ "@element-plus/icons-vue": "^2.3.2", "@logicflow/core": "^2.1.1", "@logicflow/extension": "^2.1.2", - "@vueuse/core": "^13.8.0", + "@vueuse/core": "^13.9.0", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-search": "^0.15.0", "@xterm/addon-web-links": "^0.11.0", @@ -24,7 +24,7 @@ "crypto-js": "^4.2.0", "dayjs": "^1.11.18", "echarts": "^6.0.0", - "element-plus": "^2.11.1", + "element-plus": "^2.11.2", "js-base64": "^3.7.7", "jsencrypt": "^3.3.2", "monaco-editor": "^0.52.2", @@ -59,8 +59,8 @@ "eslint-plugin-vue": "^10.4.0", "postcss": "^8.5.6", "prettier": "^3.6.1", - "sass": "^1.90.0", - "tailwindcss": "^4.1.12", + "sass": "^1.92.1", + "tailwindcss": "^4.1.13", "typescript": "^5.9.2", "vite": "npm:rolldown-vite@latest", "vite-plugin-progress": "0.0.7", diff --git a/frontend/src/common/commonEnum.ts b/frontend/src/common/commonEnum.ts index d0fdd800..8b34b6a5 100644 --- a/frontend/src/common/commonEnum.ts +++ b/frontend/src/common/commonEnum.ts @@ -22,6 +22,7 @@ export const ResourceTypeEnum = { Mongo: EnumValue.of(4, 'mongo').setExtra({ icon: 'icon mongo/mongo', iconColor: 'var(--el-color-success)' }).tagTypeDanger(), AuthCert: EnumValue.of(5, 'ac.ac').setExtra({ icon: 'Ticket', iconColor: 'var(--el-color-success)' }), Es: EnumValue.of(6, 'tag.es').setExtra({ icon: 'icon es/es-color', iconColor: 'var(--el-color-warning)' }).tagTypeWarning(), + Container: EnumValue.of(7, 'tag.container').setExtra({ icon: 'icon docker/docker', iconColor: 'var(--el-color-primary)' }), }; // 标签关联的资源类型 @@ -35,6 +36,7 @@ export const TagResourceTypeEnum = { Redis: ResourceTypeEnum.Redis, Mongo: ResourceTypeEnum.Mongo, AuthCert: ResourceTypeEnum.AuthCert, + Container: ResourceTypeEnum.Container, Db: EnumValue.of(22, '数据库').setExtra({ icon: 'icon db/db' }), }; diff --git a/frontend/src/common/config.ts b/frontend/src/common/config.ts index 9e6c078a..5ed2f480 100644 --- a/frontend/src/common/config.ts +++ b/frontend/src/common/config.ts @@ -15,7 +15,7 @@ const config = { baseWsUrl: `${(window as any).globalConfig.BaseWsUrl || `${location.protocol == 'https:' ? 'wss:' : 'ws:'}//${getBaseApiUrl()}`}/api`, // 系统版本 - version: 'v1.10.2', + version: 'v1.10.3', }; export default config; diff --git a/frontend/src/common/utils/string.ts b/frontend/src/common/utils/string.ts index 000434cf..8b44d662 100644 --- a/frontend/src/common/utils/string.ts +++ b/frontend/src/common/utils/string.ts @@ -12,7 +12,13 @@ import { ElMessage } from 'element-plus'; export function templateResolve(template: string, param: any) { return template.replace(/\{\w+\}/g, (word) => { const key = word.substring(1, word.length - 1); - const value = param[key]; + let value; + // 兼容FormData类型的参数 + if (param instanceof FormData) { + value = param.get(key); + } else { + value = param[key]; + } if (value != null || value != undefined) { return value; } diff --git a/frontend/src/components/enumtag/EnumTag.vue b/frontend/src/components/enumtag/EnumTag.vue index 5b65e06a..d4460928 100644 --- a/frontend/src/components/enumtag/EnumTag.vue +++ b/frontend/src/components/enumtag/EnumTag.vue @@ -12,7 +12,7 @@ const props = defineProps({ required: true, }, value: { - type: [Object, String, Number, null], + type: [Object, String, Number, null, Boolean], required: true, default: () => null, }, diff --git a/frontend/src/components/monaco/RealLogViewer.vue b/frontend/src/components/monaco/RealLogViewer.vue index beb6fdf5..bd588af0 100644 --- a/frontend/src/components/monaco/RealLogViewer.vue +++ b/frontend/src/components/monaco/RealLogViewer.vue @@ -1,5 +1,5 @@