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 @@