Files
2025-10-28 15:50:53 +08:00

925 lines
51 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>夥伴對齊系統 - Partner Alignment System</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.0/font/bootstrap-icons.css" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
</head>
<body>
<!-- Login Modal -->
<div class="modal fade" id="loginModal" tabindex="-1" aria-labelledby="loginModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="loginModalLabel">
<i class="bi bi-person-circle me-2"></i>登入系統
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form id="loginForm">
<div class="mb-3">
<label for="loginUsername" class="form-label">用戶名</label>
<input type="text" class="form-control" id="loginUsername" required>
</div>
<div class="mb-3">
<label for="loginPassword" class="form-label">密碼</label>
<input type="password" class="form-control" id="loginPassword" required>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary">
<i class="bi bi-box-arrow-in-right me-2"></i>登入
</button>
</div>
</form>
<!-- Test Accounts Information -->
<div class="card mt-3">
<div class="card-header bg-light">
<h6 class="mb-0">
<i class="bi bi-info-circle me-2"></i>測試帳號資訊
</h6>
</div>
<div class="card-body p-3">
<div class="row">
<div class="col-12">
<div class="mb-2">
<strong class="text-success">👑 管理員</strong><br>
<small class="text-muted">用戶名: admin | 密碼: admin123</small>
</div>
<div class="mb-2">
<strong class="text-info">👥 HR主管</strong><br>
<small class="text-muted">用戶名: hr_manager | 密碼: hr123</small>
</div>
<div class="mb-2">
<strong class="text-primary">👤 一般用戶</strong><br>
<small class="text-muted">用戶名: user | 密碼: user123</small>
</div>
</div>
</div>
<div class="mt-2">
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="fillLoginForm('admin', 'admin123')">
<i class="bi bi-person-gear me-1"></i>管理員登入
</button>
<button type="button" class="btn btn-sm btn-outline-info" onclick="fillLoginForm('hr_manager', 'hr123')">
<i class="bi bi-people me-1"></i>HR主管登入
</button>
<button type="button" class="btn btn-sm btn-outline-primary" onclick="fillLoginForm('user', 'user123')">
<i class="bi bi-person me-1"></i>一般用戶登入
</button>
</div>
</div>
</div>
<div class="text-center mt-3">
<small class="text-muted">
沒有帳號?<a href="#" id="showRegisterModal">立即註冊</a>
</small>
</div>
</div>
</div>
</div>
</div>
<!-- Register Modal -->
<div class="modal fade" id="registerModal" tabindex="-1" aria-labelledby="registerModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="registerModalLabel">
<i class="bi bi-person-plus me-2"></i>註冊新用戶
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form id="registerForm">
<div class="row">
<div class="col-md-6">
<div class="mb-3">
<label for="regUsername" class="form-label">用戶名 *</label>
<input type="text" class="form-control" id="regUsername" required>
</div>
<div class="mb-3">
<label for="regEmail" class="form-label">電子郵件 *</label>
<input type="email" class="form-control" id="regEmail" required>
</div>
<div class="mb-3">
<label for="regPassword" class="form-label">密碼 *</label>
<input type="password" class="form-control" id="regPassword" required>
</div>
</div>
<div class="col-md-6">
<div class="mb-3">
<label for="regFullName" class="form-label">姓名 *</label>
<input type="text" class="form-control" id="regFullName" required>
</div>
<div class="mb-3">
<label for="regDepartment" class="form-label">部門 *</label>
<select class="form-select" id="regDepartment" required>
<option value="">請選擇部門</option>
<option value="IT">IT部門</option>
<option value="HR">人力資源部</option>
<option value="Finance">財務部</option>
<option value="Marketing">行銷部</option>
<option value="Sales">業務部</option>
<option value="Operations">營運部</option>
</select>
</div>
<div class="mb-3">
<label for="regPosition" class="form-label">職位 *</label>
<input type="text" class="form-control" id="regPosition" required>
</div>
<div class="mb-3">
<label for="regEmployeeId" class="form-label">員工編號 *</label>
<input type="text" class="form-control" id="regEmployeeId" required>
</div>
</div>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-success">
<i class="bi bi-person-check me-2"></i>註冊
</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="#">
<i class="bi bi-people-fill me-2"></i>夥伴對齊系統
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto" id="mainNav">
<li class="nav-item">
<a class="nav-link" href="#dashboard" data-section="dashboard">
<i class="bi bi-speedometer2 me-1"></i>個人儀表板
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#assessment" data-section="assessment">
<i class="bi bi-clipboard-check me-1"></i>能力評估
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#star-feedback" data-section="star-feedback">
<i class="bi bi-star-fill me-1"></i>STAR回饋
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#rankings" data-section="rankings">
<i class="bi bi-trophy-fill me-1"></i>排名系統
</a>
</li>
<li class="nav-item" id="adminNavItem" style="display: none;">
<a class="nav-link" href="#admin" data-section="admin">
<i class="bi bi-gear-fill me-1"></i>系統管理
</a>
</li>
</ul>
<ul class="navbar-nav" id="authNav">
<li class="nav-item">
<button class="btn btn-outline-light" id="loginBtn">
<i class="bi bi-box-arrow-in-right me-1"></i>登入
</button>
</li>
</ul>
<ul class="navbar-nav" id="userNav" style="display: none;">
<!-- Notifications -->
<li class="nav-item dropdown me-3">
<a class="nav-link position-relative" href="#" role="button" data-bs-toggle="dropdown" id="notificationsDropdown">
<i class="bi bi-bell-fill"></i>
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger" id="notificationBadge" style="display: none;">
0
</span>
</a>
<ul class="dropdown-menu dropdown-menu-end" style="width: 350px;">
<li class="dropdown-header d-flex justify-content-between align-items-center">
<span>通知</span>
<button class="btn btn-sm btn-outline-secondary" id="markAllReadBtn">
<i class="bi bi-check-all me-1"></i>全部已讀
</button>
</li>
<li><hr class="dropdown-divider"></li>
<div id="notificationsList" style="max-height: 300px; overflow-y: auto;">
<div class="text-center text-muted py-3">
<i class="bi bi-bell" style="font-size: 2rem;"></i>
<p class="mt-2">暫無通知</p>
</div>
</div>
</ul>
</li>
<!-- User Menu -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
<i class="bi bi-person-circle me-1"></i><span id="userDisplayName">用戶</span>
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#profile" data-section="profile">
<i class="bi bi-person me-2"></i>個人資料
</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#" id="logoutBtn">
<i class="bi bi-box-arrow-right me-2"></i>登出
</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="container-fluid mt-4">
<!-- Login Required Message -->
<div id="loginRequired" class="text-center py-5">
<div class="card mx-auto" style="max-width: 400px;">
<div class="card-body">
<i class="bi bi-shield-lock text-primary" style="font-size: 3rem;"></i>
<h4 class="mt-3">請先登入</h4>
<p class="text-muted">您需要登入才能使用系統功能</p>
<button class="btn btn-primary" id="showLoginBtn">
<i class="bi bi-box-arrow-in-right me-2"></i>立即登入
</button>
</div>
</div>
</div>
<!-- Dashboard Section -->
<div id="dashboard-section" class="section" style="display: none;">
<div class="row">
<div class="col-12">
<h2 class="mb-4">
<i class="bi bi-speedometer2 me-2"></i>個人儀表板
</h2>
</div>
</div>
<div class="row" id="dashboardContent">
<!-- Points Summary -->
<div class="col-md-4 mb-4">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">總積分</h4>
<h2 id="totalPoints">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-trophy-fill" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Monthly Points -->
<div class="col-md-4 mb-4">
<div class="card bg-success text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">本月積分</h4>
<h2 id="monthlyPoints">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-calendar-month" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Current Rank -->
<div class="col-md-4 mb-4">
<div class="card bg-warning text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">當前排名</h4>
<h2 id="currentRank">#0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-award" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Recent Activities -->
<div class="col-md-8 mb-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-clock-history me-2"></i>最近活動
</h5>
</div>
<div class="card-body">
<div id="recentActivities">
<div class="text-center text-muted py-3">
<i class="bi bi-inbox" style="font-size: 2rem;"></i>
<p class="mt-2">暫無最近活動</p>
</div>
</div>
</div>
</div>
</div>
<!-- Achievements -->
<div class="col-md-4 mb-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-patch-check me-2"></i>成就徽章
</h5>
</div>
<div class="card-body">
<div id="achievements">
<div class="text-center text-muted py-3">
<i class="bi bi-award" style="font-size: 2rem;"></i>
<p class="mt-2">暫無成就</p>
</div>
</div>
</div>
</div>
</div>
<!-- Performance Chart -->
<div class="col-12 mb-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-graph-up me-2"></i>積分趨勢
</h5>
</div>
<div class="card-body">
<canvas id="pointsChart" width="400" height="100"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- Assessment Section -->
<div id="assessment-section" class="section" style="display: none;">
<div class="row">
<div class="col-12">
<h2 class="mb-4">
<i class="bi bi-clipboard-check me-2"></i>能力評估
</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">能力評估表單</h5>
</div>
<div class="card-body">
<form id="assessmentForm">
<div class="row mb-3">
<div class="col-md-6">
<label for="assessmentDepartment" class="form-label">部門</label>
<select class="form-select" id="assessmentDepartment" required>
<option value="">請選擇部門</option>
<option value="IT">IT部門</option>
<option value="HR">人力資源部</option>
<option value="Finance">財務部</option>
<option value="Marketing">行銷部</option>
<option value="Sales">業務部</option>
<option value="Operations">營運部</option>
</select>
</div>
<div class="col-md-6">
<label for="assessmentPosition" class="form-label">職位</label>
<input type="text" class="form-control" id="assessmentPosition" required>
</div>
</div>
<div class="mb-3">
<label for="assessmentEmployeeName" class="form-label">員工姓名</label>
<input type="text" class="form-control" id="assessmentEmployeeName">
</div>
<div id="capabilitiesContainer">
<div class="alert alert-info">
<i class="bi bi-info-circle me-2"></i>
請先選擇部門以載入對應的能力評估項目
</div>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary">
<i class="bi bi-check-circle me-2"></i>提交評估
</button>
</div>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">評估說明</h5>
</div>
<div class="card-body">
<p class="text-muted">請根據以下標準進行評估:</p>
<ul class="list-unstyled">
<li><span class="badge bg-danger me-2">L1</span>初級</li>
<li><span class="badge bg-warning me-2">L2</span>中級</li>
<li><span class="badge bg-info me-2">L3</span>高級</li>
<li><span class="badge bg-success me-2">L4</span>專家</li>
<li><span class="badge bg-primary me-2">L5</span>大師</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- STAR Feedback Section -->
<div id="star-feedback-section" class="section" style="display: none;">
<div class="row">
<div class="col-12">
<h2 class="mb-4">
<i class="bi bi-star-fill me-2"></i>STAR回饋系統
</h2>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">STAR回饋表單</h5>
</div>
<div class="card-body">
<form id="starFeedbackForm">
<div class="row mb-3">
<div class="col-md-6">
<label for="evaluatorName" class="form-label">評估者姓名</label>
<input type="text" class="form-control" id="evaluatorName" required>
</div>
<div class="col-md-6">
<label for="evaluateeName" class="form-label">被評估者姓名</label>
<input type="text" class="form-control" id="evaluateeName" required>
</div>
</div>
<div class="row mb-3">
<div class="col-md-6">
<label for="evaluateeDepartment" class="form-label">被評估者部門</label>
<select class="form-select" id="evaluateeDepartment" required>
<option value="">請選擇部門</option>
<option value="IT">IT部門</option>
<option value="HR">人力資源部</option>
<option value="Finance">財務部</option>
<option value="Marketing">行銷部</option>
<option value="Sales">業務部</option>
<option value="Operations">營運部</option>
</select>
</div>
<div class="col-md-6">
<label for="evaluateePosition" class="form-label">被評估者職位</label>
<input type="text" class="form-control" id="evaluateePosition" required>
</div>
</div>
<div class="mb-3">
<label for="situation" class="form-label">情況 (Situation)</label>
<textarea class="form-control" id="situation" rows="3" required></textarea>
</div>
<div class="mb-3">
<label for="task" class="form-label">任務 (Task)</label>
<textarea class="form-control" id="task" rows="3" required></textarea>
</div>
<div class="mb-3">
<label for="action" class="form-label">行動 (Action)</label>
<textarea class="form-control" id="action" rows="3" required></textarea>
</div>
<div class="mb-3">
<label for="result" class="form-label">結果 (Result)</label>
<textarea class="form-control" id="result" rows="3" required></textarea>
</div>
<div class="mb-3">
<label for="score" class="form-label">評分 (1-5分)</label>
<select class="form-select" id="score" required>
<option value="">請選擇評分</option>
<option value="1">1分 - 需要改進</option>
<option value="2">2分 - 基本達標</option>
<option value="3">3分 - 良好</option>
<option value="4">4分 - 優秀</option>
<option value="5">5分 - 卓越</option>
</select>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary">
<i class="bi bi-star me-2"></i>提交回饋
</button>
</div>
</form>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">STAR方法說明</h5>
</div>
<div class="card-body">
<p class="text-muted">STAR方法是一種結構化的回饋方式</p>
<ul class="list-unstyled">
<li><strong>S</strong> - Situation: 描述當時的情況</li>
<li><strong>T</strong> - Task: 說明需要完成的任務</li>
<li><strong>A</strong> - Action: 描述採取的具體行動</li>
<li><strong>R</strong> - Result: 說明最終的結果</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- Rankings Section -->
<div id="rankings-section" class="section" style="display: none;">
<div class="row">
<div class="col-12">
<h2 class="mb-4">
<i class="bi bi-trophy-fill me-2"></i>排名系統
</h2>
</div>
</div>
<!-- Advanced Filters -->
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-funnel me-2"></i>高級篩選
</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3">
<label for="rankingDepartment" class="form-label">部門</label>
<select class="form-select" id="rankingDepartment">
<option value="">全部部門</option>
<option value="IT">IT部門</option>
<option value="HR">人力資源部</option>
<option value="Finance">財務部</option>
<option value="Marketing">行銷部</option>
<option value="Sales">業務部</option>
<option value="Operations">營運部</option>
</select>
</div>
<div class="col-md-3">
<label for="rankingPosition" class="form-label">職位</label>
<input type="text" class="form-control" id="rankingPosition" placeholder="輸入職位關鍵字">
</div>
<div class="col-md-2">
<label for="minPoints" class="form-label">最低積分</label>
<input type="number" class="form-control" id="minPoints" placeholder="0">
</div>
<div class="col-md-2">
<label for="maxPoints" class="form-label">最高積分</label>
<input type="number" class="form-control" id="maxPoints" placeholder="無限制">
</div>
<div class="col-md-2">
<label class="form-label">&nbsp;</label>
<div class="d-grid">
<button class="btn btn-primary" id="applyFilters">
<i class="bi bi-search me-1"></i>篩選
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Statistics Summary -->
<div class="row mb-4" id="rankingStats" style="display: none;">
<div class="col-md-2">
<div class="card bg-primary text-white">
<div class="card-body text-center">
<h6 class="card-title">總人數</h6>
<h4 id="totalCount">0</h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="card bg-success text-white">
<div class="card-body text-center">
<h6 class="card-title">平均積分</h6>
<h4 id="avgPoints">0</h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="card bg-info text-white">
<div class="card-body text-center">
<h6 class="card-title">中位數</h6>
<h4 id="medianPoints">0</h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="card bg-warning text-white">
<div class="card-body text-center">
<h6 class="card-title">最高分</h6>
<h4 id="maxPoints">0</h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="card bg-secondary text-white">
<div class="card-body text-center">
<h6 class="card-title">最低分</h6>
<h4 id="minPoints">0</h4>
</div>
</div>
</div>
<div class="col-md-2">
<div class="card bg-dark text-white">
<div class="card-body text-center">
<h6 class="card-title">標準差</h6>
<h4 id="stdDev">0</h4>
</div>
</div>
</div>
</div>
<!-- Rankings List -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">
<i class="bi bi-list-ol me-2"></i>排名列表
</h5>
</div>
<div class="card-body">
<div id="rankingsList">
<div class="text-center text-muted py-4">
<i class="bi bi-trophy" style="font-size: 3rem;"></i>
<p class="mt-2">點擊篩選按鈕查看排名</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Admin Section -->
<div id="admin-section" class="section" style="display: none;">
<div class="row">
<div class="col-12">
<h2 class="mb-4">
<i class="bi bi-gear-fill me-2"></i>系統管理
</h2>
</div>
</div>
<!-- Statistics Overview -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">總用戶數</h4>
<h2 id="adminTotalUsers">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-people-fill" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-success text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">活躍用戶</h4>
<h2 id="adminActiveUsers">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-person-check-fill" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-info text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">總評估數</h4>
<h2 id="adminTotalAssessments">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-clipboard-check" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-warning text-white">
<div class="card-body">
<div class="d-flex justify-content-between">
<div>
<h4 class="card-title">總回饋數</h4>
<h2 id="adminTotalFeedbacks">0</h2>
</div>
<div class="align-self-center">
<i class="bi bi-star-fill" style="font-size: 2rem;"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Management Tabs -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs" id="adminTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="users-tab" data-bs-toggle="tab" data-bs-target="#users" type="button" role="tab">
<i class="bi bi-people me-2"></i>用戶管理
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="capabilities-management-tab" data-bs-toggle="tab" data-bs-target="#capabilities-management" type="button" role="tab">
<i class="bi bi-list-check me-2"></i>能力項目管理
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="dept-capabilities-tab" data-bs-toggle="tab" data-bs-target="#dept-capabilities" type="button" role="tab">
<i class="bi bi-diagram-3 me-2"></i>部門能力設定
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="statistics-tab" data-bs-toggle="tab" data-bs-target="#statistics" type="button" role="tab">
<i class="bi bi-graph-up me-2"></i>統計分析
</button>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content" id="adminTabContent">
<div class="tab-pane fade show active" id="users" role="tabpanel">
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="mb-0">用戶列表</h5>
<button class="btn btn-primary" id="refreshUsersBtn">
<i class="bi bi-arrow-clockwise me-1"></i>刷新
</button>
</div>
<div id="usersManagement">
<div class="text-center text-muted py-4">
<i class="bi bi-people" style="font-size: 3rem;"></i>
<p class="mt-2">點擊刷新按鈕載入用戶列表</p>
</div>
</div>
</div>
<div class="tab-pane fade" id="capabilities-management" role="tabpanel">
<div class="row mb-3">
<div class="col-12">
<h5><i class="bi bi-upload me-2"></i>匯入能力項目 (CSV)</h5>
<div class="alert alert-info">
<strong>CSV 格式說明:</strong>
<ul class="mb-0 mt-2">
<li>第一行為標題:<code>name,l1_description,l2_description,l3_description,l4_description,l5_description</code></li>
<li>每一行代表一個能力項目</li>
<li>範例:<code>溝通能力,基本溝通,有效溝通,專業溝通,領導溝通,戰略溝通</code></li>
</ul>
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-md-8">
<input type="file" class="form-control" id="csvFileInput" accept=".csv">
</div>
<div class="col-md-4">
<button class="btn btn-primary" id="importCsvBtn">
<i class="bi bi-upload me-1"></i>匯入 CSV
</button>
<button class="btn btn-outline-secondary" id="downloadTemplateCsvBtn">
<i class="bi bi-download me-1"></i>下載範本
</button>
</div>
</div>
<hr>
<div class="row">
<div class="col-12">
<h5>現有能力項目</h5>
<button class="btn btn-success btn-sm mb-3" id="refreshCapabilitiesBtn">
<i class="bi bi-arrow-clockwise me-1"></i>刷新列表
</button>
<div id="capabilitiesList">
<div class="text-center text-muted py-4">
<i class="bi bi-list-check" style="font-size: 3rem;"></i>
<p class="mt-2">點擊刷新按鈕載入能力項目列表</p>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="dept-capabilities" role="tabpanel">
<div class="row mb-3">
<div class="col-md-4">
<label for="deptSelect" class="form-label"><strong>選擇部門</strong></label>
<select class="form-select" id="deptSelect">
<option value="">-- 請選擇部門 --</option>
<option value="IT">IT部門</option>
<option value="HR">人力資源部</option>
<option value="Finance">財務部</option>
<option value="Marketing">行銷部</option>
<option value="Sales">業務部</option>
<option value="Operations">營運部</option>
</select>
</div>
<div class="col-md-8 d-flex align-items-end">
<button class="btn btn-success me-2" id="saveDeptCapabilitiesBtn" disabled>
<i class="bi bi-check-circle me-1"></i>儲存設定
</button>
<button class="btn btn-outline-secondary" id="loadDeptCapabilitiesBtn" disabled>
<i class="bi bi-arrow-clockwise me-1"></i>載入現有設定
</button>
</div>
</div>
<hr>
<div id="capabilitiesCheckboxList">
<div class="text-center text-muted py-4">
<i class="bi bi-diagram-3" style="font-size: 3rem;"></i>
<p class="mt-2">請先選擇部門</p>
</div>
</div>
</div>
<div class="tab-pane fade" id="statistics" role="tabpanel">
<div class="row">
<div class="col-md-6">
<h5 class="mb-3">部門分布</h5>
<div id="departmentStats">
<div class="text-center text-muted py-3">
<i class="bi bi-pie-chart" style="font-size: 2rem;"></i>
<p class="mt-2">載入中...</p>
</div>
</div>
</div>
<div class="col-md-6">
<h5 class="mb-3">積分統計</h5>
<div id="pointsStats">
<div class="text-center text-muted py-3">
<i class="bi bi-bar-chart" style="font-size: 2rem;"></i>
<p class="mt-2">載入中...</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Loading Spinner -->
<div id="loadingSpinner" class="position-fixed top-50 start-50 translate-middle" style="display: none; z-index: 9999;">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">載入中...</span>
</div>
</div>
<!-- Toast Container -->
<div class="toast-container position-fixed bottom-0 end-0 p-3">
<div id="toast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-header">
<i class="bi bi-info-circle-fill text-primary me-2"></i>
<strong class="me-auto">系統通知</strong>
<button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
<div class="toast-body" id="toastMessage">
<!-- Toast message will be inserted here -->
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="{{ url_for('static', filename='js/app.js') }}"></script>
</body>
</html>