From 0eed20e54f51bf56e3b3a053a15395b005a8a0a8 Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Wed, 17 Jan 2024 00:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=BF=AB=E6=8D=B7=E9=94=AE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PreferenceController.http | 5 + .../controller/PreferenceController.java | 9 + .../infra/service/PreferenceService.java | 9 + .../service/impl/PreferenceServiceImpl.java | 16 ++ orion-ops-ui/src/api/user/preference.ts | 15 ++ .../src/store/modules/terminal/types.ts | 6 +- .../host/terminal/assets/styles/layout.less | 2 + .../components/layout/terminal-content.vue | 10 +- .../setting/terminal-shortcut-block.vue | 161 +++++++++++++++--- .../host/terminal/types/terminal.const.ts | 137 ++++++++------- .../host/terminal/types/terminal.type.ts | 1 + 11 files changed, 281 insertions(+), 90 deletions(-) diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.http b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.http index c180b07a..cb249876 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.http +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.http @@ -26,3 +26,8 @@ Authorization: {{token}} GET {{baseUrl}}/infra/preference/get?type=SYSTEM Authorization: {{token}} + +### 查询默认偏好 +GET {{baseUrl}}/infra/preference/get-default?type=TERMINAL&items=shortcutSetting +Authorization: {{token}} + diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.java index 461750ee..bdf64047 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/controller/PreferenceController.java @@ -57,5 +57,14 @@ public class PreferenceController { return preferenceService.getPreferenceByType(type, items); } + @GetMapping("/get-default") + @Operation(summary = "查询默认偏好") + @Parameter(name = "type", description = "type", required = true) + @Parameter(name = "items", description = "items") + public Map getDefaultPreference(@RequestParam("type") String type, + @RequestParam(name = "items", required = false) List items) { + return preferenceService.getDefaultPreferenceByType(type, items); + } + } diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/PreferenceService.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/PreferenceService.java index 4cf647d9..1a1c25bc 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/PreferenceService.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/PreferenceService.java @@ -41,6 +41,15 @@ public interface PreferenceService { */ Map getPreferenceByType(String type, List items); + /** + * 查询默认偏好 + * + * @param type type + * @param items items + * @return rows + */ + Map getDefaultPreferenceByType(String type, List items); + /** * 获取用户偏好 * diff --git a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/PreferenceServiceImpl.java b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/PreferenceServiceImpl.java index 5d91dae8..756e28dd 100644 --- a/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/PreferenceServiceImpl.java +++ b/orion-ops-module-infra/orion-ops-module-infra-service/src/main/java/com/orion/ops/module/infra/service/impl/PreferenceServiceImpl.java @@ -139,6 +139,22 @@ public class PreferenceServiceImpl implements PreferenceService { return partial; } + @Override + public Map getDefaultPreferenceByType(String type, List items) { + PreferenceTypeEnum preferenceType = Valid.valid(PreferenceTypeEnum::of, type); + // 获取默认值 + Map defaultModel = preferenceType.getStrategy() + .getDefault() + .toMap(); + Map result = Maps.newMap(); + if (Lists.isEmpty(items)) { + defaultModel.forEach((k, v) -> result.put(k, Refs.unref(defaultModel.get(k)))); + } else { + items.forEach(s -> result.put(s, Refs.unref(defaultModel.get(s)))); + } + return result; + } + @Override @Async("asyncExecutor") public Future> getPreferenceAsync(Long userId, PreferenceTypeEnum type) { diff --git a/orion-ops-ui/src/api/user/preference.ts b/orion-ops-ui/src/api/user/preference.ts index 614386fc..446a987e 100644 --- a/orion-ops-ui/src/api/user/preference.ts +++ b/orion-ops-ui/src/api/user/preference.ts @@ -49,3 +49,18 @@ export function getPreference(type: PreferenceType, items: Array | un }); } +/** + * 查询默认偏好 + */ +export function getDefaultPreference(type: PreferenceType, items: Array | undefined = undefined) { + return axios.get('/infra/preference/get-default', { + params: { + type, + items + }, + paramsSerializer: params => { + return qs.stringify(params, { arrayFormat: 'comma' }); + } + }); +} + diff --git a/orion-ops-ui/src/store/modules/terminal/types.ts b/orion-ops-ui/src/store/modules/terminal/types.ts index 33d55162..abecedea 100644 --- a/orion-ops-ui/src/store/modules/terminal/types.ts +++ b/orion-ops-ui/src/store/modules/terminal/types.ts @@ -77,9 +77,13 @@ export interface TerminalShortcutSetting { // 终端快捷键 export interface TerminalShortcutKey { item: string; + enabled: boolean; ctrlKey: boolean; shiftKey: boolean; altKey: boolean; code: string; - enabled: boolean; + // extra + edit: boolean; + content: string; + type: number; } diff --git a/orion-ops-ui/src/views/host/terminal/assets/styles/layout.less b/orion-ops-ui/src/views/host/terminal/assets/styles/layout.less index d510efe2..0bb0e9e4 100644 --- a/orion-ops-ui/src/views/host/terminal/assets/styles/layout.less +++ b/orion-ops-ui/src/views/host/terminal/assets/styles/layout.less @@ -144,6 +144,8 @@ body[terminal-theme='dark'] .arco-modal-container { --color-bg-4: #313132; --color-bg-5: #373739; --color-bg-white: #f6f6f6; + --color-neutral-1: rgba(255, 255, 255, 0.04); + --color-neutral-2: rgba(255, 255, 255, 0.08); --color-neutral-3: rgba(255, 255, 255, 0.12); --color-text-1: rgba(255, 255, 255, 0.9); --color-text-2: rgba(255, 255, 255, 0.7); diff --git a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue index a94b28ec..3bc6dbbf 100644 --- a/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue +++ b/orion-ops-ui/src/views/host/terminal/components/layout/terminal-content.vue @@ -37,7 +37,7 @@