From 69b4faf3d243cf0e7184c1cb8d562b7006d03b15 Mon Sep 17 00:00:00 2001 From: zhangyu Date: Wed, 14 Dec 2022 17:36:52 +0800 Subject: [PATCH] =?UTF-8?q?NEZ-2446=20feat=EF=BC=9Aweb=20terminal=20=20?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/components/cli/fileDirectory.scss | 11 ++++ .../src/components/cli/consoleNew.vue | 11 ++-- .../src/components/cli/fileDirectory.vue | 53 +++++++++++++++---- .../src/components/cli/webSSHNew.vue | 18 +++++++ nezha-fronted/src/permission.js | 2 +- nezha-fronted/src/router/index.js | 4 +- nezha-fronted/src/store/terminalFile.js | 4 +- 7 files changed, 84 insertions(+), 19 deletions(-) diff --git a/nezha-fronted/src/assets/css/components/cli/fileDirectory.scss b/nezha-fronted/src/assets/css/components/cli/fileDirectory.scss index e7f2d84ae..075b66d4e 100644 --- a/nezha-fronted/src/assets/css/components/cli/fileDirectory.scss +++ b/nezha-fronted/src/assets/css/components/cli/fileDirectory.scss @@ -72,6 +72,9 @@ margin-right: 20px; } } + .el-input--suffix .el-input__inner{ + padding-right: 106px; + } } .file-directory-content{ height: calc(100% - 60px); @@ -100,6 +103,14 @@ box-sizing: border-box; padding-left: 10px; display: inline-block; + position: relative; + .nz-icon-link{ + position: absolute; + font-size: 10px; + left: 7px; + bottom: -5px; + font-weight: 600; + } } .file-size{ width: 15%; diff --git a/nezha-fronted/src/components/cli/consoleNew.vue b/nezha-fronted/src/components/cli/consoleNew.vue index 27d8e5699..30da7583b 100644 --- a/nezha-fronted/src/components/cli/consoleNew.vue +++ b/nezha-fronted/src/components/cli/consoleNew.vue @@ -249,6 +249,7 @@ export default { closeSocket () { if (this.terminalSocket) { this.terminalSocket.close() + this.terminalSocket = '' } if (this.term) { this.term.destroy() @@ -305,10 +306,12 @@ export default { }) }, enterStr (message) { - this.terminalSocket.send(message) - setTimeout(()=>{ - this.terminalSocket.send('\n') - }, 100) + if (this.terminalSocket && this.terminal.isLogin) { + this.terminalSocket.send(message) + setTimeout(()=>{ + this.terminalSocket.send('\n') + }, 100) + } } }, mounted () { diff --git a/nezha-fronted/src/components/cli/fileDirectory.vue b/nezha-fronted/src/components/cli/fileDirectory.vue index 708d681be..38ce8eebf 100644 --- a/nezha-fronted/src/components/cli/fileDirectory.vue +++ b/nezha-fronted/src/components/cli/fileDirectory.vue @@ -15,8 +15,12 @@ - - + + + + {{$t('terminal.confirm')}} + +
Show hide File: @@ -29,7 +33,19 @@
- {{$t('overall.name')}} +
+
+ {{$t('overall.name')}} +
+
+
+
+
+
@@ -66,16 +82,18 @@
-
+
- - {{$t('terminal.back')}} + + +
-
+
- {{item.name}} + + {{item.name}} -> {{item.linkName}}
{{bytes(item.size, 0, 0)}} @@ -243,6 +261,7 @@ export default { fileDirectory: '/', sizeOrderType: 0, dateOrderType: 0, + nameOrderType: 0, breadcrumb: [], fileList: [], oldFileList: [], @@ -326,6 +345,7 @@ export default { const path = this.fileDirectory == '/' ? '' : this.fileDirectory this.getSftpPath(path + '/' + item.name) } + return false }, showFileInfo (item) { this.fileInfo = item @@ -352,6 +372,7 @@ export default { arr.pop() const path = arr.join('/') this.getSftpPath(path || '/') + return false }, gotoPath (item, index) { const path = '/' + this.breadcrumb.slice(0, index + 1).join('/') @@ -455,6 +476,15 @@ export default { if (item.isReg) { return 'nz-icon-File' } + if (item.isFifo) { + return 'nz-icon-guandaowenjian' + } + if (item.isSock) { + return 'nz-icon-taojieziwenjian' + } + if (item.isBlk) { + return 'nz-icon-kuaishebeiwenjian' + } return 'nz-icon-File' }, selInfo (item, key) { @@ -491,10 +521,10 @@ export default { return this.momentTz(item.uts * 1000) } if (key === 'Owner') { - return 'Owner' + return item.uid } if (key === 'group') { - return 'group' + return item.gid } if (key === 'permissionsString') { return item.permissionsString @@ -505,6 +535,9 @@ export default { if (this[key] == orderType) { this[key] = 0 this.fileList = this.oldFileList + } else if (orderType == 'nameOrderType') { + this[key] = orderType + this.fileList = this.$loadsh.orderBy(this.oldFileList, [user => user.name.toLowerCase()], [orderType]) } else { this[key] = orderType this.fileList = this.$loadsh.orderBy(this.oldFileList, order, orderType) diff --git a/nezha-fronted/src/components/cli/webSSHNew.vue b/nezha-fronted/src/components/cli/webSSHNew.vue index cb7cee0d0..f8ca3fac2 100644 --- a/nezha-fronted/src/components/cli/webSSHNew.vue +++ b/nezha-fronted/src/components/cli/webSSHNew.vue @@ -20,6 +20,7 @@ { diff --git a/nezha-fronted/src/permission.js b/nezha-fronted/src/permission.js index 83c3c1944..165a35acd 100644 --- a/nezha-fronted/src/permission.js +++ b/nezha-fronted/src/permission.js @@ -8,7 +8,7 @@ import VueResource from 'vue-resource' import bus from '@/libs/bus' Vue.use(VueResource) -const loginWhiteList = ['/setup', '/sys/license/upload', '/sys/license/state', '/sys/appearance', '/i18n', '/externalTerminal'] // 免登陆白名单 +const loginWhiteList = ['/setup', '/sys/license/upload', '/sys/license/state', '/sys/appearance', '/i18n', '/terminal'] // 免登陆白名单 const permissionWhiteList = ['/profile', '/menu', ...loginWhiteList] // 权限白名单 router.beforeEach((to, from, next) => { if (window.entrance) { diff --git a/nezha-fronted/src/router/index.js b/nezha-fronted/src/router/index.js index 76e205baf..c6336f521 100644 --- a/nezha-fronted/src/router/index.js +++ b/nezha-fronted/src/router/index.js @@ -177,7 +177,7 @@ export default new Router({ component: resolve => require(['@/components/page/config/monitor'], resolve) }, { - path: '/terminal', + path: '/terminalSetting', component: resolve => require(['@/components/page/config/terminal'], resolve) }, { @@ -223,7 +223,7 @@ export default new Router({ ] }, { - path: '/externalTerminal', + path: '/terminal', component: resolve => require(['@/components/cli/terminal'], resolve), meta: { hideHeader: true, diff --git a/nezha-fronted/src/store/terminalFile.js b/nezha-fronted/src/store/terminalFile.js index e650b3173..403456b1f 100644 --- a/nezha-fronted/src/store/terminalFile.js +++ b/nezha-fronted/src/store/terminalFile.js @@ -33,7 +33,7 @@ const terminalFile = { }) } if (state.externalTerminal) { - state.externalTerminalWindow = window.open('/ui/externalTerminal', 'terminal') + state.externalTerminalWindow = window.open('/ui/terminal', 'terminal') } else { state.externalTerminalWindow = '' } @@ -51,7 +51,7 @@ const terminalFile = { if (state.externalTerminalWindow) { window.open('', 'terminal') } else { - state.externalTerminalWindow = window.open('/ui/externalTerminal', 'terminal') + state.externalTerminalWindow = window.open('/ui/terminal', 'terminal') } if (item) { state.externalTerminalWindow.postMessage(