🚧 批量上传.
This commit is contained in:
17
orion-ops-ui/src/views/exec/batch-upload/index.vue
Normal file
17
orion-ops-ui/src/views/exec/batch-upload/index.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div>批量上传</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: 'index'
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
</style>
|
||||
17
orion-ops-ui/src/views/exec/upload-task-log/index.vue
Normal file
17
orion-ops-ui/src/views/exec/upload-task-log/index.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div>upload-task-log</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: 'index'
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
</style>
|
||||
@@ -2,9 +2,8 @@ import type { ISftpTransferManager, ISftpTransferUploader, SftpTransferItem } fr
|
||||
import { ISftpTransferDownloader, SftpFile, TransferOperatorResponse } from '../types/terminal.type';
|
||||
import { TransferReceiverType, TransferStatus, TransferType } from '../types/terminal.const';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { getTerminalAccessToken } from '@/api/asset/host-terminal';
|
||||
import { createWebSocket, nextId } from '@/utils';
|
||||
import { webSocketBaseUrl } from '@/utils/env';
|
||||
import { getTerminalAccessToken, openHostTransferChannel } from '@/api/asset/host-terminal';
|
||||
import { nextId } from '@/utils';
|
||||
import SftpTransferUploader from './sftp-transfer-uploader';
|
||||
import SftpTransferDownloader from './sftp-transfer-downloader';
|
||||
|
||||
@@ -113,7 +112,7 @@ export default class SftpTransferManager implements ISftpTransferManager {
|
||||
const { data: accessToken } = await getTerminalAccessToken();
|
||||
// 打开会话
|
||||
try {
|
||||
this.client = await createWebSocket(`${webSocketBaseUrl}/host/transfer/${accessToken}`);
|
||||
this.client = await openHostTransferChannel(accessToken);
|
||||
} catch (e) {
|
||||
// 打开失败将传输列表置为失效
|
||||
Message.error('会话打开失败');
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import type { InputPayload, ITerminalChannel, ITerminalOutputProcessor, ITerminalSessionManager, OutputPayload, Protocol, } from '../types/terminal.type';
|
||||
import { OutputProtocol } from '../types/terminal.protocol';
|
||||
import { getTerminalAccessToken } from '@/api/asset/host-terminal';
|
||||
import { getTerminalAccessToken, openHostTerminalChannel } from '@/api/asset/host-terminal';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { createWebSocket } from '@/utils';
|
||||
import { webSocketBaseUrl } from '@/utils/env';
|
||||
import TerminalOutputProcessor from './terminal-output-processor';
|
||||
|
||||
// 终端通信处理器 实现
|
||||
@@ -23,7 +21,7 @@ export default class TerminalChannel implements ITerminalChannel {
|
||||
const { data: accessToken } = await getTerminalAccessToken();
|
||||
// 打开会话
|
||||
try {
|
||||
this.client = await createWebSocket(`${webSocketBaseUrl}/host/terminal/${accessToken}`);
|
||||
this.client = await openHostTerminalChannel(accessToken);
|
||||
} catch (e) {
|
||||
Message.error('无法连接至服务器');
|
||||
console.error('terminal error', e);
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, ref, nextTick } from 'vue';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { getExecJobLog } from '@/api/exec/exec-job-log';
|
||||
import { getExecJobLog } from '@/api/job/exec-job-log';
|
||||
import ExecLogPanel from '@/components/exec/log/panel/index.vue';
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
@@ -102,15 +102,14 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { ExecLogQueryResponse, ExecHostLogQueryResponse } from '@/api/exec/exec-log';
|
||||
import { deleteExecJobHostLog } from '@/api/exec/exec-job-log';
|
||||
import { interruptHostExecJob } from '@/api/exec/exec-job-log';
|
||||
import { deleteExecJobHostLog, interruptHostExecJob } from '@/api/job/exec-job-log';
|
||||
import { execHostStatusKey, execHostStatus } from '@/components/exec/log/const';
|
||||
import { useDictStore } from '@/store';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import columns from '@/views/exec/exec-command-log/types/host-table.columns';
|
||||
import { useExpandable } from '@/types/table';
|
||||
import { dateFormat, formatDuration } from '@/utils';
|
||||
import { downloadExecJobLogFile } from '@/api/exec/exec-job-log';
|
||||
import { downloadExecJobLogFile } from '@/api/job/exec-job-log';
|
||||
import { copy } from '@/hooks/copy';
|
||||
import { downloadFile } from '@/utils/file';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import { execStatusKey } from '@/components/exec/log/const';
|
||||
import { getExecJobLogCount, clearExecJobLog } from '@/api/exec/exec-job-log';
|
||||
import { getExecJobLogCount, clearExecJobLog } from '@/api/job/exec-job-log';
|
||||
import { Message, Modal } from '@arco-design/web-vue';
|
||||
import { useDictStore } from '@/store';
|
||||
import ExecJobSelector from '@/components/exec/job/selector/index.vue';
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
getExecJobHostLogList,
|
||||
getExecJobLogPage,
|
||||
getExecJobLogStatus
|
||||
} from '@/api/exec/exec-job-log';
|
||||
} from '@/api/job/exec-job-log';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import columns from '../types/table.columns';
|
||||
@@ -206,7 +206,7 @@
|
||||
import { useExpandable, usePagination, useRowSelection } from '@/types/table';
|
||||
import { useDictStore } from '@/store';
|
||||
import { dateFormat, formatDuration } from '@/utils';
|
||||
import { interruptExecJob } from '@/api/exec/exec-job-log';
|
||||
import { interruptExecJob } from '@/api/job/exec-job-log';
|
||||
import ExecJobHostLogTable from './exec-job-host-log-table.vue';
|
||||
|
||||
const emits = defineEmits(['viewCommand', 'viewParams', 'viewLog', 'openClear']);
|
||||
|
||||
@@ -86,14 +86,14 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { ExecJobQueryResponse } from '@/api/exec/exec-job';
|
||||
import type { ExecJobQueryResponse } from '@/api/job/exec-job';
|
||||
import { ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import { useDictStore } from '@/store';
|
||||
import { dateFormat } from '@/utils';
|
||||
import { copy } from '@/hooks/copy';
|
||||
import { getExecJob } from '@/api/exec/exec-job';
|
||||
import { getExecJob } from '@/api/job/exec-job';
|
||||
import { EnabledStatus } from '@/types/const';
|
||||
import { execJobStatusKey } from '../types/const';
|
||||
|
||||
|
||||
@@ -128,14 +128,14 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { ExecJobUpdateRequest } from '@/api/exec/exec-job';
|
||||
import type { ExecJobUpdateRequest } from '@/api/job/exec-job';
|
||||
import type { ExecTemplateQueryResponse } from '@/api/exec/exec-template';
|
||||
import { onUnmounted, ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import formRules from '../types/form.rules';
|
||||
import { jobBuiltinsParams } from '../types/const';
|
||||
import { createExecJob, getExecJob, updateExecJob } from '@/api/exec/exec-job';
|
||||
import { createExecJob, getExecJob, updateExecJob } from '@/api/job/exec-job';
|
||||
import { getExecTemplateWithAuthorized } from '@/api/exec/exec-template';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { EnabledStatus } from '@/types/const';
|
||||
|
||||
@@ -172,9 +172,9 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { ExecJobQueryRequest, ExecJobQueryResponse } from '@/api/exec/exec-job';
|
||||
import type { ExecJobQueryRequest, ExecJobQueryResponse } from '@/api/job/exec-job';
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import { deleteExecJob, getExecJobPage, triggerExecJob, updateExecJobStatus } from '@/api/exec/exec-job';
|
||||
import { deleteExecJob, getExecJobPage, triggerExecJob, updateExecJobStatus } from '@/api/job/exec-job';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import usePermission from '@/hooks/permission';
|
||||
import useLoading from '@/hooks/loading';
|
||||
|
||||
@@ -53,15 +53,6 @@
|
||||
placeholder="菜单权限 infra:system-menu:query"
|
||||
allow-clear />
|
||||
</a-form-item>
|
||||
<!-- 外链地址 -->
|
||||
<a-form-item v-if="formModel.type !== MenuType.FUNCTION"
|
||||
field="path"
|
||||
label="外链地址"
|
||||
tooltip="输入组件名称后则不会生效">
|
||||
<a-input v-model="formModel.path"
|
||||
placeholder="外链地址与组件名称二选一"
|
||||
allow-clear />
|
||||
</a-form-item>
|
||||
<!-- 组件名称 -->
|
||||
<a-form-item v-if="formModel.type !== MenuType.FUNCTION"
|
||||
field="component"
|
||||
@@ -70,6 +61,15 @@
|
||||
placeholder="路由组件名称"
|
||||
allow-clear />
|
||||
</a-form-item>
|
||||
<!-- 外链地址 -->
|
||||
<a-form-item v-if="formModel.type !== MenuType.FUNCTION"
|
||||
field="path"
|
||||
label="外链地址"
|
||||
tooltip="输入组件名称后则不会生效">
|
||||
<a-input v-model="formModel.path"
|
||||
placeholder="组件名称与外链地址二选一"
|
||||
allow-clear />
|
||||
</a-form-item>
|
||||
<!-- 菜单排序 -->
|
||||
<a-form-item field="sort" label="菜单排序">
|
||||
<a-input-number v-model="formModel.sort"
|
||||
@@ -212,6 +212,7 @@
|
||||
if (error) {
|
||||
return false;
|
||||
}
|
||||
// 验证父菜单
|
||||
if (formModel.value.parentId === 0
|
||||
&& (formModel.value.type === MenuType.SUB_MENU || formModel.value.type === MenuType.FUNCTION)) {
|
||||
formRef.value.setFields({
|
||||
@@ -222,6 +223,19 @@
|
||||
});
|
||||
return false;
|
||||
}
|
||||
// 验证组件名称
|
||||
if ((formModel.value.type === MenuType.PARENT_MENU || formModel.value.type === MenuType.SUB_MENU)
|
||||
&& !formModel.value.component
|
||||
&& !formModel.value.path) {
|
||||
formRef.value.setFields({
|
||||
component: {
|
||||
status: 'error',
|
||||
message: '组件名称与外链地址二选一'
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isAddHandle.value) {
|
||||
// 新增
|
||||
await createMenu(formModel.value);
|
||||
|
||||
Reference in New Issue
Block a user