diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm index dc6e18df..6dd67bc7 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-vue-views-components-form-drawer.vue.vm @@ -36,7 +36,7 @@ #else + allow-clear /> #end #end diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateCreateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateCreateRequest.java index e20b8313..b3f5044c 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateCreateRequest.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateCreateRequest.java @@ -40,7 +40,6 @@ public class ExecTemplateCreateRequest implements Serializable { @Schema(description = "超时时间秒 0不超时") private Integer timeout; - @NotBlank @Schema(description = "参数") private String parameter; diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateUpdateRequest.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateUpdateRequest.java index cc5775a2..a829d933 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateUpdateRequest.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/entity/request/exec/ExecTemplateUpdateRequest.java @@ -44,7 +44,6 @@ public class ExecTemplateUpdateRequest implements Serializable { @Schema(description = "超时时间秒 0不超时") private Integer timeout; - @NotBlank @Schema(description = "参数") private String parameter; diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java index d25b3ffe..94448214 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecTemplateServiceImpl.java @@ -152,8 +152,8 @@ public class ExecTemplateServiceImpl implements ExecTemplateService { private LambdaQueryWrapper buildQueryWrapper(ExecTemplateQueryRequest request) { return execTemplateDAO.wrapper() .eq(ExecTemplateDO::getId, request.getId()) - .eq(ExecTemplateDO::getName, request.getName()) - .eq(ExecTemplateDO::getCommand, request.getCommand()); + .like(ExecTemplateDO::getName, request.getName()) + .like(ExecTemplateDO::getCommand, request.getCommand()); } } diff --git a/orion-ops-ui/src/components/view/editor/core.ts b/orion-ops-ui/src/components/view/editor/core.ts index bf80c288..b2060a8b 100644 --- a/orion-ops-ui/src/components/view/editor/core.ts +++ b/orion-ops-ui/src/components/view/editor/core.ts @@ -4,7 +4,7 @@ import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; /** * 主题 */ -export type Theme = 'vs' | 'vs-dark' +export type Theme = 'vs' | 'vs-dark' | 'hc-light' | 'hc-black' /** * 折叠方式 diff --git a/orion-ops-ui/src/components/view/editor/index.vue b/orion-ops-ui/src/components/view/editor/index.vue index c5cddfb5..fc20304a 100644 --- a/orion-ops-ui/src/components/view/editor/index.vue +++ b/orion-ops-ui/src/components/view/editor/index.vue @@ -22,6 +22,7 @@ import { createDefaultOptions } from './core'; import { onBeforeUnmount, onMounted, ref, watch } from 'vue'; import { useAppStore } from '@/store'; + import shellSuggestions from './languages/shell-suggestions'; const appStore = useAppStore(); @@ -51,6 +52,10 @@ type: String, default: 'json', }, + suggestions: { + type: Boolean, + default: false, + }, containerClass: String, containerStyle: Object as PropType, theme: { @@ -67,6 +72,7 @@ const editorContainer = ref(); let editor: any; + let completionItemProvider: any; // 初始化 const init = () => { @@ -80,6 +86,8 @@ }; // 创建编辑器 editor = monaco.editor.create(editorContainer.value, options); + // 注册代码提示 + registerSuggestions(); // 自动聚焦 if (props.autoFocus) { editor.focus(); @@ -141,8 +149,21 @@ if (editor) { monaco.editor.setModelLanguage(editor?.getModel(), v as string); } + // 注册代码提示 + registerSuggestions(); }); + // 注册代码提示 + const registerSuggestions = () => { + if (!props.suggestions) { + return; + } + if (props.language === 'shell') { + completionItemProvider?.dispose(); + completionItemProvider = monaco.languages.registerCompletionItemProvider(props.language, shellSuggestions); + } + }; + // 初始化 onMounted(init); @@ -150,6 +171,8 @@ onBeforeUnmount(() => { editor?.dispose(); editor = undefined; + completionItemProvider?.dispose(); + completionItemProvider = undefined; }); diff --git a/orion-ops-ui/src/components/view/editor/languages/shell-suggestions.ts b/orion-ops-ui/src/components/view/editor/languages/shell-suggestions.ts new file mode 100644 index 00000000..781c525e --- /dev/null +++ b/orion-ops-ui/src/components/view/editor/languages/shell-suggestions.ts @@ -0,0 +1,27 @@ +import * as monaco from 'monaco-editor'; +import { language as shellLanguage } from 'monaco-editor/esm/vs/basic-languages/shell/shell.js'; + +const provideCompletionItems = () => { + const suggestions: any = []; + shellLanguage.keywords?.forEach((item: any) => { + suggestions.push({ + label: item, + kind: monaco.languages.CompletionItemKind.Keyword, + insertText: item, + }); + }); + shellLanguage.builtins?.forEach((item: any) => { + suggestions.push({ + label: item, + kind: monaco.languages.CompletionItemKind.Function, + insertText: item, + }); + }); + return { + suggestions: [...new Set(suggestions)], + }; +}; + +export default { + provideCompletionItems +}; diff --git a/orion-ops-ui/src/components/view/shell-editor/modal/index.vue b/orion-ops-ui/src/components/view/shell-editor/modal/index.vue index 29aa77c6..92881fe3 100644 --- a/orion-ops-ui/src/components/view/shell-editor/modal/index.vue +++ b/orion-ops-ui/src/components/view/shell-editor/modal/index.vue @@ -14,6 +14,7 @@
@@ -27,10 +28,8 @@ diff --git a/orion-ops-ui/src/views/exec/exec-template/components/exec-template-table.vue b/orion-ops-ui/src/views/exec/exec-template/components/exec-template-table.vue index 68cbb998..a01c3538 100644 --- a/orion-ops-ui/src/views/exec/exec-template/components/exec-template-table.vue +++ b/orion-ops-ui/src/views/exec/exec-template/components/exec-template-table.vue @@ -13,16 +13,16 @@ allow-clear hide-button /> - - + + - - + + @@ -62,6 +62,17 @@ @page-change="(page) => fetchTableData(page, pagination.pageSize)" @page-size-change="(size) => fetchTableData(1, size)" :bordered="false"> + + + +