270 lines
14 KiB
HTML
270 lines
14 KiB
HTML
{% extends "layout/base.html" %}
|
|
|
|
{% block title %}个人信息 - CHM考勤管理系统{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container-fluid py-4">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<!-- 页面标题 -->
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h2><i class="fas fa-user-circle me-2"></i>个人信息</h2>
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="{{ url_for('student.dashboard') }}">首页</a></li>
|
|
<li class="breadcrumb-item active">个人信息</li>
|
|
</ol>
|
|
</nav>
|
|
</div>
|
|
|
|
<!-- 个人信息卡片 -->
|
|
<div class="row">
|
|
<div class="col-lg-10 mx-auto">
|
|
{% if user_info %}
|
|
<!-- 基本信息卡片 -->
|
|
<div class="card shadow mb-4">
|
|
<div class="card-header bg-primary text-white">
|
|
<h5 class="mb-0"><i class="fas fa-id-card me-2"></i>基本信息</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<!-- 左侧个人信息 -->
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">学号</label>
|
|
<div class="info-value">{{ user_info.student_number }}</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">姓名</label>
|
|
<div class="info-value">
|
|
{% if user_info.name %}
|
|
{{ user_info.name }}
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">性别</label>
|
|
<div class="info-value">
|
|
{% if user_info.gender %}
|
|
<span class="badge bg-{{ 'info' if user_info.gender == '男' else 'warning' }}">
|
|
<i class="fas fa-{{ 'mars' if user_info.gender == '男' else 'venus' }} me-1"></i>
|
|
{{ user_info.gender }}
|
|
</span>
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">年级</label>
|
|
<div class="info-value">
|
|
{% if user_info.grade %}
|
|
{{ user_info.grade }}级
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">手机号</label>
|
|
<div class="info-value">
|
|
{% if user_info.phone %}
|
|
{{ user_info.phone }}
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 右侧学术信息 -->
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">导师</label>
|
|
<div class="info-value">
|
|
{% if user_info.supervisor %}
|
|
{{ user_info.supervisor }}
|
|
{% else %}
|
|
<span class="text-muted">未分配</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">学院</label>
|
|
<div class="info-value">
|
|
{% if user_info.college %}
|
|
{{ user_info.college }}
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">专业</label>
|
|
<div class="info-value">
|
|
{% if user_info.major %}
|
|
{{ user_info.major }}
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">学位类型</label>
|
|
<div class="info-value">
|
|
{% if user_info.degree_type %}
|
|
<span class="badge bg-success">{{ user_info.degree_type }}</span>
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">入学日期</label>
|
|
<div class="info-value">
|
|
{% if user_info.enrollment_date %}
|
|
{{ user_info.enrollment_date.strftime('%Y年%m月%d日') }}
|
|
{% else %}
|
|
<span class="text-muted">未设置</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 账户信息卡片 -->
|
|
<div class="card shadow mb-4">
|
|
<div class="card-header bg-secondary text-white">
|
|
<h5 class="mb-0"><i class="fas fa-user-cog me-2"></i>账户信息</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">用户ID</label>
|
|
<div class="info-value">{{ user_info.user_id }}</div>
|
|
</div>
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">角色</label>
|
|
<div class="info-value">
|
|
<span class="badge bg-primary">
|
|
<i class="fas fa-user me-1"></i>学生
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">账户状态</label>
|
|
<div class="info-value">
|
|
{% if user_info.is_active %}
|
|
<span class="badge bg-success">
|
|
<i class="fas fa-check-circle me-1"></i>活跃
|
|
</span>
|
|
{% else %}
|
|
<span class="badge bg-danger">
|
|
<i class="fas fa-times-circle me-1"></i>已禁用
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% if user_info.status %}
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">在读状态</label>
|
|
<div class="info-value">
|
|
<span class="badge bg-{{ 'success' if user_info.status == '在读' else 'secondary' }}">
|
|
{{ user_info.status }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">最后登录</label>
|
|
<div class="info-value">
|
|
{% if user_info.last_login %}
|
|
{{ user_info.last_login.strftime('%Y-%m-%d %H:%M:%S') }}
|
|
{% else %}
|
|
<span class="text-muted">从未登录</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="info-group mb-3">
|
|
<label class="form-label text-muted">账户创建时间</label>
|
|
<div class="info-value">{{ user_info.created_at.strftime('%Y-%m-%d %H:%M:%S') }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 操作按钮 -->
|
|
<div class="text-center">
|
|
<a href="{{ url_for('auth.change_password') }}" class="btn btn-warning btn-lg me-3">
|
|
<i class="fas fa-key me-1"></i>修改密码
|
|
</a>
|
|
<a href="{{ url_for('student.dashboard') }}" class="btn btn-secondary btn-lg">
|
|
<i class="fas fa-arrow-left me-1"></i>返回首页
|
|
</a>
|
|
</div>
|
|
|
|
{% else %}
|
|
<div class="alert alert-warning">
|
|
<i class="fas fa-exclamation-triangle me-2"></i>
|
|
无法获取用户信息,请联系管理员
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.info-group {
|
|
border-left: 3px solid #007bff;
|
|
padding-left: 15px;
|
|
}
|
|
|
|
.info-value {
|
|
font-weight: 500;
|
|
font-size: 1.1em;
|
|
color: #333;
|
|
}
|
|
|
|
.card {
|
|
border: none;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.card-header {
|
|
border-radius: 10px 10px 0 0 !important;
|
|
}
|
|
|
|
.text-muted {
|
|
font-style: italic;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.info-group {
|
|
margin-bottom: 1rem !important;
|
|
}
|
|
|
|
.btn-lg {
|
|
width: 100%;
|
|
margin-bottom: 10px;
|
|
}
|
|
}
|
|
</style>
|
|
{% endblock %}
|