|
|
@@ -3,294 +3,385 @@
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
- <title>留氏(衢州)族谱信息管理系统2026</title>
|
|
|
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
|
- <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css" rel="stylesheet">
|
|
|
+ <title>留氏(衢州)族谱信息管理系统</title>
|
|
|
+ <link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
|
|
|
<style>
|
|
|
+ @font-face {
|
|
|
+ font-family: "HuakangWeibei";
|
|
|
+ src: url("{{ url_for('static', filename='fonts/home/HuakangWeibei.ttf') }}") format("truetype");
|
|
|
+ font-weight: normal;
|
|
|
+ font-style: normal;
|
|
|
+ }
|
|
|
+ @font-face {
|
|
|
+ font-family: "AdobeKaiti";
|
|
|
+ src: url("{{ url_for('static', filename='fonts/home/AdobeKaitiStd-Regular.otf') }}") format("opentype");
|
|
|
+ font-weight: normal;
|
|
|
+ font-style: normal;
|
|
|
+ }
|
|
|
+ @font-face {
|
|
|
+ font-family: "SourceHanSans";
|
|
|
+ src: url("{{ url_for('static', filename='fonts/home/SourceHanSansSC-Regular.otf') }}") format("opentype");
|
|
|
+ font-weight: normal;
|
|
|
+ font-style: normal;
|
|
|
+ }
|
|
|
+ @font-face {
|
|
|
+ font-family: "SourceHanSerif";
|
|
|
+ src: url("{{ url_for('static', filename='fonts/home/SourceHanSerifCN-Regular.otf') }}") format("opentype");
|
|
|
+ font-weight: normal;
|
|
|
+ font-style: normal;
|
|
|
+ }
|
|
|
+
|
|
|
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
|
+
|
|
|
body {
|
|
|
- background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
|
|
|
min-height: 100vh;
|
|
|
- font-family: 'Noto Serif SC', 'STSong', serif;
|
|
|
+ overflow-x: hidden;
|
|
|
+ background: #f5f2ed;
|
|
|
}
|
|
|
-
|
|
|
- .hero-section {
|
|
|
- padding: 80px 0;
|
|
|
- position: relative;
|
|
|
+
|
|
|
+ .page-bg {
|
|
|
+ position: fixed;
|
|
|
+ inset: 0;
|
|
|
+ z-index: 0;
|
|
|
+ background: url("{{ url_for('static', filename='images/home/bg.png') }}") center center / cover no-repeat;
|
|
|
}
|
|
|
-
|
|
|
- .title-container {
|
|
|
+
|
|
|
+ .page-wrap {
|
|
|
position: relative;
|
|
|
z-index: 1;
|
|
|
+ min-height: 100vh;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ padding: 52px 20px 32px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .page-inner {
|
|
|
+ width: 100%;
|
|
|
+ max-width: 1058px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /* Logo */
|
|
|
+ .logo {
|
|
|
+ width: 155px;
|
|
|
+ height: auto;
|
|
|
+ margin-bottom: 18px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 主标题 - 华康魏碑 */
|
|
|
.main-title {
|
|
|
- font-size: 2.5rem;
|
|
|
- font-weight: 700;
|
|
|
- color: #ffd700;
|
|
|
- text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
|
|
|
- margin-bottom: 0.5rem;
|
|
|
- }
|
|
|
-
|
|
|
- .subtitle {
|
|
|
- font-size: 1.1rem;
|
|
|
- color: rgba(255,255,255,0.8);
|
|
|
+ font-family: "HuakangWeibei", "STSong", serif;
|
|
|
+ font-size: 32px;
|
|
|
+ font-weight: normal;
|
|
|
+ color: #1a1008;
|
|
|
+ letter-spacing: 0.08em;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 1.4;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 副标题 - 思源宋体 */
|
|
|
+ .edition {
|
|
|
+ font-family: "SourceHanSerif", "STSong", serif;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #6b5840;
|
|
|
+ letter-spacing: 0.3em;
|
|
|
+ padding-left: 0.3em;
|
|
|
+ margin-bottom: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 主按钮 */
|
|
|
+ .action-btns {
|
|
|
+ display: flex;
|
|
|
+ gap: 16px;
|
|
|
+ margin-bottom: 42px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .action-btn {
|
|
|
+ position: relative;
|
|
|
+ display: block;
|
|
|
+ width: 295px;
|
|
|
+ height: 62px;
|
|
|
+ text-decoration: none;
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .action-btn img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .action-btn-text {
|
|
|
+ position: absolute;
|
|
|
+ left: 72px;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ font-family: "HuakangWeibei", "STSong", serif;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #3a2810;
|
|
|
letter-spacing: 0.1em;
|
|
|
+ pointer-events: none;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ .action-btn--scan .action-btn-text {
|
|
|
+ color: #3a3a3a;
|
|
|
+ }
|
|
|
+
|
|
|
+ .action-btn .btn-img-hover { display: none; }
|
|
|
+ .action-btn .btn-img-default { display: block; }
|
|
|
+
|
|
|
+ .action-btn--members:hover .btn-img-default { display: block; }
|
|
|
+ .action-btn--members:hover .btn-img-hover { display: none; }
|
|
|
+
|
|
|
+ .action-btn--scan:hover .btn-img-default { display: none; }
|
|
|
+ .action-btn--scan:hover .btn-img-hover { display: block; }
|
|
|
+
|
|
|
+ /* 快速导航 */
|
|
|
+ .nav-section {
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ margin-bottom: 34px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-frame {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ width: 232px;
|
|
|
+ height: 48px;
|
|
|
+ background: url("{{ url_for('static', filename='images/home/nav-frame.png') }}") center / 100% 100% no-repeat;
|
|
|
+ margin-bottom: 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-frame-title {
|
|
|
+ font-family: "HuakangWeibei", "STSong", serif;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #4a3820;
|
|
|
+ letter-spacing: 0.45em;
|
|
|
+ padding-left: 0.45em;
|
|
|
}
|
|
|
-
|
|
|
- .card-custom {
|
|
|
- background: rgba(255,255,255,0.05);
|
|
|
- backdrop-filter: blur(10px);
|
|
|
- border: 1px solid rgba(255,255,255,0.1);
|
|
|
- border-radius: 16px;
|
|
|
- transition: transform 0.3s, box-shadow 0.3s;
|
|
|
- }
|
|
|
-
|
|
|
- .card-custom:hover {
|
|
|
- transform: translateY(-5px);
|
|
|
- box-shadow: 0 20px 40px rgba(0,0,0,0.3);
|
|
|
- }
|
|
|
-
|
|
|
- .logo-circle {
|
|
|
- width: 120px;
|
|
|
- height: 120px;
|
|
|
- border-radius: 50%;
|
|
|
- background: linear-gradient(135deg, rgba(255,215,0,0.2), rgba(255,215,0,0.1));
|
|
|
- border: 3px solid #ffd700;
|
|
|
+
|
|
|
+ .quick-nav {
|
|
|
display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
- margin: 0 auto;
|
|
|
- box-shadow: 0 0 30px rgba(255,215,0,0.3);
|
|
|
- }
|
|
|
-
|
|
|
- .logo-text {
|
|
|
- font-size: 5rem;
|
|
|
- font-weight: 700;
|
|
|
- color: #ffd700;
|
|
|
- font-family: 'Noto Serif SC', 'STSong', 'SimSun', serif;
|
|
|
- text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
|
|
|
- }
|
|
|
-
|
|
|
- .section-title {
|
|
|
- font-size: 1.25rem;
|
|
|
- color: #ffd700;
|
|
|
- margin-bottom: 1.5rem;
|
|
|
+ gap: 2px;
|
|
|
+ font-family: "AdobeKaiti", "KaiTi", serif;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #2a1a08;
|
|
|
+ line-height: 2.2;
|
|
|
+ }
|
|
|
+
|
|
|
+ .quick-nav a {
|
|
|
+ color: #2a1a08;
|
|
|
+ text-decoration: none;
|
|
|
+ padding: 0 3px;
|
|
|
+ transition: color 0.15s;
|
|
|
+ }
|
|
|
+
|
|
|
+ .quick-nav a:hover { color: #8b6020; }
|
|
|
+
|
|
|
+ .quick-nav .sep {
|
|
|
+ color: rgba(80, 60, 40, 0.35);
|
|
|
+ margin: 0 2px;
|
|
|
+ user-select: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .nav-seal {
|
|
|
+ width: 90px;
|
|
|
+ height: auto;
|
|
|
+ margin: 0 4px;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 编委会面板 */
|
|
|
+ .committee-panel {
|
|
|
+ width: 100%;
|
|
|
+ height: 242px;
|
|
|
+ background: url("{{ url_for('static', filename='images/home/committee-bg.png') }}") center / 100% 100% no-repeat;
|
|
|
position: relative;
|
|
|
- padding-bottom: 10px;
|
|
|
+ padding: 26px 32px 26px 62px;
|
|
|
+ margin-bottom: 36px;
|
|
|
}
|
|
|
-
|
|
|
- .section-title::after {
|
|
|
- content: '';
|
|
|
+
|
|
|
+ .committee-side-label {
|
|
|
position: absolute;
|
|
|
- bottom: 0;
|
|
|
- left: 0;
|
|
|
- width: 60px;
|
|
|
- height: 2px;
|
|
|
- background: linear-gradient(90deg, #ffd700, transparent);
|
|
|
- }
|
|
|
-
|
|
|
- .member-name {
|
|
|
- font-size: 1.1rem;
|
|
|
- color: #fff;
|
|
|
- font-weight: 500;
|
|
|
- }
|
|
|
-
|
|
|
- .member-role {
|
|
|
- font-size: 0.9rem;
|
|
|
- color: rgba(255,255,255,0.6);
|
|
|
- }
|
|
|
-
|
|
|
- .nav-btn {
|
|
|
- background: linear-gradient(135deg, #ffd700, #ffb700);
|
|
|
- border: none;
|
|
|
- color: #1a1a2e;
|
|
|
- font-weight: 600;
|
|
|
- padding: 12px 30px;
|
|
|
- border-radius: 50px;
|
|
|
- transition: all 0.3s;
|
|
|
- }
|
|
|
-
|
|
|
- .nav-btn:hover {
|
|
|
- transform: scale(1.05);
|
|
|
- box-shadow: 0 10px 30px rgba(255,215,0,0.4);
|
|
|
- }
|
|
|
-
|
|
|
- .nav-btn-secondary {
|
|
|
- background: transparent;
|
|
|
- border: 1px solid rgba(255,255,255,0.3);
|
|
|
- color: #fff;
|
|
|
- font-weight: 500;
|
|
|
- padding: 12px 30px;
|
|
|
- border-radius: 50px;
|
|
|
- transition: all 0.3s;
|
|
|
- }
|
|
|
-
|
|
|
- .nav-btn-secondary:hover {
|
|
|
- background: rgba(255,255,255,0.1);
|
|
|
- border-color: rgba(255,255,255,0.5);
|
|
|
- }
|
|
|
-
|
|
|
- .stat-card {
|
|
|
- background: linear-gradient(135deg, rgba(255,215,0,0.1), rgba(255,183,0,0.05));
|
|
|
- border: 1px solid rgba(255,215,0,0.2);
|
|
|
- }
|
|
|
-
|
|
|
- .stat-number {
|
|
|
- font-size: 2.5rem;
|
|
|
- font-weight: 700;
|
|
|
- color: #ffd700;
|
|
|
- }
|
|
|
-
|
|
|
- .stat-label {
|
|
|
- color: rgba(255,255,255,0.7);
|
|
|
- font-size: 0.9rem;
|
|
|
- }
|
|
|
-
|
|
|
- .footer {
|
|
|
- padding: 30px 0;
|
|
|
- border-top: 1px solid rgba(255,255,255,0.1);
|
|
|
- }
|
|
|
-
|
|
|
- .footer-text {
|
|
|
- color: rgba(255,255,255,0.5);
|
|
|
- font-size: 0.9rem;
|
|
|
- }
|
|
|
-
|
|
|
- .logo-img {
|
|
|
- width: 120px;
|
|
|
- height: 120px;
|
|
|
- border-radius: 50%;
|
|
|
- border: 3px solid rgba(255,215,0,0.5);
|
|
|
- box-shadow: 0 10px 30px rgba(255,215,0,0.3);
|
|
|
+ left: 18px;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ writing-mode: vertical-rl;
|
|
|
+ text-orientation: mixed;
|
|
|
+ font-family: "HuakangWeibei", "STSong", serif;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #4a3820;
|
|
|
+ letter-spacing: 0.35em;
|
|
|
+ padding-top: 0.35em;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cm-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: baseline;
|
|
|
+ gap: 10px;
|
|
|
+ padding: 9px 0;
|
|
|
+ border-bottom: 1px dashed rgba(160, 140, 100, 0.3);
|
|
|
+ min-height: 36px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cm-row:last-child { border-bottom: none; }
|
|
|
+
|
|
|
+ .cm-dot {
|
|
|
+ width: 11px;
|
|
|
+ height: 11px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ margin-top: 4px;
|
|
|
+ background: url("{{ url_for('static', filename='images/home/committee-dot.png') }}") center / contain no-repeat;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cm-label {
|
|
|
+ font-family: "HuakangWeibei", "STSong", serif;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #4a3820;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cm-value {
|
|
|
+ font-family: "AdobeKaiti", "KaiTi", serif;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #1a1008;
|
|
|
+ flex: 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ .cm-names {
|
|
|
+ word-spacing: 0.55em;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 页脚 - 思源黑体 */
|
|
|
+ .page-footer {
|
|
|
+ font-family: "SourceHanSans", "PingFang SC", sans-serif;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #7a6a58;
|
|
|
+ text-align: center;
|
|
|
+ letter-spacing: 0.03em;
|
|
|
+ padding: 8px 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .page-footer .sep {
|
|
|
+ margin: 0 10px;
|
|
|
+ color: rgba(120, 100, 80, 0.4);
|
|
|
+ }
|
|
|
+
|
|
|
+ @media (max-width: 680px) {
|
|
|
+ .page-wrap { padding: 32px 16px 24px; }
|
|
|
+ .main-title { font-size: 22px; letter-spacing: 0.04em; }
|
|
|
+ .edition { font-size: 14px; margin-bottom: 24px; }
|
|
|
+ .action-btns { flex-direction: column; align-items: center; gap: 12px; margin-bottom: 32px; }
|
|
|
+ .action-btn { width: 260px; height: 55px; }
|
|
|
+ .action-btn-text { font-size: 16px; left: 64px; }
|
|
|
+ .committee-panel {
|
|
|
+ height: auto;
|
|
|
+ min-height: 220px;
|
|
|
+ padding: 20px 20px 20px 56px;
|
|
|
+ background-size: cover;
|
|
|
+ }
|
|
|
+ .committee-side-label { left: 14px; font-size: 12px; }
|
|
|
+ .cm-row { flex-wrap: wrap; padding: 8px 0; }
|
|
|
+ .quick-nav { font-size: 13px; }
|
|
|
+ .nav-seal { width: 72px; }
|
|
|
}
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
- <!-- Hero Section -->
|
|
|
- <section class="hero-section text-center">
|
|
|
- <div class="container title-container">
|
|
|
- <div class="mb-6">
|
|
|
- <div class="logo-circle">
|
|
|
- <span class="logo-text">留</span>
|
|
|
- </div>
|
|
|
+
|
|
|
+<div class="page-bg"></div>
|
|
|
+
|
|
|
+<div class="page-wrap">
|
|
|
+ <div class="page-inner">
|
|
|
+
|
|
|
+ <img src="{{ url_for('static', filename='images/home/logo.png') }}" alt="留" class="logo">
|
|
|
+
|
|
|
+ <h1 class="main-title">留氏(衢州)族谱信息管理系统</h1>
|
|
|
+ <p class="edition">二〇二五年度版</p>
|
|
|
+
|
|
|
+ <div class="action-btns">
|
|
|
+ <a href="{{ url_for('members') }}" class="action-btn action-btn--members">
|
|
|
+ <img src="{{ url_for('static', filename='images/home/btn-members-gold.png') }}" alt="" class="btn-img-default">
|
|
|
+ <img src="{{ url_for('static', filename='images/home/btn-members-silver.png') }}" alt="" class="btn-img-hover">
|
|
|
+ <span class="action-btn-text">成员管理</span>
|
|
|
+ </a>
|
|
|
+ <a href="{{ url_for('index') }}" class="action-btn action-btn--scan">
|
|
|
+ <img src="{{ url_for('static', filename='images/home/btn-scan-silver.png') }}" alt="" class="btn-img-default">
|
|
|
+ <img src="{{ url_for('static', filename='images/home/btn-scan-gold.png') }}" alt="" class="btn-img-hover">
|
|
|
+ <span class="action-btn-text">扫描件管理</span>
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="nav-section">
|
|
|
+ <div class="nav-frame">
|
|
|
+ <span class="nav-frame-title">快速导航</span>
|
|
|
</div>
|
|
|
- <h1 class="main-title">留氏(衢州)族谱信息管理系统</h1>
|
|
|
- <p class="subtitle">二〇二六年度版</p>
|
|
|
- <div class="mt-6">
|
|
|
- <a href="{{ url_for('members') }}" class="nav-btn me-3">
|
|
|
- <i class="bi bi-people me-2"></i>成员管理
|
|
|
- </a>
|
|
|
- <a href="{{ url_for('index') }}" class="nav-btn-secondary">
|
|
|
- <i class="bi bi-images me-2"></i>扫描件管理
|
|
|
- </a>
|
|
|
+ <div class="quick-nav">
|
|
|
+ <a href="{{ url_for('members') }}">成员列表</a>
|
|
|
+ <span class="sep">/</span>
|
|
|
+ <a href="{{ url_for('add_member') }}">列入新成员</a>
|
|
|
+ <span class="sep">/</span>
|
|
|
+ <a href="{{ url_for('tree') }}">关系树状图</a>
|
|
|
+ <span class="sep">/</span>
|
|
|
+ <img src="{{ url_for('static', filename='images/home/nav-seal.png') }}" alt="系统管理" class="nav-seal">
|
|
|
+ <span class="sep">/</span>
|
|
|
+ <a href="{{ url_for('index') }}">扫描件管理</a>
|
|
|
+ <span class="sep">/</span>
|
|
|
+ {% if session.get('is_super_admin') %}
|
|
|
+ <a href="{{ url_for('pdf_management') }}">家谱管理</a>
|
|
|
+ <span class="sep">/</span>
|
|
|
+ {% endif %}
|
|
|
+ <a href="{{ url_for('suspected_errors') }}">疑似错误汇总</a>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </section>
|
|
|
-
|
|
|
- <!-- Quick Actions -->
|
|
|
- <section class="py-8">
|
|
|
- <div class="container">
|
|
|
- <h2 class="section-title text-center mb-8">快速导航</h2>
|
|
|
- <div class="row g-4">
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('members') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-people text-3xl text-yellow-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">成员列表</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('add_member') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-user-plus text-3xl text-green-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">录入新成员</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('tree') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-tree text-3xl text-blue-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">关系树状图</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('index') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-images text-3xl text-purple-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">扫描件管理</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('pdf_management') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-file-pdf text-3xl text-red-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">家谱管理</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- <div class="col-lg-2 col-md-3 col-sm-4 mb-4">
|
|
|
- <a href="{{ url_for('suspected_errors') }}" class="card-custom p-4 text-center text-decoration-none">
|
|
|
- <i class="bi bi-alert-circle text-3xl text-orange-400 mb-3"></i>
|
|
|
- <div class="text-white font-medium">疑似错误汇总</div>
|
|
|
- </a>
|
|
|
- </div>
|
|
|
+
|
|
|
+ <div class="committee-panel">
|
|
|
+ <div class="committee-side-label">编委会成员</div>
|
|
|
+ <div class="cm-row">
|
|
|
+ <span class="cm-dot"></span>
|
|
|
+ <span class="cm-label">主编:</span>
|
|
|
+ <span class="cm-value">留文正</span>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </section>
|
|
|
-
|
|
|
- <!-- Editorial Board Section -->
|
|
|
- <section class="py-12">
|
|
|
- <div class="container">
|
|
|
- <div class="card-custom p-6">
|
|
|
- <h2 class="section-title">编委会成员</h2>
|
|
|
-
|
|
|
- <!-- Chief Editor -->
|
|
|
- <div style="display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1);">
|
|
|
- <i class="bi bi-star" style="color: #ffd700; font-size: 18px; width: 24px;"></i>
|
|
|
- <span style="color: #ffd700; font-weight: 600; font-size: 16px; width: 100px;">主编:</span>
|
|
|
- <span style="color: #ffffff; font-weight: 700; font-size: 16px;">留文正</span>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- Editorial Committee -->
|
|
|
- <div style="display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1); overflow-x: auto;">
|
|
|
- <i class="bi bi-users" style="color: #4285F4; font-size: 18px; width: 24px; flex-shrink: 0;"></i>
|
|
|
- <span style="color: #4285F4; font-weight: 600; font-size: 16px; width: 100px; flex-shrink: 0;">编委成员:</span>
|
|
|
- <div style="display: flex; flex-wrap: nowrap; gap: 6px;">
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留忠德</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留文正</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留越</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留良吾</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留如藩</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,215,0,0.2); border-radius: 16px; color: #ffd700; font-weight: 500; font-size: 13px; white-space: nowrap;">留强</span>
|
|
|
- <span style="padding: 3px 10px; background: rgba(255,255,255,0.1); border-radius: 16px; color: rgba(255,255,255,0.6); font-size: 13px; white-space: nowrap;">……</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- External Advisor -->
|
|
|
- <div style="display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1);">
|
|
|
- <i class="bi bi-chat-left" style="color: #34A853; font-size: 18px; width: 24px;"></i>
|
|
|
- <span style="color: #34A853; font-weight: 600; font-size: 16px; width: 100px;">外支顾问:</span>
|
|
|
- <span style="color: #ffffff; font-weight: 500; font-size: 16px;">留朝信</span>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- System Planner -->
|
|
|
- <div style="display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.1);">
|
|
|
- <i class="bi bi-grid-3x3" style="color: #9C27B0; font-size: 18px; width: 24px;"></i>
|
|
|
- <span style="color: #9C27B0; font-weight: 600; font-size: 16px; width: 100px;">系统规划:</span>
|
|
|
- <span style="color: #ffffff; font-weight: 500; font-size: 16px;">留越</span>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- Technical Implementation -->
|
|
|
- <div style="display: flex; align-items: center; gap: 12px; padding: 12px 0;">
|
|
|
- <i class="bi bi-code" style="color: #FB8C00; font-size: 18px; width: 24px;"></i>
|
|
|
- <span style="color: #FB8C00; font-weight: 600; font-size: 16px; width: 100px;">技术实现:</span>
|
|
|
- <span style="color: #ffffff; font-weight: 500; font-size: 16px;">春笋秋竹(杭州)科技有限公司</span>
|
|
|
- </div>
|
|
|
+ <div class="cm-row">
|
|
|
+ <span class="cm-dot"></span>
|
|
|
+ <span class="cm-label">编委成员:</span>
|
|
|
+ <span class="cm-value cm-names">留忠德 留文正 留越 留良吾 留如藩 留强 ……</span>
|
|
|
+ </div>
|
|
|
+ <div class="cm-row">
|
|
|
+ <span class="cm-dot"></span>
|
|
|
+ <span class="cm-label">外支顾问:</span>
|
|
|
+ <span class="cm-value">留朝信</span>
|
|
|
+ </div>
|
|
|
+ <div class="cm-row">
|
|
|
+ <span class="cm-dot"></span>
|
|
|
+ <span class="cm-label">技术支持:</span>
|
|
|
+ <span class="cm-value">留越</span>
|
|
|
+ </div>
|
|
|
+ <div class="cm-row">
|
|
|
+ <span class="cm-dot"></span>
|
|
|
+ <span class="cm-label">技术实现:</span>
|
|
|
+ <span class="cm-value">春笋秋竹(杭州)科技有限公司</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </section>
|
|
|
|
|
|
- <!-- Footer -->
|
|
|
- <footer class="footer text-center">
|
|
|
- <div class="container">
|
|
|
- <p class="footer-text">© 2026 留氏(衢州)族谱信息管理系统 | 传承家族文化,弘扬民族精神</p>
|
|
|
- </div>
|
|
|
- </footer>
|
|
|
+ <footer class="page-footer">
|
|
|
+ © 2025 留氏(衢州)族谱信息管理系统
|
|
|
+ <span class="sep">|</span>
|
|
|
+ 传承家族文化,弘扬民族精神
|
|
|
+ </footer>
|
|
|
+
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
|
|
|
- <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
|
+<script src="{{ url_for('static', filename='js/bootstrap.bundle.min.js') }}"></script>
|
|
|
</body>
|
|
|
-</html>
|
|
|
+</html>
|