121 lines
5.2 KiB
HTML
121 lines
5.2 KiB
HTML
{% extends "base.html" %}
|
||
|
||
{% block title %}添加用户 - 图书管理系统{% endblock %}
|
||
|
||
{% block head %}
|
||
<link rel="stylesheet" href="{{ url_for('static', filename='css/user-form.css') }}">
|
||
{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="user-form-container">
|
||
<div class="page-header">
|
||
<h1>添加用户</h1>
|
||
<div class="actions">
|
||
<a href="{{ url_for('user.user_list') }}" class="btn btn-secondary">
|
||
<i class="fas fa-arrow-left"></i> 返回用户列表
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-card">
|
||
<form id="addUserForm" method="POST" action="{{ url_for('user.add_user') }}">
|
||
{% if error %}
|
||
<div class="alert alert-danger">{{ error }}</div>
|
||
{% endif %}
|
||
|
||
<div class="form-group required">
|
||
<label for="username">用户名</label>
|
||
<input type="text" id="username" name="username" class="form-control" required
|
||
placeholder="请输入用户名(3-20个字符)" minlength="3" maxlength="20">
|
||
<small class="form-text text-muted">用户名将用于登录,不可重复</small>
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="password">密码</label>
|
||
<div class="password-field">
|
||
<input type="password" id="password" name="password" class="form-control" required
|
||
placeholder="请输入密码(至少6位)" minlength="6">
|
||
<button type="button" class="toggle-password">
|
||
<i class="fas fa-eye"></i>
|
||
</button>
|
||
</div>
|
||
<small class="form-text text-muted">密码至少包含6个字符</small>
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="confirm_password">确认密码</label>
|
||
<div class="password-field">
|
||
<input type="password" id="confirm_password" name="confirm_password" class="form-control" required
|
||
placeholder="请再次输入密码" minlength="6">
|
||
<button type="button" class="toggle-password">
|
||
<i class="fas fa-eye"></i>
|
||
</button>
|
||
</div>
|
||
<small id="password-match-message" class="form-text"></small>
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="email">电子邮箱</label>
|
||
<div class="input-with-button">
|
||
<input type="email" id="email" name="email" class="form-control" required
|
||
placeholder="请输入有效的电子邮箱">
|
||
<button type="button" id="sendVerificationCode" class="btn btn-outline-primary">
|
||
发送验证码
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="verification_code">验证码</label>
|
||
<input type="text" id="verification_code" name="verification_code" class="form-control" required
|
||
placeholder="请输入邮箱验证码" maxlength="6">
|
||
<small class="form-text text-muted">请输入发送到邮箱的6位验证码</small>
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="nickname">昵称</label>
|
||
<input type="text" id="nickname" name="nickname" class="form-control"
|
||
placeholder="请输入昵称(选填)" maxlength="64">
|
||
</div>
|
||
|
||
<div class="form-group">
|
||
<label for="phone">手机号码</label>
|
||
<input type="tel" id="phone" name="phone" class="form-control"
|
||
placeholder="请输入手机号码(选填)" maxlength="20">
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="role_id">用户角色</label>
|
||
<select id="role_id" name="role_id" class="form-control" required>
|
||
{% for role in roles %}
|
||
<option value="{{ role.id }}">{{ role.role_name }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
<small class="form-text text-muted">默认为普通用户,请根据需要选择合适的角色</small>
|
||
</div>
|
||
|
||
<div class="form-group required">
|
||
<label for="status">账号状态</label>
|
||
<select id="status" name="status" class="form-control" required>
|
||
<option value="1" selected>正常</option>
|
||
<option value="0">禁用</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-actions">
|
||
<button type="submit" class="btn btn-primary">
|
||
<i class="fas fa-save"></i> 保存用户
|
||
</button>
|
||
<button type="reset" class="btn btn-secondary">
|
||
<i class="fas fa-undo"></i> 重置表单
|
||
</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|
||
|
||
{% block scripts %}
|
||
<script src="{{ url_for('static', filename='js/user-add.js') }}"></script>
|
||
{% endblock %}
|