diff --git a/web/src/assets/scss/mobile.scss b/web/src/assets/scss/mobile.scss
index 5f48fa0..1a85e8a 100644
--- a/web/src/assets/scss/mobile.scss
+++ b/web/src/assets/scss/mobile.scss
@@ -32,6 +32,9 @@
@media screen and (max-width: 968px) {
+ .login_box {
+ width: 86vw!important;
+ }
.view_container {
.aside_container {
display: none;
diff --git a/web/src/views/login/index.vue b/web/src/views/login/index.vue
index 21f1bed..d7f8c2a 100644
--- a/web/src/views/login/index.vue
+++ b/web/src/views/login/index.vue
@@ -13,9 +13,10 @@
:model="loginForm"
:rules="rules"
:hide-required-asterisk="true"
+ :show-message="false"
label-suffix=":"
label-width="90px"
- :show-message="false"
+ label-position="top"
>
-
- 一次性会话
- 自定义(小时)
-
+
+ 一次性会话
+ 当天有效
+ 三天有效
@@ -85,14 +76,19 @@ import { RSAEncrypt } from '@utils/index.js'
// const router = useRouter()
const { proxy: { $store, $api, $message, $messageBox, $router } } = getCurrentInstance()
+const expireEnum = reactive({
+ ONE_SESSION: 'one_session',
+ CURRENT_DAY: 'current_day',
+ THREE_DAY: 'three_day'
+})
+const expireTime = ref(expireEnum.ONE_SESSION)
const loginFormRefs = ref(null)
-const isSession = ref(true)
const notKey = ref(false)
const loading = ref(false)
const loginForm = reactive({
loginName: '',
pwd: '',
- jwtExpires: 8
+ jwtExpires: 1
})
const rules = reactive({
loginName: { required: true, message: '需输入用户名', trigger: 'change' },
@@ -102,9 +98,16 @@ const rules = reactive({
const handleLogin = () => {
loginFormRefs.value.validate().then(() => {
let { jwtExpires, loginName, pwd } = loginForm
- jwtExpires = isSession.value ? '12h' : `${ jwtExpires }h`
- if (!isSession.value) {
- localStorage.setItem('jwtExpires', jwtExpires)
+ switch (expireTime.value) {
+ case expireEnum.ONE_SESSION:
+ jwtExpires = '1h' // 会话登录token1小时有效期,浏览器窗口关闭则立即失效
+ break
+ case expireEnum.CURRENT_DAY:
+ jwtExpires = `${ Math.floor((new Date().setHours(24,0,0,0) - Date.now()) / 1000) }s`
+ break
+ case expireEnum.THREE_DAY:
+ jwtExpires = '3d'
+ break
}
const ciphertext = RSAEncrypt(pwd)
if (ciphertext === -1) return $message.error({ message: '公钥加载失败', center: true })
@@ -112,7 +115,7 @@ const handleLogin = () => {
$api.login({ loginName, ciphertext, jwtExpires })
.then(({ data, msg }) => {
const { token } = data
- $store.setJwtToken(token, isSession.value)
+ $store.setJwtToken(token, expireEnum.ONE_SESSION === expireTime.value)
$store.setUser(loginName)
$message.success({ message: msg || 'success', center: true })
if (loginName === 'admin' && pwd === 'admin') {
@@ -156,7 +159,7 @@ onMounted(async () => {
.login_box {
margin-top: -80px;
- width: 500px;
+ width: 450px;
min-height: 250px;
padding: 20px;
border-radius: 6px;
@@ -182,7 +185,7 @@ onMounted(async () => {
.login-indate {
display: flex;
- flex-wrap: nowrap;
+ // flex-wrap: nowrap;
.input {
margin-left: -25px;
diff --git a/web/src/views/terminal/components/terminal-tab.vue b/web/src/views/terminal/components/terminal-tab.vue
index acabdd5..e7f6a92 100644
--- a/web/src/views/terminal/components/terminal-tab.vue
+++ b/web/src/views/terminal/components/terminal-tab.vue
@@ -334,18 +334,17 @@ function extractLastCdPath(text) {
}
const onData = () => {
- // term.value.off('data', listenerInput)
term.value.onData((key) => {
- // console.log('key: ', key)
- // if (key === '\x03') console.log('Ctrl + C detected')
+ console.log('key: ', key)
if (socketConnected.value === false) return
if (isLongPressCtrl.value || isLongPressAlt.value) {
const keyCode = key.toUpperCase().charCodeAt(0)
+ console.log('keyCode: ', keyCode)
const ansiCode = keyCode - 64
- // console.log('ansiCode:', ansiCode)
+ console.log('ansiCode:', ansiCode)
if (ansiCode >= 1 && ansiCode <= 26) {
const controlChar = String.fromCharCode(ansiCode)
- socket.value.emit('input', controlChar)
+ socket.value.emit('input', isLongPressCtrl.value ? controlChar : `\x1b${ key }`)
}
emit('reset-long-press')
return