🎨 修改代码规范.
This commit is contained in:
@@ -51,7 +51,7 @@ public class OrionDataSourceAutoConfiguration {
|
|||||||
* @return druid 广告过滤器
|
* @return druid 广告过滤器
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnProperty(name = "spring.datasource.druid.web-stat-filter.enabled", havingValue = "true")
|
@ConditionalOnProperty(value = "spring.datasource.druid.web-stat-filter.enabled", havingValue = "true")
|
||||||
public FilterRegistrationBean<DruidAdRemoveFilter> druidAdRemoveFilterFilter(DruidStatProperties properties) {
|
public FilterRegistrationBean<DruidAdRemoveFilter> druidAdRemoveFilterFilter(DruidStatProperties properties) {
|
||||||
// 获取 druid web 监控页面的参数
|
// 获取 druid web 监控页面的参数
|
||||||
DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
|
DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ import java.util.Optional;
|
|||||||
*/
|
*/
|
||||||
@ConditionalOnClass({OpenAPI.class})
|
@ConditionalOnClass({OpenAPI.class})
|
||||||
@EnableConfigurationProperties(SwaggerConfig.class)
|
@EnableConfigurationProperties(SwaggerConfig.class)
|
||||||
@ConditionalOnProperty(name = "springdoc.api-docs.enabled", havingValue = "true")
|
@ConditionalOnProperty(value = "springdoc.api-docs.enabled", havingValue = "true")
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_SWAGGER)
|
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_SWAGGER)
|
||||||
public class OrionSwaggerAutoConfiguration {
|
public class OrionSwaggerAutoConfiguration {
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
<a-link target="_blank" :href="`https://github.com/dromara/orion-visor/releases/tag/v${version}`">v{{ version }}</a-link>
|
<a-link target="_blank" :href="`https://github.com/dromara/orion-visor/releases/tag/v${version}`">v{{ version }}</a-link>
|
||||||
</a-space>
|
</a-space>
|
||||||
<span class="copyright">
|
<span class="copyright">
|
||||||
Copyright<icon-copyright /> 2023 - {{ new Date().getFullYear() }} Jiahang Li, All rights reserved.
|
Copyright<icon-copyright /> 2023 - {{ new Date().getFullYear() }} <a href="https://dromara.org">Dromara</a>, All rights reserved. Designed by
|
||||||
|
<a href="https://orionsec.cn" target="_blank">Jiahang Li.</a>
|
||||||
</span>
|
</span>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-layout-footer>
|
</a-layout-footer>
|
||||||
|
|||||||
@@ -22,7 +22,13 @@
|
|||||||
</td>
|
</td>
|
||||||
<!-- 子菜单 -->
|
<!-- 子菜单 -->
|
||||||
<td>
|
<td>
|
||||||
<a-checkbox :value="childrenMenu.id">
|
<!-- 默认路由 -->
|
||||||
|
<a-checkbox v-if="childrenMenu.component === DEFAULT_ROUTE_NAME"
|
||||||
|
:value="childrenMenu.id">
|
||||||
|
{{ childrenMenu.name }} <span class="span-red">(必选)</span>
|
||||||
|
</a-checkbox>
|
||||||
|
<!-- 普通子菜单 -->
|
||||||
|
<a-checkbox v-else :value="childrenMenu.id">
|
||||||
{{ childrenMenu.name }}
|
{{ childrenMenu.name }}
|
||||||
</a-checkbox>
|
</a-checkbox>
|
||||||
</td>
|
</td>
|
||||||
@@ -73,6 +79,7 @@
|
|||||||
import type { MenuQueryResponse } from '@/api/system/menu';
|
import type { MenuQueryResponse } from '@/api/system/menu';
|
||||||
import { useCacheStore } from '@/store';
|
import { useCacheStore } from '@/store';
|
||||||
import { ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
|
import { DEFAULT_ROUTE_NAME } from '@/router/constants';
|
||||||
import { findNode, flatNodeKeys, flatNodes } from '@/utils/tree';
|
import { findNode, flatNodeKeys, flatNodes } from '@/utils/tree';
|
||||||
|
|
||||||
const cacheStore = useCacheStore();
|
const cacheStore = useCacheStore();
|
||||||
|
|||||||
@@ -39,7 +39,11 @@
|
|||||||
return props.modelValue;
|
return props.modelValue;
|
||||||
},
|
},
|
||||||
set(e) {
|
set(e) {
|
||||||
emits('update:modelValue', e);
|
if (e) {
|
||||||
|
emits('update:modelValue', e);
|
||||||
|
} else {
|
||||||
|
emits('update:modelValue', null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,15 @@
|
|||||||
return props.modelValue;
|
return props.modelValue;
|
||||||
},
|
},
|
||||||
set(e) {
|
set(e) {
|
||||||
emits('update:modelValue', e);
|
if (e) {
|
||||||
|
emits('update:modelValue', e);
|
||||||
|
} else {
|
||||||
|
if (props.multiple) {
|
||||||
|
emits('update:modelValue', []);
|
||||||
|
} else {
|
||||||
|
emits('update:modelValue', null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const optionData = ref<Array<SelectOptionData>>([]);
|
const optionData = ref<Array<SelectOptionData>>([]);
|
||||||
|
|||||||
@@ -39,7 +39,15 @@
|
|||||||
return props.modelValue;
|
return props.modelValue;
|
||||||
},
|
},
|
||||||
set(e) {
|
set(e) {
|
||||||
emits('update:modelValue', e);
|
if (e) {
|
||||||
|
emits('update:modelValue', e);
|
||||||
|
} else {
|
||||||
|
if (props.multiple) {
|
||||||
|
emits('update:modelValue', []);
|
||||||
|
} else {
|
||||||
|
emits('update:modelValue', null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const optionData = ref<Array<SelectOptionData>>([]);
|
const optionData = ref<Array<SelectOptionData>>([]);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
// 跳转到指定页
|
// 跳转到指定页
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
const key = route.query.key;
|
const key = route.query.key as string;
|
||||||
if (key) {
|
if (key) {
|
||||||
activeKey.value = Number(key);
|
activeKey.value = Number(key);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,12 +30,12 @@
|
|||||||
|
|
||||||
// 跳转日志
|
// 跳转日志
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
const idParam = route.query.id;
|
const idParam = route.query.id as string;
|
||||||
const keyParam = route.query.key;
|
const keyParam = route.query.key as string;
|
||||||
if (idParam) {
|
if (idParam) {
|
||||||
await panel.value?.openLog(Number.parseInt(idParam as string));
|
await panel.value?.openLog(Number.parseInt(idParam));
|
||||||
} else if (keyParam) {
|
} else if (keyParam) {
|
||||||
await panel.value?.openLog(Number.parseInt(keyParam as string));
|
await panel.value?.openLog(Number.parseInt(keyParam));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<a-table row-key="id"
|
<a-table row-key="id"
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:columns="columns"
|
:columns="hostColumns"
|
||||||
:data="row.hosts"
|
:data="row.hosts"
|
||||||
:expandable="expandable"
|
:expandable="expandable"
|
||||||
:scroll="{ y: '100%' }"
|
:scroll="{ y: '100%' }"
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
import { deleteExecCommandHostLog } from '@/api/exec/exec-command-log';
|
import { deleteExecCommandHostLog } from '@/api/exec/exec-command-log';
|
||||||
import { Message } from '@arco-design/web-vue';
|
import { Message } from '@arco-design/web-vue';
|
||||||
import useLoading from '@/hooks/loading';
|
import useLoading from '@/hooks/loading';
|
||||||
import columns from '../types/host-table.columns';
|
import { hostColumns } from '../types/table.columns';
|
||||||
import { execHostStatusKey, ExecHostStatus } from '@/components/exec/log/const';
|
import { execHostStatusKey, ExecHostStatus } from '@/components/exec/log/const';
|
||||||
import { useDictStore } from '@/store';
|
import { useDictStore } from '@/store';
|
||||||
import { useExpandable } from '@/hooks/table';
|
import { useExpandable } from '@/hooks/table';
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
row-key="id"
|
row-key="id"
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:columns="columns"
|
:columns="tableColumns"
|
||||||
:row-selection="rowSelection"
|
:row-selection="rowSelection"
|
||||||
:expandable="expandable"
|
:expandable="expandable"
|
||||||
:data="tableRenderData"
|
:data="tableRenderData"
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
} from '@/api/exec/exec-command-log';
|
} from '@/api/exec/exec-command-log';
|
||||||
import { Message } from '@arco-design/web-vue';
|
import { Message } from '@arco-design/web-vue';
|
||||||
import useLoading from '@/hooks/loading';
|
import useLoading from '@/hooks/loading';
|
||||||
import columns from '../types/table.columns';
|
import { tableColumns } from '../types/table.columns';
|
||||||
import { ExecStatus, execStatusKey } from '@/components/exec/log/const';
|
import { ExecStatus, execStatusKey } from '@/components/exec/log/const';
|
||||||
import { useExpandable, useTablePagination, useRowSelection } from '@/hooks/table';
|
import { useExpandable, useTablePagination, useRowSelection } from '@/hooks/table';
|
||||||
import { useDictStore } from '@/store';
|
import { useDictStore } from '@/store';
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
|
|
||||||
import { isNumber } from '@/utils/is';
|
|
||||||
|
|
||||||
const columns = [
|
|
||||||
{
|
|
||||||
title: 'id',
|
|
||||||
dataIndex: 'id',
|
|
||||||
slotName: 'id',
|
|
||||||
width: 100,
|
|
||||||
align: 'left',
|
|
||||||
fixed: 'left',
|
|
||||||
}, {
|
|
||||||
title: '执行主机',
|
|
||||||
dataIndex: 'hostName',
|
|
||||||
slotName: 'hostName',
|
|
||||||
align: 'left',
|
|
||||||
ellipsis: true,
|
|
||||||
tooltip: true,
|
|
||||||
}, {
|
|
||||||
title: '退出码',
|
|
||||||
dataIndex: 'exitCode',
|
|
||||||
slotName: 'exitCode',
|
|
||||||
align: 'left',
|
|
||||||
width: 118,
|
|
||||||
render: ({ record }) => {
|
|
||||||
return isNumber(record.exitCode) ? record.exitCode : '-';
|
|
||||||
},
|
|
||||||
}, {
|
|
||||||
title: '执行状态',
|
|
||||||
dataIndex: 'status',
|
|
||||||
slotName: 'status',
|
|
||||||
align: 'left',
|
|
||||||
width: 118,
|
|
||||||
}, {
|
|
||||||
title: '错误信息',
|
|
||||||
dataIndex: 'errorMessage',
|
|
||||||
slotName: 'errorMessage',
|
|
||||||
align: 'left',
|
|
||||||
ellipsis: true,
|
|
||||||
tooltip: true,
|
|
||||||
width: 168,
|
|
||||||
}, {
|
|
||||||
title: '执行时间',
|
|
||||||
dataIndex: 'startTime',
|
|
||||||
slotName: 'startTime',
|
|
||||||
align: 'left',
|
|
||||||
width: 190,
|
|
||||||
}, {
|
|
||||||
title: '操作',
|
|
||||||
slotName: 'handle',
|
|
||||||
width: 258,
|
|
||||||
align: 'center',
|
|
||||||
fixed: 'right',
|
|
||||||
},
|
|
||||||
] as TableColumnData[];
|
|
||||||
|
|
||||||
export default columns;
|
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
|
import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
|
||||||
|
import { isNumber } from '@/utils/is';
|
||||||
|
|
||||||
const columns = [
|
// 表格列
|
||||||
|
export const tableColumns = [
|
||||||
{
|
{
|
||||||
title: 'id',
|
title: 'id',
|
||||||
dataIndex: 'id',
|
dataIndex: 'id',
|
||||||
@@ -51,4 +53,56 @@ const columns = [
|
|||||||
},
|
},
|
||||||
] as TableColumnData[];
|
] as TableColumnData[];
|
||||||
|
|
||||||
export default columns;
|
// 主机列
|
||||||
|
export const hostColumns = [
|
||||||
|
{
|
||||||
|
title: 'id',
|
||||||
|
dataIndex: 'id',
|
||||||
|
slotName: 'id',
|
||||||
|
width: 100,
|
||||||
|
align: 'left',
|
||||||
|
fixed: 'left',
|
||||||
|
}, {
|
||||||
|
title: '执行主机',
|
||||||
|
dataIndex: 'hostName',
|
||||||
|
slotName: 'hostName',
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
tooltip: true,
|
||||||
|
}, {
|
||||||
|
title: '退出码',
|
||||||
|
dataIndex: 'exitCode',
|
||||||
|
slotName: 'exitCode',
|
||||||
|
align: 'left',
|
||||||
|
width: 118,
|
||||||
|
render: ({ record }) => {
|
||||||
|
return isNumber(record.exitCode) ? record.exitCode : '-';
|
||||||
|
},
|
||||||
|
}, {
|
||||||
|
title: '执行状态',
|
||||||
|
dataIndex: 'status',
|
||||||
|
slotName: 'status',
|
||||||
|
align: 'left',
|
||||||
|
width: 118,
|
||||||
|
}, {
|
||||||
|
title: '错误信息',
|
||||||
|
dataIndex: 'errorMessage',
|
||||||
|
slotName: 'errorMessage',
|
||||||
|
align: 'left',
|
||||||
|
ellipsis: true,
|
||||||
|
tooltip: true,
|
||||||
|
width: 168,
|
||||||
|
}, {
|
||||||
|
title: '执行时间',
|
||||||
|
dataIndex: 'startTime',
|
||||||
|
slotName: 'startTime',
|
||||||
|
align: 'left',
|
||||||
|
width: 190,
|
||||||
|
}, {
|
||||||
|
title: '操作',
|
||||||
|
slotName: 'handle',
|
||||||
|
width: 258,
|
||||||
|
align: 'center',
|
||||||
|
fixed: 'right',
|
||||||
|
},
|
||||||
|
] as TableColumnData[];
|
||||||
|
|||||||
@@ -60,12 +60,12 @@
|
|||||||
|
|
||||||
// 跳转日志
|
// 跳转日志
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
const idParam = route.query.id;
|
const idParam = route.query.id as string;
|
||||||
const keyParam = route.query.key;
|
const keyParam = route.query.key as string;
|
||||||
if (idParam) {
|
if (idParam) {
|
||||||
await openLogWithId(Number.parseInt(idParam as string));
|
await openLogWithId(Number.parseInt(idParam));
|
||||||
} else if (keyParam) {
|
} else if (keyParam) {
|
||||||
await openLogWithId(Number.parseInt(keyParam as string));
|
await openLogWithId(Number.parseInt(keyParam));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -36,9 +36,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const idParam = route.query.id;
|
const idParam = route.query.id as string;
|
||||||
if (idParam) {
|
if (idParam) {
|
||||||
init(Number.parseInt(idParam as string));
|
init(Number.parseInt(idParam));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<a-table row-key="id"
|
<a-table row-key="id"
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:columns="columns"
|
:columns="hostColumns"
|
||||||
:data="row.hosts"
|
:data="row.hosts"
|
||||||
:expandable="expandable"
|
:expandable="expandable"
|
||||||
:scroll="{ y: '100%' }"
|
:scroll="{ y: '100%' }"
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
import { execHostStatusKey, ExecHostStatus } from '@/components/exec/log/const';
|
import { execHostStatusKey, ExecHostStatus } from '@/components/exec/log/const';
|
||||||
import { useDictStore } from '@/store';
|
import { useDictStore } from '@/store';
|
||||||
import useLoading from '@/hooks/loading';
|
import useLoading from '@/hooks/loading';
|
||||||
import columns from '@/views/exec/exec-command-log/types/host-table.columns';
|
import { hostColumns } from '@/views/exec/exec-command-log/types/table.columns';
|
||||||
import { useExpandable } from '@/hooks/table';
|
import { useExpandable } from '@/hooks/table';
|
||||||
import { dateFormat, formatDuration } from '@/utils';
|
import { dateFormat, formatDuration } from '@/utils';
|
||||||
import { downloadExecJobLogFile } from '@/api/exec/exec-job-log';
|
import { downloadExecJobLogFile } from '@/api/exec/exec-job-log';
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
// 打开默认 tab
|
// 打开默认 tab
|
||||||
let openTab;
|
let openTab;
|
||||||
const tab = route.query.tab;
|
const tab = route.query.tab as string;
|
||||||
if (tab) {
|
if (tab) {
|
||||||
openTab = Object.values(TerminalTabs).find(s => s.key === tab);
|
openTab = Object.values(TerminalTabs).find(s => s.key === tab);
|
||||||
}
|
}
|
||||||
@@ -167,9 +167,9 @@
|
|||||||
// 加载主机
|
// 加载主机
|
||||||
await loadHosts();
|
await loadHosts();
|
||||||
// 默认连接主机
|
// 默认连接主机
|
||||||
const connect = route.query.connect;
|
const connect = route.query.connect as string;
|
||||||
if (connect) {
|
if (connect) {
|
||||||
const connectHostId = Number.parseInt(connect as string);
|
const connectHostId = Number.parseInt(connect);
|
||||||
const connectHost = hosts.hostList.find(s => s.id === connectHostId);
|
const connectHost = hosts.hostList.find(s => s.id === connectHostId);
|
||||||
// 打开连接
|
// 打开连接
|
||||||
if (connectHost) {
|
if (connectHost) {
|
||||||
|
|||||||
@@ -35,9 +35,9 @@
|
|||||||
|
|
||||||
// 跳转到指定页
|
// 跳转到指定页
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
const key = route.query.key;
|
const key = route.query.key as string;
|
||||||
if (key) {
|
if (key) {
|
||||||
activeKey.value = key as string;
|
activeKey.value = key;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -324,7 +324,8 @@ INSERT INTO `dict_value` VALUES (431, 61, 'updatePasswordReason', 'NEW', '为了
|
|||||||
INSERT INTO `dict_value` VALUES (432, 2, 'operatorLogType', 'exec-job:update-exec-user', '修改计划执行用户', '{}', 45, '2024-12-13 00:17:03', '2024-12-13 00:17:03', '1', '1', 0);
|
INSERT INTO `dict_value` VALUES (432, 2, 'operatorLogType', 'exec-job:update-exec-user', '修改计划执行用户', '{}', 45, '2024-12-13 00:17:03', '2024-12-13 00:17:03', '1', '1', 0);
|
||||||
|
|
||||||
-- 菜单配置
|
-- 菜单配置
|
||||||
INSERT INTO `system_menu` VALUES (1, 0, '工作台', NULL, 1, 10, 1, 1, 1, 0, 'IconComputer', NULL, 'workplace', '2023-07-28 10:51:50', '2024-08-11 00:05:44', '1', '1', 0);
|
INSERT INTO `system_menu` VALUES (1, 0, '仪表盘', NULL, 1, 10, 1, 1, 1, 0, 'IconDashboard', NULL, 'dashboard', '2023-07-28 10:51:50', '2024-08-11 00:05:44', '1', '1', 0);
|
||||||
|
INSERT INTO `system_menu` VALUES (2, 1, '工作台', NULL, 2, 10, 1, 1, 1, 0, 'IconComputer', NULL, 'workplace', '2023-07-28 10:51:50', '2024-08-11 00:05:44', '1', '1', 0);
|
||||||
INSERT INTO `system_menu` VALUES (5, 0, '用户管理', NULL, 1, 700, 1, 1, 1, 0, 'icon-user', NULL, 'userModule', '2023-07-28 10:55:38', '2024-06-17 20:45:29', '1', '1', 0);
|
INSERT INTO `system_menu` VALUES (5, 0, '用户管理', NULL, 1, 700, 1, 1, 1, 0, 'icon-user', NULL, 'userModule', '2023-07-28 10:55:38', '2024-06-17 20:45:29', '1', '1', 0);
|
||||||
INSERT INTO `system_menu` VALUES (8, 0, '项目地址', NULL, 1, 1000, 1, 1, 1, 0, 'icon-link', 'https://visor.dromara.org', '', '2023-07-28 11:04:59', '2024-08-29 18:10:57', '1', '1', 0);
|
INSERT INTO `system_menu` VALUES (8, 0, '项目地址', NULL, 1, 1000, 1, 1, 1, 0, 'icon-link', 'https://visor.dromara.org', '', '2023-07-28 11:04:59', '2024-08-29 18:10:57', '1', '1', 0);
|
||||||
INSERT INTO `system_menu` VALUES (10, 5, '角色管理', NULL, 2, 10, 1, 1, 1, 0, 'IconUserGroup', '', 'role', '2023-07-28 10:55:52', '2024-03-07 19:10:13', '1', '1', 0);
|
INSERT INTO `system_menu` VALUES (10, 5, '角色管理', NULL, 2, 10, 1, 1, 1, 0, 'IconUserGroup', '', 'role', '2023-07-28 10:55:52', '2024-03-07 19:10:13', '1', '1', 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user