You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.7 KiB
122 lines
3.7 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>ZFBOX</title>
|
|
<link rel="stylesheet" href="{{ url_for('main.static', filename='css/bootstrap.min.css') }}">
|
|
<!-- <link href="../static/resources/css/bootstrap.min.css" rel="stylesheet"> -->
|
|
|
|
<style>
|
|
.bd-placeholder-img {
|
|
font-size: 1.125rem;
|
|
text-anchor: middle;
|
|
-webkit-user-select: none;
|
|
-moz-user-select: none;
|
|
user-select: none;
|
|
}
|
|
|
|
@media (min-width: 768px) {
|
|
.bd-placeholder-img-lg {
|
|
font-size: 3.5rem;
|
|
}
|
|
}
|
|
|
|
.b-example-divider {
|
|
height: 3rem;
|
|
background-color: rgba(0, 0, 0, .1);
|
|
border: solid rgba(0, 0, 0, .15);
|
|
border-width: 1px 0;
|
|
box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15);
|
|
}
|
|
|
|
.b-example-vr {
|
|
flex-shrink: 0;
|
|
width: 1.5rem;
|
|
height: 100vh;
|
|
}
|
|
|
|
.bi {
|
|
vertical-align: -.125em;
|
|
fill: currentColor;
|
|
}
|
|
|
|
.nav-scroller {
|
|
position: relative;
|
|
z-index: 2;
|
|
height: 2.75rem;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
.nav-scroller .nav {
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
padding-bottom: 1rem;
|
|
margin-top: -1px;
|
|
overflow-x: auto;
|
|
text-align: center;
|
|
white-space: nowrap;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
.captcha-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
</style>
|
|
<!-- Custom styles for this template -->
|
|
<link href="{{ url_for('main.static', filename='css/sign-in.css') }}" rel="stylesheet">
|
|
<!-- <link href="../static/resources/css/sign-in.css" rel="stylesheet"> -->
|
|
</head>
|
|
<body class="text-center">
|
|
<main class="form-signin w-100 m-auto">
|
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
|
{% if messages %}
|
|
<div class="alert alert-danger" role="alert">
|
|
{% for category, message in messages %}
|
|
{{ message }}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
<form id="loginForm" method="post" action="/api/user/login">
|
|
<img class="mb-4" src="images/登录/zf.svg" alt="" width="72" height="57">
|
|
<h1 class="h3 mb-3 fw-normal">ZF-AI</h1>
|
|
|
|
<div class="form-floating">
|
|
<input type="text" class="form-control" id="username" name="username" placeholder="UserName" required>
|
|
<label for="username">UserName</label>
|
|
</div>
|
|
<div class="form-floating">
|
|
<input type="password" class="form-control" id="password" name="password" placeholder="Password" required>
|
|
<label for="password">Password</label>
|
|
</div>
|
|
|
|
<div class="captcha-group">
|
|
<div class="form-floating captcha">
|
|
<input type="text" class="form-control" id="captcha" name="captcha" placeholder="Captcha" required>
|
|
<label for="captcha">Captcha</label>
|
|
</div>
|
|
<img id="captchaImage" src="" alt="Captcha" class="captcha">
|
|
</div>
|
|
|
|
<button class="w-100 btn btn-lg btn-primary" type="submit">登 录</button>
|
|
<p class="mt-5 mb-3 text-muted">© 2024–2025 ZFKJ All Rights Reserved</p>
|
|
</form>
|
|
</main>
|
|
<script>
|
|
const form = document.getElementById('loginForm');
|
|
const captchaImage = document.getElementById('captchaImage');
|
|
captchaImage.src = '/api/user/code?' + new Date().getTime();
|
|
|
|
form.addEventListener('submit', function(event) {
|
|
|
|
});
|
|
|
|
function showError(errorText) {
|
|
alert(errorText);
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|