diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/ExecLogDAO.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/ExecLogDAO.java index 5d0c8f2a..5c5be655 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/ExecLogDAO.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/dao/ExecLogDAO.java @@ -3,6 +3,9 @@ package com.orion.ops.module.asset.dao; import com.orion.ops.framework.mybatis.core.mapper.IMapper; import com.orion.ops.module.asset.entity.domain.ExecLogDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 批量执行日志 Mapper 接口 @@ -14,4 +17,16 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ExecLogDAO extends IMapper { + /** + * 获取执行历史 + * + * @param source source + * @param userId userId + * @param limit limit + * @return rows + */ + List getExecHistory(@Param("source") String source, + @Param("userId") Long userId, + @Param("limit") Integer limit); + } diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecLogServiceImpl.java b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecLogServiceImpl.java index a4d98478..9c00c37d 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecLogServiceImpl.java +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/java/com/orion/ops/module/asset/service/impl/ExecLogServiceImpl.java @@ -86,24 +86,18 @@ public class ExecLogServiceImpl implements ExecLogService { @Override public List getExecHistory(ExecLogQueryRequest request) { // 查询执行记录 - List logs = execLogDAO.of() - .createWrapper() - .eq(ExecLogDO::getSource, request.getSource()) - .eq(ExecLogDO::getUserId, request.getUserId()) - .groupBy(ExecLogDO::getDescription) - .orderByDesc(ExecLogDO::getId) - .then() - .limit(request) - .list(ExecLogConvert.MAPPER::to); - if (logs.isEmpty()) { - return logs; + List rows = execLogDAO.getExecHistory(request.getSource(), request.getUserId(), request.getLimit()); + if (rows.isEmpty()) { + return Lists.empty(); } + List logs = ExecLogConvert.MAPPER.to(rows); List logIdList = logs.stream() .map(ExecLogVO::getId) .collect(Collectors.toList()); // 设置执行主机id Map> hostIdRel = execHostLogDAO.of() .createWrapper() + .select(ExecHostLogDO::getId, ExecHostLogDO::getLogId, ExecHostLogDO::getHostId) .in(ExecHostLogDO::getLogId, logIdList) .then() .stream() diff --git a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml index d2860196..d94285a1 100644 --- a/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml +++ b/orion-ops-module-asset/orion-ops-module-asset-service/src/main/resources/mapper/ExecLogMapper.xml @@ -28,4 +28,17 @@ id, user_id, username, source, source_id, description, command, parameter_schema, timeout, status, start_time, finish_time, create_time, update_time, creator, updater, deleted + + diff --git a/orion-ops-ui/src/components/app/footer/index.vue b/orion-ops-ui/src/components/app/footer/index.vue index 3f0e9627..d095a7c1 100644 --- a/orion-ops-ui/src/components/app/footer/index.vue +++ b/orion-ops-ui/src/components/app/footer/index.vue @@ -8,7 +8,7 @@ gitee 文档 License - v{{ version }} + v{{ version }} 开源版 Copyright 2024 Li Jiahang All rights reserved. diff --git a/orion-ops-ui/src/components/app/navbar/index.vue b/orion-ops-ui/src/components/app/navbar/index.vue index 4dbfd895..d32387c9 100644 --- a/orion-ops-ui/src/components/app/navbar/index.vue +++ b/orion-ops-ui/src/components/app/navbar/index.vue @@ -31,7 +31,7 @@ + @click="openNewRoute({ name: 'terminal' })"> @@ -213,10 +213,10 @@ import { openAppSettingKey, toggleDrawerMenuKey } from '@/types/symbol'; import { preferenceTipsKey } from './const'; import { REDIRECT_ROUTE_NAME, routerToTag } from '@/router/constants'; - import { openWindow } from '@/utils'; + import { openNewRoute } from '@/router'; import MenuTree from '@/components/system/menu/tree/index.vue'; - import UpdatePasswordModal from '@/components/user/user/update-password-modal/index.vue'; import MessageBox from '@/components/system/message-box/index.vue'; + import UpdatePasswordModal from '@/components/user/user/update-password-modal/index.vue'; const tipsStore = useTipsStore(); const appStore = useAppStore(); @@ -280,12 +280,6 @@ triggerMouseEvent(localeRef); }; - // 打开新页面 - const openNewRoute = (name: string) => { - const { href } = router.resolve({ name }); - openWindow(href); - }; - // 刷新页面 const reloadCurrent = async () => { if (appStore.tabBar) { diff --git a/orion-ops-ui/src/components/asset/host/authorized-host-modal/index.vue b/orion-ops-ui/src/components/asset/host/authorized-host-modal/index.vue index 0a7df6c6..c0e35a8e 100644 --- a/orion-ops-ui/src/components/asset/host/authorized-host-modal/index.vue +++ b/orion-ops-ui/src/components/asset/host/authorized-host-modal/index.vue @@ -241,7 +241,7 @@ // 加载字典值 onMounted(async () => { - await loadKeys([...dictKeys]); + await loadKeys(dictKeys); }); diff --git a/orion-ops-ui/src/components/exec/log/panel/index.vue b/orion-ops-ui/src/components/exec/log/panel/index.vue index d674f7a9..f828b4be 100644 --- a/orion-ops-ui/src/components/exec/log/panel/index.vue +++ b/orion-ops-ui/src/components/exec/log/panel/index.vue @@ -25,12 +25,13 @@ diff --git a/orion-ops-ui/src/views/exec/exec-log/components/exec-log-clear-modal.vue b/orion-ops-ui/src/views/exec/exec-log/components/exec-log-clear-modal.vue index 1af3268e..39d8f378 100644 --- a/orion-ops-ui/src/views/exec/exec-log/components/exec-log-clear-modal.vue +++ b/orion-ops-ui/src/views/exec/exec-log/components/exec-log-clear-modal.vue @@ -18,6 +18,13 @@ label-align="right" :label-col-props="{ span: 5 }" :wrapper-col-props="{ span: 18 }"> + + + + - - - - diff --git a/orion-ops-ui/src/views/exec/exec-log/components/exec-log-table.vue b/orion-ops-ui/src/views/exec/exec-log/components/exec-log-table.vue index 9e9a2d92..7548a5bf 100644 --- a/orion-ops-ui/src/views/exec/exec-log/components/exec-log-table.vue +++ b/orion-ops-ui/src/views/exec/exec-log/components/exec-log-table.vue @@ -163,6 +163,7 @@ 日志 diff --git a/orion-ops-ui/src/views/exec/exec-log/index.vue b/orion-ops-ui/src/views/exec/exec-log/index.vue index 143ac2f5..c3f4bcc2 100644 --- a/orion-ops-ui/src/views/exec/exec-log/index.vue +++ b/orion-ops-ui/src/views/exec/exec-log/index.vue @@ -36,6 +36,10 @@ import JsonEditorModal from '@/components/view/json-editor/modal/index.vue'; import ShellEditorModal from '@/components/view/shell-editor/modal/index.vue'; import ExecLogPanelModal from '@/components/exec/log/panel-modal/index.vue'; + import { useRouter } from 'vue-router'; + import { openNewRoute } from '@/router'; + + const router = useRouter(); const render = ref(false); const tableRef = ref(); @@ -62,7 +66,13 @@ // 查看日志 const viewLog = (id: number, newWindow: boolean) => { if (newWindow) { - // TODO openLog + // 跳转新页面 + openNewRoute({ + name: 'execLogView', + query: { + id + } + }); } else { logModal.value.open(id); } diff --git a/orion-ops-ui/src/views/host/terminal/index.vue b/orion-ops-ui/src/views/host/terminal/index.vue index 092bdab4..e86be55d 100644 --- a/orion-ops-ui/src/views/host/terminal/index.vue +++ b/orion-ops-ui/src/views/host/terminal/index.vue @@ -70,7 +70,7 @@ // 加载字典值 onBeforeMount(async () => { - await dictStore.loadKeys([...dictKeys]); + await dictStore.loadKeys(dictKeys); }); // 加载主机信息 diff --git a/orion-ops-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue b/orion-ops-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue index 84c656d9..f53e4bc9 100644 --- a/orion-ops-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue +++ b/orion-ops-ui/src/views/user/operator-log/components/operator-log-clear-modal.vue @@ -17,6 +17,13 @@ label-align="right" :label-col-props="{ span: 5 }" :wrapper-col-props="{ span: 18 }"> + + + + - - - -