From e02ecf053f640a9016608ac861a05ab17bc41ef0 Mon Sep 17 00:00:00 2001
From: "meilin.huang" <954537473@qq.com>
Date: Sun, 31 Aug 2025 21:46:10 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B5=84=E6=BA=90=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=AE=A1=E7=90=86&=E5=AE=B9=E5=99=A8?=
=?UTF-8?q?=E6=93=8D=E4=BD=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/package.json | 10 +-
frontend/src/assets/icon/db/db.svg | 1 +
frontend/src/assets/icon/db/table.svg | 1 +
frontend/src/assets/icon/docker/docker.svg | 1 +
frontend/src/assets/icon/machine/machine.svg | 1 +
frontend/src/assets/icon/mongo/mongo.svg | 2 +-
frontend/src/assets/icon/redis/redis.svg | 2 +-
frontend/src/common/commonEnum.ts | 10 +-
frontend/src/components/auth/auth.ts | 4 +-
frontend/src/components/contextmenu/index.vue | 4 +-
.../src/components/monaco/RealLogViewer.vue | 67 ++
.../src/components/terminal/TerminalBody.vue | 2 +-
frontend/src/hooks/useDataState.ts | 20 +
frontend/src/i18n/en/common.ts | 139 ---
frontend/src/i18n/en/docker.ts | 79 ++
frontend/src/i18n/en/es.ts | 10 +-
frontend/src/i18n/en/menu.ts | 142 +++
frontend/src/i18n/en/tag.ts | 6 +
frontend/src/i18n/zh-cn/common.ts | 139 ---
frontend/src/i18n/zh-cn/docker.ts | 79 ++
frontend/src/i18n/zh-cn/es.ts | 10 +-
frontend/src/i18n/zh-cn/menu.ts | 142 +++
frontend/src/i18n/zh-cn/tag.ts | 6 +
frontend/src/layout/navMenu/horizontal.vue | 8 +-
frontend/src/store/autoOpenResource.ts | 18 +-
frontend/src/theme/common/transition.scss | 35 +
frontend/src/theme/element.scss | 8 -
frontend/src/theme/mixins/index.scss | 12 -
frontend/src/views/home/Home.vue | 22 +-
.../views/ops/component/ResourceOpPanel.vue | 2 +-
frontend/src/views/ops/component/tag.ts | 67 +-
frontend/src/views/ops/db/InstanceList.vue | 4 +-
frontend/src/views/ops/db/SqlExec.vue | 1009 ----------------
.../ops/db/component/table/DbTableData.vue | 1 +
.../ops/db/component/table/DbTableDataOp.vue | 2 +-
frontend/src/views/ops/db/db.ts | 3 +-
.../src/views/ops/db/resource/DbDataOp.vue | 690 +++++++++++
.../src/views/ops/db/resource/NodeDbInst.vue | 53 +
.../src/views/ops/db/resource/NodeDbTable.vue | 13 +
frontend/src/views/ops/db/resource/index.ts | 295 +++++
frontend/src/views/ops/db/route.ts | 2 -
frontend/src/views/ops/docker/DockerPanel.vue | 42 +
.../views/ops/docker/DockerPanelDrawer.vue | 39 +
frontend/src/views/ops/docker/api.ts | 27 +
.../ops/docker/container/ContainerCreate.vue | 453 ++++++++
.../ops/docker/container/ContainerList.vue | 354 ++++++
.../ops/docker/container/ContainerLog.vue | 77 ++
frontend/src/views/ops/docker/enums.ts | 11 +
.../src/views/ops/docker/image/ImageList.vue | 209 ++++
frontend/src/views/ops/docker/route.ts | 3 +
frontend/src/views/ops/es/EsInstanceList.vue | 4 +-
.../views/ops/es/component/EsDashboard.vue | 20 +-
.../src/views/ops/es/component/EsSearch.vue | 2 +-
.../src/views/ops/es/resource/EsDataOp.vue | 1034 +++++++++++++++++
frontend/src/views/ops/es/resource/NodeEs.vue | 30 +
.../src/views/ops/es/resource/NodeEsIndex.vue | 28 +
frontend/src/views/ops/es/resource/index.ts | 175 +++
frontend/src/views/ops/es/route.ts | 5 +-
.../src/views/ops/machine/MachineList.vue | 2 +-
frontend/src/views/ops/machine/MachineOp.vue | 595 ----------
.../src/views/ops/machine/MachineStats.vue | 138 ++-
.../views/ops/machine/resource/MachineOp.vue | 457 ++++++++
.../ops/machine/resource/NodeMachineAc.vue | 13 +
.../src/views/ops/machine/resource/index.ts | 119 ++
frontend/src/views/ops/machine/route.ts | 2 -
frontend/src/views/ops/mongo/MongoDataOp.vue | 561 ---------
.../views/ops/mongo/resource/MongoDataOp.vue | 422 +++++++
.../views/ops/mongo/resource/NodeMongo.vue | 28 +
.../views/ops/mongo/resource/NodeMongoDb.vue | 14 +
.../src/views/ops/mongo/resource/index.ts | 103 ++
frontend/src/views/ops/mongo/route.ts | 5 +-
.../src/views/ops/redis/DataOperation.vue | 653 -----------
.../views/ops/redis/resource/NodeRedis.vue | 35 +
.../views/ops/redis/resource/NodeRedisDb.vue | 16 +
.../views/ops/redis/resource/RedisDataOp.vue | 526 +++++++++
.../src/views/ops/redis/resource/index.ts | 94 ++
frontend/src/views/ops/redis/route.ts | 5 +-
.../src/views/ops/resource/BaseTreeNode.vue | 93 ++
.../src/views/ops/resource/ResourceOp.vue | 410 +++++++
frontend/src/views/ops/resource/resource.ts | 57 +
frontend/src/views/ops/resource/route.ts | 3 +
frontend/src/views/ops/tag/TagTreeList.vue | 203 ++--
.../views/system/resource/ResourceList.vue | 14 +-
server/go.mod | 30 +-
server/internal/docker/api/api.go | 9 +
server/internal/docker/api/container.go | 678 +++++++++++
server/internal/docker/api/docker.go | 27 +
server/internal/docker/api/form/container.go | 55 +
server/internal/docker/api/form/image.go | 6 +
server/internal/docker/api/image.go | 111 ++
server/internal/docker/api/vo/docker.go | 38 +
server/internal/docker/dkm/client.go | 286 +++++
server/internal/docker/imsg/en.go | 8 +
server/internal/docker/imsg/imsg.go | 21 +
server/internal/docker/imsg/zh_cn.go | 13 +
server/internal/docker/init/init.go | 7 +
.../internal/machine/mcm/terminal_session.go | 20 +-
server/internal/pkg/consts/consts.go | 1 +
server/internal/tag/api/tag_tree.go | 4 +-
server/main.go | 1 +
server/migration/migrations/v1_10.go | 100 ++
101 files changed, 8206 insertions(+), 3411 deletions(-)
create mode 100644 frontend/src/assets/icon/db/db.svg
create mode 100644 frontend/src/assets/icon/db/table.svg
create mode 100644 frontend/src/assets/icon/docker/docker.svg
create mode 100644 frontend/src/assets/icon/machine/machine.svg
create mode 100644 frontend/src/components/monaco/RealLogViewer.vue
create mode 100644 frontend/src/hooks/useDataState.ts
create mode 100644 frontend/src/i18n/en/docker.ts
create mode 100644 frontend/src/i18n/en/menu.ts
create mode 100644 frontend/src/i18n/zh-cn/docker.ts
create mode 100644 frontend/src/i18n/zh-cn/menu.ts
delete mode 100644 frontend/src/views/ops/db/SqlExec.vue
create mode 100644 frontend/src/views/ops/db/resource/DbDataOp.vue
create mode 100644 frontend/src/views/ops/db/resource/NodeDbInst.vue
create mode 100644 frontend/src/views/ops/db/resource/NodeDbTable.vue
create mode 100644 frontend/src/views/ops/db/resource/index.ts
create mode 100644 frontend/src/views/ops/docker/DockerPanel.vue
create mode 100644 frontend/src/views/ops/docker/DockerPanelDrawer.vue
create mode 100644 frontend/src/views/ops/docker/api.ts
create mode 100644 frontend/src/views/ops/docker/container/ContainerCreate.vue
create mode 100644 frontend/src/views/ops/docker/container/ContainerList.vue
create mode 100644 frontend/src/views/ops/docker/container/ContainerLog.vue
create mode 100644 frontend/src/views/ops/docker/enums.ts
create mode 100644 frontend/src/views/ops/docker/image/ImageList.vue
create mode 100644 frontend/src/views/ops/docker/route.ts
create mode 100644 frontend/src/views/ops/es/resource/EsDataOp.vue
create mode 100644 frontend/src/views/ops/es/resource/NodeEs.vue
create mode 100644 frontend/src/views/ops/es/resource/NodeEsIndex.vue
create mode 100644 frontend/src/views/ops/es/resource/index.ts
delete mode 100644 frontend/src/views/ops/machine/MachineOp.vue
create mode 100644 frontend/src/views/ops/machine/resource/MachineOp.vue
create mode 100644 frontend/src/views/ops/machine/resource/NodeMachineAc.vue
create mode 100644 frontend/src/views/ops/machine/resource/index.ts
delete mode 100644 frontend/src/views/ops/mongo/MongoDataOp.vue
create mode 100644 frontend/src/views/ops/mongo/resource/MongoDataOp.vue
create mode 100644 frontend/src/views/ops/mongo/resource/NodeMongo.vue
create mode 100644 frontend/src/views/ops/mongo/resource/NodeMongoDb.vue
create mode 100644 frontend/src/views/ops/mongo/resource/index.ts
delete mode 100644 frontend/src/views/ops/redis/DataOperation.vue
create mode 100644 frontend/src/views/ops/redis/resource/NodeRedis.vue
create mode 100644 frontend/src/views/ops/redis/resource/NodeRedisDb.vue
create mode 100644 frontend/src/views/ops/redis/resource/RedisDataOp.vue
create mode 100644 frontend/src/views/ops/redis/resource/index.ts
create mode 100644 frontend/src/views/ops/resource/BaseTreeNode.vue
create mode 100644 frontend/src/views/ops/resource/ResourceOp.vue
create mode 100644 frontend/src/views/ops/resource/resource.ts
create mode 100644 frontend/src/views/ops/resource/route.ts
create mode 100644 server/internal/docker/api/api.go
create mode 100644 server/internal/docker/api/container.go
create mode 100644 server/internal/docker/api/docker.go
create mode 100644 server/internal/docker/api/form/container.go
create mode 100644 server/internal/docker/api/form/image.go
create mode 100644 server/internal/docker/api/image.go
create mode 100644 server/internal/docker/api/vo/docker.go
create mode 100644 server/internal/docker/dkm/client.go
create mode 100644 server/internal/docker/imsg/en.go
create mode 100644 server/internal/docker/imsg/imsg.go
create mode 100644 server/internal/docker/imsg/zh_cn.go
create mode 100644 server/internal/docker/init/init.go
diff --git a/frontend/package.json b/frontend/package.json
index 336ad120..641bad8a 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.6.0",
+ "@vueuse/core": "^13.8.0",
"@xterm/addon-fit": "^0.10.0",
"@xterm/addon-search": "^0.15.0",
"@xterm/addon-web-links": "^0.11.0",
@@ -22,9 +22,9 @@
"axios": "^1.6.2",
"clipboard": "^2.0.11",
"crypto-js": "^4.2.0",
- "dayjs": "^1.11.13",
+ "dayjs": "^1.11.18",
"echarts": "^6.0.0",
- "element-plus": "^2.10.7",
+ "element-plus": "^2.11.1",
"js-base64": "^3.7.7",
"jsencrypt": "^3.3.2",
"monaco-editor": "^0.52.2",
@@ -44,7 +44,7 @@
"vuedraggable": "^4.1.0"
},
"devDependencies": {
- "@tailwindcss/vite": "^4.1.11",
+ "@tailwindcss/vite": "^4.1.12",
"@types/crypto-js": "^4.2.2",
"@types/node": "^22.13.14",
"@types/nprogress": "^0.2.0",
@@ -60,7 +60,7 @@
"postcss": "^8.5.6",
"prettier": "^3.6.1",
"sass": "^1.90.0",
- "tailwindcss": "^4.1.11",
+ "tailwindcss": "^4.1.12",
"typescript": "^5.9.2",
"vite": "npm:rolldown-vite@latest",
"vite-plugin-progress": "0.0.7",
diff --git a/frontend/src/assets/icon/db/db.svg b/frontend/src/assets/icon/db/db.svg
new file mode 100644
index 00000000..21d43721
--- /dev/null
+++ b/frontend/src/assets/icon/db/db.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/icon/db/table.svg b/frontend/src/assets/icon/db/table.svg
new file mode 100644
index 00000000..ff6de6d2
--- /dev/null
+++ b/frontend/src/assets/icon/db/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/icon/docker/docker.svg b/frontend/src/assets/icon/docker/docker.svg
new file mode 100644
index 00000000..76cbab73
--- /dev/null
+++ b/frontend/src/assets/icon/docker/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/icon/machine/machine.svg b/frontend/src/assets/icon/machine/machine.svg
new file mode 100644
index 00000000..7fc01e39
--- /dev/null
+++ b/frontend/src/assets/icon/machine/machine.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/icon/mongo/mongo.svg b/frontend/src/assets/icon/mongo/mongo.svg
index 9674ed4d..a9cf0741 100644
--- a/frontend/src/assets/icon/mongo/mongo.svg
+++ b/frontend/src/assets/icon/mongo/mongo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/frontend/src/assets/icon/redis/redis.svg b/frontend/src/assets/icon/redis/redis.svg
index 186c36cb..795d16f1 100644
--- a/frontend/src/assets/icon/redis/redis.svg
+++ b/frontend/src/assets/icon/redis/redis.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/frontend/src/common/commonEnum.ts b/frontend/src/common/commonEnum.ts
index a4759b38..d0fdd800 100644
--- a/frontend/src/common/commonEnum.ts
+++ b/frontend/src/common/commonEnum.ts
@@ -16,12 +16,12 @@ export const LinkTypeEnum = {
// 资源类型
export const ResourceTypeEnum = {
- Machine: EnumValue.of(1, '机器').setExtra({ icon: 'Monitor', iconColor: 'var(--el-color-primary)' }).tagTypeSuccess(),
- Db: EnumValue.of(2, '数据库实例').setExtra({ icon: 'Coin', iconColor: 'var(--el-color-warning)' }).tagTypeWarning(),
+ Machine: EnumValue.of(1, 'tag.machine').setExtra({ icon: 'icon machine/machine', iconColor: 'var(--el-color-primary)' }).tagTypeSuccess(),
+ Db: EnumValue.of(2, 'tag.db').setExtra({ icon: 'icon db/db', iconColor: 'var(--el-color-warning)' }).tagTypeWarning(),
Redis: EnumValue.of(3, 'redis').setExtra({ icon: 'icon redis/redis', iconColor: 'var(--el-color-danger)' }).tagTypeInfo(),
Mongo: EnumValue.of(4, 'mongo').setExtra({ icon: 'icon mongo/mongo', iconColor: 'var(--el-color-success)' }).tagTypeDanger(),
- AuthCert: EnumValue.of(5, '授权凭证').setExtra({ icon: 'Ticket', iconColor: 'var(--el-color-success)' }),
- Es: EnumValue.of(6, 'ES实例').setExtra({ icon: 'icon es/es-color', iconColor: 'var(--el-color-warning)' }).tagTypeWarning(),
+ 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(),
};
// 标签关联的资源类型
@@ -36,7 +36,7 @@ export const TagResourceTypeEnum = {
Mongo: ResourceTypeEnum.Mongo,
AuthCert: ResourceTypeEnum.AuthCert,
- Db: EnumValue.of(22, '数据库').setExtra({ icon: 'Coin' }),
+ Db: EnumValue.of(22, '数据库').setExtra({ icon: 'icon db/db' }),
};
// 标签关联的资源类型路径
diff --git a/frontend/src/components/auth/auth.ts b/frontend/src/components/auth/auth.ts
index 89718864..535487f3 100644
--- a/frontend/src/components/auth/auth.ts
+++ b/frontend/src/components/auth/auth.ts
@@ -5,7 +5,7 @@ import { useUserInfo } from '@/store/userInfo';
* @param code 权限code
* @returns
*/
-export function hasPerm(code: string) {
+export function hasPerm(code: string): boolean {
if (!code) {
return true;
}
@@ -17,7 +17,7 @@ export function hasPerm(code: string) {
* @returns {"xxx:save": true} key->permission code
* @param permCodes
*/
-export function hasPerms(permCodes: any[]) {
+export function hasPerms(permCodes: any[]): Record {
const res = {} as { [key: string]: boolean };
for (let permCode of permCodes) {
if (hasPerm(permCode)) {
diff --git a/frontend/src/components/contextmenu/index.vue b/frontend/src/components/contextmenu/index.vue
index dc0253f6..4754182f 100644
--- a/frontend/src/components/contextmenu/index.vue
+++ b/frontend/src/components/contextmenu/index.vue
@@ -1,7 +1,7 @@