From e43ada57f7ffdaf570c54b19316a7f0cacfaec1f Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 27 三月 2026 12:21:59 +0800
Subject: [PATCH] #
---
src/main/webapp/views/login.html | 53 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index 47918db..73d60c3 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -260,15 +260,43 @@
}
.login-submit {
- width: 100%;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
font-weight: 600;
border-radius: 16px;
- margin-top: 6px;
box-shadow: 0 14px 24px rgba(46, 115, 223, 0.28);
+ }
+
+ .login-actions {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+ margin-top: 6px;
+ }
+
+ .login-actions .el-button {
+ width: 100%;
+ margin-left: 0;
+ box-sizing: border-box;
+ }
+
+ .login-passkey {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 16px;
+ border-color: rgba(71, 110, 162, 0.24);
+ color: #26496a;
+ background: rgba(245, 249, 255, 0.96);
+ }
+
+ .login-passkey-tip {
+ margin-top: 12px;
+ color: #7b8c9d;
+ font-size: 12px;
+ line-height: 1.7;
}
.tools-dialog .el-dialog,
@@ -484,7 +512,7 @@
<div class="login-subtitle">{{ text('login.subtitle', '璇疯緭鍏ヨ处鍙峰拰瀵嗙爜杩涘叆绯荤粺銆�') }}</div>
</div>
<div class="login-body">
- <el-form ref="loginForm" class="login-form" :model="loginForm" :rules="loginRules" @submit.native.prevent>
+ <el-form ref="loginForm" class="login-form" :model="loginForm" :rules="loginRules" :validate-on-rule-change="false" @submit.native.prevent>
<el-form-item prop="mobile">
<el-input v-model.trim="loginForm.mobile" :placeholder="text('login.username', '璐﹀彿')" clearable @keyup.enter.native="handleLogin">
<i slot="prefix" class="el-input__icon el-icon-user"></i>
@@ -495,9 +523,17 @@
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
</el-input>
</el-form-item>
- <el-button class="login-submit" type="primary" :loading="loginLoading" @click="handleLogin">
- {{ text('login.submit', '鐧诲綍') }}
- </el-button>
+ <div class="login-actions">
+ <el-button class="login-submit" type="primary" :loading="loginLoading" @click="handleLogin">
+ {{ text('login.submit', '鐧诲綍') }}
+ </el-button>
+ <el-button class="login-passkey" plain :loading="passkeyLoading" @click="handlePasskeyLogin">
+ {{ text('login.passkey.submit', '閫氳瀵嗛挜鐧诲綍') }}
+ </el-button>
+ </div>
+ <div class="login-passkey-tip">
+ {{ text('login.passkey.tip', '鏀寔浣跨敤璁惧鐢熺墿璇嗗埆鎴栧畨鍏ㄥ瘑閽ョ櫥褰曘�傚彲鍏堣緭鍏ヨ处鍙风缉灏忓嚟璇佽寖鍥达紝鐣欑┖鍒欏皾璇曞彂鐜板紡鐧诲綍銆�') }}
+ </div>
</el-form>
</div>
</section>
@@ -532,7 +568,7 @@
append-to-body>
<div class="mfa-tip">{{ text('login.mfa.tip', '璐﹀彿瀵嗙爜宸查�氳繃锛岃杈撳叆韬唤楠岃瘉鍣ㄤ腑鐨� 6 浣嶅姩鎬侀獙璇佺爜鍚庣户缁櫥褰曘��') }}</div>
<div class="mfa-account">{{ text('login.mfa.currentAccount', '褰撳墠璐﹀彿锛�') }}<strong>{{ mfaPending.username || loginForm.mobile || '--' }}</strong></div>
- <el-form ref="mfaForm" :model="mfaForm" :rules="mfaRules" label-width="82px" size="small" @submit.native.prevent>
+ <el-form ref="mfaForm" :model="mfaForm" :rules="mfaRules" :validate-on-rule-change="false" label-width="82px" size="small" @submit.native.prevent>
<el-form-item :label="text('login.mfa.codeLabel', '楠岃瘉鐮�')" prop="code">
<el-input v-model.trim="mfaForm.code" maxlength="6" :placeholder="text('login.mfa.codePlaceholder', '璇疯緭鍏�6浣嶅姩鎬佺爜')" @keyup.enter.native="handleMfaLogin"></el-input>
</el-form-item>
@@ -567,7 +603,8 @@
<script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../static/js/tools/md5.js"></script>
<script type="text/javascript" src="../static/js/common.js"></script>
+<script type="text/javascript" src="../static/js/webauthn-utils.js"></script>
<script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
<script type="text/javascript" src="../static/vue/element/element.js"></script>
-<script type="text/javascript" src="../static/js/login/login.js?v=20260311_login_mfa"></script>
+<script type="text/javascript" src="../static/js/login/login.js?v=20260311_login_passkey"></script>
</html>
--
Gitblit v1.9.1