yuanxingsheji/员工保险健康管理/管理员页面.html

2072 lines
82 KiB
HTML
Raw 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-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>员工保险与健康管理系统 - 管理员</title>
<style>
:root {
--primary-color: #3498db;
--secondary-color: #2c3e50;
--success-color: #27ae60;
--danger-color: #e74c3c;
--warning-color: #f39c12;
--light-color: #f8f9fa;
--dark-color: #343a40;
--gray-color: #7f8c8d;
--border-color: #ddd;
}
body {
font-family: 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 0;
background-color: #f4f6f9;
color: #333;
}
.header {
background-color: var(--secondary-color);
color: white;
padding: 15px 20px;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.header h1 {
margin: 0;
font-size: 22px;
}
.user-info {
display: flex;
align-items: center;
}
.user-info span {
margin-right: 15px;
}
.logout-btn {
background-color: var(--danger-color);
color: white;
border: none;
padding: 5px 10px;
border-radius: 3px;
cursor: pointer;
transition: background-color 0.3s;
}
.logout-btn:hover {
background-color: #c0392b;
}
.container {
display: flex;
min-height: calc(100vh - 60px);
}
.sidebar {
width: 220px;
background-color: #34495e;
color: white;
padding: 20px 0;
transition: width 0.3s;
}
.sidebar-menu {
list-style: none;
padding: 0;
margin: 0;
}
.sidebar-menu li {
padding: 12px 20px;
cursor: pointer;
transition: background-color 0.3s;
display: flex;
align-items: center;
}
.sidebar-menu li i {
margin-right: 10px;
width: 20px;
text-align: center;
}
.sidebar-menu li:hover {
background-color: var(--secondary-color);
}
.sidebar-menu li.active {
background-color: var(--secondary-color);
border-left: 4px solid var(--primary-color);
}
.main-content {
flex: 1;
padding: 20px;
transition: margin-left 0.3s;
}
.card {
background-color: white;
border-radius: 5px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
padding: 20px;
margin-bottom: 20px;
}
.card-header {
border-bottom: 1px solid var(--border-color);
padding-bottom: 10px;
margin-bottom: 15px;
display: flex;
justify-content: space-between;
align-items: center;
}
.card-header h2 {
margin: 0;
font-size: 18px;
color: var(--secondary-color);
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
padding: 12px 15px;
text-align: left;
border-bottom: 1px solid var(--border-color);
}
th {
background-color: var(--light-color);
font-weight: bold;
color: var(--secondary-color);
}
tr:hover {
background-color: #f5f5f5;
}
.btn {
padding: 8px 12px;
border-radius: 3px;
border: none;
cursor: pointer;
font-size: 14px;
margin-right: 5px;
transition: background-color 0.3s;
display: inline-flex;
align-items: center;
}
.btn i {
margin-right: 5px;
}
.btn-primary {
background-color: var(--primary-color);
color: white;
}
.btn-success {
background-color: var(--success-color);
color: white;
}
.btn-danger {
background-color: var(--danger-color);
color: white;
}
.btn-warning {
background-color: var(--warning-color);
color: white;
}
.btn-info {
background-color: #17a2b8;
color: white;
}
.btn-primary:hover {
background-color: #2980b9;
}
.btn-success:hover {
background-color: #219653;
}
.btn-danger:hover {
background-color: #c0392b;
}
.btn-warning:hover {
background-color: #e67e22;
}
.btn-info:hover {
background-color: #138496;
}
.status-active {
color: var(--success-color);
font-weight: bold;
}
.status-expired {
color: var(--danger-color);
font-weight: bold;
}
.status-pending {
color: var(--warning-color);
font-weight: bold;
}
.status-warning {
color: var(--warning-color);
font-weight: bold;
}
.insurance-detail {
display: none;
margin-top: 15px;
padding: 15px;
background-color: #f9f9f9;
border-radius: 5px;
border-left: 4px solid var(--primary-color);
}
.detail-row {
display: flex;
margin-bottom: 10px;
}
.detail-label {
width: 150px;
font-weight: bold;
color: #555;
}
.detail-value {
flex: 1;
}
.policy-benefits {
margin-top: 15px;
padding-top: 15px;
border-top: 1px solid var(--border-color);
}
.benefit-item {
display: flex;
justify-content: space-between;
padding: 8px 0;
border-bottom: 1px dashed var(--border-color);
}
.text-success {
color: var(--success-color);
}
.text-warning {
color: var(--warning-color);
}
.text-danger {
color: var(--danger-color);
}
.text-info {
color: #17a2b8;
}
.file-list {
list-style: none;
padding: 0;
}
.file-item {
display: flex;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid var(--border-color);
align-items: center;
}
.file-item:hover {
background-color: #f9f9f9;
}
.file-icon {
margin-right: 10px;
color: var(--primary-color);
}
.profile-section {
display: flex;
margin-bottom: 20px;
}
.profile-avatar {
width: 100px;
height: 100px;
border-radius: 50%;
background-color: #eee;
margin-right: 20px;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.profile-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.profile-info {
flex: 1;
}
.profile-name {
font-size: 20px;
font-weight: bold;
margin-bottom: 5px;
}
.profile-meta {
color: var(--gray-color);
margin-bottom: 10px;
}
.profile-actions {
margin-top: 10px;
}
.info-table {
width: 100%;
}
.info-table td {
padding: 10px;
border-bottom: 1px solid var(--border-color);
}
.info-table td:first-child {
width: 30%;
font-weight: bold;
color: #555;
}
.search-bar {
display: flex;
margin-bottom: 20px;
gap: 10px;
}
.search-bar input {
flex: 1;
padding: 10px;
border: 1px solid var(--border-color);
border-radius: 4px;
}
.search-bar button {
padding: 10px 15px;
background-color: var(--primary-color);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s;
}
.search-bar button:hover {
background-color: #2980b9;
}
.pagination {
display: flex;
justify-content: center;
margin-top: 20px;
}
.pagination a {
color: var(--primary-color);
padding: 8px 16px;
text-decoration: none;
border: 1px solid var(--border-color);
margin: 0 4px;
}
.pagination a.active {
background-color: var(--primary-color);
color: white;
border: 1px solid var(--primary-color);
}
.pagination a:hover:not(.active) {
background-color: #ddd;
}
.modal {
display: none;
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.4);
}
.modal-content {
background-color: #fefefe;
margin: 10% auto;
padding: 20px;
border: 1px solid #888;
width: 60%;
border-radius: 5px;
max-width: 800px;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
.close {
color: #aaa;
float: right;
font-size: 28px;
font-weight: bold;
cursor: pointer;
}
.close:hover {
color: black;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
.form-group input,
.form-group select,
.form-group textarea {
width: 100%;
padding: 8px;
border: 1px solid var(--border-color);
border-radius: 4px;
box-sizing: border-box;
}
.form-group textarea {
min-height: 100px;
resize: vertical;
}
.form-actions {
text-align: right;
margin-top: 20px;
}
.tabs {
display: flex;
border-bottom: 1px solid var(--border-color);
margin-bottom: 20px;
}
.tab {
padding: 10px 20px;
cursor: pointer;
border: 1px solid transparent;
border-bottom: none;
margin-right: 5px;
background-color: var(--light-color);
border-radius: 5px 5px 0 0;
transition: all 0.3s;
}
.tab:hover {
background-color: #e9ecef;
}
.tab.active {
background-color: white;
border-color: var(--border-color);
border-bottom-color: white;
margin-bottom: -1px;
font-weight: bold;
color: var(--primary-color);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
.chart-container {
width: 100%;
height: 400px;
margin-bottom: 20px;
background-color: white;
border-radius: 5px;
padding: 20px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: center;
}
.filter-bar {
display: flex;
margin-bottom: 20px;
gap: 10px;
flex-wrap: wrap;
}
.filter-bar select,
.filter-bar input {
padding: 8px;
border: 1px solid var(--border-color);
border-radius: 4px;
min-width: 150px;
}
.filter-bar button {
padding: 8px 15px;
background-color: var(--primary-color);
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s;
}
.filter-bar button:hover {
background-color: #2980b9;
}
.stat-cards {
display: flex;
gap: 20px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.stat-card {
flex: 1;
min-width: 200px;
background-color: white;
border-radius: 5px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
padding: 20px;
text-align: center;
}
.stat-card h3 {
margin-top: 0;
color: var(--gray-color);
}
.stat-card .value {
font-size: 24px;
font-weight: bold;
margin: 10px 0;
}
.stat-card .trend {
font-size: 14px;
color: var(--success-color);
}
.stat-card .trend.down {
color: var(--danger-color);
}
.health-record {
margin-bottom: 20px;
padding: 15px;
background-color: white;
border-radius: 5px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.health-record-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px solid var(--border-color);
}
.health-record-title {
font-weight: bold;
color: var(--secondary-color);
}
.health-record-date {
color: var(--gray-color);
font-size: 14px;
}
.health-record-content {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.health-record-section {
flex: 1;
min-width: 250px;
}
.health-record-section h4 {
margin-top: 0;
color: var(--secondary-color);
border-bottom: 1px solid var(--border-color);
padding-bottom: 5px;
}
.health-record-item {
display: flex;
margin-bottom: 8px;
}
.health-record-label {
width: 120px;
font-weight: bold;
color: #555;
}
.health-record-value {
flex: 1;
}
.badge {
display: inline-block;
padding: 3px 8px;
border-radius: 10px;
font-size: 12px;
font-weight: bold;
margin-left: 5px;
}
.badge-success {
background-color: var(--success-color);
color: white;
}
.badge-warning {
background-color: var(--warning-color);
color: white;
}
.badge-danger {
background-color: var(--danger-color);
color: white;
}
.badge-info {
background-color: #17a2b8;
color: white;
}
.alert {
padding: 10px 15px;
border-radius: 4px;
margin-bottom: 15px;
}
.alert-warning {
background-color: #fff3cd;
color: #856404;
border-left: 4px solid var(--warning-color);
}
.alert-info {
background-color: #d1ecf1;
color: #0c5460;
border-left: 4px solid #17a2b8;
}
.toggle-sidebar {
display: none;
background: none;
border: none;
color: white;
font-size: 20px;
cursor: pointer;
margin-right: 15px;
}
@media (max-width: 992px) {
.sidebar {
width: 60px;
overflow: hidden;
}
.sidebar-menu li span {
display: none;
}
.sidebar-menu li i {
margin-right: 0;
font-size: 18px;
}
.sidebar.expanded {
width: 220px;
}
.sidebar.expanded .sidebar-menu li span {
display: inline;
}
.toggle-sidebar {
display: block;
}
}
@media (max-width: 768px) {
.container {
flex-direction: column;
}
.sidebar {
width: 100%;
padding: 10px 0;
}
.sidebar-menu {
display: flex;
overflow-x: auto;
}
.sidebar-menu li {
white-space: nowrap;
}
.sidebar.expanded .sidebar-menu {
flex-wrap: wrap;
}
.main-content {
padding: 15px;
}
.stat-cards {
flex-direction: column;
}
.health-record-content {
flex-direction: column;
}
.modal-content {
width: 90%;
margin: 20px auto;
}
}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
</head>
<body>
<div class="header">
<div>
<button class="toggle-sidebar" onclick="toggleSidebar()">
<i class="fas fa-bars"></i>
</button>
<h1>员工保险与健康管理系统 - 管理员</h1>
</div>
<div class="user-info">
<span id="current-username">系统管理员</span>
<button class="logout-btn" onclick="logout()">
<i class="fas fa-sign-out-alt"></i> 退出
</button>
</div>
</div>
<div class="container">
<div class="sidebar" id="sidebar">
<ul class="sidebar-menu">
<li class="active" data-target="dashboard">
<i class="fas fa-tachometer-alt"></i>
<span>工作台</span>
</li>
<li data-target="insurance">
<i class="fas fa-shield-alt"></i>
<span>保险管理</span>
</li>
<li data-target="health">
<i class="fas fa-heartbeat"></i>
<span>健康档案</span>
</li>
<li data-target="documents">
<i class="fas fa-file-alt"></i>
<span>保单文件</span>
</li>
<li data-target="profile">
<i class="fas fa-user"></i>
<span>个人信息</span>
</li>
<li data-target="password">
<i class="fas fa-key"></i>
<span>修改密码</span>
</li>
<li data-target="settings">
<i class="fas fa-cog"></i>
<span>系统设置</span>
</li>
</ul>
</div>
<div class="main-content" id="main-content">
<!-- 工作台 -->
<div id="dashboard" class="tab-content active">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-tachometer-alt"></i> 工作台概览</h2>
</div>
<div>
<div class="stat-cards">
<div class="stat-card">
<h3>员工总数</h3>
<div class="value">156</div>
<div class="trend">↑ 5% 较上月</div>
</div>
<div class="stat-card">
<h3>有效保单</h3>
<div class="value">142</div>
<div class="trend">↑ 3% 较上月</div>
</div>
<div class="stat-card">
<h3>即将到期</h3>
<div class="value">23</div>
<div class="trend down">↑ 5% 较上月</div>
</div>
<div class="stat-card">
<h3>年度总保费</h3>
<div class="value">¥ 1,256,800</div>
<div class="trend">↑ 8% 较上年</div>
</div>
</div>
<div class="filter-bar">
<select>
<option>全部部门</option>
<option>人事部</option>
<option>技术部</option>
<option>市场部</option>
<option>财务部</option>
</select>
<button class="btn btn-primary">
<i class="fas fa-filter"></i> 筛选
</button>
<button class="btn btn-success">
<i class="fas fa-file-excel"></i> 导出Excel
</button>
</div>
<div class="alert alert-warning">
<i class="fas fa-exclamation-triangle"></i> 您有 <strong>3份</strong> 保险即将在30天内到期请及时处理。
</div>
<div class="chart-container">
<img src="https://via.placeholder.com/1200x400?text=保险类型分布图表" alt="保险类型分布图表" style="width:100%; border:1px solid #eee; border-radius:5px;">
</div>
<div class="card">
<div class="card-header">
<h2><i class="fas fa-bell"></i> 待办事项</h2>
</div>
<table>
<thead>
<tr>
<th>事项</th>
<th>相关员工</th>
<th>截止日期</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三-医疗保险续保</td>
<td>张三 (EMP001)</td>
<td>2023-12-15</td>
<td class="status-warning">即将到期</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 处理
</button>
</td>
</tr>
<tr>
<td>李四-意外险续保</td>
<td>李四 (EMP002)</td>
<td>2023-12-20</td>
<td class="status-warning">即将到期</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 处理
</button>
</td>
</tr>
<tr>
<td>王五-体检报告审核</td>
<td>王五 (EMP003)</td>
<td>2023-11-30</td>
<td class="status-danger">已过期</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 处理
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- 保险管理 -->
<div id="insurance" class="tab-content">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-shield-alt"></i> 保险管理</h2>
<button class="btn btn-success" id="add-insurance-btn" onclick="showModal('addInsuranceModal')">
<i class="fas fa-plus"></i> 添加保险
</button>
</div>
<div>
<div class="search-bar">
<input type="text" placeholder="搜索员工姓名、工号或保单号...">
<button class="btn btn-primary">
<i class="fas fa-search"></i> 搜索
</button>
</div>
<table>
<thead>
<tr>
<th>员工姓名</th>
<th>工号</th>
<th>保险公司</th>
<th>保险类型</th>
<th>保单号</th>
<th>保费</th>
<th>保额</th>
<th>生效日期</th>
<th>到期日期</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>EMP001</td>
<td>中国人寿</td>
<td>医疗保险</td>
<td>CL12345678</td>
<td>¥8,500</td>
<td>¥500,000</td>
<td>2023-01-01</td>
<td>2023-12-31</td>
<td class="status-active">有效</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>李四</td>
<td>EMP002</td>
<td>平安保险</td>
<td>意外险</td>
<td>PA87654321</td>
<td>¥1,200</td>
<td>¥1,000,000</td>
<td>2023-01-01</td>
<td>2023-12-31</td>
<td class="status-active">有效</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>王五</td>
<td>EMP003</td>
<td>太平洋保险</td>
<td>养老保险</td>
<td>TP11223344</td>
<td>¥12,000</td>
<td>¥300,000</td>
<td>2022-01-01</td>
<td>2022-12-31</td>
<td class="status-expired">已过期</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
<button class="btn btn-warning btn-sm">
<i class="fas fa-sync-alt"></i> 续保
</button>
</td>
</tr>
</tbody>
</table>
<div class="pagination">
<a href="#">&laquo;</a>
<a href="#" class="active">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#">&raquo;</a>
</div>
</div>
</div>
</div>
<!-- 健康档案 -->
<div id="health" class="tab-content">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-heartbeat"></i> 健康档案管理</h2>
<button class="btn btn-success" id="add-health-btn" onclick="showModal('addHealthRecordModal')">
<i class="fas fa-plus"></i> 添加记录
</button>
</div>
<div>
<div class="search-bar">
<input type="text" placeholder="搜索员工姓名或工号...">
<button class="btn btn-primary">
<i class="fas fa-search"></i> 搜索
</button>
</div>
<table>
<thead>
<tr>
<th>员工姓名</th>
<th>工号</th>
<th>最近体检日期</th>
<th>体检医院</th>
<th>体检结果</th>
<th>下次体检日期</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>EMP001</td>
<td>2023-10-15</td>
<td>北京协和医院</td>
<td><span class="badge badge-success">正常</span></td>
<td>2024-10-15</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-info btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
</td>
</tr>
<tr>
<td>李四</td>
<td>EMP002</td>
<td>2023-09-20</td>
<td>上海瑞金医院</td>
<td><span class="badge badge-warning">轻度异常</span></td>
<td>2024-03-20</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-info btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
</td>
</tr>
<tr>
<td>王五</td>
<td>EMP003</td>
<td>2023-08-10</td>
<td>广州中山医院</td>
<td><span class="badge badge-danger">异常</span></td>
<td>2023-11-10</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-info btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 保单文件 -->
<div id="documents" class="tab-content">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-file-alt"></i> 保单文件管理</h2>
<button class="btn btn-success" id="upload-document-btn" onclick="showModal('uploadDocumentModal')">
<i class="fas fa-upload"></i> 上传文件
</button>
</div>
<div>
<div class="search-bar">
<input type="text" placeholder="搜索员工姓名、工号或文件名...">
<button class="btn btn-primary">
<i class="fas fa-search"></i> 搜索
</button>
</div>
<table>
<thead>
<tr>
<th>员工姓名</th>
<th>工号</th>
<th>文件名</th>
<th>文件类型</th>
<th>上传日期</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>EMP001</td>
<td>医疗保险合同.pdf</td>
<td>PDF文档</td>
<td>2023-01-05</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-success btn-sm">
<i class="fas fa-download"></i> 下载
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>李四</td>
<td>EMP002</td>
<td>意外险合同.pdf</td>
<td>PDF文档</td>
<td>2023-01-05</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-success btn-sm">
<i class="fas fa-download"></i> 下载
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>王五</td>
<td>EMP003</td>
<td>养老保险合同.pdf</td>
<td>PDF文档</td>
<td>2022-01-05</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-eye"></i> 查看
</button>
<button class="btn btn-success btn-sm">
<i class="fas fa-download"></i> 下载
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 个人信息 -->
<div id="profile" class="tab-content">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-user"></i> 个人信息</h2>
<button class="btn btn-primary" id="edit-profile-btn">
<i class="fas fa-edit"></i> 编辑信息
</button>
</div>
<div class="profile-section">
<div class="profile-avatar">
<img src="https://randomuser.me/api/portraits/men/32.jpg" alt="员工头像">
</div>
<div class="profile-info">
<div class="profile-name">系统管理员</div>
<div class="profile-meta">
<span>ADM001</span> |
<span>人事部</span> |
<span>系统管理员</span>
</div>
<div class="profile-actions">
<button class="btn btn-primary btn-sm">
<i class="fas fa-camera"></i> 更换头像
</button>
</div>
</div>
</div>
<table class="info-table">
<tr>
<td>员工编号</td>
<td>ADM001</td>
</tr>
<tr>
<td>部门</td>
<td>人事部</td>
</tr>
<tr>
<td>职位</td>
<td>系统管理员</td>
</tr>
<tr>
<td>入职日期</td>
<td>2020-01-15</td>
</tr>
<tr>
<td>联系电话</td>
<td>13800138000</td>
</tr>
<tr>
<td>电子邮箱</td>
<td>admin@company.com</td>
</tr>
<tr>
<td>身份证号</td>
<td>**************0000</td>
</tr>
<tr>
<td>联系地址</td>
<td>北京市海淀区中关村软件园1号楼</td>
</tr>
<tr>
<td>紧急联系人</td>
<td>王五 (同事) 13800138003</td>
</tr>
</table>
</div>
</div>
<!-- 修改密码 -->
<div id="password" class="tab-content">
<div class="card">
<div class="card-header">
<h2><i class="fas fa-key"></i> 修改密码</h2>
</div>
<form id="change-password-form">
<div class="form-group">
<label for="current-password">当前密码</label>
<input type="password" id="current-password" placeholder="请输入当前密码" required>
</div>
<div class="form-group">
<label for="new-password">新密码</label>
<input type="password" id="new-password" placeholder="请输入新密码" required>
<small class="text-muted">密码长度至少8位包含字母和数字</small>
</div>
<div class="form-group">
<label for="confirm-password">确认新密码</label>
<input type="password" id="confirm-password" placeholder="请再次输入新密码" required>
</div>
<div class="form-actions">
<button type="reset" class="btn btn-danger">
<i class="fas fa-times"></i> 重置
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<!-- 系统设置 -->
<div id="settings" class="tab-content">
<div class="card">
<div class="tabs">
<div class="tab active" onclick="switchSettingsTab('users')">用户管理</div>
<div class="tab" onclick="switchSettingsTab('companies')">保险公司管理</div>
<div class="tab" onclick="switchSettingsTab('types')">保险类型管理</div>
<div class="tab" onclick="switchSettingsTab('system')">系统配置</div>
</div>
<div id="settings-users" class="settings-tab-content active">
<div class="card-header">
<h2><i class="fas fa-users"></i> 用户列表</h2>
<button class="btn btn-success" onclick="showAddUserModal()">
<i class="fas fa-plus"></i> 添加用户
</button>
</div>
<table>
<thead>
<tr>
<th>用户名</th>
<th>姓名</th>
<th>角色</th>
<th>部门</th>
<th>工号</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>admin</td>
<td>系统管理员</td>
<td>管理员</td>
<td>人事部</td>
<td>ADM001</td>
<td>激活</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-ban"></i> 禁用
</button>
</td>
</tr>
<tr>
<td>zhangsan</td>
<td>张三</td>
<td>员工</td>
<td>技术部</td>
<td>EMP001</td>
<td>激活</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-ban"></i> 禁用
</button>
</td>
</tr>
<tr>
<td>lisi</td>
<td>李四</td>
<td>员工</td>
<td>市场部</td>
<td>EMP002</td>
<td>激活</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-ban"></i> 禁用
</button>
</td>
</tr>
<tr>
<td>wangwu</td>
<td>王五</td>
<td>员工</td>
<td>财务部</td>
<td>EMP003</td>
<td>已禁用</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-success btn-sm">
<i class="fas fa-check"></i> 激活
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div id="settings-companies" class="settings-tab-content">
<div class="card-header">
<h2><i class="fas fa-building"></i> 保险公司管理</h2>
<button class="btn btn-success" onclick="showAddCompanyModal()">
<i class="fas fa-plus"></i> 添加保险公司
</button>
</div>
<table>
<thead>
<tr>
<th>保险公司名称</th>
<th>联系人</th>
<th>联系电话</th>
<th>合作状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>中国人寿</td>
<td>张经理</td>
<td>13800138001</td>
<td>合作中</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-times"></i> 终止合作
</button>
</td>
</tr>
<tr>
<td>平安保险</td>
<td>李经理</td>
<td>13800138002</td>
<td>合作中</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-times"></i> 终止合作
</button>
</td>
</tr>
<tr>
<td>太平洋保险</td>
<td>王经理</td>
<td>13800138003</td>
<td>合作中</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-times"></i> 终止合作
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div id="settings-types" class="settings-tab-content">
<div class="card-header">
<h2><i class="fas fa-list-alt"></i> 保险类型管理</h2>
<button class="btn btn-success" onclick="showAddInsuranceTypeModal()">
<i class="fas fa-plus"></i> 添加保险类型
</button>
</div>
<table>
<thead>
<tr>
<th>保险类型</th>
<th>描述</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>医疗保险</td>
<td>员工医疗费用报销</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>意外险</td>
<td>员工意外伤害保障</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>养老保险</td>
<td>员工退休养老保障</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
<tr>
<td>重大疾病险</td>
<td>员工重大疾病保障</td>
<td>
<button class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 编辑
</button>
<button class="btn btn-danger btn-sm">
<i class="fas fa-trash"></i> 删除
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div id="settings-system" class="settings-tab-content">
<div class="card-header">
<h2><i class="fas fa-cog"></i> 系统配置</h2>
</div>
<form>
<div class="form-group">
<label for="system-name">系统名称</label>
<input type="text" id="system-name" value="员工保险与健康管理系统">
</div>
<div class="form-group">
<label for="company-name">公司名称</label>
<input type="text" id="company-name" value="某某科技有限公司">
</div>
<div class="form-group">
<label for="expire-warning">保险到期提前提醒天数</label>
<input type="number" id="expire-warning" value="30">
</div>
<div class="form-group">
<label for="health-check-interval">体检间隔(月)</label>
<input type="number" id="health-check-interval" value="12">
</div>
<div class="form-group">
<label for="backup-frequency">数据备份频率</label>
<select id="backup-frequency">
<option value="daily">每天</option>
<option value="weekly" selected>每周</option>
<option value="monthly">每月</option>
</select>
</div>
<div class="form-actions">
<button type="reset" class="btn btn-danger">
<i class="fas fa-times"></i> 重置
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存配置
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- 添加保险模态框 -->
<div id="addInsuranceModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('addInsuranceModal')">&times;</span>
<h2><i class="fas fa-plus-circle"></i> 添加新保险</h2>
<form>
<div class="form-group">
<label for="insurance-employee">员工</label>
<select id="insurance-employee">
<option value="">请选择员工</option>
<option value="EMP001">张三 (EMP001)</option>
<option value="EMP002">李四 (EMP002)</option>
<option value="EMP003">王五 (EMP003)</option>
<option value="EMP004">赵六 (EMP004)</option>
</select>
</div>
<div class="form-group">
<label for="insurance-company">保险公司</label>
<select id="insurance-company">
<option value="">请选择保险公司</option>
<option value="中国人寿">中国人寿</option>
<option value="平安保险">平安保险</option>
<option value="太平洋保险">太平洋保险</option>
<option value="泰康保险">泰康保险</option>
<option value="其他">其他</option>
</select>
</div>
<div class="form-group">
<label for="insurance-type">保险类型</label>
<select id="insurance-type">
<option value="">请选择保险类型</option>
<option value="医疗保险">医疗保险</option>
<option value="意外险">意外险</option>
<option value="养老保险">养老保险</option>
<option value="重大疾病险">重大疾病险</option>
<option value="雇主责任险">雇主责任险</option>
<option value="其他">其他</option>
</select>
</div>
<div class="form-group">
<label for="policy-number">保单号</label>
<input type="text" id="policy-number" placeholder="请输入保单号">
</div>
<div class="form-group">
<label for="start-date">生效日期</label>
<input type="date" id="start-date">
</div>
<div class="form-group">
<label for="end-date">到期日期</label>
<input type="date" id="end-date">
</div>
<div class="form-group">
<label for="premium">保费</label>
<input type="number" id="premium" placeholder="请输入保费金额">
</div>
<div class="form-group">
<label for="coverage">保额</label>
<input type="number" id="coverage" placeholder="请输入保额">
</div>
<div class="form-group">
<label for="beneficiary">受益人</label>
<input type="text" id="beneficiary" placeholder="请输入受益人">
</div>
<div class="form-group">
<label for="insurance-notes">备注</label>
<textarea id="insurance-notes" rows="3" placeholder="请输入备注信息"></textarea>
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('addInsuranceModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<!-- 添加上传文件模态框 -->
<div id="uploadDocumentModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('uploadDocumentModal')">&times;</span>
<h2><i class="fas fa-upload"></i> 上传保单文件</h2>
<form>
<div class="form-group">
<label for="document-employee">员工</label>
<select id="document-employee">
<option value="">请选择员工</option>
<option value="EMP001">张三 (EMP001)</option>
<option value="EMP002">李四 (EMP002)</option>
<option value="EMP003">王五 (EMP003)</option>
<option value="EMP004">赵六 (EMP004)</option>
</select>
</div>
<div class="form-group">
<label for="document-type">文件类型</label>
<select id="document-type">
<option value="">请选择文件类型</option>
<option value="保险合同">保险合同</option>
<option value="保险凭证">保险凭证</option>
<option value="理赔材料">理赔材料</option>
<option value="体检报告">体检报告</option>
<option value="其他">其他</option>
</select>
</div>
<div class="form-group">
<label for="file-upload">选择文件</label>
<input type="file" id="file-upload">
</div>
<div class="form-group">
<label for="document-description">文件描述</label>
<textarea id="document-description" rows="3" placeholder="请输入文件描述"></textarea>
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('uploadDocumentModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-upload"></i> 上传
</button>
</div>
</form>
</div>
</div>
<!-- 添加健康记录模态框 -->
<div id="addHealthRecordModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('addHealthRecordModal')">&times;</span>
<h2><i class="fas fa-plus-circle"></i> 添加健康记录</h2>
<form>
<div class="form-group">
<label for="health-employee">员工</label>
<select id="health-employee">
<option value="">请选择员工</option>
<option value="EMP001">张三 (EMP001)</option>
<option value="EMP002">李四 (EMP002)</option>
<option value="EMP003">王五 (EMP003)</option>
<option value="EMP004">赵六 (EMP004)</option>
</select>
</div>
<div class="form-group">
<label for="checkup-date">体检日期</label>
<input type="date" id="checkup-date">
</div>
<div class="form-group">
<label for="hospital">体检医院</label>
<input type="text" id="hospital" placeholder="请输入体检医院">
</div>
<div class="form-group">
<label for="checkup-type">体检类型</label>
<select id="checkup-type">
<option value="常规体检">常规体检</option>
<option value="入职体检">入职体检</option>
<option value="年度体检">年度体检</option>
<option value="专项体检">专项体检</option>
</select>
</div>
<div class="form-group">
<label for="checkup-result">体检结果</label>
<select id="checkup-result">
<option value="正常">正常</option>
<option value="轻度异常">轻度异常</option>
<option value="异常">异常</option>
</select>
</div>
<div class="form-group">
<label for="next-checkup">下次体检日期</label>
<input type="date" id="next-checkup">
</div>
<div class="form-group">
<label for="health-summary">体检总结</label>
<textarea id="health-summary" rows="3" placeholder="请输入体检总结"></textarea>
</div>
<div class="form-group">
<label for="health-suggestion">医生建议</label>
<textarea id="health-suggestion" rows="3" placeholder="请输入医生建议"></textarea>
</div>
<div class="form-group">
<label for="health-report">体检报告</label>
<input type="file" id="health-report">
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('addHealthRecordModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<!-- 添加用户模态框 -->
<div id="addUserModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('addUserModal')">&times;</span>
<h2><i class="fas fa-user-plus"></i> 添加新用户</h2>
<form>
<div class="form-group">
<label for="username">用户名</label>
<input type="text" id="username" placeholder="请输入用户名">
</div>
<div class="form-group">
<label for="fullname">姓名</label>
<input type="text" id="fullname" placeholder="请输入姓名">
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" id="password" placeholder="请输入密码">
</div>
<div class="form-group">
<label for="confirm-password">确认密码</label>
<input type="password" id="confirm-password" placeholder="请再次输入密码">
</div>
<div class="form-group">
<label for="role">角色</label>
<select id="role">
<option value="employee">员工</option>
<option value="admin">管理员</option>
</select>
</div>
<div class="form-group">
<label for="department">部门</label>
<select id="department">
<option value="hr">人事部</option>
<option value="tech">技术部</option>
<option value="market">市场部</option>
<option value="finance">财务部</option>
</select>
</div>
<div class="form-group">
<label for="employee-id">工号</label>
<input type="text" id="employee-id" placeholder="请输入工号">
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('addUserModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<!-- 添加保险公司模态框 -->
<div id="addCompanyModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('addCompanyModal')">&times;</span>
<h2><i class="fas fa-building"></i> 添加保险公司</h2>
<form>
<div class="form-group">
<label for="company-name">保险公司名称</label>
<input type="text" id="company-name" placeholder="请输入保险公司名称">
</div>
<div class="form-group">
<label for="contact-person">联系人</label>
<input type="text" id="contact-person" placeholder="请输入联系人">
</div>
<div class="form-group">
<label for="contact-phone">联系电话</label>
<input type="text" id="contact-phone" placeholder="请输入联系电话">
</div>
<div class="form-group">
<label for="company-email">电子邮箱</label>
<input type="email" id="company-email" placeholder="请输入电子邮箱">
</div>
<div class="form-group">
<label for="company-address">公司地址</label>
<input type="text" id="company-address" placeholder="请输入公司地址">
</div>
<div class="form-group">
<label for="cooperation-date">合作开始日期</label>
<input type="date" id="cooperation-date">
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('addCompanyModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<!-- 添加保险类型模态框 -->
<div id="addInsuranceTypeModal" class="modal">
<div class="modal-content">
<span class="close" onclick="hideModal('addInsuranceTypeModal')">&times;</span>
<h2><i class="fas fa-list-alt"></i> 添加保险类型</h2>
<form>
<div class="form-group">
<label for="insurance-type-name">保险类型</label>
<input type="text" id="insurance-type-name" placeholder="请输入保险类型">
</div>
<div class="form-group">
<label for="type-description">描述</label>
<textarea id="type-description" rows="3" placeholder="请输入保险类型描述"></textarea>
</div>
<div class="form-group">
<label for="coverage-range">保障范围</label>
<textarea id="coverage-range" rows="3" placeholder="请输入保障范围"></textarea>
</div>
<div class="form-actions">
<button type="button" class="btn btn-danger" onclick="hideModal('addInsuranceTypeModal')">
<i class="fas fa-times"></i> 取消
</button>
<button type="submit" class="btn btn-success">
<i class="fas fa-check"></i> 保存
</button>
</div>
</form>
</div>
</div>
<script>
// 初始化页面
document.addEventListener('DOMContentLoaded', function() {
// 绑定侧边栏菜单点击事件
bindSidebarMenuEvents();
// 绑定其他事件
bindEvents();
});
// 绑定侧边栏菜单点击事件
function bindSidebarMenuEvents() {
const menuItems = document.querySelectorAll('.sidebar-menu li');
menuItems.forEach(item => {
item.addEventListener('click', function() {
// 移除所有菜单项的active类
menuItems.forEach(li => li.classList.remove('active'));
// 给当前点击的菜单项添加active类
this.classList.add('active');
// 获取目标内容区域ID
const targetId = this.getAttribute('data-target');
// 隐藏所有内容区域
document.querySelectorAll('.tab-content').forEach(content => {
content.classList.remove('active');
});
// 显示目标内容区域
document.getElementById(targetId).classList.add('active');
});
});
}
// 绑定其他事件
function bindEvents() {
// 修改密码表单提交事件
document.getElementById('change-password-form')?.addEventListener('submit', function(e) {
e.preventDefault();
alert('密码修改成功!');
this.reset();
});
// 点击模态框外部关闭模态框
window.addEventListener('click', function(event) {
if (event.target.classList.contains('modal')) {
event.target.style.display = 'none';
}
});
}
// 显示模态框
function showModal(modalId) {
document.getElementById(modalId).style.display = 'block';
}
// 隐藏模态框
function hideModal(modalId) {
document.getElementById(modalId).style.display = 'none';
}
// 切换保险详情显示
function toggleDetail(detailId) {
const detailElement = document.getElementById(detailId);
if (detailElement.style.display === 'block') {
detailElement.style.display = 'none';
} else {
// 先关闭所有已打开的详情
document.querySelectorAll('.insurance-detail').forEach(detail => {
detail.style.display = 'none';
});
// 再打开当前点击的详情
detailElement.style.display = 'block';
}
}
// 切换系统设置标签页
function switchSettingsTab(tabId) {
// 隐藏所有标签内容
document.querySelectorAll('.settings-tab-content').forEach(content => {
content.classList.remove('active');
});
// 取消所有标签的活动状态
document.querySelectorAll('#settings .tab').forEach(tab => {
tab.classList.remove('active');
});
// 显示选中的标签内容
document.getElementById('settings-' + tabId).classList.add('active');
// 设置选中标签的活动状态
event.currentTarget.classList.add('active');
}
// 显示添加用户模态框
function showAddUserModal() {
showModal('addUserModal');
}
// 显示添加保险公司模态框
function showAddCompanyModal() {
showModal('addCompanyModal');
}
// 显示添加保险类型模态框
function showAddInsuranceTypeModal() {
showModal('addInsuranceTypeModal');
}
// 切换侧边栏显示状态
function toggleSidebar() {
const sidebar = document.getElementById('sidebar');
sidebar.classList.toggle('expanded');
const mainContent = document.getElementById('main-content');
if (sidebar.classList.contains('expanded')) {
mainContent.style.marginLeft = '220px';
} else {
mainContent.style.marginLeft = '60px';
}
}
// 退出登录
function logout() {
if (confirm('确定要退出系统吗?')) {
window.location.href = 'login.html';
}
}
</script>
</body>
</html>