⚡ 优化终端代码.
This commit is contained in:
@@ -51,6 +51,13 @@ export function getTerminalAccessToken() {
|
||||
return axios.get<string>('/asset/host-terminal/access');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主机终端 transferToken
|
||||
*/
|
||||
export function getTerminalTransferToken() {
|
||||
return axios.get<string>('/asset/host-terminal/transfer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开主机终端 websocket
|
||||
*/
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import type { Pagination } from '@/types/global';
|
||||
import axios from 'axios';
|
||||
|
||||
/**
|
||||
* 系统消息查询请求
|
||||
*/
|
||||
export interface MessageQueryRequest {
|
||||
limit?: number;
|
||||
export interface MessageQueryRequest extends Pagination {
|
||||
maxId?: number;
|
||||
classify?: string;
|
||||
queryUnread?: boolean;
|
||||
|
||||
@@ -230,6 +230,26 @@ body {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.fs12 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.fs13 {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.fs14 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.fs15 {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.fs16 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.text-ellipsis {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -301,13 +321,13 @@ body {
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: var(--color-fill-1);
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
border: 1px solid transparent;
|
||||
background-clip: padding-box;
|
||||
border-radius: 8px;
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-fill-4);
|
||||
|
||||
//&:hover {
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
: undefined;
|
||||
// 查询数据
|
||||
const { data } = await getSystemMessageList({
|
||||
page: 1,
|
||||
limit: messageLimit,
|
||||
classify: currentClassify.value,
|
||||
queryUnread: queryUnread.value,
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
</a-form-item>
|
||||
<!-- 主机编码 -->
|
||||
<a-form-item field="code" label="主机编码">
|
||||
<a-input v-model="formModel.code" placeholder="请输入主机编码" />
|
||||
<a-input v-model="formModel.code" placeholder="请输入主机编码 (定义主机唯一值)" />
|
||||
</a-form-item>
|
||||
<!-- 主机地址 -->
|
||||
<a-form-item field="address" label="主机地址">
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
</a-button>
|
||||
</a-popconfirm>
|
||||
<!-- 更多 -->
|
||||
<a-dropdown trigger="hover">
|
||||
<a-dropdown trigger="hover" :popup-max-height="false">
|
||||
<a-button type="text" size="mini">
|
||||
更多
|
||||
</a-button>
|
||||
@@ -220,6 +220,22 @@
|
||||
复制
|
||||
</span>
|
||||
</a-doption>
|
||||
<!-- SSH -->
|
||||
<a-doption v-if="record.type === hostType.SSH.type"
|
||||
v-permission="['asset:host-terminal:access']"
|
||||
@click="openNewRoute({ name: 'terminal', query: { connect: record.id, type: 'SSH' } })">
|
||||
<span class="more-doption normal">
|
||||
SSH
|
||||
</span>
|
||||
</a-doption>
|
||||
<!-- SFTP -->
|
||||
<a-doption v-if="record.type === hostType.SSH.type"
|
||||
v-permission="['asset:host-terminal:access']"
|
||||
@click="openNewRoute({ name: 'terminal', query: { connect: record.id, type: 'SFTP' } })">
|
||||
<span class="more-doption normal">
|
||||
SFTP
|
||||
</span>
|
||||
</a-doption>
|
||||
</template>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
@@ -239,7 +255,7 @@
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import { deleteHost, batchDeleteHost, getHostPage, updateHostStatus } from '@/api/asset/host';
|
||||
import { Message, Modal } from '@arco-design/web-vue';
|
||||
import { tagColor, hostTypeKey, hostStatusKey } from '../types/const';
|
||||
import { tagColor, hostTypeKey, hostStatusKey, hostType } from '../types/const';
|
||||
import { useTablePagination, useRowSelection } from '@/hooks/table';
|
||||
import { useDictStore } from '@/store';
|
||||
import { copy } from '@/hooks/copy';
|
||||
@@ -247,6 +263,7 @@
|
||||
import useLoading from '@/hooks/loading';
|
||||
import columns from '../types/table.columns';
|
||||
import { GrantKey, GrantRouteName } from '@/views/asset/grant/types/const';
|
||||
import { openNewRoute } from '@/router';
|
||||
import TagMultiSelector from '@/components/meta/tag/multi-selector/index.vue';
|
||||
|
||||
const emits = defineEmits(['openCopy', 'openAdd', 'openUpdate', 'openUpdateConfig', 'openHostGroup']);
|
||||
|
||||
@@ -85,15 +85,21 @@ export default class SftpSession extends BaseSession implements ISftpSession {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
maxHeight: '40vh',
|
||||
overflowY: 'auto'
|
||||
overflowY: 'auto',
|
||||
}
|
||||
},
|
||||
paths.map(s => {
|
||||
return h('span', { style: { marginTop: '4px' } }, s);
|
||||
return h('span', {
|
||||
style: {
|
||||
marginTop: '4px',
|
||||
wordBreak: 'break-all',
|
||||
}
|
||||
}, s);
|
||||
}));
|
||||
// 提示
|
||||
Modal.confirm({
|
||||
title: '确定后将立即删除这些文件且无法恢复!',
|
||||
title: `确定后将立即删除这 ${paths.length} 个文件且无法恢复!`,
|
||||
width: 426,
|
||||
modalStyle: { padding: '24px 32px' },
|
||||
bodyStyle: { marginTop: '-14px' },
|
||||
okButtonProps: { status: 'danger' },
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { ISftpTransferHandler, ISftpTransferManager, SftpFile, SftpTransferItem, TransferOperatorResponse } from '../types/define';
|
||||
import { sessionCloseMsg, TransferReceiver, TransferStatus, TransferType } from '../types/const';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { getTerminalAccessToken, openHostTransferChannel } from '@/api/asset/host-terminal';
|
||||
import { getTerminalTransferToken, openHostTransferChannel } from '@/api/asset/host-terminal';
|
||||
import { nextId } from '@/utils';
|
||||
import SftpTransferUploader from './sftp-transfer-uploader';
|
||||
import SftpTransferDownloader from './sftp-transfer-downloader';
|
||||
@@ -105,11 +105,11 @@ export default class SftpTransferManager implements ISftpTransferManager {
|
||||
// 打开会话
|
||||
private async openClient() {
|
||||
this.run = true;
|
||||
// 获取 access
|
||||
const { data: accessToken } = await getTerminalAccessToken();
|
||||
// 获取 transferToken
|
||||
const { data: transferToken } = await getTerminalTransferToken();
|
||||
// 打开会话
|
||||
try {
|
||||
this.client = await openHostTransferChannel(accessToken);
|
||||
this.client = await openHostTransferChannel(transferToken);
|
||||
} catch (e) {
|
||||
// 打开失败将传输列表置为失效
|
||||
Message.error('会话打开失败');
|
||||
|
||||
Reference in New Issue
Block a user