From a4c5d258159e9795bf27c2aa80a47c850ffdff55 Mon Sep 17 00:00:00 2001 From: lijiahang Date: Fri, 12 Apr 2024 15:23:15 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20=E6=8A=BD=E8=B1=A1=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=97=A5=E5=BF=97.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/templates/orion-sql-dict.sql.vm | 12 +- .../controller/ExecCommandController.http | 9 - .../controller/ExecCommandController.java | 35 +- .../controller/ExecCommandLogController.http | 12 +- .../controller/ExecCommandLogController.java | 24 ++ .../asset/controller/ExecJobController.java | 9 + .../controller/ExecJobLogController.http | 13 +- .../controller/ExecJobLogController.java | 24 ++ .../operator/ExecCommandLogOperatorType.java | 9 +- .../operator/ExecCommandOperatorType.java | 6 - .../operator/ExecJobLogOperatorType.java | 9 +- .../module/asset/service/ExecJobService.java | 9 + .../service/impl/ExecJobServiceImpl.java | 9 + orion-ops-ui/src/api/exec/exec-command-log.ts | 114 ++--- orion-ops-ui/src/api/exec/exec-command.ts | 28 +- orion-ops-ui/src/api/exec/exec-job-log.ts | 112 ++--- orion-ops-ui/src/api/exec/exec-job.ts | 7 + orion-ops-ui/src/api/exec/exec-log.ts | 83 ++++ orion-ops-ui/src/components/exec/log/const.ts | 36 ++ .../log/panel/{const.ts => appender-const.ts} | 43 +- .../components/exec/log/panel/exec-host.vue | 6 +- .../src/components/exec/log/panel/index.vue | 12 +- .../components/exec/log/panel/log-appender.ts | 12 +- .../components/exec/log/panel/log-item.vue | 8 +- .../components/exec/log/panel/log-view.vue | 6 +- .../exec-command-host-log-table.vue | 13 +- .../exec-command-log-clear-modal.vue | 8 +- .../components/exec-command-log-table.vue | 21 +- .../src/views/exec/exec-command-log/index.vue | 2 +- .../exec/exec-command-log/types/const.ts | 40 -- .../components/exec-command-panel-history.vue | 8 +- .../components/exec-command-panel.vue | 6 +- .../src/views/exec/exec-command/index.vue | 6 +- .../views/exec/exec-job-log-view/index.vue | 59 +++ .../components/exec-job-host-log-table.vue | 171 ++++++++ .../components/exec-job-log-clear-modal.vue | 162 +++++++ .../components/exec-job-log-table.vue | 400 ++++++++++++++++++ .../src/views/exec/exec-job-log/index.vue | 96 +++++ .../views/exec/exec-job-log/types/const.ts | 0 .../exec/exec-job-log/types/table.columns.ts | 45 ++ .../components/operator-log-simple-table.vue | 4 +- .../components/operator-log-table.vue | 4 +- 42 files changed, 1304 insertions(+), 388 deletions(-) create mode 100644 orion-ops-ui/src/api/exec/exec-log.ts create mode 100644 orion-ops-ui/src/components/exec/log/const.ts rename orion-ops-ui/src/components/exec/log/panel/{const.ts => appender-const.ts} (68%) create mode 100644 orion-ops-ui/src/views/exec/exec-job-log-view/index.vue create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-host-log-table.vue create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-clear-modal.vue create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-table.vue create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/index.vue create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/types/const.ts create mode 100644 orion-ops-ui/src/views/exec/exec-job-log/types/table.columns.ts diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-sql-dict.sql.vm b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-sql-dict.sql.vm index 97811b54..d9c5ae93 100644 --- a/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-sql-dict.sql.vm +++ b/orion-ops-framework/orion-ops-spring-boot-starter-mybatis/src/main/resources/templates/orion-sql-dict.sql.vm @@ -7,20 +7,18 @@ SELECT @MODULE_KEY_ID:= id FROM dict_key WHERE key_name = 'operatorLogModule' AN SELECT @MODULE_KEY_MAX_SORT:= IFNULL(MAX(sort), 0) FROM dict_value where key_id = @MODULE_KEY_ID AND deleted = 0; -- 类型 key id SELECT @TYPE_KEY_ID:= id FROM dict_key WHERE key_name = 'operatorLogType' AND deleted = 0; --- 类型 key 排序 -SELECT @TYPE_KEY_MAX_SORT:= IFNULL(MAX(sort), 0) FROM dict_value WHERE key_id = @TYPE_KEY_ID AND deleted = 0; -- 插入类型 INSERT INTO dict_value (`key_id`, `key_name`, `value`, `label`, `extra`, `sort`, `create_time`, `update_time`, `creator`, `updater`, `deleted`) VALUES (@MODULE_KEY_ID, 'operatorLogModule', '${package.ModuleName}:${typeHyphen}', '$!{table.comment}', '{}', @MODULE_KEY_MAX_SORT + 10, now(), now(), '1', '1', 0), - (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:create', '创建$!{table.comment}', '{}', @TYPE_KEY_MAX_SORT + 10, now(), now(), '1', '1', 0), - (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:update', '更新$!{table.comment}', '{}', @TYPE_KEY_MAX_SORT + 20, now(), now(), '1', '1', 0), + (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:create', '创建$!{table.comment}', '{}', 10, now(), now(), '1', '1', 0), + (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:update', '更新$!{table.comment}', '{}', 20, now(), now(), '1', '1', 0), #if($meta.enableExport) - (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', @TYPE_KEY_MAX_SORT + 30, now(), now(), '1', '1', 0), - (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:export', '导出$!{table.comment}', '{}', @TYPE_KEY_MAX_SORT + 40, now(), now(), '1', '1', 0); + (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', 30, now(), now(), '1', '1', 0), + (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:export', '导出$!{table.comment}', '{}', 40, now(), now(), '1', '1', 0); #else - (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', @TYPE_KEY_MAX_SORT + 30, now(), now(), '1', '1', 0); + (@TYPE_KEY_ID, 'operatorLogType', '${typeHyphen}:delete', '删除$!{table.comment}', '{}', 30, now(), now(), '1', '1', 0); #end #end diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.http index b3cb0647..d7d38ceb 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.http +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.http @@ -20,14 +20,5 @@ Authorization: {{token}} "logId": 1 } -### 中断执行命令 -POST {{baseUrl}}/asset/exec-command/interrupt -Content-Type: application/json -Authorization: {{token}} - -{ - "logId": 7 -} - ### diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.java index c8790fa7..27d6b07a 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandController.java @@ -1,24 +1,22 @@ package com.orion.ops.module.asset.controller; -import com.orion.lang.define.wrapper.HttpWrapper; import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; import com.orion.ops.framework.biz.operator.log.core.enums.ReturnType; -import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.web.core.annotation.RestWrapper; import com.orion.ops.module.asset.define.operator.ExecCommandOperatorType; import com.orion.ops.module.asset.entity.request.exec.ExecCommandRequest; -import com.orion.ops.module.asset.entity.request.exec.ExecInterruptRequest; import com.orion.ops.module.asset.entity.request.exec.ReExecCommandRequest; import com.orion.ops.module.asset.entity.vo.ExecLogVO; -import com.orion.ops.module.asset.enums.ExecSourceEnum; import com.orion.ops.module.asset.service.ExecCommandService; -import com.orion.ops.module.asset.service.ExecLogService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @@ -38,14 +36,9 @@ import javax.annotation.Resource; @SuppressWarnings({"ELValidationInJSP", "SpringElInspection"}) public class ExecCommandController { - private static final String SOURCE = ExecSourceEnum.BATCH.name(); - @Resource private ExecCommandService execCommandService; - @Resource - private ExecLogService execLogService; - @OperatorLog(value = ExecCommandOperatorType.EXEC, ret = ReturnType.IGNORE) @PostMapping("/exec") @Operation(summary = "批量执行命令") @@ -62,24 +55,4 @@ public class ExecCommandController { return execCommandService.reExecCommand(request.getLogId()); } - @OperatorLog(ExecCommandOperatorType.INTERRUPT_EXEC) - @PutMapping("/interrupt") - @Operation(summary = "中断执行命令") - @PreAuthorize("@ss.hasPermission('asset:exec-command:interrupt')") - public HttpWrapper interruptExecCommand(@RequestBody ExecInterruptRequest request) { - Long logId = Valid.notNull(request.getLogId()); - execLogService.interruptExec(logId, SOURCE); - return HttpWrapper.ok(); - } - - @OperatorLog(ExecCommandOperatorType.INTERRUPT_HOST) - @PutMapping("/interrupt-host") - @Operation(summary = "中断执行主机命令") - @PreAuthorize("@ss.hasPermission('asset:exec-command:interrupt')") - public HttpWrapper interruptHostExecCommand(@RequestBody ExecInterruptRequest request) { - Long hostLogId = Valid.notNull(request.getHostLogId()); - execLogService.interruptHostExec(hostLogId, SOURCE); - return HttpWrapper.ok(); - } - } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.http index feadcd05..d142f9d1 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.http +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.http @@ -40,9 +40,19 @@ Authorization: {{token}} } -### 下载执行日志文件 +### 下载批量执行日志文件 GET {{baseUrl}}/asset/exec-command-log/download?id=83 Authorization: {{token}} +### 中断批量执行命令 +POST {{baseUrl}}/asset/exec-command-log/interrupt +Content-Type: application/json +Authorization: {{token}} + +{ + "logId": 7 +} + + ### diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.java index 01c86921..925b5162 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecCommandLogController.java @@ -1,13 +1,17 @@ package com.orion.ops.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; +import com.orion.lang.define.wrapper.HttpWrapper; import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.common.validator.group.Page; import com.orion.ops.framework.log.core.annotation.IgnoreLog; import com.orion.ops.framework.log.core.enums.IgnoreLogMode; import com.orion.ops.framework.security.core.utils.SecurityUtils; import com.orion.ops.framework.web.core.annotation.RestWrapper; import com.orion.ops.module.asset.define.operator.ExecCommandLogOperatorType; +import com.orion.ops.module.asset.define.operator.ExecCommandOperatorType; +import com.orion.ops.module.asset.entity.request.exec.ExecInterruptRequest; import com.orion.ops.module.asset.entity.request.exec.ExecLogQueryRequest; import com.orion.ops.module.asset.entity.request.exec.ExecLogTailRequest; import com.orion.ops.module.asset.entity.vo.ExecHostLogVO; @@ -156,5 +160,25 @@ public class ExecCommandLogController { execLogService.downloadLogFile(id, SOURCE, response); } + @OperatorLog(ExecCommandLogOperatorType.INTERRUPT) + @PutMapping("/interrupt") + @Operation(summary = "中断批量执行命令") + @PreAuthorize("@ss.hasPermission('asset:exec-command-log:interrupt')") + public HttpWrapper interruptExecCommand(@RequestBody ExecInterruptRequest request) { + Long logId = Valid.notNull(request.getLogId()); + execLogService.interruptExec(logId, SOURCE); + return HttpWrapper.ok(); + } + + @OperatorLog(ExecCommandLogOperatorType.INTERRUPT_HOST) + @PutMapping("/interrupt-host") + @Operation(summary = "中断批量执行主机命令") + @PreAuthorize("@ss.hasPermission('asset:exec-command-log:interrupt')") + public HttpWrapper interruptHostExecCommand(@RequestBody ExecInterruptRequest request) { + Long hostLogId = Valid.notNull(request.getHostLogId()); + execLogService.interruptHostExec(hostLogId, SOURCE); + return HttpWrapper.ok(); + } + } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobController.java index 31280676..ea012df0 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobController.java @@ -20,6 +20,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * 计划任务 api @@ -73,6 +74,14 @@ public class ExecJobController { return execJobService.getExecJobById(id); } + @IgnoreLog(IgnoreLogMode.RET) + @GetMapping("/list") + @Operation(summary = "查询全部计划任务") + @PreAuthorize("@ss.hasPermission('asset:exec-job:query')") + public List getExecJobList() { + return execJobService.getExecJobList(); + } + @IgnoreLog(IgnoreLogMode.RET) @PostMapping("/query") @Operation(summary = "分页查询计划任务") diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.http b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.http index 3b62f862..8474b5c8 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.http +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.http @@ -30,7 +30,7 @@ DELETE {{baseUrl}}/asset/exec-job-log/batch-delete?idList=1,2,3 Authorization: {{token}} -### 查看执行日志 +### 查看计划任务日志 POST {{baseUrl}}/asset/exec-job-log/tail Content-Type: application/json Authorization: {{token}} @@ -40,9 +40,18 @@ Authorization: {{token}} } -### 下载执行日志文件 +### 下载计划任务日志文件 GET {{baseUrl}}/asset/exec-job-log/download?id=83 Authorization: {{token}} +### 中断计划任务命令 +POST {{baseUrl}}/asset/exec-command-log/interrupt +Content-Type: application/json +Authorization: {{token}} + +{ + "logId": 7 +} + ### diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.java index 7f2e4e27..f2d14c63 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/controller/ExecJobLogController.java @@ -1,12 +1,16 @@ package com.orion.ops.module.asset.controller; import com.orion.lang.define.wrapper.DataGrid; +import com.orion.lang.define.wrapper.HttpWrapper; import com.orion.ops.framework.biz.operator.log.core.annotation.OperatorLog; +import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.common.validator.group.Page; import com.orion.ops.framework.log.core.annotation.IgnoreLog; import com.orion.ops.framework.log.core.enums.IgnoreLogMode; import com.orion.ops.framework.web.core.annotation.RestWrapper; +import com.orion.ops.module.asset.define.operator.ExecCommandLogOperatorType; import com.orion.ops.module.asset.define.operator.ExecJobLogOperatorType; +import com.orion.ops.module.asset.entity.request.exec.ExecInterruptRequest; import com.orion.ops.module.asset.entity.request.exec.ExecLogQueryRequest; import com.orion.ops.module.asset.entity.request.exec.ExecLogTailRequest; import com.orion.ops.module.asset.entity.vo.ExecHostLogVO; @@ -145,5 +149,25 @@ public class ExecJobLogController { execLogService.downloadLogFile(id, SOURCE, response); } + @OperatorLog(ExecJobLogOperatorType.INTERRUPT) + @PutMapping("/interrupt") + @Operation(summary = "中断计划任务命令") + @PreAuthorize("@ss.hasPermission('asset:exec-job-log:interrupt')") + public HttpWrapper interruptExecCommand(@RequestBody ExecInterruptRequest request) { + Long logId = Valid.notNull(request.getLogId()); + execLogService.interruptExec(logId, SOURCE); + return HttpWrapper.ok(); + } + + @OperatorLog(ExecJobLogOperatorType.INTERRUPT_HOST) + @PutMapping("/interrupt-host") + @Operation(summary = "中断计划任务主机命令") + @PreAuthorize("@ss.hasPermission('asset:exec-job-log:interrupt')") + public HttpWrapper interruptHostExecCommand(@RequestBody ExecInterruptRequest request) { + Long hostLogId = Valid.notNull(request.getHostLogId()); + execLogService.interruptHostExec(hostLogId, SOURCE); + return HttpWrapper.ok(); + } + } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandLogOperatorType.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandLogOperatorType.java index f285ef0d..fc4d2d8d 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandLogOperatorType.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandLogOperatorType.java @@ -4,8 +4,7 @@ import com.orion.ops.framework.biz.operator.log.core.annotation.Module; import com.orion.ops.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import com.orion.ops.framework.biz.operator.log.core.model.OperatorType; -import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; -import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.L; +import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; /** * 批量执行日志 操作记录类型 @@ -25,6 +24,10 @@ public class ExecCommandLogOperatorType extends InitializingOperatorTypes { public static final String DOWNLOAD = "exec-command-log:download"; + public static final String INTERRUPT = "exec-command-log:interrupt"; + + public static final String INTERRUPT_HOST = "exec-command-log:interrupt-host"; + @Override public OperatorType[] types() { return new OperatorType[]{ @@ -32,6 +35,8 @@ public class ExecCommandLogOperatorType extends InitializingOperatorTypes { new OperatorType(H, DELETE_HOST, "删除批量执行主机日志 ${logId} ${hostName}"), new OperatorType(H, CLEAR, "清理批量执行日志 ${count} 条"), new OperatorType(L, DOWNLOAD, "下载批量执行日志 ${logId} ${hostName}"), + new OperatorType(M, INTERRUPT, "中断批量执行命令"), + new OperatorType(M, INTERRUPT_HOST, "中断批量执行主机命令 ${logId} ${hostName}"), }; } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandOperatorType.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandOperatorType.java index b4b28c9a..399363fa 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandOperatorType.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecCommandOperatorType.java @@ -18,16 +18,10 @@ public class ExecCommandOperatorType extends InitializingOperatorTypes { public static final String EXEC = "exec-command:exec"; - public static final String INTERRUPT_EXEC = "exec-command:interrupt-exec"; - - public static final String INTERRUPT_HOST = "exec-command:interrupt-host"; - @Override public OperatorType[] types() { return new OperatorType[]{ new OperatorType(M, EXEC, "执行主机命令"), - new OperatorType(M, INTERRUPT_EXEC, "中断执行命令"), - new OperatorType(M, INTERRUPT_HOST, "中断主机执行命令 ${logId} ${hostName}"), }; } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecJobLogOperatorType.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecJobLogOperatorType.java index 1b9064e6..e6d79590 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecJobLogOperatorType.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/define/operator/ExecJobLogOperatorType.java @@ -4,8 +4,7 @@ import com.orion.ops.framework.biz.operator.log.core.annotation.Module; import com.orion.ops.framework.biz.operator.log.core.factory.InitializingOperatorTypes; import com.orion.ops.framework.biz.operator.log.core.model.OperatorType; -import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.H; -import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.L; +import static com.orion.ops.framework.biz.operator.log.core.enums.OperatorRiskLevel.*; /** * 计划任务执行日志 操作记录类型 @@ -25,6 +24,10 @@ public class ExecJobLogOperatorType extends InitializingOperatorTypes { public static final String DOWNLOAD = "exec-job-log:download"; + public static final String INTERRUPT = "exec-job-log:interrupt"; + + public static final String INTERRUPT_HOST = "exec-job-log:interrupt-host"; + @Override public OperatorType[] types() { return new OperatorType[]{ @@ -32,6 +35,8 @@ public class ExecJobLogOperatorType extends InitializingOperatorTypes { new OperatorType(H, DELETE_HOST, "删除计划任务执行主机日志 ${logId} ${hostName}"), new OperatorType(H, CLEAR, "清理计划任务执行日志 ${count} 条"), new OperatorType(L, DOWNLOAD, "下载计划任务执行日志 ${logId} ${hostName}"), + new OperatorType(M, INTERRUPT, "中断计划任务执行命令"), + new OperatorType(M, INTERRUPT_HOST, "中断计划任务执行主机命令 ${logId} ${hostName}"), }; } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecJobService.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecJobService.java index 9946dc5e..cbe2bf30 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecJobService.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/ExecJobService.java @@ -4,6 +4,8 @@ import com.orion.lang.define.wrapper.DataGrid; import com.orion.ops.module.asset.entity.request.exec.*; import com.orion.ops.module.asset.entity.vo.ExecJobVO; +import java.util.List; + /** * 计划任务 服务类 * @@ -45,6 +47,13 @@ public interface ExecJobService { */ ExecJobVO getExecJobById(Long id); + /** + * 查询全部计划任务 + * + * @return rows + */ + List getExecJobList(); + /** * 分页查询计划任务 * diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecJobServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecJobServiceImpl.java index 9430ac9c..ba922ef5 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecJobServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecJobServiceImpl.java @@ -164,6 +164,15 @@ public class ExecJobServiceImpl implements ExecJobService { return vo; } + @Override + public List getExecJobList() { + return execJobDAO.of() + .createWrapper() + .select(ExecJobDO::getId, ExecJobDO::getName) + .then() + .list(ExecJobConvert.MAPPER::to); + } + @Override public DataGrid getExecJobPage(ExecJobQueryRequest request) { // 条件 diff --git a/orion-ops-ui/src/api/exec/exec-command-log.ts b/orion-ops-ui/src/api/exec/exec-command-log.ts index 21ee1808..3473e397 100644 --- a/orion-ops-ui/src/api/exec/exec-command-log.ts +++ b/orion-ops-ui/src/api/exec/exec-command-log.ts @@ -1,105 +1,41 @@ -import type { DataGrid, Pagination } from '@/types/global'; -import type { TableData } from '@arco-design/web-vue/es/table/interface'; +import type { DataGrid } from '@/types/global'; +import type { + ExecHostLogQueryResponse, + ExecLogInterruptRequest, + ExecLogQueryRequest, + ExecLogQueryResponse, + ExecLogStatusResponse, + ExecLogTailRequest +} from './exec-log'; import axios from 'axios'; import qs from 'query-string'; -/** - * 批量执行日志查询请求 - */ -export interface ExecCommandLogQueryRequest extends Pagination { - id?: number; - userId?: number; - description?: string; - command?: string; - status?: string; - startTimeRange?: string[]; -} - -/** - * 批量执行日志查询响应 - */ -export interface ExecCommandLogQueryResponse extends TableData, ExecCommandLogQueryExtraResponse { - id: number; - userId: number; - username: string; - description: string; - command: string; - parameterSchema: string; - timeout: number; - status: string; - startTime: number; - finishTime: number; - hostIdList: Array; - hosts: Array; -} - -/** - * 批量执行日志查询响应 拓展 - */ -export interface ExecCommandLogQueryExtraResponse { - hosts: Array; -} - -/** - * 主机批量执行日志查询响应 - */ -export interface ExecCommandHostLogQueryResponse extends TableData { - id: number; - logId: number; - hostId: number; - hostName: string; - hostAddress: string; - status: string; - command: string; - parameter: string; - exitStatus: number; - errorMessage: string; - startTime: number; - finishTime: number; -} - -/** - * 批量执行状态查询响应 - */ -export interface ExecCommandLogStatusResponse { - logList: Array; - hostList: Array; -} - -/** - * 批量执行日志 tail 请求 - */ -export interface ExecCommandLogTailRequest { - execId?: number; - hostExecIdList?: Array; -} - /** * 分页查询批量执行日志 */ -export function getExecCommandLogPage(request: ExecCommandLogQueryRequest) { - return axios.post>('/asset/exec-command-log/query', request); +export function getExecCommandLogPage(request: ExecLogQueryRequest) { + return axios.post>('/asset/exec-command-log/query', request); } /** * 查询批量执行日志 */ export function getExecCommandLog(id: number) { - return axios.get('/asset/exec-command-log/get', { params: { id } }); + return axios.get('/asset/exec-command-log/get', { params: { id } }); } /** * 查询主机批量执行日志 */ export function getExecCommandHostLogList(logId: number) { - return axios.get>('/asset/exec-command-log/host-list', { params: { logId } }); + return axios.get>('/asset/exec-command-log/host-list', { params: { logId } }); } /** * 查询命令执行状态 */ export function getExecCommandLogStatus(idList: Array) { - return axios.get('/asset/exec-command-log/status', { + return axios.get('/asset/exec-command-log/status', { params: { idList }, paramsSerializer: params => { return qs.stringify(params, { arrayFormat: 'comma' }); @@ -111,7 +47,7 @@ export function getExecCommandLogStatus(idList: Array) { * 查询历史批量执行日志 */ export function getExecCommandLogHistory(limit: number) { - return axios.get>('/asset/exec-command-log/history', { params: { page: 1, limit } }); + return axios.get>('/asset/exec-command-log/history', { params: { page: 1, limit } }); } /** @@ -143,21 +79,21 @@ export function deleteExecCommandHostLog(id: number) { /** * 查询批量执行日志数量 */ -export function getExecCommandLogCount(request: ExecCommandLogQueryRequest) { +export function getExecCommandLogCount(request: ExecLogQueryRequest) { return axios.post('/asset/exec-command-log/query-count', request); } /** * 清空批量执行日志 */ -export function clearExecCommandLog(request: ExecCommandLogQueryRequest) { +export function clearExecCommandLog(request: ExecLogQueryRequest) { return axios.post('/asset/exec-command-log/clear', request); } /** * 查看批量执行日志 */ -export function getExecCommandLogTailToken(request: ExecCommandLogTailRequest) { +export function getExecCommandLogTailToken(request: ExecLogTailRequest) { return axios.post('/asset/exec-command-log/tail', request); } @@ -167,3 +103,17 @@ export function getExecCommandLogTailToken(request: ExecCommandLogTailRequest) { export function downloadExecCommandLogFile(id: number) { return axios.get('/asset/exec-command-log/download', { unwrap: true, params: { id } }); } + +/** + * 中断执行命令 + */ +export function interruptExecCommand(request: ExecLogInterruptRequest) { + return axios.put('/asset/exec-command-log/interrupt', request); +} + +/** + * 中断执行主机命令 + */ +export function interruptHostExecCommand(request: ExecLogInterruptRequest) { + return axios.put('/asset/exec-command-log/interrupt-host', request); +} diff --git a/orion-ops-ui/src/api/exec/exec-command.ts b/orion-ops-ui/src/api/exec/exec-command.ts index 9c3b6568..6c59840c 100644 --- a/orion-ops-ui/src/api/exec/exec-command.ts +++ b/orion-ops-ui/src/api/exec/exec-command.ts @@ -1,4 +1,4 @@ -import type { ExecCommandLogQueryResponse } from './exec-command-log'; +import type { ExecLogQueryResponse } from './exec-log'; import axios from 'axios'; /** @@ -13,38 +13,16 @@ export interface ExecCommandRequest { hostIdList?: Array; } -/** - * 中断命令请求 - */ -export interface ExecCommandInterruptRequest { - logId?: number; - hostLogId?: number; -} - /** * 批量执行命令 */ export function batchExecCommand(request: ExecCommandRequest) { - return axios.post('/asset/exec-command/exec', request); + return axios.post('/asset/exec-command/exec', request); } /** * 重新执行命令 */ export function reExecCommand(request: ExecCommandRequest) { - return axios.post('/asset/exec-command/re-exec', request); -} - -/** - * 中断执行命令 - */ -export function interruptExecCommand(request: ExecCommandInterruptRequest) { - return axios.put('/asset/exec-command/interrupt', request); -} - -/** - * 中断执行主机命令 - */ -export function interruptHostExecCommand(request: ExecCommandInterruptRequest) { - return axios.put('/asset/exec-command/interrupt-host', request); + return axios.post('/asset/exec-command/re-exec', request); } diff --git a/orion-ops-ui/src/api/exec/exec-job-log.ts b/orion-ops-ui/src/api/exec/exec-job-log.ts index 650511ef..d7ed05e1 100644 --- a/orion-ops-ui/src/api/exec/exec-job-log.ts +++ b/orion-ops-ui/src/api/exec/exec-job-log.ts @@ -1,105 +1,41 @@ -import type { DataGrid, Pagination } from '@/types/global'; -import type { TableData } from '@arco-design/web-vue/es/table/interface'; +import type { DataGrid } from '@/types/global'; +import type { + ExecHostLogQueryResponse, + ExecLogQueryRequest, + ExecLogQueryResponse, + ExecLogStatusResponse, + ExecLogTailRequest, + ExecLogInterruptRequest +} from './exec-log'; import axios from 'axios'; import qs from 'query-string'; -/** - * 计划任务日志查询请求 - */ -export interface ExecJobLogQueryRequest extends Pagination { - id?: number; - userId?: number; - description?: string; - command?: string; - status?: string; - startTimeRange?: string[]; -} - -/** - * 计划任务日志查询响应 - */ -export interface ExecJobLogQueryResponse extends TableData, ExecJobLogQueryExtraResponse { - id: number; - userId: number; - username: string; - description: string; - command: string; - parameterSchema: string; - timeout: number; - status: string; - startTime: number; - finishTime: number; - hostIdList: Array; - hosts: Array; -} - -/** - * 计划任务日志查询响应 拓展 - */ -export interface ExecJobLogQueryExtraResponse { - hosts: Array; -} - -/** - * 主机计划任务日志查询响应 - */ -export interface ExecJobHostLogQueryResponse extends TableData { - id: number; - logId: number; - hostId: number; - hostName: string; - hostAddress: string; - status: string; - command: string; - parameter: string; - exitStatus: number; - errorMessage: string; - startTime: number; - finishTime: number; -} - -/** - * 计划任务状态查询响应 - */ -export interface ExecJobLogStatusResponse { - logList: Array; - hostList: Array; -} - -/** - * 计划任务日志 tail 请求 - */ -export interface ExecJobLogTailRequest { - execId?: number; - hostExecIdList?: Array; -} - /** * 分页查询计划任务日志 */ -export function getExecJobLogPage(request: ExecJobLogQueryRequest) { - return axios.post>('/asset/exec-job-log/query', request); +export function getExecJobLogPage(request: ExecLogQueryRequest) { + return axios.post>('/asset/exec-job-log/query', request); } /** * 查询计划任务日志 */ export function getExecJobLog(id: number) { - return axios.get('/asset/exec-job-log/get', { params: { id } }); + return axios.get('/asset/exec-job-log/get', { params: { id } }); } /** * 查询主机计划任务日志 */ export function getExecJobHostLogList(logId: number) { - return axios.get>('/asset/exec-job-log/host-list', { params: { logId } }); + return axios.get>('/asset/exec-job-log/host-list', { params: { logId } }); } /** * 查询命令执行状态 */ export function getExecJobLogStatus(idList: Array) { - return axios.get('/asset/exec-job-log/status', { + return axios.get('/asset/exec-job-log/status', { params: { idList }, paramsSerializer: params => { return qs.stringify(params, { arrayFormat: 'comma' }); @@ -136,21 +72,21 @@ export function deleteExecJobHostLog(id: number) { /** * 查询计划任务日志数量 */ -export function getExecJobLogCount(request: ExecJobLogQueryRequest) { +export function getExecJobLogCount(request: ExecLogQueryRequest) { return axios.post('/asset/exec-job-log/query-count', request); } /** * 清空计划任务日志 */ -export function clearExecJobLog(request: ExecJobLogQueryRequest) { +export function clearExecJobLog(request: ExecLogQueryRequest) { return axios.post('/asset/exec-job-log/clear', request); } /** * 查看计划任务日志 */ -export function getExecJobLogTailToken(request: ExecJobLogTailRequest) { +export function getExecJobLogTailToken(request: ExecLogTailRequest) { return axios.post('/asset/exec-job-log/tail', request); } @@ -160,3 +96,17 @@ export function getExecJobLogTailToken(request: ExecJobLogTailRequest) { export function downloadExecJobLogFile(id: number) { return axios.get('/asset/exec-job-log/download', { unwrap: true, params: { id } }); } + +/** + * 中断计划任务执行 + */ +export function interruptExecJob(request: ExecLogInterruptRequest) { + return axios.put('/asset/exec-job-log/interrupt', request); +} + +/** + * 中断计划任务执行主机 + */ +export function interruptHostExecJob(request: ExecLogInterruptRequest) { + return axios.put('/asset/exec-job-log/interrupt-host', request); +} diff --git a/orion-ops-ui/src/api/exec/exec-job.ts b/orion-ops-ui/src/api/exec/exec-job.ts index d8641c92..818226c8 100644 --- a/orion-ops-ui/src/api/exec/exec-job.ts +++ b/orion-ops-ui/src/api/exec/exec-job.ts @@ -89,6 +89,13 @@ export function getExecJob(id: number) { return axios.get('/asset/exec-job/get', { params: { id } }); } +/** + * 查询全部计划任务 + */ +export function getExecJobList() { + return axios.get>('/asset/exec-job/list'); +} + /** * 分页查询计划任务 */ diff --git a/orion-ops-ui/src/api/exec/exec-log.ts b/orion-ops-ui/src/api/exec/exec-log.ts new file mode 100644 index 00000000..6c1fe8e5 --- /dev/null +++ b/orion-ops-ui/src/api/exec/exec-log.ts @@ -0,0 +1,83 @@ +import type { Pagination } from '@/types/global'; +import type { TableData } from '@arco-design/web-vue/es/table/interface'; + +/** + * 执行日志查询请求 + */ +export interface ExecLogQueryRequest extends Pagination { + id?: number; + userId?: number; + sourceId?: number; + description?: string; + command?: string; + status?: string; + startTimeRange?: string[]; +} + +/** + * 执行日志查询响应 + */ +export interface ExecLogQueryResponse extends TableData, ExecLogQueryExtraResponse { + id: number; + userId: number; + username: string; + description: string; + execSeq: number; + command: string; + parameterSchema: string; + timeout: number; + status: string; + startTime: number; + finishTime: number; + hostIdList: Array; + hosts: Array; +} + +/** + * 执行日志查询响应 拓展 + */ +export interface ExecLogQueryExtraResponse { + hosts: Array; +} + +/** + * 主机执行日志查询响应 + */ +export interface ExecHostLogQueryResponse extends TableData { + id: number; + logId: number; + hostId: number; + hostName: string; + hostAddress: string; + status: string; + command: string; + parameter: string; + exitStatus: number; + errorMessage: string; + startTime: number; + finishTime: number; +} + +/** + * 执行状态查询响应 + */ +export interface ExecLogStatusResponse { + logList: Array; + hostList: Array; +} + +/** + * 执行日志 tail 请求 + */ +export interface ExecLogTailRequest { + execId?: number; + hostExecIdList?: Array; +} + +/** + * 执行中断命令请求 + */ +export interface ExecLogInterruptRequest { + logId?: number; + hostLogId?: number; +} diff --git a/orion-ops-ui/src/components/exec/log/const.ts b/orion-ops-ui/src/components/exec/log/const.ts new file mode 100644 index 00000000..04b035bf --- /dev/null +++ b/orion-ops-ui/src/components/exec/log/const.ts @@ -0,0 +1,36 @@ +// 批量执行状态 +export const execStatus = { + // 等待中 + WAITING: 'WAITING', + // 运行中 + RUNNING: 'RUNNING', + // 执行完成 + COMPLETED: 'COMPLETED', + // 执行失败 + FAILED: 'FAILED', +}; + +// 主机执行状态 +export const execHostStatus = { + // 等待中 + WAITING: 'WAITING', + // 运行中 + RUNNING: 'RUNNING', + // 执行完成 + COMPLETED: 'COMPLETED', + // 执行失败 + FAILED: 'FAILED', + // 执行超时 + TIMEOUT: 'TIMEOUT', + // 已中断 + INTERRUPTED: 'INTERRUPTED', +}; + +// 执行状态 字典项 +export const execStatusKey = 'execStatus'; + +// 执行状态 字典项 +export const execHostStatusKey = 'execHostStatus'; + +// 加载的字典值 +export const dictKeys = [execStatusKey, execHostStatusKey]; diff --git a/orion-ops-ui/src/components/exec/log/panel/const.ts b/orion-ops-ui/src/components/exec/log/panel/appender-const.ts similarity index 68% rename from orion-ops-ui/src/components/exec/log/panel/const.ts rename to orion-ops-ui/src/components/exec/log/panel/appender-const.ts index 0d5ab27b..348af7b9 100644 --- a/orion-ops-ui/src/components/exec/log/panel/const.ts +++ b/orion-ops-ui/src/components/exec/log/panel/appender-const.ts @@ -5,7 +5,7 @@ import type { WebLinksAddon } from 'xterm-addon-web-links'; import type { WebglAddon } from 'xterm-addon-webgl'; // appender 配置 -export const AppenderOptions: ITerminalOptions & ITerminalInitOnlyOptions = { +export const LogAppenderOptions: ITerminalOptions & ITerminalInitOnlyOptions = { theme: { foreground: '#FFFFFF', background: '#202020', @@ -97,44 +97,3 @@ export interface ILogAppender { // 关闭 close(): void; } - -/** - * 批量执行状态 - */ -export const execStatus = { - // 等待中 - WAITING: 'WAITING', - // 运行中 - RUNNING: 'RUNNING', - // 执行完成 - COMPLETED: 'COMPLETED', - // 执行失败 - FAILED: 'FAILED', -}; - -/** - * 主机执行状态 - */ -export const execHostStatus = { - // 等待中 - WAITING: 'WAITING', - // 运行中 - RUNNING: 'RUNNING', - // 执行完成 - COMPLETED: 'COMPLETED', - // 执行失败 - FAILED: 'FAILED', - // 执行超时 - TIMEOUT: 'TIMEOUT', - // 已中断 - INTERRUPTED: 'INTERRUPTED', -}; - -// 执行状态 字典项 -export const execStatusKey = 'execStatus'; - -// 执行状态 字典项 -export const execHostStatusKey = 'execHostStatus'; - -// 加载的字典值 -export const dictKeys = [execStatusKey, execHostStatusKey]; diff --git a/orion-ops-ui/src/components/exec/log/panel/exec-host.vue b/orion-ops-ui/src/components/exec/log/panel/exec-host.vue index d5adfa7c..effa52ce 100644 --- a/orion-ops-ui/src/components/exec/log/panel/exec-host.vue +++ b/orion-ops-ui/src/components/exec/log/panel/exec-host.vue @@ -41,14 +41,14 @@ + + + + diff --git a/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-host-log-table.vue b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-host-log-table.vue new file mode 100644 index 00000000..b6f90e18 --- /dev/null +++ b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-host-log-table.vue @@ -0,0 +1,171 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-clear-modal.vue b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-clear-modal.vue new file mode 100644 index 00000000..800dacd5 --- /dev/null +++ b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-clear-modal.vue @@ -0,0 +1,162 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-table.vue b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-table.vue new file mode 100644 index 00000000..25b07846 --- /dev/null +++ b/orion-ops-ui/src/views/exec/exec-job-log/components/exec-job-log-table.vue @@ -0,0 +1,400 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/exec/exec-job-log/index.vue b/orion-ops-ui/src/views/exec/exec-job-log/index.vue new file mode 100644 index 00000000..55be0d02 --- /dev/null +++ b/orion-ops-ui/src/views/exec/exec-job-log/index.vue @@ -0,0 +1,96 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/exec/exec-job-log/types/const.ts b/orion-ops-ui/src/views/exec/exec-job-log/types/const.ts new file mode 100644 index 00000000..e69de29b diff --git a/orion-ops-ui/src/views/exec/exec-job-log/types/table.columns.ts b/orion-ops-ui/src/views/exec/exec-job-log/types/table.columns.ts new file mode 100644 index 00000000..080dfaa7 --- /dev/null +++ b/orion-ops-ui/src/views/exec/exec-job-log/types/table.columns.ts @@ -0,0 +1,45 @@ +import type { TableColumnData } from '@arco-design/web-vue/es/table/interface'; + +const columns = [ + { + title: 'id', + dataIndex: 'id', + slotName: 'id', + width: 70, + align: 'left', + fixed: 'left', + }, { + title: '任务名称', + dataIndex: 'description', + slotName: 'description', + align: 'left', + width: 188, + ellipsis: true, + }, { + title: '执行命令', + dataIndex: 'command', + slotName: 'command', + align: 'left', + ellipsis: true, + }, { + title: '执行状态', + dataIndex: 'status', + slotName: 'status', + align: 'left', + width: 118, + }, { + title: '执行时间', + dataIndex: 'startTime', + slotName: 'startTime', + align: 'left', + width: 190, + }, { + title: '操作', + slotName: 'handle', + width: 218, + align: 'center', + fixed: 'right', + }, +] as TableColumnData[]; + +export default columns; diff --git a/orion-ops-ui/src/views/user/operator-log/components/operator-log-simple-table.vue b/orion-ops-ui/src/views/user/operator-log/components/operator-log-simple-table.vue index dfc036f5..dbf60050 100644 --- a/orion-ops-ui/src/views/user/operator-log/components/operator-log-simple-table.vue +++ b/orion-ops-ui/src/views/user/operator-log/components/operator-log-simple-table.vue @@ -11,9 +11,9 @@ :bordered="false">