安全管理基础信息模块开发

main
jiangxucong 1 month ago
parent eefeab35e8
commit aa0c7ed6ea

@ -3,6 +3,6 @@ export default {
menu: {
locale: true,
},
title: 'flx人力系统',
title: '安全管理系统',
iconfontUrl: '//at.alicdn.com/t/font_2163129_p3ldyoksz3s.js'
}

@ -61,6 +61,13 @@ export default [
name: 'workreport',
component: './hrefficiency_workreport/WorkReport',
},
// 安全管理基础信息
{
path:'/topnavbar00/hrefficiency/basicinformation',
name: 'basicinformation',
component: './hrefficiency_basicinformation/BasicInformation',
},
// 系统管理
{
path: '/topnavbar00/hrefficiency/system',
name: 'system',

@ -18,15 +18,16 @@
"braft-editor": "^2.3.9",
"braft-finder": "^0.0.21",
"braft-utils": "^3.0.2",
"echarts": "^4.9.0",
"code-inspector-plugin": "^1.2.8",
"echarts": "5.4.0",
"echarts-for-react": "^3.0.2",
"moment": "^2.29.1",
"nvm": "^0.0.4",
"qs": "^6.11.0",
"react": "^18.2.0",
"react-contexify": "^5.0.0",
"react-dom": "^18.2.0",
"react-split-pane": "^0.1.92",
"code-inspector-plugin": "^1.2.8"
"react-split-pane": "^0.1.92"
},
"devDependencies": {
"@types/react": "^18.0.0",

@ -1,624 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>飞利信人力管理系统</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.font-pacifico {
font-family: 'Pacifico', serif;
}
.icon-center {
display: flex;
justify-content: center;
align-items: center;
}
.scroll-container {
overflow: hidden;
white-space: nowrap;
}
.scroll-content {
display: inline-block;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary flex flex-col">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary shadow-sm">
<div class="container mx-auto px-4 h-[60px] flex items-center justify-between">
<div class="flex items-center">
<div class="text-xs bg-white text-primary px-3 py-1 rounded-button">人力</div>
</div>
<nav class="flex-1 px-8">
<ul class="flex space-x-4 whitespace-nowrap">
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">多维统计</a>
</li>
<li><a href="#" class="text-xs text-white bg-blue-600 px-3 py-1 rounded-button font-medium">人员管理</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">组织管理</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">考勤管理</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">绩效管理</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">薪酬管理</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">知识库</a>
</li>
<li><a href="#"
class="text-xs text-white hover:bg-blue-600 px-3 py-1 rounded-button font-medium">后台管理</a>
</li>
</ul>
</nav>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..."
class="pl-10 pr-4 py-2 text-sm bg-white rounded-button w-32 focus:outline-none focus:ring-2 focus:ring-white focus:border-transparent">
<i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-500"></i>
</div>
<div class="relative group">
<div
class="w-8 h-8 rounded-full bg-white text-primary flex items-center justify-center cursor-pointer">
<i class="fas fa-user"></i>
</div>
<div
class="absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-50 hidden group-hover:block">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">个人中心</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">系统设置</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">退出登录</a>
</div>
</div>
<button
class="bg-white text-primary px-3 py-1 rounded-button flex items-center space-x-2 hover:bg-gray-100 transition text-sm">
<i class="fas fa-robot"></i>
<span>AI助手</span>
</button>
</div>
</div>
</header> -->
<!-- 公告栏 -->
<div class="w-full bg-blue-50 py-1">
<div class="container mx-auto px-4">
<div class="flex items-center text-xs text-gray-700">
<span class="font-medium text-primary mr-3">公告:</span>
<div class="scroll-container w-full">
<div class="scroll-content">
<span>2023年度员工体检将于11月20日开始请各部门安排好时间。</span>
<span class="ml-8">公司年会定于12月28日举行各部门请提前准备节目。</span>
<span class="ml-8">新版本人力资源系统已上线如有问题请联系IT支持。</span>
<span class="ml-8">2024年春节假期安排已发布请查看公司公告。</span>
</div>
</div>
</div>
</div>
</div>
<!-- 主体内容 -->
<main class="flex-1 container mx-auto px-4 py-6">
<div class="bg-white rounded-lg shadow-sm p-6">
<h2 class="text-xl font-semibold text-gray-800 mb-6">人员管理</h2>
<div class="flex space-x-6">
<!-- 左侧组织架构树 -->
<div class="w-[20%] bg-white border border-gray-200 rounded-lg p-4">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">组织架构</h3>
<div class="flex space-x-2">
<button class="text-gray-500 hover:text-primary">
<i class="fas fa-sync-alt"></i>
</button>
<button class="text-gray-500 hover:text-primary">
<i class="fas fa-expand"></i>
</button>
</div>
</div>
<div class="overflow-y-auto h-[600px]">
<ul class="space-y-1">
<li>
<div class="flex items-center justify-between p-2 bg-blue-50 rounded-button">
<div class="flex items-center">
<i class="fas fa-building mr-2 text-gray-600"></i>
<span class="text-sm font-medium">飞利信集团</span>
</div>
<i class="fas fa-chevron-down text-gray-500"></i>
</div>
<ul class="ml-6 mt-1 space-y-1">
<li>
<div
class="flex items-center justify-between p-2 hover:bg-gray-50 rounded-button">
<div class="flex items-center">
<i class="fas fa-sitemap mr-2 text-gray-600"></i>
<span>人力资源部</span>
</div>
<i class="fas fa-chevron-down text-gray-500"></i>
</div>
<ul class="ml-6 mt-1 space-y-1">
<li class="flex items-center p-2 hover:bg-gray-50 rounded-button">
<i class="fas fa-users mr-2 text-gray-600"></i>
<span class="text-primary font-medium">招聘组</span>
</li>
<li class="flex items-center p-2 hover:bg-gray-50 rounded-button">
<i class="fas fa-chart-line mr-2 text-gray-600"></i>
<span>绩效组</span>
</li>
<li class="flex items-center p-2 hover:bg-gray-50 rounded-button">
<i class="fas fa-money-bill-wave mr-2 text-gray-600"></i>
<span>薪酬组</span>
</li>
</ul>
</li>
<li>
<div
class="flex items-center justify-between p-2 hover:bg-gray-50 rounded-button">
<div class="flex items-center">
<i class="fas fa-sitemap mr-2 text-gray-600"></i>
<span>技术研发部</span>
</div>
<i class="fas fa-chevron-down text-gray-500"></i>
</div>
</li>
<li>
<div
class="flex items-center justify-between p-2 hover:bg-gray-50 rounded-button">
<div class="flex items-center">
<i class="fas fa-sitemap mr-2 text-gray-600"></i>
<span>市场营销部</span>
</div>
<i class="fas fa-chevron-down text-gray-500"></i>
</div>
</li>
<li>
<div
class="flex items-center justify-between p-2 hover:bg-gray-50 rounded-button">
<div class="flex items-center">
<i class="fas fa-sitemap mr-2 text-gray-600"></i>
<span>财务部</span>
</div>
<i class="fas fa-chevron-down text-gray-500"></i>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- 右侧人员信息区 -->
<div class="w-[80%]">
<!-- 筛选条件 -->
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<div class="grid grid-cols-3 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">姓名</label>
<input type="text"
class="w-full border rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">电话</label>
<input type="text"
class="w-full border rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">身份证号</label>
<input type="text"
class="w-full border rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">部门</label>
<div class="relative">
<input type="text"
class="w-full border rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
<i
class="fas fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500"></i>
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">岗位</label>
<div class="relative">
<input type="text"
class="w-full border rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent">
<i
class="fas fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-500"></i>
</div>
</div>
<div class="flex items-end space-x-2">
<button
class="bg-primary text-white px-4 py-2 rounded-button hover:bg-blue-600 transition">搜索</button>
<button
class="border border-gray-300 text-gray-700 px-4 py-2 rounded-button hover:bg-gray-50 transition">重置</button>
</div>
</div>
</div>
<!-- 操作按钮 -->
<div class="flex justify-between items-center mb-4">
<div class="text-sm text-gray-600">共 356 条记录</div>
<div class="flex space-x-2">
<button
class="border border-gray-300 text-gray-700 px-3 py-1 rounded-button text-sm hover:bg-gray-50 transition">
<i class="fas fa-download mr-1"></i>导出
</button>
<button
class="bg-primary text-white px-3 py-1 rounded-button text-sm hover:bg-blue-600 transition">
<i class="fas fa-plus mr-1"></i>新增人员
</button>
</div>
</div>
<!-- 人员表格 -->
<div class="overflow-x-auto">
<table class="min-w-full bg-white border border-gray-200 rounded-lg overflow-hidden">
<thead class="bg-gray-50">
<tr>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
序号</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
姓名</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
性别</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
年龄</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
电话</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
部门</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
岗位</th>
<th
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
操作</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">1</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">张明远</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">32</td>
<td class="px-4 py-3 text-sm text-gray-700">138****5678</td>
<td class="px-4 py-3 text-sm text-gray-700">人力资源部</td>
<td class="px-4 py-3 text-sm text-gray-700">招聘经理</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">2</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">李静怡</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">28</td>
<td class="px-4 py-3 text-sm text-gray-700">159****2345</td>
<td class="px-4 py-3 text-sm text-gray-700">技术研发部</td>
<td class="px-4 py-3 text-sm text-gray-700">前端工程师</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">3</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">王建国</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">45</td>
<td class="px-4 py-3 text-sm text-gray-700">186****7890</td>
<td class="px-4 py-3 text-sm text-gray-700">市场营销部</td>
<td class="px-4 py-3 text-sm text-gray-700">市场总监</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">4</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">赵雪梅</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">36</td>
<td class="px-4 py-3 text-sm text-gray-700">137****4567</td>
<td class="px-4 py-3 text-sm text-gray-700">财务部</td>
<td class="px-4 py-3 text-sm text-gray-700">财务主管</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">5</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">刘志强</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">29</td>
<td class="px-4 py-3 text-sm text-gray-700">188****3456</td>
<td class="px-4 py-3 text-sm text-gray-700">技术研发部</td>
<td class="px-4 py-3 text-sm text-gray-700">后端工程师</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">6</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">陈雨桐</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">27</td>
<td class="px-4 py-3 text-sm text-gray-700">135****6789</td>
<td class="px-4 py-3 text-sm text-gray-700">人力资源部</td>
<td class="px-4 py-3 text-sm text-gray-700">薪酬专员</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">7</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">孙伟</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">31</td>
<td class="px-4 py-3 text-sm text-gray-700">139****1234</td>
<td class="px-4 py-3 text-sm text-gray-700">市场营销部</td>
<td class="px-4 py-3 text-sm text-gray-700">市场经理</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">8</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">周晓琳</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">33</td>
<td class="px-4 py-3 text-sm text-gray-700">158****4567</td>
<td class="px-4 py-3 text-sm text-gray-700">财务部</td>
<td class="px-4 py-3 text-sm text-gray-700">会计</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">9</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">吴刚</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">40</td>
<td class="px-4 py-3 text-sm text-gray-700">136****7890</td>
<td class="px-4 py-3 text-sm text-gray-700">技术研发部</td>
<td class="px-4 py-3 text-sm text-gray-700">技术总监</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 text-sm text-gray-700">10</td>
<td class="px-4 py-3 text-sm font-medium text-gray-900">郑美丽</td>
<td class="px-4 py-3 text-sm text-gray-700"></td>
<td class="px-4 py-3 text-sm text-gray-700">26</td>
<td class="px-4 py-3 text-sm text-gray-700">187****2345</td>
<td class="px-4 py-3 text-sm text-gray-700">人力资源部</td>
<td class="px-4 py-3 text-sm text-gray-700">招聘专员</td>
<td class="px-4 py-3 text-sm text-gray-700">
<div class="flex space-x-2">
<button class="text-blue-500 hover:text-blue-700">
<i class="fas fa-edit"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt"></i>
</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="flex items-center justify-between mt-4">
<div class="text-sm text-gray-600">显示 1 到 10 条,共 356 条记录</div>
<div class="flex space-x-1">
<button
class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">上一页</button>
<button class="px-3 py-1 border rounded-button text-sm bg-primary text-white">1</button>
<button
class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">2</button>
<button
class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">3</button>
<span class="px-3 py-1 text-sm text-gray-700">...</span>
<button
class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">36</button>
<button
class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">下一页</button>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-6">
<div class="container mx-auto px-4">
<div class="grid grid-cols-4 gap-6 mb-6">
<div>
<h3 class="text-base font-medium mb-3">关于我们</h3>
<ul class="space-y-1 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">荣誉资质</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><a href="#" class="hover:text-white">人力资源系统</a></li>
<li><a href="#" class="hover:text-white">考勤管理系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">视频教程</a></li>
<li><a href="#" class="hover:text-white">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><i class="fas fa-map-marker-alt mr-2"></i> 北京市海淀区中关村南大街5号</li>
<li><i class="fas fa-phone-alt mr-2"></i> 400-888-8888</li>
<li><i class="fas fa-envelope mr-2"></i> contact@feilixin.com</li>
<li class="flex space-x-4 mt-4">
<a href="#"
class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary">
<i class="fab fa-weixin"></i>
</a>
<a href="#"
class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary">
<i class="fab fa-weibo"></i>
</a>
<a href="#"
class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary">
<i class="fab fa-linkedin-in"></i>
</a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 pt-6">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="text-sm text-gray-400 mb-4 md:mb-0">
© 2023 飞利信人力资源管理系统 版权所有
</div>
<div class="flex space-x-6">
<a href="#" class="text-sm text-gray-400 hover:text-white">隐私政策</a>
<a href="#" class="text-sm text-gray-400 hover:text-white">服务条款</a>
<a href="#" class="text-sm text-gray-400 hover:text-white">法律声明</a>
<a href="#" class="text-sm text-gray-400 hover:text-white">ICP备案号京ICP备12345678号</a>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,563 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统 - 多维统计</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.chart-container {
width: 100%;
height: 300px;
}
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
width: 20px;
height: 20px;
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary font-sans">
<!-- 顶部导航 -->
<!-- <header class="w-full bg-primary text-white shadow-md">
<div class="container mx-auto px-6 h-16 flex items-center justify-between">
<div class="flex items-center space-x-8">
<a href="#" class="text-2xl font-['Pacifico']">人力</a>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..." class="bg-white/20 text-sm px-4 py-2 rounded-button w-48 focus:outline-none focus:ring-2 focus:ring-white/50">
<i class="fa-icon fa-solid fa-magnifying-glass absolute right-3 top-1/2 transform -translate-y-1/2 text-white/70"></i>
</div>
<button class="flex items-center space-x-1 bg-white/10 hover:bg-white/20 px-3 py-1 rounded-button transition">
<i class="fa-icon fa-solid fa-robot"></i>
<span class="text-sm">AI助手</span>
</button>
<div class="w-8 h-8 rounded-full bg-white/20 flex items-center justify-center cursor-pointer">
<i class="fa-icon fa-solid fa-user"></i>
</div>
</div>
</div>
</header> -->
<!-- 主要内容 -->
<main class="container mx-auto px-6 py-8">
<!-- 数据卡片行 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
<div class="flex justify-between items-start">
<div>
<p class="text-gray-500 text-sm">员工总数</p>
<p class="text-3xl font-bold mt-2">1,248</p>
</div>
<div class="bg-green-100 text-green-800 px-2 py-1 rounded-button text-xs flex items-center">
<i class="fa-icon fa-solid fa-arrow-up mr-1"></i>
<span>5.2%</span>
</div>
</div>
<p class="text-gray-500 text-xs mt-2">较上月增加 62 人</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
<div>
<p class="text-gray-500 text-sm">本月入职</p>
<p class="text-3xl font-bold mt-2">87</p>
</div>
<p class="text-gray-500 text-xs mt-2">其中社招 52 人,校招 35 人</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
<div>
<p class="text-gray-500 text-sm">本月离职</p>
<p class="text-3xl font-bold mt-2">25</p>
</div>
<p class="text-gray-500 text-xs mt-2">主动离职 18 人,被动离职 7 人</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm hover:shadow-md transition">
<div>
<p class="text-gray-500 text-sm">平均工龄</p>
<p class="text-3xl font-bold mt-2">3.2</p>
</div>
<p class="text-gray-500 text-xs mt-2">年,较行业平均高 0.8 年</p>
</div>
</div>
<!-- 图表行1 -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">部门人员分布</h3>
<div class="chart-container" id="departmentChart"></div>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">职位分布</h3>
<div class="chart-container" id="positionChart"></div>
</div>
</div>
<!-- 图表行2 -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">员工年龄分布</h3>
<div class="chart-container" id="ageChart"></div>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">员工工龄分布</h3>
<div class="chart-container" id="seniorityChart"></div>
</div>
</div>
<!-- 图表行3 -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">员工绩效分布</h3>
<div class="chart-container" id="performanceChart"></div>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="text-lg font-semibold mb-4">招聘渠道分布</h3>
<div class="chart-container" id="recruitmentChart"></div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-8 mt-auto">
<div class="container mx-auto px-6">
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div>
<h3 class="text-lg font-semibold mb-4">关于我们</h3>
<p class="text-sm text-gray-400 mb-4">人力科技是一家专注于企业人力资源数字化解决方案的高科技公司,致力于为企业提供智能化的人力资源管理工具。</p>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-weixin"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-weibo"></i></a>
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fa-icon fa-brands fa-linkedin"></i></a>
</div>
</div>
<div>
<h3 class="text-lg font-semibold mb-4">快速链接</h3>
<ul class="space-y-2">
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">产品介绍</a></li>
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">解决方案</a></li>
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">客户案例</a></li>
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">价格方案</a></li>
<li><a href="#" class="text-sm text-gray-400 hover:text-white transition">帮助中心</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-semibold mb-4">联系我们</h3>
<ul class="space-y-2 text-sm text-gray-400">
<li class="flex items-start">
<i class="fa-icon fa-solid fa-map-marker-alt mt-1 mr-2"></i>
<span>北京市海淀区中关村软件园 12 号楼 3 层</span>
</li>
<li class="flex items-center">
<i class="fa-icon fa-solid fa-phone mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fa-icon fa-solid fa-envelope mr-2"></i>
<span>contact@hrtech.com</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 text-center text-sm text-gray-400">
<p>© 2023 人力科技 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802023456号</p>
</div>
</div>
</footer>
<script>
// 部门分布图表
const departmentChart = echarts.init(document.getElementById('departmentChart'));
departmentChart.setOption({
animation: false,
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
right: 10,
top: 'center',
data: ['技术部', '产品部', '市场部', '销售部', '人力资源', '财务部', '行政部']
},
series: [
{
name: '部门分布',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 4,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 320, name: '技术部' },
{ value: 240, name: '产品部' },
{ value: 149, name: '市场部' },
{ value: 180, name: '销售部' },
{ value: 98, name: '人力资源' },
{ value: 56, name: '财务部' },
{ value: 105, name: '行政部' }
]
}
]
});
// 职位分布图表
const positionChart = echarts.init(document.getElementById('positionChart'));
positionChart.setOption({
animation: false,
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
right: 10,
top: 'center',
data: ['工程师', '产品经理', '设计师', '市场专员', '销售代表', 'HRBP', '财务专员', '行政专员']
},
series: [
{
name: '职位分布',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 4,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 280, name: '工程师' },
{ value: 120, name: '产品经理' },
{ value: 90, name: '设计师' },
{ value: 80, name: '市场专员' },
{ value: 150, name: '销售代表' },
{ value: 60, name: 'HRBP' },
{ value: 40, name: '财务专员' },
{ value: 80, name: '行政专员' }
]
}
]
});
// 年龄分布图表
const ageChart = echarts.init(document.getElementById('ageChart'));
ageChart.setOption({
animation: false,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: ['20-25岁', '26-30岁', '31-35岁', '36-40岁', '41岁以上'],
axisTick: {
alignWithLabel: true
}
},
yAxis: {
type: 'value'
},
series: [
{
name: '人数',
type: 'bar',
barWidth: '60%',
itemStyle: {
color: '#2D5CF6'
},
data: [120, 480, 360, 180, 108]
}
]
});
// 工龄分布图表
const seniorityChart = echarts.init(document.getElementById('seniorityChart'));
seniorityChart.setOption({
animation: false,
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
right: 10,
top: 'center',
data: ['1年以内', '1-3年', '3-5年', '5-10年', '10年以上']
},
series: [
{
name: '工龄分布',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 4,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 280, name: '1年以内' },
{ value: 420, name: '1-3年' },
{ value: 300, name: '3-5年' },
{ value: 180, name: '5-10年' },
{ value: 68, name: '10年以上' }
]
}
]
});
// 绩效分布图表
const performanceChart = echarts.init(document.getElementById('performanceChart'));
performanceChart.setOption({
animation: false,
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
right: 10,
top: 'center',
data: ['A(优秀)', 'B(良好)', 'C(合格)', 'D(待改进)']
},
series: [
{
name: '绩效分布',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 4,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '18',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 180, name: 'A(优秀)' },
{ value: 420, name: 'B(良好)' },
{ value: 480, name: 'C(合格)' },
{ value: 68, name: 'D(待改进)' }
]
}
]
});
// 招聘渠道图表
const recruitmentChart = echarts.init(document.getElementById('recruitmentChart'));
recruitmentChart.setOption({
animation: false,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {
data: ['猎头', '招聘网站', '内部推荐', '校园招聘', '社交媒体']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'value'
},
yAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月']
},
series: [
{
name: '猎头',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [5, 3, 7, 4, 6, 8]
},
{
name: '招聘网站',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [12, 10, 15, 18, 14, 16]
},
{
name: '内部推荐',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [8, 6, 10, 7, 9, 11]
},
{
name: '校园招聘',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [0, 0, 0, 15, 12, 10]
},
{
name: '社交媒体',
type: 'bar',
stack: 'total',
label: {
show: true
},
emphasis: {
focus: 'series'
},
data: [3, 5, 4, 6, 5, 7]
}
]
});
// 窗口大小变化时重新调整图表大小
window.addEventListener('resize', function() {
departmentChart.resize();
positionChart.resize();
ageChart.resize();
seniorityChart.resize();
performanceChart.resize();
recruitmentChart.resize();
});
</script>
</body>
</html>

@ -1,620 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统 - 人员详情</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA',
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.font-pacifico {
font-family: "Pacifico", serif;
}
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
.scroll-container {
overflow: hidden;
white-space: nowrap;
}
.scroll-content {
display: inline-block;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
</style>
</head>
<body class="bg-secondary min-h-[1024px] flex flex-col">
<!-- 顶部导航 -->
<!-- <header class="bg-primary text-white w-full fixed top-0 z-50 shadow-md">
<div class="container mx-auto px-4 h-[60px] flex items-center justify-between">
<div class="flex items-center">
<span class="font-pacifico text-2xl mr-10">人力</span>
</div>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
<div class="flex items-center space-x-4">
<div class="relative hidden lg:block">
<input type="text" placeholder="搜索..."
class="bg-white/20 text-sm py-1 px-3 pl-8 rounded-button text-white placeholder-white/70 focus:outline-none focus:ring-1 focus:ring-white w-40">
<i
class="fas fa-search fa-icon absolute left-2 top-1/2 transform -translate-y-1/2 text-sm text-white/70"></i>
</div>
<button
class="bg-white/10 hover:bg-white/20 text-sm px-3 py-1 rounded-button flex items-center space-x-1 transition">
<i class="fas fa-robot fa-icon text-sm"></i>
<span>AI助手</span>
</button>
<div class="relative">
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20portrait20of20a20asian20male20executive20in20suit20with20clean20background20high20quality20photo20realistic20detailed20face20corporate20style&width=100&height=100&orientation=squarish&flag=3efee3725d19ed6e79a0117bb8d09db5"
alt="用户头像" class="w-8 h-8 rounded-full object-cover border-2 border-white/30">
</div>
</div>
</div>
</header> -->
<!-- 公告栏 -->
<div class="bg-white py-2 px-4 shadow-sm">
<div class="container mx-auto">
<div class="scroll-container">
<div class="scroll-content text-sm text-gray-600">
<span class="font-medium text-primary mr-4">公告:</span>
<span class="mr-8">2023年度绩效考核工作将于12月1日正式启动</span>
<span class="mr-8">公司年度旅游活动报名截止日期延长至11月30日</span>
<span class="mr-8">新员工入职培训将于下周一上午9点在3楼会议室举行</span>
<span class="mr-8">公司福利政策更新:新增子女教育补贴项目</span>
<span class="mr-8">IT部门提醒请及时更新您的电脑系统至最新版本</span>
</div>
</div>
</div>
</div>
<!-- 主内容区 -->
<main class="flex-1 container mx-auto px-4 py-6 mt-4">
<!-- 面包屑导航 -->
<div class="flex items-center text-sm text-gray-500 mb-4">
<a href="#" class="hover:text-primary">首页</a>
<i class="fas fa-chevron-right mx-2 text-xs"></i>
<a href="#" class="hover:text-primary">人员管理</a>
<i class="fas fa-chevron-right mx-2 text-xs"></i>
<span class="text-gray-700">人员详情</span>
</div>
<!-- 个人信息卡片 -->
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
<div class="flex flex-col">
<!-- 头像区域 -->
<div class="flex-shrink-0 mb-4">
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20portrait20of20a20asian20female20executive20in20suit20with20clean20background20high20quality20photo20realistic20detailed20face20corporate20style&width=80&height=80&orientation=squarish&flag=5ebb2186f7537b5a7e434d5cf8384120"
alt="员工头像" class="w-20 h-20 rounded-lg object-cover border border-gray-200">
</div>
<!-- 基本信息 -->
<div class="flex-1">
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-4">
<div>
<h1 class="text-2xl font-bold text-gray-800">林晓梅</h1>
<p class="text-gray-500">高级产品经理 | 产品研发中心</p>
</div>
<div class="flex space-x-2 mt-2 md:mt-0">
<button
class="bg-primary hover:bg-blue-700 text-white text-sm px-3 py-1 rounded-button flex items-center space-x-1 transition">
<i class="fas fa-edit fa-icon text-xs"></i>
<span>编辑</span>
</button>
<button
class="bg-white border border-gray-300 hover:bg-gray-50 text-gray-700 text-sm px-3 py-1 rounded-button flex items-center space-x-1 transition">
<i class="fas fa-print fa-icon text-xs"></i>
<span>打印</span>
</button>
</div>
</div>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div>
<p class="text-xs text-gray-500">员工编号</p>
<p class="text-sm font-medium">EMP20230085</p>
</div>
<div>
<p class="text-xs text-gray-500">入职日期</p>
<p class="text-sm font-medium">2018-06-15</p>
</div>
<div>
<p class="text-xs text-gray-500">工作年限</p>
<p class="text-sm font-medium">5年4个月</p>
</div>
<div>
<p class="text-xs text-gray-500">员工状态</p>
<p class="text-sm font-medium text-green-600">在职</p>
</div>
</div>
</div>
</div>
</div>
<!-- 移除标签页导航 -->
<!-- 基本信息内容 -->
<div class="space-y-6 mb-6">
<!-- 个人信息 -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-user-circle fa-icon text-primary mr-2"></i>
<span>个人信息</span>
</h2>
<div class="space-y-4">
<div class="grid grid-cols-2 gap-4">
<div>
<p class="text-xs text-gray-500">姓名</p>
<p class="text-sm font-medium">林晓梅</p>
</div>
<div>
<p class="text-xs text-gray-500">性别</p>
<p class="text-sm font-medium"></p>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<p class="text-xs text-gray-500">出生日期</p>
<p class="text-sm font-medium">1990-08-23</p>
</div>
<div>
<p class="text-xs text-gray-500">年龄</p>
<p class="text-sm font-medium">33岁</p>
</div>
</div>
<div>
<p class="text-xs text-gray-500">身份证号</p>
<p class="text-sm font-medium">310******19900823****</p>
</div>
<div>
<p class="text-xs text-gray-500">婚姻状况</p>
<p class="text-sm font-medium">已婚</p>
</div>
<div>
<p class="text-xs text-gray-500">联系电话</p>
<p class="text-sm font-medium">138****5678</p>
</div>
<div>
<p class="text-xs text-gray-500">电子邮箱</p>
<p class="text-sm font-medium">linxiaomei@company.com</p>
</div>
<div>
<p class="text-xs text-gray-500">现居住地</p>
<p class="text-sm font-medium">上海市浦东新区张江高科技园区科苑路88号</p>
</div>
</div>
</div>
<!-- 工作信息 -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-briefcase fa-icon text-primary mr-2"></i>
<span>工作信息</span>
</h2>
<div class="space-y-4">
<div>
<p class="text-xs text-gray-500">所属部门</p>
<p class="text-sm font-medium">产品研发中心 - 产品设计部</p>
</div>
<div>
<p class="text-xs text-gray-500">直接上级</p>
<p class="text-sm font-medium">张伟(产品研发中心总监)</p>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<p class="text-xs text-gray-500">职位</p>
<p class="text-sm font-medium">高级产品经理</p>
</div>
<div>
<p class="text-xs text-gray-500">职级</p>
<p class="text-sm font-medium">P7</p>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<p class="text-xs text-gray-500">员工类型</p>
<p class="text-sm font-medium">正式员工</p>
</div>
<div>
<p class="text-xs text-gray-500">工作地点</p>
<p class="text-sm font-medium">上海总部</p>
</div>
</div>
<div>
<p class="text-xs text-gray-500">工作职责</p>
<p class="text-sm font-medium">负责公司核心产品线的规划与设计,主导产品全生命周期管理,协调跨部门资源推动产品落地</p>
</div>
</div>
</div>
<!-- 职业履历 -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-history fa-icon text-primary mr-2"></i>
<span>职业履历</span>
</h2>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
公司名称</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
职位</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
时间段</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
工作内容</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
状态</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">上海科技有限公司</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">高级产品经理</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2018-06-15 至今 · 5年4个月</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">主导公司核心产品线的规划与设计带领5人产品团队成功推出3款市场领先产品用户增长300%
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded bg-primary/10 text-primary">当前公司</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">北京创新科技有限公司</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">产品经理</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2015-07-01 至 2018-05-30 · 2年11个月</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">负责企业级SaaS产品的设计与迭代成功将产品NPS从35提升至72客户续费率提升至85%
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap"></td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">深圳科技发展有限公司</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">产品助理</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2013-09-01 至 2015-06-30 · 1年10个月</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">协助产品经理完成需求分析、原型设计参与3个移动端项目从0到1的全过程</div>
</td>
<td class="px-6 py-4 whitespace-nowrap"></td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- 教育经历 -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-graduation-cap fa-icon text-primary mr-2"></i>
<span>教育经历</span>
</h2>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
学校名称</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
学历/专业</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
时间段</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
成绩/荣誉</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
状态</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">复旦大学</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">计算机科学与技术 · 硕士</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2010-09-01 至 2013-06-30</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">GPA 3.8/4.0,获得校级优秀毕业生称号,研究方向为人机交互与用户体验</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded bg-primary/10 text-primary">最高学历</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">南京大学</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">软件工程 · 学士</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2006-09-01 至 2010-06-30</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">GPA 3.6/4.0获得国家奖学金参与2项校级科研项目</div>
</td>
<td class="px-6 py-4 whitespace-nowrap"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 组织架构图 -->
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-sitemap fa-icon text-primary mr-2"></i>
<span>组织架构</span>
</h2>
<div class="bg-gray-100 rounded-lg p-4 h-64 flex items-center justify-center">
<img src="https://ai-public.mastergo.com/gen_page/map_placeholder_1280x720.png" alt="组织架构图"
class="max-w-full max-h-full object-contain">
</div>
</div>
<!-- 职业履历 -->
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-history fa-icon text-primary mr-2"></i>
<span>职业履历</span>
</h2>
<div class="space-y-4">
<!-- 当前公司经历 -->
<div class="border-l-2 border-primary pl-4 py-2">
<div class="flex justify-between items-start">
<div>
<h3 class="font-medium text-gray-800">上海科技有限公司</h3>
<p class="text-sm text-gray-600">高级产品经理</p>
</div>
<span class="text-xs bg-primary/10 text-primary px-2 py-1 rounded">当前公司</span>
</div>
<p class="text-xs text-gray-500 mt-1">2018-06-15 至今 · 5年4个月</p>
<p class="text-sm text-gray-700 mt-2">主导公司核心产品线的规划与设计带领5人产品团队成功推出3款市场领先产品用户增长300%</p>
</div>
<!-- 过往经历1 -->
<div class="border-l-2 border-gray-200 pl-4 py-2">
<div class="flex justify-between items-start">
<div>
<h3 class="font-medium text-gray-800">北京创新科技有限公司</h3>
<p class="text-sm text-gray-600">产品经理</p>
</div>
</div>
<p class="text-xs text-gray-500 mt-1">2015-07-01 至 2018-05-30 · 2年11个月</p>
<p class="text-sm text-gray-700 mt-2">负责企业级SaaS产品的设计与迭代成功将产品NPS从35提升至72客户续费率提升至85%</p>
</div>
<!-- 过往经历2 -->
<div class="border-l-2 border-gray-200 pl-4 py-2">
<div class="flex justify-between items-start">
<div>
<h3 class="font-medium text-gray-800">深圳科技发展有限公司</h3>
<p class="text-sm text-gray-600">产品助理</p>
</div>
</div>
<p class="text-xs text-gray-500 mt-1">2013-09-01 至 2015-06-30 · 1年10个月</p>
<p class="text-sm text-gray-700 mt-2">协助产品经理完成需求分析、原型设计参与3个移动端项目从0到1的全过程</p>
</div>
</div>
</div>
<!-- 教育经历 -->
<div class="bg-white rounded-lg shadow-md p-6">
<h2 class="text-lg font-medium text-gray-800 mb-4 flex items-center">
<i class="fas fa-graduation-cap fa-icon text-primary mr-2"></i>
<span>教育经历</span>
</h2>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
学校名称</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
学历/专业</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
时间段</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
成绩/荣誉</th>
<th scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
状态</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">复旦大学</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">计算机科学与技术 · 硕士</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2010-09-01 至 2013-06-30</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">GPA 3.8/4.0,获得校级优秀毕业生称号,研究方向为人机交互与用户体验</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 text-xs rounded bg-primary/10 text-primary">最高学历</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium text-gray-800">南京大学</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-600">软件工程 · 学士</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs text-gray-500">2006-09-01 至 2010-06-30</div>
</td>
<td class="px-6 py-4">
<div class="text-sm text-gray-700">GPA 3.6/4.0获得国家奖学金参与2项校级科研项目</div>
</td>
<td class="px-6 py-4 whitespace-nowrap"></td>
</tr>
</tbody>
</table>
</div>
</div>
</main>
<!-- 底部通栏 -->
<footer class="bg-gray-800 text-white w-full py-8">
<div class="container mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-6">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">公司简介</a></li>
<li><a href="#" class="hover:text-white transition">发展历程</a></li>
<li><a href="#" class="hover:text-white transition">企业文化</a></li>
<li><a href="#" class="hover:text-white transition">管理团队</a></li>
<li><a href="#" class="hover:text-white transition">加入我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">人力资源系统</a></li>
<li><a href="#" class="hover:text-white transition">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white transition">绩效管理系统</a></li>
<li><a href="#" class="hover:text-white transition">考勤管理系统</a></li>
<li><a href="#" class="hover:text-white transition">培训管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">使用文档</a></li>
<li><a href="#" class="hover:text-white transition">视频教程</a></li>
<li><a href="#" class="hover:text-white transition">常见问题</a></li>
<li><a href="#" class="hover:text-white transition">API接口</a></li>
<li><a href="#" class="hover:text-white transition">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-start">
<i class="fas fa-map-marker-alt fa-icon mr-2 mt-0.5"></i>
<span>上海市浦东新区张江高科技园区科苑路88号</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone fa-icon mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon mr-2"></i>
<span>service@hrsystem.com</span>
</li>
<li class="flex items-center space-x-3 mt-4">
<a href="#"
class="w-6 h-6 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-weixin fa-icon text-xs"></i>
</a>
<a href="#"
class="w-6 h-6 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-weibo fa-icon text-xs"></i>
</a>
<a href="#"
class="w-6 h-6 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-linkedin-in fa-icon text-xs"></i>
</a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 pt-6">
<div class="flex flex-col md:flex-row justify-between items-center">
<p class="text-xs text-gray-400 mb-2 md:mb-0">© 2023 人力资源管理系统 版权所有</p>
<div class="flex space-x-4">
<a href="#" class="text-xs text-gray-400 hover:text-white transition">隐私政策</a>
<a href="#" class="text-xs text-gray-400 hover:text-white transition">服务条款</a>
<a href="#" class="text-xs text-gray-400 hover:text-white transition">法律声明</a>
<a href="#" class="text-xs text-gray-400 hover:text-white transition">沪ICP备12345678号-1</a>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,572 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
body {
min-height: 1024px;
}
.nav-item:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.tree-node:hover {
background-color: rgba(45, 92, 246, 0.05);
}
.table-row:hover {
background-color: #F5F6FA;
}
.ai-icon {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { opacity: 0.8; }
50% { opacity: 1; }
100% { opacity: 0.8; }
}
.marquee {
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
i {
display: flex !important;
justify-content: center !important;
align-items: center !important;
}
</style>
</head>
<body class="bg-secondary font-sans">
<!-- 顶部导航栏 -->
<!--<header class="bg-primary text-white w-full fixed top-0 z-50 shadow-md">
<div class="container mx-auto px-4 h-14 flex items-center justify-between">
<div class="flex items-center">
<span class="font-['Pacifico'] text-xl mr-8">人力</span>
<nav class="hidden md:flex space-x-1">
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">多维统计</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">人员管理</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">组织管理</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">考勤管理</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">绩效管理</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">薪酬管理</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">知识库</a>
<a href="#" class="nav-item px-3 py-1 text-sm rounded-button hover:bg-primary-600">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..." class="bg-primary-600 text-white text-sm py-1 pl-8 pr-3 rounded-button border border-primary-400 focus:outline-none focus:ring-1 focus:ring-white w-48" />
<i class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 text-white text-sm"></i>
</div>
<button class="flex items-center space-x-1 bg-primary-600 hover:bg-primary-700 px-2 py-1 rounded-button text-sm">
<i class="fas fa-robot ai-icon text-white text-sm"></i>
<span>AI助手</span>
</button>
<div class="flex items-center space-x-2 cursor-pointer">
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center text-primary font-semibold"></div>
<span class="text-sm hidden md:inline">张明远</span>
</div>
</div>
</div>
</header> -->
<!-- 主内容区 -->
<main class="container mx-auto px-4 pt-6 pb-10 flex">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-4">
<div class="bg-white rounded-md shadow-sm p-4 h-full">
<div class="flex items-center justify-between mb-4">
<h3 class="text-sm font-semibold text-gray-700">组织架构</h3>
<button class="text-primary text-sm">全部展开</button>
</div>
<div class="space-y-1 text-sm">
<!-- 一级部门 -->
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-building mr-2 text-gray-500 text-xs"></i>
<span>集团总部</span>
</div>
<!-- 二级部门 -->
<div class="pl-4 mt-1 space-y-1">
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-users mr-2 text-gray-500 text-xs"></i>
<span>人力资源部</span>
</div>
<!-- 三级部门 -->
<div class="pl-4 mt-1 space-y-1">
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer flex items-center">
<i class="fas fa-user-tie mr-2 text-gray-500 text-xs"></i>
<span>招聘组</span>
</div>
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer flex items-center">
<i class="fas fa-chart-line mr-2 text-gray-500 text-xs"></i>
<span>绩效组</span>
</div>
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer flex items-center">
<i class="fas fa-money-bill-wave mr-2 text-gray-500 text-xs"></i>
<span>薪酬组</span>
</div>
</div>
</div>
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-laptop-code mr-2 text-gray-500 text-xs"></i>
<span>技术研发部</span>
</div>
</div>
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-shopping-cart mr-2 text-gray-500 text-xs"></i>
<span>市场营销部</span>
</div>
</div>
</div>
</div>
<!-- 一级部门 -->
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-building mr-2 text-gray-500 text-xs"></i>
<span>华东分公司</span>
</div>
</div>
<!-- 一级部门 -->
<div class="tree-node pl-2 py-1 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-building mr-2 text-gray-500 text-xs"></i>
<span>华南分公司</span>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧内容区 -->
<div class="w-4/5">
<!-- 公告栏 -->
<div class="bg-white rounded-md shadow-sm p-3 mb-4 overflow-hidden">
<div class="flex items-center">
<i class="fas fa-bullhorn text-primary mr-2 text-sm"></i>
<div class="marquee whitespace-nowrap text-sm">
<span class="mr-8">【系统公告】2023年度绩效考核工作将于12月1日正式启动</span>
<span class="mr-8">【重要通知】全体员工请于11月30日前完成个人信息核对</span>
<span class="mr-8">【培训通知】11月25日将举办新员工入职培训请相关人员准时参加</span>
</div>
</div>
</div>
<!-- 筛选区 -->
<div class="bg-white rounded-md shadow-sm p-4 mb-4">
<div class="flex items-center flex-wrap gap-4">
<div class="flex items-center">
<span class="text-sm text-gray-600 mr-2">时间段:</span>
<div class="relative">
<input type="text" class="border rounded-button px-3 py-1 text-sm w-40" placeholder="开始日期" />
<i class="fas fa-calendar-alt absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
<span class="mx-2 text-sm text-gray-400"></span>
<div class="relative">
<input type="text" class="border rounded-button px-3 py-1 text-sm w-40" placeholder="结束日期" />
<i class="fas fa-calendar-alt absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
<div class="flex items-center">
<span class="text-sm text-gray-600 mr-2">作业人员:</span>
<div class="relative">
<input type="text" class="border rounded-button px-3 py-1 text-sm w-32" placeholder="姓名/工号" />
<i class="fas fa-search absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
<div class="flex items-center">
<span class="text-sm text-gray-600 mr-2">作业类型:</span>
<div class="relative">
<select class="border rounded-button px-3 py-1 text-sm w-32 appearance-none bg-white">
<option>全部</option>
<option>招聘面试</option>
<option>培训组织</option>
<option>绩效考核</option>
<option>薪酬核算</option>
</select>
<i class="fas fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
<button class="ml-auto bg-primary hover:bg-primary-600 text-white px-3 py-1 rounded-button text-sm whitespace-nowrap">
<i class="fas fa-filter mr-1 text-xs"></i>
筛选
</button>
<button class="bg-white border border-gray-300 hover:bg-gray-50 text-gray-700 px-3 py-1 rounded-button text-sm whitespace-nowrap">
<i class="fas fa-redo mr-1 text-xs"></i>
重置
</button>
</div>
</div>
<!-- 数据表格 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden">
<div class="p-4 border-b flex items-center justify-between">
<h3 class="text-sm font-semibold text-gray-700">作业明细</h3>
<div class="flex items-center space-x-2">
<button class="bg-primary hover:bg-primary-600 text-white px-3 py-1 rounded-button text-sm whitespace-nowrap">
<i class="fas fa-plus mr-1 text-xs"></i>
新增
</button>
<button class="bg-white border border-gray-300 hover:bg-gray-50 text-gray-700 px-3 py-1 rounded-button text-sm whitespace-nowrap">
<i class="fas fa-download mr-1 text-xs"></i>
导出
</button>
</div>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200 text-sm">
<thead class="bg-gray-50">
<tr>
<th class="px-4 py-2 text-left text-gray-500 font-medium">序号</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">作业类型</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">部门</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">作业人员</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">开始时间</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">结束时间</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">持续时长</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">作业数量</th>
<th class="px-4 py-2 text-left text-gray-500 font-medium">操作</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr class="table-row">
<td class="px-4 py-2">1</td>
<td class="px-4 py-2">招聘面试</td>
<td class="px-4 py-2">人力资源部/招聘组</td>
<td class="px-4 py-2">张明远</td>
<td class="px-4 py-2">2023-11-01 09:00</td>
<td class="px-4 py-2">2023-11-01 11:30</td>
<td class="px-4 py-2">2.5小时</td>
<td class="px-4 py-2">3人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">2</td>
<td class="px-4 py-2">培训组织</td>
<td class="px-4 py-2">人力资源部</td>
<td class="px-4 py-2">李思雨</td>
<td class="px-4 py-2">2023-11-02 14:00</td>
<td class="px-4 py-2">2023-11-02 17:00</td>
<td class="px-4 py-2">3小时</td>
<td class="px-4 py-2">1场</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">3</td>
<td class="px-4 py-2">绩效考核</td>
<td class="px-4 py-2">人力资源部/绩效组</td>
<td class="px-4 py-2">王建国</td>
<td class="px-4 py-2">2023-11-03 10:00</td>
<td class="px-4 py-2">2023-11-03 12:00</td>
<td class="px-4 py-2">2小时</td>
<td class="px-4 py-2">5人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">4</td>
<td class="px-4 py-2">薪酬核算</td>
<td class="px-4 py-2">人力资源部/薪酬组</td>
<td class="px-4 py-2">赵晓芳</td>
<td class="px-4 py-2">2023-11-05 09:00</td>
<td class="px-4 py-2">2023-11-05 18:00</td>
<td class="px-4 py-2">8小时</td>
<td class="px-4 py-2">128人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">5</td>
<td class="px-4 py-2">招聘面试</td>
<td class="px-4 py-2">人力资源部/招聘组</td>
<td class="px-4 py-2">张明远</td>
<td class="px-4 py-2">2023-11-08 09:30</td>
<td class="px-4 py-2">2023-11-08 12:00</td>
<td class="px-4 py-2">2.5小时</td>
<td class="px-4 py-2">4人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">6</td>
<td class="px-4 py-2">培训组织</td>
<td class="px-4 py-2">人力资源部</td>
<td class="px-4 py-2">李思雨</td>
<td class="px-4 py-2">2023-11-10 13:30</td>
<td class="px-4 py-2">2023-11-10 16:30</td>
<td class="px-4 py-2">3小时</td>
<td class="px-4 py-2">1场</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">7</td>
<td class="px-4 py-2">绩效考核</td>
<td class="px-4 py-2">人力资源部/绩效组</td>
<td class="px-4 py-2">王建国</td>
<td class="px-4 py-2">2023-11-12 09:00</td>
<td class="px-4 py-2">2023-11-12 11:30</td>
<td class="px-4 py-2">2.5小时</td>
<td class="px-4 py-2">6人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">8</td>
<td class="px-4 py-2">薪酬核算</td>
<td class="px-4 py-2">人力资源部/薪酬组</td>
<td class="px-4 py-2">赵晓芳</td>
<td class="px-4 py-2">2023-11-15 09:00</td>
<td class="px-4 py-2">2023-11-15 17:30</td>
<td class="px-4 py-2">8.5小时</td>
<td class="px-4 py-2">135人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">9</td>
<td class="px-4 py-2">招聘面试</td>
<td class="px-4 py-2">人力资源部/招聘组</td>
<td class="px-4 py-2">张明远</td>
<td class="px-4 py-2">2023-11-18 09:00</td>
<td class="px-4 py-2">2023-11-18 11:00</td>
<td class="px-4 py-2">2小时</td>
<td class="px-4 py-2">2人</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">10</td>
<td class="px-4 py-2">培训组织</td>
<td class="px-4 py-2">人力资源部</td>
<td class="px-4 py-2">李思雨</td>
<td class="px-4 py-2">2023-11-20 14:00</td>
<td class="px-4 py-2">2023-11-20 17:00</td>
<td class="px-4 py-2">3小时</td>
<td class="px-4 py-2">1场</td>
<td class="px-4 py-2">
<button class="text-primary hover:text-primary-600 mr-2">
<i class="fas fa-edit text-xs"></i>
</button>
<button class="text-red-500 hover:text-red-600">
<i class="fas fa-trash-alt text-xs"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="px-4 py-3 border-t flex items-center justify-between">
<div class="text-sm text-gray-600">
显示 <span class="font-medium">1</span><span class="font-medium">10</span> 条,共 <span class="font-medium">128</span> 条记录
</div>
<div class="flex space-x-1">
<button class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50 disabled:opacity-50" disabled>
上一页
</button>
<button class="px-3 py-1 border rounded-button text-sm bg-primary text-white hover:bg-primary-600">
1
</button>
<button class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">
2
</button>
<button class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">
3
</button>
<span class="px-3 py-1 text-sm">...</span>
<button class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">
13
</button>
<button class="px-3 py-1 border rounded-button text-sm text-gray-700 hover:bg-gray-50">
下一页
</button>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="bg-gray-800 text-white py-8 w-full">
<div class="container mx-auto px-4">
<div class="grid grid-cols-4 gap-8">
<div>
<h4 class="text-sm font-semibold mb-4">关于我们</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">联系我们</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">产品服务</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">人力资源系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效考核系统</a></li>
<li><a href="#" class="hover:text-white">培训发展平台</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">帮助中心</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">视频教程</a></li>
<li><a href="#" class="hover:text-white">在线客服</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">联系我们</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-start">
<i class="fas fa-map-marker-alt mr-2 mt-1 text-xs"></i>
<span>上海市浦东新区张江高科技园区科苑路88号</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone-alt mr-2 text-xs"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope mr-2 text-xs"></i>
<span>hr@company.com</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
<div class="text-xs text-gray-400 mb-4 md:mb-0">
© 2023 人力资源管理系统 版权所有
</div>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weixin text-sm"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weibo text-sm"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-linkedin-in text-sm"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-github text-sm"></i>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,444 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.font-pacifico {
font-family: 'Pacifico', serif;
}
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
.scroll-container {
overflow: hidden;
white-space: nowrap;
}
.scroll-content {
display: inline-block;
animation: scroll 15s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary flex flex-col">
<!-- 顶部导航栏 -->
<!-- <header class="bg-primary text-white w-full h-16 shadow-md">
<div class="container mx-auto h-full px-6 flex items-center justify-between">
<div class="flex items-center">
<h1 class="font-pacifico text-2xl mr-10">人力</h1>
<nav class="hidden md:flex space-x-8">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-6">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..." class="bg-white text-gray-800 text-sm rounded-button pl-4 pr-10 py-2 w-48 focus:outline-none">
<i class="fas fa-search absolute right-3 top-2.5 text-gray-500 text-sm"></i>
</div>
<button class="hidden md:flex items-center space-x-1 bg-blue-600 hover:bg-blue-700 text-white text-sm px-3 py-1.5 rounded-button transition">
<i class="fas fa-robot fa-icon w-4 h-4"></i>
<span>AI助手</span>
</button>
<div class="flex items-center space-x-2 cursor-pointer">
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center">
<i class="fas fa-user text-primary"></i>
</div>
<span class="text-sm hidden md:block">张明远</span>
</div>
</div>
</div>
</header> -->
<!-- 主要内容区 -->
<main class="flex-1 container mx-auto px-6 py-8 flex">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-6">
<div class="bg-white rounded-md shadow p-4 h-full">
<div class="flex justify-between items-center mb-4">
<h2 class="font-medium text-gray-800">组织架构</h2>
<button class="text-primary text-sm">
<i class="fas fa-sync-alt fa-icon w-4 h-4"></i>
</button>
</div>
<div class="space-y-1">
<div class="flex items-center justify-between py-1.5 px-2 bg-gray-100 rounded">
<div class="flex items-center">
<i class="fas fa-building fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">集团公司</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-500"></i>
</div>
<div class="pl-6 space-y-1">
<div class="flex items-center justify-between py-1.5 px-2 hover:bg-gray-50 rounded">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">技术中心</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-500"></i>
</div>
<div class="pl-6 space-y-1">
<div class="flex items-center py-1.5 px-2 hover:bg-gray-50 rounded">
<i class="fas fa-code-branch fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">前端开发部</span>
</div>
<div class="flex items-center py-1.5 px-2 hover:bg-gray-50 rounded">
<i class="fas fa-code-branch fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">后端开发部</span>
</div>
<div class="flex items-center py-1.5 px-2 hover:bg-gray-50 rounded">
<i class="fas fa-code-branch fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">测试部</span>
</div>
</div>
<div class="flex items-center justify-between py-1.5 px-2 hover:bg-gray-50 rounded">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">产品中心</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-500"></i>
</div>
<div class="flex items-center justify-between py-1.5 px-2 hover:bg-gray-50 rounded">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">市场部</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-500"></i>
</div>
<div class="flex items-center justify-between py-1.5 px-2 hover:bg-gray-50 rounded">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-600"></i>
<span class="text-sm">人力资源部</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-500"></i>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧审批详情 -->
<div class="w-4/5">
<div class="bg-white rounded-md shadow p-6">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-semibold text-gray-800">员工异动审批详情</h2>
<div class="flex space-x-3">
<button class="bg-primary hover:bg-blue-700 text-white text-sm px-4 py-2 rounded-button transition">
<i class="fas fa-check fa-icon w-4 h-4 mr-1"></i>
<span>同意</span>
</button>
<button class="bg-red-500 hover:bg-red-600 text-white text-sm px-4 py-2 rounded-button transition">
<i class="fas fa-times fa-icon w-4 h-4 mr-1"></i>
<span>拒绝</span>
</button>
<button class="border border-gray-300 hover:bg-gray-50 text-gray-700 text-sm px-4 py-2 rounded-button transition">
<i class="fas fa-print fa-icon w-4 h-4 mr-1"></i>
<span>打印</span>
</button>
</div>
</div>
<!-- 基本信息 -->
<div class="mb-8">
<h3 class="text-lg font-medium text-gray-800 mb-4 pb-2 border-b">基本信息</h3>
<div class="grid grid-cols-3 gap-6">
<div class="col-span-1">
<div class="flex flex-col items-center">
<div class="w-32 h-32 rounded-full bg-gray-200 mb-3 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=professional20asian20businessman20portrait20with20white20background20high20quality20photo20realistic20detailed20face20corporate20style20neutral20expression&width=300&height=300&orientation=squarish&flag=4bef40f432379c943d4dcedd922e3bf6"
alt="员工照片" class="w-full h-full object-cover">
</div>
<span class="text-sm text-gray-600">员工照片</span>
</div>
</div>
<div class="col-span-2">
<div class="grid grid-cols-2 gap-4">
<div>
<p class="text-sm text-gray-500 mb-1">员工姓名</p>
<p class="text-gray-800 font-medium">林志强</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">员工编号</p>
<p class="text-gray-800 font-medium">EMP20230085</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">原部门</p>
<p class="text-gray-800 font-medium">前端开发部</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">新部门</p>
<p class="text-gray-800 font-medium">产品设计部</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">原岗位</p>
<p class="text-gray-800 font-medium">高级前端工程师</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">新岗位</p>
<p class="text-gray-800 font-medium">产品设计师</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">异动类型</p>
<p class="text-gray-800 font-medium">部门调动</p>
</div>
<div>
<p class="text-sm text-gray-500 mb-1">异动时间</p>
<p class="text-gray-800 font-medium">2023-06-15</p>
</div>
<div class="col-span-2">
<p class="text-sm text-gray-500 mb-1">异动原因</p>
<p class="text-gray-800 font-medium">根据公司人才发展规划,结合员工个人职业发展意愿,经双方协商一致,同意调动。</p>
</div>
</div>
</div>
</div>
</div>
<!-- 证件信息 -->
<div class="mb-8">
<h3 class="text-lg font-medium text-gray-800 mb-4 pb-2 border-b">证件信息</h3>
<div class="grid grid-cols-2 gap-6">
<div>
<p class="text-sm text-gray-500 mb-2">身份证正面</p>
<div class="h-48 bg-gray-100 rounded-md overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=Chinese20ID20card20front20side20realistic20photo20white20background20high20resolution20detailed20text20and20portrait&width=600&height=400&orientation=landscape&flag=e6c18985431a6efddd63bff3f2e5a4e9"
alt="身份证正面" class="w-full h-full object-cover">
</div>
</div>
<div>
<p class="text-sm text-gray-500 mb-2">身份证反面</p>
<div class="h-48 bg-gray-100 rounded-md overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=Chinese20ID20card20back20side20realistic20photo20white20background20high20resolution20detailed20text20and20barcode&width=600&height=400&orientation=landscape&flag=2737ba49402a36d436de3b0671643607"
alt="身份证反面" class="w-full h-full object-cover">
</div>
</div>
</div>
</div>
<!-- 审批流程 -->
<div>
<h3 class="text-lg font-medium text-gray-800 mb-4 pb-2 border-b">审批流程</h3>
<div class="relative">
<!-- 时间轴 -->
<div class="absolute left-8 top-0 bottom-0 w-0.5 bg-gray-200"></div>
<!-- 流程节点 -->
<div class="space-y-8">
<!-- 提交申请 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-green-500 border-4 border-green-100"></div>
</div>
<div class="bg-green-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-green-800">提交申请</h4>
<span class="text-sm text-green-600">2023-06-05 09:30</span>
</div>
<p class="text-sm text-gray-700">申请人:林志强</p>
</div>
</div>
<!-- 部门经理审批 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-green-500 border-4 border-green-100"></div>
</div>
<div class="bg-green-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-green-800">部门经理审批</h4>
<span class="text-sm text-green-600">2023-06-05 14:15</span>
</div>
<p class="text-sm text-gray-700">审批人:王建国(前端开发部经理)</p>
<p class="text-sm text-gray-700 mt-1">审批意见:同意调动,该员工在产品设计方面有潜力。</p>
</div>
</div>
<!-- 技术总监审批 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-green-500 border-4 border-green-100"></div>
</div>
<div class="bg-green-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-green-800">技术总监审批</h4>
<span class="text-sm text-green-600">2023-06-06 10:45</span>
</div>
<p class="text-sm text-gray-700">审批人:张伟(技术中心总监)</p>
<p class="text-sm text-gray-700 mt-1">审批意见:同意,符合技术人才发展规划。</p>
</div>
</div>
<!-- HR审批 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-green-500 border-4 border-green-100"></div>
</div>
<div class="bg-green-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-green-800">HR审批</h4>
<span class="text-sm text-green-600">2023-06-07 11:20</span>
</div>
<p class="text-sm text-gray-700">审批人:李芳(人力资源部经理)</p>
<p class="text-sm text-gray-700 mt-1">审批意见:已核实相关情况,同意调动。</p>
</div>
</div>
<!-- 总经理审批 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-green-500 border-4 border-green-100"></div>
</div>
<div class="bg-green-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-green-800">总经理审批</h4>
<span class="text-sm text-green-600">2023-06-08 16:30</span>
</div>
<p class="text-sm text-gray-700">审批人:陈明(总经理)</p>
<p class="text-sm text-gray-700 mt-1">审批意见:同意执行。</p>
</div>
</div>
<!-- 入职生效 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-blue-500 border-4 border-blue-100"></div>
</div>
<div class="bg-blue-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-blue-800">入职生效</h4>
<span class="text-sm text-blue-600">待处理</span>
</div>
<p class="text-sm text-gray-700">计划生效日期2023-06-15</p>
</div>
</div>
<!-- 审批完结 -->
<div class="relative pl-16">
<div class="absolute left-0 top-0 w-16 flex justify-center">
<div class="w-4 h-4 rounded-full bg-gray-300 border-4 border-gray-100"></div>
</div>
<div class="bg-gray-50 rounded-md p-4">
<div class="flex justify-between items-center mb-2">
<h4 class="font-medium text-gray-800">审批完结</h4>
<span class="text-sm text-gray-500">未开始</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 底部通栏 -->
<footer class="bg-gray-800 text-white w-full py-8">
<div class="container mx-auto px-6">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2">
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">公司简介</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">发展历程</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">企业文化</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">管理团队</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2">
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">人力资源系统</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">薪酬管理系统</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">绩效考核系统</a></li>
<li><a href="#" class="text-xs text-gray-400 hover:text-white transition">培训发展平台</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2">
<li class="text-xs text-gray-400">电话400-888-8888</li>
<li class="text-xs text-gray-400">邮箱service@hrsystem.com</li>
<li class="text-xs text-gray-400">地址北京市海淀区科技园路88号</li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">关注我们</h3>
<div class="flex space-x-4">
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-weixin fa-icon w-4 h-4"></i>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-weibo fa-icon w-4 h-4"></i>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-primary transition">
<i class="fab fa-linkedin-in fa-icon w-4 h-4"></i>
</a>
</div>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 text-center">
<p class="text-xs text-gray-500">© 2023 人力资源管理系统 版权所有 京ICP备12345678号</p>
</div>
</div>
</footer>
</body>
</html>

@ -1,581 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统 - 数据字典</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.tree-item {
transition: all 0.3s ease;
}
.tree-item:hover {
background-color: rgba(45, 92, 246, 0.1);
}
.scroll-container {
scrollbar-width: thin;
scrollbar-color: #2D5CF6 #F5F6FA;
}
.scroll-container::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.scroll-container::-webkit-scrollbar-track {
background: #F5F6FA;
}
.scroll-container::-webkit-scrollbar-thumb {
background-color: #2D5CF6;
border-radius: 20px;
}
.marquee {
animation: marquee 20s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
.dropdown:hover .dropdown-menu {
display: block;
}
i.fa-icon {
display: flex;
justify-content: center;
align-items: center;
width: 20px;
height: 20px;
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary font-sans text-gray-800">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary text-white shadow-md">
<div class="container mx-auto px-6 h-16 flex items-center justify-between">
<div class="flex items-center space-x-8">
<a href="#" class="text-xl font-['Pacifico']">人力</a>
<nav class="hidden md:flex space-x-6 text-sm">
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">多维统计</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">人员管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">组织管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">考勤管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">绩效管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">薪酬管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">知识库</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..." class="bg-white/20 border-none text-white placeholder-white/70 rounded-button pl-8 pr-4 py-1 text-sm w-40 focus:w-60 transition-all duration-300 focus:outline-none">
<i class="fas fa-search fa-icon absolute left-2 top-1/2 transform -translate-y-1/2 text-white/70"></i>
</div>
<div class="relative group">
<div class="flex items-center space-x-2 cursor-pointer">
<div class="w-8 h-8 rounded-full bg-white/20 flex items-center justify-center">
<i class="fas fa-user fa-icon text-white"></i>
</div>
<span class="text-sm">张明远</span>
</div>
<div class="absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg z-10 hidden group-hover:block">
<div class="py-1">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">个人中心</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">系统设置</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">退出登录</a>
</div>
</div>
</div>
<button class="bg-white text-primary rounded-button px-3 py-1 text-sm flex items-center space-x-1 hover:bg-white/90">
<i class="fas fa-robot fa-icon"></i>
<span>AI助手</span>
</button>
</div>
</div>
</header> -->
<!-- 公告栏 -->
<div class="bg-white border-b border-gray-200">
<div class="container mx-auto px-6 py-2 overflow-hidden">
<div class="flex items-center">
<span class="bg-red-500 text-white text-xs px-2 py-1 rounded-button mr-3 whitespace-nowrap">最新公告</span>
<div class="overflow-hidden">
<div class="marquee whitespace-nowrap">
<span class="text-sm mr-8">系统将于2023年12月15日00:00-06:00进行升级维护</span>
<span class="text-sm mr-8">2023年度绩效考核工作已启动请各部门按时完成</span>
<span class="text-sm mr-8">新员工入职培训将于本周五下午2点在3楼会议室举行</span>
</div>
</div>
</div>
</div>
</div>
<!-- 主内容区 -->
<main class="container mx-auto px-6 py-8">
<div class="flex justify-between items-center mb-6">
<h1 class="text-2xl font-bold text-gray-800">数据字典管理</h1>
<div class="flex space-x-3">
<button class="bg-primary text-white rounded-button px-4 py-2 text-sm flex items-center space-x-1 hover:bg-primary/90">
<i class="fas fa-plus fa-icon"></i>
<span>新增元数据域</span>
</button>
<button class="bg-white border border-gray-300 rounded-button px-4 py-2 text-sm flex items-center space-x-1 hover:bg-gray-50">
<i class="fas fa-download fa-icon"></i>
<span>导出配置</span>
</button>
</div>
</div>
<div class="bg-white rounded-lg shadow-md overflow-hidden">
<div class="flex border-b border-gray-200">
<div class="w-1/4 border-r border-gray-200">
<div class="p-4 border-b border-gray-200">
<div class="relative">
<input type="text" placeholder="搜索元数据域..." class="w-full border border-gray-300 rounded-button pl-8 pr-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<i class="fas fa-search fa-icon absolute left-2 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
</div>
</div>
<div class="h-[600px] overflow-y-auto scroll-container">
<div class="p-2">
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center justify-between">
<div class="flex items-center space-x-2">
<i class="fas fa-folder fa-icon text-yellow-500"></i>
<span>基础信息</span>
</div>
<i class="fas fa-chevron-down fa-icon text-gray-500"></i>
</div>
<div class="ml-6 mt-1">
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-id-card fa-icon text-blue-500"></i>
<span>员工编号</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-user fa-icon text-blue-500"></i>
<span>姓名</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-venus-mars fa-icon text-blue-500"></i>
<span>性别</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-birthday-cake fa-icon text-blue-500"></i>
<span>出生日期</span>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center justify-between mt-2">
<div class="flex items-center space-x-2">
<i class="fas fa-folder fa-icon text-yellow-500"></i>
<span>技术职务</span>
</div>
<i class="fas fa-chevron-right fa-icon text-gray-500"></i>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center justify-between mt-2">
<div class="flex items-center space-x-2">
<i class="fas fa-folder fa-icon text-yellow-500"></i>
<span>行政职务</span>
</div>
<i class="fas fa-chevron-down fa-icon text-gray-500"></i>
</div>
<div class="ml-6 mt-1">
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-sitemap fa-icon text-blue-500"></i>
<span>行政级别</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-money-bill-wave fa-icon text-blue-500"></i>
<span>级别待遇</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center space-x-2">
<i class="fas fa-calendar-alt fa-icon text-blue-500"></i>
<span>任职时间</span>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center justify-between mt-2">
<div class="flex items-center space-x-2">
<i class="fas fa-folder fa-icon text-yellow-500"></i>
<span>联系方式</span>
</div>
<i class="fas fa-chevron-right fa-icon text-gray-500"></i>
</div>
<div class="tree-item cursor-pointer p-2 rounded-button flex items-center justify-between mt-2">
<div class="flex items-center space-x-2">
<i class="fas fa-folder fa-icon text-yellow-500"></i>
<span>其他信息</span>
</div>
<i class="fas fa-chevron-right fa-icon text-gray-500"></i>
</div>
</div>
</div>
</div>
<div class="w-3/4">
<div class="p-4 border-b border-gray-200 flex justify-between items-center">
<h2 class="text-lg font-semibold">行政职务 - 属性配置</h2>
<button class="bg-primary text-white rounded-button px-3 py-1 text-sm flex items-center space-x-1 hover:bg-primary/90">
<i class="fas fa-plus fa-icon"></i>
<span>新增属性</span>
</button>
</div>
<div class="h-[600px] overflow-y-auto scroll-container">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">属性名称</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">显示名称</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">数据类型</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">是否必填</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">默认值</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">操作</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">admin_level</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">行政级别</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-blue-100 text-blue-800 rounded-button text-xs">列表</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">level_benefit</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">级别待遇</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-blue-100 text-blue-800 rounded-button text-xs">列表</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">appointment_date</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">任职时间</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-purple-100 text-purple-800 rounded-button text-xs">日期</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">系统当前日期</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">department</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">所属部门</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-blue-100 text-blue-800 rounded-button text-xs">列表</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">job_title</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">职务名称</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-indigo-100 text-indigo-800 rounded-button text-xs">文本</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-green-100 text-green-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">-</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">is_leader</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">是否领导职务</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-pink-100 text-pink-800 rounded-button text-xs">布尔</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 py-1 bg-gray-100 text-gray-800 rounded-button text-xs"></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-primary/80 mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- 列表数据配置弹窗 -->
<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden" id="listConfigModal">
<div class="bg-white rounded-lg shadow-xl w-1/2 max-h-[80vh] overflow-hidden">
<div class="px-6 py-4 border-b border-gray-200 flex justify-between items-center">
<h3 class="text-lg font-semibold">列表数据配置 - 行政级别</h3>
<button onclick="document.getElementById('listConfigModal').classList.add('hidden')" class="text-gray-400 hover:text-gray-500">
<i class="fas fa-times fa-icon"></i>
</button>
</div>
<div class="p-6 overflow-y-auto h-[60vh]">
<div class="mb-6">
<label class="block text-sm font-medium text-gray-700 mb-1">数据来源</label>
<div class="flex space-x-4">
<div class="flex items-center">
<input id="staticData" name="dataSource" type="radio" class="h-4 w-4 text-primary focus:ring-primary border-gray-300" checked>
<label for="staticData" class="ml-2 block text-sm text-gray-700">静态数据</label>
</div>
<div class="flex items-center">
<input id="apiData" name="dataSource" type="radio" class="h-4 w-4 text-primary focus:ring-primary border-gray-300">
<label for="apiData" class="ml-2 block text-sm text-gray-700">API接口</label>
</div>
<div class="flex items-center">
<input id="functionData" name="dataSource" type="radio" class="h-4 w-4 text-primary focus:ring-primary border-gray-300">
<label for="functionData" class="ml-2 block text-sm text-gray-700">回调函数</label>
</div>
</div>
</div>
<div id="staticDataConfig">
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">数据项</label>
<div class="bg-gray-50 rounded-lg p-4">
<div class="flex items-center justify-between mb-2">
<span class="text-sm font-medium">数据项列表</span>
<button class="text-primary text-sm flex items-center">
<i class="fas fa-plus fa-icon mr-1"></i>
<span>添加项</span>
</button>
</div>
<div class="space-y-2">
<div class="flex items-center space-x-2">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="1级">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="1">
<button class="text-red-500">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</div>
<div class="flex items-center space-x-2">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="2级">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="2">
<button class="text-red-500">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</div>
<div class="flex items-center space-x-2">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="3级">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="3">
<button class="text-red-500">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</div>
<div class="flex items-center space-x-2">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="4级">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" value="4">
<button class="text-red-500">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div id="apiDataConfig" class="hidden">
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">API地址</label>
<input type="text" class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" placeholder="请输入API地址">
</div>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">请求方法</label>
<select class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>GET</option>
<option>POST</option>
<option>PUT</option>
<option>DELETE</option>
</select>
</div>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">请求参数</label>
<div class="bg-gray-50 rounded-lg p-4">
<div class="flex items-center justify-between mb-2">
<span class="text-sm font-medium">参数列表</span>
<button class="text-primary text-sm flex items-center">
<i class="fas fa-plus fa-icon mr-1"></i>
<span>添加参数</span>
</button>
</div>
<div class="space-y-2">
<div class="flex items-center space-x-2">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" placeholder="参数名">
<input type="text" class="flex-1 border border-gray-300 rounded-button px-3 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" placeholder="参数值">
<button class="text-red-500">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div id="functionDataConfig" class="hidden">
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">函数名称</label>
<input type="text" class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" placeholder="请输入函数名称">
</div>
<div class="mb-4">
<label class="block text-sm font-medium text-gray-700 mb-1">函数代码</label>
<textarea class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm font-mono h-40 focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary" placeholder="// 请在此处编写回调函数代码"></textarea>
</div>
</div>
</div>
<div class="px-6 py-4 border-t border-gray-200 flex justify-end space-x-3">
<button onclick="document.getElementById('listConfigModal').classList.add('hidden')" class="bg-white border border-gray-300 rounded-button px-4 py-2 text-sm hover:bg-gray-50">取消</button>
<button class="bg-primary text-white rounded-button px-4 py-2 text-sm hover:bg-primary/90">保存配置</button>
</div>
</div>
</div>
</main>
<!-- 底部区域 -->
<footer class="w-full bg-gray-800 text-white mt-auto">
<div class="container mx-auto px-6 py-8">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">关于我们</h3>
<ul class="space-y-2 text-sm">
<li><a href="#" class="hover:text-gray-300">公司简介</a></li>
<li><a href="#" class="hover:text-gray-300">发展历程</a></li>
<li><a href="#" class="hover:text-gray-300">企业文化</a></li>
<li><a href="#" class="hover:text-gray-300">荣誉资质</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">产品服务</h3>
<ul class="space-y-2 text-sm">
<li><a href="#" class="hover:text-gray-300">人力资源系统</a></li>
<li><a href="#" class="hover:text-gray-300">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-gray-300">绩效考核系统</a></li>
<li><a href="#" class="hover:text-gray-300">培训发展平台</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">帮助中心</h3>
<ul class="space-y-2 text-sm">
<li><a href="#" class="hover:text-gray-300">使用文档</a></li>
<li><a href="#" class="hover:text-gray-300">视频教程</a></li>
<li><a href="#" class="hover:text-gray-300">常见问题</a></li>
<li><a href="#" class="hover:text-gray-300">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">联系我们</h3>
<ul class="space-y-2 text-sm">
<li class="flex items-start">
<i class="fas fa-map-marker-alt fa-icon mt-1 mr-2"></i>
<span>北京市海淀区中关村软件园2号楼A座3层</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone-alt fa-icon mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon mr-2"></i>
<span>service@hrsystem.com</span>
</li>
</ul>
</div>
</div>
<div class="mt-8 pt-8 border-t border-gray-700 flex justify-between items-center">
<div class="text-sm">
© 2023 人力资源管理系统. 保留所有权利.
</div>
<div class="flex space-x-6">
<a href="#" class="hover:text-gray-300">
<i class="fab fa-weixin fa-icon"></i>
</a>
<a href="#" class="hover:text-gray-300">
<i class="fab fa-weibo fa-icon"></i>
</a>
<a href="#" class="hover:text-gray-300">
<i class="fab fa-linkedin fa-icon"></i>
</a>
<a href="#" class="hover:text-gray-300">
<i class="fab fa-github fa-icon"></i>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,400 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力管理系统 - 知识库</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA',
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
.scroll-container {
overflow: hidden;
white-space: nowrap;
}
.scroll-content {
display: inline-block;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-100%); }
}
.card-hover:hover {
transform: translateY(-4px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}
</style>
</head>
<body class="min-h-[1024px] flex flex-col bg-secondary">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary text-white shadow-md">
<div class="container mx-auto px-6 h-[60px] flex items-center justify-between">
<div class="flex items-center space-x-8">
<a href="#" class="text-2xl font-['Pacifico']">人力</a>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:opacity-80">多维统计</a>
<a href="#" class="text-sm hover:opacity-80">人员管理</a>
<a href="#" class="text-sm hover:opacity-80">组织管理</a>
<a href="#" class="text-sm hover:opacity-80">考勤管理</a>
<a href="#" class="text-sm hover:opacity-80">绩效管理</a>
<a href="#" class="text-sm hover:opacity-80">薪酬管理</a>
<a href="#" class="text-sm font-semibold hover:opacity-80">知识库</a>
<a href="#" class="text-sm hover:opacity-80">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..." class="py-1 pl-8 pr-4 text-sm rounded-button bg-white bg-opacity-20 placeholder-white focus:outline-none focus:ring-1 focus:ring-white">
<i class="fas fa-search fa-icon text-sm absolute left-2 top-1/2 transform -translate-y-1/2"></i>
</div>
<button class="flex items-center space-x-1 bg-white bg-opacity-20 px-3 py-1 rounded-button hover:bg-opacity-30">
<i class="fas fa-robot fa-icon text-sm"></i>
<span class="text-sm whitespace-nowrap">AI 助手</span>
</button>
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20profile20photo20of20a20young20asian20female20executive20with20short20hair20wearing20formal20attire20against20a20neutral20light20gray20background&width=80&height=80&orientation=squarish&flag=7fe686c57027aca4551bef56744d5fdf" alt="用户头像" class="w-full h-full object-cover">
</div>
</div>
</div>
</header> -->
<!-- 主内容区域 -->
<main class="flex-1 container mx-auto px-6 py-8">
<!-- 面包屑导航 -->
<!-- <div class="flex items-center text-sm text-gray-600 mb-4">
<a href="#" class="hover:text-primary">首页</a>
<i class="fas fa-chevron-right fa-icon mx-2 text-xs"></i>
<span>知识库</span>
</div> -->
<!-- 页面标题和操作区 -->
<div class="flex justify-between items-center mb-6">
<h1 class="text-2xl font-bold text-gray-800">知识库管理</h1>
<div class="flex space-x-3">
<div class="relative">
<input type="text" placeholder="搜索知识..." class="py-2 pl-10 pr-4 text-sm rounded-button border border-gray-300 focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<i class="fas fa-search fa-icon text-gray-400 absolute left-3 top-1/2 transform -translate-y-1/2"></i>
</div>
<button class="bg-primary text-white px-4 py-2 rounded-button hover:bg-opacity-90 flex items-center space-x-2">
<i class="fas fa-plus fa-icon text-sm"></i>
<span class="whitespace-nowrap">新建知识</span>
</button>
</div>
</div>
<!-- 公告栏 -->
<div class="bg-white rounded-md shadow-sm p-3 mb-6">
<div class="flex items-center">
<div class="bg-yellow-100 text-yellow-800 px-2 py-1 rounded-button text-xs font-medium mr-3">公告</div>
<div class="scroll-container w-full">
<div class="scroll-content text-sm text-gray-700">
<span class="mr-8">系统将于 2023 年 12 月 15 日 00:00 - 02:00 进行维护升级</span>
<span class="mr-8">新员工入职指南已更新,请及时查阅</span>
<span class="mr-8">2023 年度绩效考核标准已发布</span>
<span class="mr-8">系统将于 2023 年 12 月 15 日 00:00 - 02:00 进行维护升级</span>
</div>
</div>
</div>
</div>
<!-- 分类筛选 -->
<div class="flex items-center space-x-4 mb-6 overflow-x-auto pb-2">
<button class="px-4 py-2 bg-primary text-white rounded-button whitespace-nowrap">全部</button>
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">政策制度</button>
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">操作手册</button>
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">培训资料</button>
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">常见问题</button>
<button class="px-4 py-2 bg-white border border-gray-200 rounded-button hover:bg-gray-50 whitespace-nowrap">模板下载</button>
</div>
<!-- 知识卡片列表 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8">
<!-- 卡片1 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20modern20business20document20with20clean20design20and20minimalist20layout20on20a20white20desk20with20a20pen20and20coffee20cup20in20the20background&width=400&height=200&orientation=landscape&flag=1e4cf2beacde2cc80fc63a0f89a9703a" alt="文档封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">2023 年员工手册</h3>
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-button">政策制度</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">包含公司文化、行为规范、考勤制度、福利政策等最新修订版员工手册,适用于全体员工。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-11-20</span>
<span>下载 128 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 预览
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i> 下载
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
<!-- 卡片2 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20step20by20step20illustration20of20HR20software20interface20with20clear20numbering20and20annotations20on20a20light20gray20background&width=400&height=200&orientation=landscape&flag=108451af3b1eb2058f31b710d4071080" alt="操作手册封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">考勤系统操作指南</h3>
<span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded-button">操作手册</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">详细说明如何使用公司考勤系统,包括打卡、请假申请、加班申请、考勤异常处理等操作步骤。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-10-15</span>
<span>下载 256 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 预览
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i> 下载
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
<!-- 卡片3 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20professional20training20presentation20slide20with20bullet20points20and20infographics20on20a20projector20screen20in20a20meeting20room&width=400&height=200&orientation=landscape&flag=91a52e2f3cc2550ca2a643ea105f2d4b" alt="培训资料封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">新员工入职培训</h3>
<span class="bg-purple-100 text-purple-800 text-xs px-2 py-1 rounded-button">培训资料</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">新员工入职培训全套资料,包含公司介绍、部门职能、产品知识、安全规范等内容。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-09-28</span>
<span>下载 189 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 预览
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i> 下载
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
<!-- 卡片4 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20frequently20asked20questions20list20with20question20marks20and20answers20in20a20modern20digital20interface20design&width=400&height=200&orientation=landscape&flag=923ef06f9362683938111ad04bb8643c" alt="FAQ封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">HR 系统常见问题</h3>
<span class="bg-orange-100 text-orange-800 text-xs px-2 py-1 rounded-button">常见问题</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">整理了员工在使用 HR 系统过程中遇到的常见问题及解决方案,持续更新中。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-11-05</span>
<span>浏览 342 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 查看
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-bookmark fa-icon mr-1"></i> 收藏
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
<!-- 卡片5 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20collection20of20office20document20templates20including20forms20and20contracts20neatly20stacked20on20a20desk20with20a20laptop&width=400&height=200&orientation=landscape&flag=2a11c867bb72b869508c9cbccb7f198c" alt="模板封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">人力资源常用模板</h3>
<span class="bg-red-100 text-red-800 text-xs px-2 py-1 rounded-button">模板下载</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">包含劳动合同、离职申请表、转正申请表、调岗申请表等常用人力资源表格模板。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-08-12</span>
<span>下载 421 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 预览
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i> 下载
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
<!-- 卡片6 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden transition-all duration-300 card-hover">
<div class="h-40 overflow-hidden">
<img src="https://mastergo.com/ai/api/search-image?query=a20performance20management20framework20diagram20with20key20metrics20and20evaluation20criteria20presented20in20a20modern20corporate20style&width=400&height=200&orientation=landscape&flag=72c9f106f07f07f22208f2c8edfd99fb" alt="绩效封面" class="w-full h-full object-cover">
</div>
<div class="p-4">
<div class="flex justify-between items-start mb-2">
<h3 class="font-medium text-gray-800">绩效考核标准与流程</h3>
<span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-button">政策制度</span>
</div>
<p class="text-sm text-gray-600 mb-3 line-clamp-2">详细说明公司绩效考核的标准、流程、时间节点及评分细则,适用于管理人员参考。</p>
<div class="flex justify-between items-center text-xs text-gray-500">
<span>更新于 2023-07-30</span>
<span>下载 178 次</span>
</div>
<div class="mt-3 flex space-x-2">
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-eye fa-icon mr-1"></i> 预览
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i> 下载
</button>
<button class="text-primary hover:text-primary-dark text-sm flex items-center">
<i class="fas fa-share-alt fa-icon mr-1"></i> 分享
</button>
</div>
</div>
</div>
</div>
<!-- 分页 -->
<div class="flex justify-center mt-8">
<nav class="inline-flex rounded-md shadow-sm">
<button class="px-3 py-1 rounded-l-md border border-gray-300 bg-white text-gray-700 hover:bg-gray-50">
<i class="fas fa-chevron-left fa-icon"></i>
</button>
<button class="px-3 py-1 border-t border-b border-gray-300 bg-primary text-white">1</button>
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">2</button>
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">3</button>
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">4</button>
<button class="px-3 py-1 border-t border-b border-gray-300 bg-white text-gray-700 hover:bg-gray-50">5</button>
<button class="px-3 py-1 rounded-r-md border border-gray-300 bg-white text-gray-700 hover:bg-gray-50">
<i class="fas fa-chevron-right fa-icon"></i>
</button>
</nav>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-8">
<div class="container mx-auto px-6">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-6">
<div>
<h3 class="text-lg font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">团队介绍</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">视频教程</a></li>
<li><a href="#" class="hover:text-white">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-sm text-gray-300">
<li><i class="fas fa-map-marker-alt fa-icon mr-2"></i> 北京市海淀区中关村南大街5号</li>
<li><i class="fas fa-phone fa-icon mr-2"></i> 400-888-8888</li>
<li><i class="fas fa-envelope fa-icon mr-2"></i> hr@company.com</li>
<li><i class="fas fa-clock fa-icon mr-2"></i> 周一至周五 9:00-18:00</li>
</ul>
</div>
<div>
<h3 class="text-lg font-medium mb-4">关注我们</h3>
<div class="flex space-x-4 mb-4">
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
<i class="fab fa-weixin fa-icon"></i>
</a>
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
<i class="fab fa-weibo fa-icon"></i>
</a>
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
<i class="fab fa-linkedin-in fa-icon"></i>
</a>
<a href="#" class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center hover:bg-primary">
<i class="fab fa-github fa-icon"></i>
</a>
</div>
<p class="text-sm text-gray-300">订阅我们的新闻通讯</p>
<div class="mt-2 flex">
<input type="email" placeholder="您的邮箱" class="py-2 px-3 text-sm rounded-l-md border-none focus:outline-none focus:ring-1 focus:ring-primary w-full">
<button class="bg-primary text-white px-3 py-2 rounded-r-md hover:bg-opacity-90">
<i class="fas fa-paper-plane fa-icon"></i>
</button>
</div>
</div>
</div>
<div class="pt-6 border-t border-gray-700 text-center text-sm text-gray-400">
<p>© 2023 人力管理系统 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802012345号</p>
</div>
</div>
</footer>
</body>
</html>

@ -1,510 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.font-logo {
font-family: "Pacifico", serif;
}
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
.org-node {
transition: all 0.3s ease;
}
.org-node:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.marquee {
animation: marquee 20s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
</style>
</head>
<body class="bg-gray-50 min-h-[1024px] flex flex-col">
<!-- 顶部导航栏 -->
<!-- <header class="bg-primary text-white shadow-md fixed top-0 left-0 right-0 z-50">
<div class="container mx-auto px-4 h-16 flex items-center justify-between">
<div class="flex items-center">
<div class="font-logo text-2xl mr-10">人力</div>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..."
class="bg-white text-gray-800 text-sm rounded-button pl-3 pr-8 py-1 w-40 focus:outline-none focus:ring-2 focus:ring-blue-300">
<i
class="fas fa-search absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 fa-icon w-4 h-4"></i>
</div>
<div class="relative">
<img src="https://mastergo.com/ai/api/search-image?query=professional20asian20business20woman20portrait20with20white20background20high20quality20photorealistic20detailed20facial20features20corporate20attire&width=40&height=40&orientation=squarish&flag=eb8362eb2348067d24cec632e6a759b0"
alt="用户头像" class="w-8 h-8 rounded-full object-cover cursor-pointer">
</div>
<button
class="bg-white text-primary text-sm px-3 py-1 rounded-button flex items-center space-x-1 hover:bg-gray-100 transition">
<i class="fas fa-robot fa-icon w-4 h-4"></i>
<span>AI助手</span>
</button>
<button class="md:hidden text-white">
<i class="fas fa-bars fa-icon w-6 h-6"></i>
</button>
</div>
</div>
</header> -->
<!-- 主要内容区 -->
<main class="flex-grow container mx-auto px-4 mb-8">
<!-- 公告栏 -->
<div class="bg-white rounded-md shadow-sm p-3 mb-6 overflow-hidden">
<div class="flex items-center">
<div
class="bg-yellow-100 text-yellow-800 rounded-md px-2 py-1 text-xs font-medium mr-3 whitespace-nowrap">
<i class="fas fa-bullhorn fa-icon w-3 h-3 mr-1"></i>
公告
</div>
<div class="overflow-hidden">
<div class="marquee whitespace-nowrap">
<span class="text-sm mr-8">2023年度绩效考核方案已发布请各部门负责人及时查阅</span>
<span class="text-sm mr-8">系统将于2023年12月25日00:00-06:00进行升级维护</span>
<span class="text-sm mr-8">新员工入职培训计划已更新,请相关人员注意查收邮件</span>
<span class="text-sm">年度优秀员工评选活动正式启动,详情请见内网公告</span>
</div>
</div>
</div>
</div>
<!-- 内容主体 -->
<div class="flex flex-col md:flex-row gap-6">
<!-- 左侧组织架构树 -->
<div class="w-full md:w-1/5 bg-white rounded-md shadow-sm p-4">
<div class="flex items-center justify-between mb-4">
<h2 class="text-lg font-medium">组织架构</h2>
<button class="text-primary text-sm">
<i class="fas fa-sync-alt fa-icon w-4 h-4"></i>
</button>
</div>
<div class="space-y-1">
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer flex items-center justify-between">
<div class="flex items-center">
<i class="fas fa-building fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">集团公司</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-400"></i>
</div>
<div class="ml-6 space-y-1">
<div
class="org-node bg-secondary p-2 rounded-md cursor-pointer flex items-center justify-between">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">行政中心</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-400"></i>
</div>
<div class="ml-6 space-y-1">
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-users fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">人力资源部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-file-invoice-dollar fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">财务部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-laptop fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">IT部</span>
</div>
</div>
</div>
<div
class="org-node bg-secondary p-2 rounded-md cursor-pointer flex items-center justify-between">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">营销中心</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-400"></i>
</div>
<div class="ml-6 space-y-1">
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-chart-line fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">市场部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-shopping-cart fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">销售部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-headset fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">客户服务部</span>
</div>
</div>
</div>
<div
class="org-node bg-secondary p-2 rounded-md cursor-pointer flex items-center justify-between">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">研发中心</span>
</div>
<i class="fas fa-chevron-down fa-icon w-3 h-3 text-gray-400"></i>
</div>
<div class="ml-6 space-y-1">
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-code fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">前端开发部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-database fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">后端开发部</span>
</div>
</div>
<div class="org-node bg-secondary p-2 rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-mobile-alt fa-icon w-4 h-4 mr-2 text-gray-500"></i>
<span class="text-sm">移动开发部</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧内容区 -->
<div class="w-full md:w-4/5">
<!-- 筛选区域 -->
<div class="bg-white rounded-md shadow-sm p-4 mb-6">
<div class="flex items-center justify-between">
<h2 class="text-lg font-medium">组织架构详情</h2>
<div class="flex items-center space-x-4">
<div class="flex items-center">
<span class="text-sm text-gray-600 mr-2">年份:</span>
<div class="relative">
<button
class="bg-secondary text-gray-700 text-sm px-3 py-1 rounded-button flex items-center space-x-1">
<span>2023</span>
<i class="fas fa-chevron-down fa-icon w-3 h-3"></i>
</button>
</div>
</div>
<button
class="bg-primary text-white text-sm px-3 py-1 rounded-button flex items-center space-x-1 hover:bg-blue-600 transition">
<i class="fas fa-download fa-icon w-4 h-4"></i>
<span>导出</span>
</button>
</div>
</div>
</div>
<!-- 组织架构树 -->
<div class="bg-white rounded-md shadow-sm p-6">
<div class="org-tree">
<div class="org-level-1 flex flex-col items-center">
<div class="org-node bg-primary text-white p-3 rounded-md shadow-md mb-4 w-48 text-center">
<h3 class="font-medium">集团公司</h3>
<p class="text-xs opacity-80">1,284人</p>
</div>
<div class="flex space-x-8">
<div class="org-level-2 flex flex-col items-center">
<div class="org-node bg-blue-100 p-3 rounded-md shadow-sm mb-4 w-40 text-center">
<h4 class="font-medium">行政中心</h4>
<p class="text-xs text-gray-600">356人</p>
</div>
<div class="flex space-x-6">
<div class="org-level-3 flex flex-col items-center">
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">人力资源部</h5>
<p class="text-xs text-gray-500">45人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">财务部</h5>
<p class="text-xs text-gray-500">32人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md w-32 text-center">
<h5 class="text-sm">IT部</h5>
<p class="text-xs text-gray-500">28人</p>
</div>
</div>
</div>
</div>
<div class="org-level-2 flex flex-col items-center">
<div class="org-node bg-blue-100 p-3 rounded-md shadow-sm mb-4 w-40 text-center">
<h4 class="font-medium">营销中心</h4>
<p class="text-xs text-gray-600">268人</p>
</div>
<div class="flex space-x-6">
<div class="org-level-3 flex flex-col items-center">
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">市场部</h5>
<p class="text-xs text-gray-500">86人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">销售部</h5>
<p class="text-xs text-gray-500">124人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md w-32 text-center">
<h5 class="text-sm">客户服务部</h5>
<p class="text-xs text-gray-500">58人</p>
</div>
</div>
</div>
</div>
<div class="org-level-2 flex flex-col items-center">
<div class="org-node bg-blue-100 p-3 rounded-md shadow-sm mb-4 w-40 text-center">
<h4 class="font-medium">研发中心</h4>
<p class="text-xs text-gray-600">232人</p>
</div>
<div class="flex space-x-6">
<div class="org-level-3 flex flex-col items-center">
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">前端开发部</h5>
<p class="text-xs text-gray-500">76人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md mb-3 w-32 text-center">
<h5 class="text-sm">后端开发部</h5>
<p class="text-xs text-gray-500">92人</p>
</div>
<div class="org-node bg-blue-50 p-2 rounded-md w-32 text-center">
<h5 class="text-sm">移动开发部</h5>
<p class="text-xs text-gray-500">64人</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 部门统计 -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mt-8">
<div class="bg-secondary rounded-md p-4">
<div class="flex items-center justify-between mb-2">
<h3 class="text-sm font-medium text-gray-600">部门总数</h3>
<i class="fas fa-sitemap fa-icon w-5 h-5 text-primary"></i>
</div>
<div class="text-2xl font-bold">24</div>
<div class="text-xs text-gray-500 mt-1">较上月增加2个</div>
</div>
<div class="bg-secondary rounded-md p-4">
<div class="flex items-center justify-between mb-2">
<h3 class="text-sm font-medium text-gray-600">员工总数</h3>
<i class="fas fa-users fa-icon w-5 h-5 text-primary"></i>
</div>
<div class="text-2xl font-bold">1,284</div>
<div class="text-xs text-gray-500 mt-1">较上月增加56人</div>
</div>
<div class="bg-secondary rounded-md p-4">
<div class="flex items-center justify-between mb-2">
<h3 class="text-sm font-medium text-gray-600">平均在职时长</h3>
<i class="fas fa-clock fa-icon w-5 h-5 text-primary"></i>
</div>
<div class="text-2xl font-bold">3.2年</div>
<div class="text-xs text-gray-500 mt-1">较上月增加0.1年</div>
</div>
</div>
<!-- 部门人员分布 -->
<div class="mt-8">
<h3 class="text-lg font-medium mb-4">各部门人员分布</h3>
<div class="bg-secondary rounded-md p-4 h-64">
<div id="departmentChart" class="w-full h-full"></div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 底部通栏 -->
<footer class="bg-gray-800 text-white py-8">
<div class="container mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">公司简介</a></li>
<li><a href="#" class="hover:text-white transition">发展历程</a></li>
<li><a href="#" class="hover:text-white transition">企业文化</a></li>
<li><a href="#" class="hover:text-white transition">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">人力资源系统</a></li>
<li><a href="#" class="hover:text-white transition">考勤管理系统</a></li>
<li><a href="#" class="hover:text-white transition">绩效评估系统</a></li>
<li><a href="#" class="hover:text-white transition">薪酬管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white transition">使用手册</a></li>
<li><a href="#" class="hover:text-white transition">常见问题</a></li>
<li><a href="#" class="hover:text-white transition">视频教程</a></li>
<li><a href="#" class="hover:text-white transition">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-start">
<i class="fas fa-map-marker-alt fa-icon w-3 h-3 mt-0.5 mr-2"></i>
<span>北京市海淀区中关村南大街5号</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone-alt fa-icon w-3 h-3 mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon w-3 h-3 mr-2"></i>
<span>hr@company.com</span>
</li>
<li class="flex items-center">
<i class="fas fa-clock fa-icon w-3 h-3 mr-2"></i>
<span>周一至周五 9:00-18:00</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 text-center text-xs text-gray-400">
<p>© 2023 人力资源管理系统 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802012345号</p>
</div>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
<script>
// 初始化部门人员分布图表
const departmentChart = echarts.init(document.getElementById('departmentChart'));
const departmentOption = {
animation: false,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'value',
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
lineStyle: {
color: '#e5e7eb'
}
}
},
yAxis: {
type: 'category',
data: ['人力资源部', '财务部', 'IT部', '市场部', '销售部', '客户服务部', '前端开发部', '后端开发部', '移动开发部'],
axisLine: {
show: false
},
axisTick: {
show: false
}
},
series: [
{
name: '人数',
type: 'bar',
data: [45, 32, 28, 86, 124, 58, 76, 92, 64],
itemStyle: {
color: '#2D5CF6',
borderRadius: [0, 4, 4, 0]
},
barWidth: 12
}
]
};
departmentChart.setOption(departmentOption);
// 响应式调整图表大小
window.addEventListener('resize', function () {
departmentChart.resize();
});
</script>
</body>
</html>

@ -1,566 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.marquee {
animation: marquee 15s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
.tree-item {
transition: all 0.2s ease;
}
.tree-item:hover {
background-color: #e0e0e0;
}
.table-row:hover {
background-color: #f0f4ff;
}
.search-input:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(45, 92, 246, 0.2);
}
.dropdown:hover .dropdown-menu {
display: block;
}
i.fa-icon {
display: flex;
justify-content: center;
align-items: center;
width: 16px;
height: 16px;
}
</style>
</head>
<body class="bg-gray-50 min-h-screen flex flex-col">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary text-white">
<div class="container mx-auto px-4">
<div class="flex items-center justify-between h-16">
<div class="flex items-center">
<span class="font-['Pacifico'] text-xl">人力</span>
</div>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm font-medium">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..."
class="search-input bg-white bg-opacity-20 text-sm rounded-button pl-8 pr-4 py-1 w-40 focus:w-56 transition-all duration-300 placeholder-white">
<i
class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 text-white text-sm"></i>
</div>
<button
class="bg-white bg-opacity-20 hover:bg-opacity-30 text-white text-xs px-3 py-1 rounded-button flex items-center space-x-1 transition">
<i class="fas fa-robot text-sm"></i>
<span>AI助手</span>
</button>
<div class="dropdown relative">
<button class="flex items-center space-x-1">
<div class="w-8 h-8 rounded-full bg-white bg-opacity-20 flex items-center justify-center">
<i class="fas fa-user text-sm"></i>
</div>
</button>
<div class="dropdown-menu absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg z-10 hidden">
<div class="py-1">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">个人中心</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">系统设置</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">退出登录</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bg-yellow-50 h-10 flex items-center overflow-hidden">
<div class="container mx-auto px-4">
<div class="relative">
<div class="marquee whitespace-nowrap text-xs text-gray-900">
<span class="inline-block mr-8">【公告】2023年度绩效考核工作将于12月1日正式启动</span>
<span class="inline-block mr-8">【通知】关于2024年春节放假安排的通知</span>
<span class="inline-block mr-8">【提醒】请各部门及时更新员工信息</span>
<span class="inline-block">【培训】新员工入职培训将于下周一举行</span>
</div>
</div>
</div>
</div>
</header> -->
<!-- 主内容区 -->
<main class="flex-1 container mx-auto px-4 py-6">
<div class="flex">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-4">
<div class="bg-white rounded-md shadow p-4 h-full">
<div class="flex items-center justify-between mb-4">
<h3 class="text-sm font-medium">组织架构</h3>
<button class="text-primary text-xs hover:text-primary-dark">
<i class="fas fa-sync-alt fa-icon"></i>
</button>
</div>
<div class="space-y-1">
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-building fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">集团公司</span>
</div>
</div>
<div class="pl-6">
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">人力资源部</span>
</div>
</div>
<div class="pl-6">
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-users fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">招聘组</span>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-chart-line fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">绩效组</span>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-money-bill-wave fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">薪酬组</span>
</div>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">财务部</span>
</div>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md hover:bg-secondary">
<div class="flex items-center">
<i class="fas fa-sitemap fa-icon mr-2 text-gray-500"></i>
<span class="text-sm">技术研发中心</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧内容区 -->
<div class="w-4/5">
<div class="bg-white rounded-md shadow p-6">
<!-- 筛选区 -->
<div class="mb-6">
<h2 class="text-lg font-medium mb-4">人员筛选</h2>
<div class="grid grid-cols-4 gap-4">
<div>
<label class="block text-sm text-gray-600 mb-1">姓名</label>
<input type="text"
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">电话</label>
<input type="text"
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">身份证号</label>
<input type="text"
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm focus:border-primary focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">部门</label>
<div class="relative">
<select
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm appearance-none bg-white">
<option>全部部门</option>
<option>人力资源部</option>
<option>财务部</option>
<option>技术研发中心</option>
</select>
<div class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
<i class="fas fa-chevron-down fa-icon text-gray-400"></i>
</div>
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">性别</label>
<div class="flex space-x-2">
<label class="inline-flex items-center">
<input type="radio" name="gender" class="text-primary focus:ring-primary">
<span class="ml-1 text-sm"></span>
</label>
<label class="inline-flex items-center">
<input type="radio" name="gender" class="text-primary focus:ring-primary">
<span class="ml-1 text-sm"></span>
</label>
<label class="inline-flex items-center">
<input type="radio" name="gender" class="text-primary focus:ring-primary">
<span class="ml-1 text-sm">不限</span>
</label>
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">年龄范围</label>
<div class="flex space-x-2">
<input type="number" placeholder="最小"
class="w-1/2 border border-gray-300 rounded-button px-3 py-1 text-sm">
<input type="number" placeholder="最大"
class="w-1/2 border border-gray-300 rounded-button px-3 py-1 text-sm">
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">绩效状态</label>
<div class="relative">
<select
class="w-full border border-gray-300 rounded-button px-3 py-1 text-sm appearance-none bg-white">
<option>全部状态</option>
<option>新建</option>
<option>已审批</option>
<option>审批中</option>
<option>已确认</option>
</select>
<div class="absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none">
<i class="fas fa-chevron-down fa-icon text-gray-400"></i>
</div>
</div>
</div>
<div class="flex items-end">
<button
class="bg-primary hover:bg-primary-dark text-white px-4 py-1 rounded-button text-sm flex items-center">
<i class="fas fa-search fa-icon mr-1"></i>
<span>搜索</span>
</button>
<button
class="ml-2 border border-gray-300 hover:bg-gray-50 px-4 py-1 rounded-button text-sm">
重置
</button>
</div>
</div>
</div>
<!-- 操作按钮区 -->
<div class="flex justify-between items-center mb-4">
<h2 class="text-lg font-medium">人员绩效列表</h2>
<div class="flex space-x-2">
<button
class="bg-primary hover:bg-primary-dark text-white px-3 py-1 rounded-button text-sm flex items-center">
<i class="fas fa-plus fa-icon mr-1"></i>
<span>新增</span>
</button>
<button
class="border border-gray-300 hover:bg-gray-50 px-3 py-1 rounded-button text-sm flex items-center">
<i class="fas fa-download fa-icon mr-1"></i>
<span>导出</span>
</button>
<button
class="border border-gray-300 hover:bg-gray-50 px-3 py-1 rounded-button text-sm flex items-center">
<i class="fas fa-print fa-icon mr-1"></i>
<span>打印</span>
</button>
</div>
</div>
<!-- 表格区 -->
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
序号</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
姓名</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
性别</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
年龄</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
部门</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
职位</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
绩效总分</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
绩效状态</th>
<th scope="col"
class="px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
操作</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr class="table-row">
<td class="px-4 py-2 whitespace-nowrap text-sm">1</td>
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">张明远</td>
<td class="px-4 py-2 whitespace-nowrap text-sm"></td>
<td class="px-4 py-2 whitespace-nowrap text-sm">32</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">人力资源部</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">招聘主管</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">92.5</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<span
class="px-2 py-1 text-xs rounded-full bg-green-100 text-green-800">已确认</span>
</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<button class="text-primary hover:text-primary-dark mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2 whitespace-nowrap text-sm">2</td>
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">李思雨</td>
<td class="px-4 py-2 whitespace-nowrap text-sm"></td>
<td class="px-4 py-2 whitespace-nowrap text-sm">28</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">财务部</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">会计</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">88.0</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<span
class="px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800">审批中</span>
</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<button class="text-primary hover:text-primary-dark mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2 whitespace-nowrap text-sm">3</td>
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">王建国</td>
<td class="px-4 py-2 whitespace-nowrap text-sm"></td>
<td class="px-4 py-2 whitespace-nowrap text-sm">45</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">技术研发中心</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">技术总监</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">95.5</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<span
class="px-2 py-1 text-xs rounded-full bg-green-100 text-green-800">已确认</span>
</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<button class="text-primary hover:text-primary-dark mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2 whitespace-nowrap text-sm">4</td>
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">赵雪</td>
<td class="px-4 py-2 whitespace-nowrap text-sm"></td>
<td class="px-4 py-2 whitespace-nowrap text-sm">26</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">人力资源部</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">薪酬专员</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">85.0</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<span
class="px-2 py-1 text-xs rounded-full bg-yellow-100 text-yellow-800">已审批</span>
</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<button class="text-primary hover:text-primary-dark mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2 whitespace-nowrap text-sm">5</td>
<td class="px-4 py-2 whitespace-nowrap text-sm font-medium">陈志强</td>
<td class="px-4 py-2 whitespace-nowrap text-sm"></td>
<td class="px-4 py-2 whitespace-nowrap text-sm">35</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">技术研发中心</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">高级工程师</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">90.5</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<span class="px-2 py-1 text-xs rounded-full bg-gray-100 text-gray-800">新建</span>
</td>
<td class="px-4 py-2 whitespace-nowrap text-sm">
<button class="text-primary hover:text-primary-dark mr-2">
<i class="fas fa-edit fa-icon"></i>
</button>
<button class="text-red-500 hover:text-red-700">
<i class="fas fa-trash-alt fa-icon"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页区 -->
<div class="flex items-center justify-between mt-4">
<div class="text-sm text-gray-500">
每页显示 <span class="font-medium">10</span> 条,当前 <span class="font-medium">1-10</span> 条,共
<span class="font-medium">128</span> 条记录
</div>
<div class="flex space-x-1">
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">
<i class="fas fa-angle-left fa-icon"></i>
</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-primary text-white">1</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">2</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">3</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">4</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">5</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm bg-white hover:bg-gray-50">
<i class="fas fa-angle-right fa-icon"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-8">
<div class="container mx-auto px-4">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">人力资源管理系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
<li><a href="#" class="hover:text-white">考勤管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">更新日志</a></li>
<li><a href="#" class="hover:text-white">API文档</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-start">
<i class="fas fa-map-marker-alt fa-icon mr-2 mt-1"></i>
<span>北京市海淀区中关村软件园2号楼</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone fa-icon mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon mr-2"></i>
<span>contact@hrsystem.com</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
<div class="text-xs text-gray-400 mb-4 md:mb-0">
© 2023 人力资源管理系统 版权所有
</div>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weixin fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weibo fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-github fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-linkedin-in fa-icon"></i>
</a>
</div>
<div class="text-xs text-gray-400 mt-4 md:mt-0">
京ICP备12345678号-1
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,738 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力管理系统 - 数据字典</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.tree-item {
padding-left: 20px;
position: relative;
}
.tree-item::before {
content: "";
position: absolute;
left: 8px;
top: 0;
height: 100%;
border-left: 1px solid #e5e7eb;
}
.tree-item:last-child::before {
height: 50%;
}
.tree-item::after {
content: "";
position: absolute;
left: 8px;
top: 50%;
width: 8px;
border-bottom: 1px solid #e5e7eb;
}
.scroll-container {
scrollbar-width: thin;
scrollbar-color: #cbd5e1 #f1f5f9;
}
.scroll-container::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.scroll-container::-webkit-scrollbar-track {
background: #f1f5f9;
}
.scroll-container::-webkit-scrollbar-thumb {
background-color: #cbd5e1;
border-radius: 3px;
}
.hover-card:hover {
transform: translateY(-2px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
i.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body class="min-h-[1024px] bg-gray-50 flex flex-col">
<!-- 顶部导航 -->
<!-- <header class="bg-primary text-white shadow-md">
<div class="container mx-auto px-6 py-3 flex items-center justify-between">
<div class="flex items-center space-x-8">
<a href="#" class="text-xl font-['Pacifico']">人力</a>
<nav class="hidden md:flex space-x-6 text-sm">
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">多维统计</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">人员管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">组织管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">考勤管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">绩效管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">薪酬管理</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">知识库</a>
<a href="#" class="hover:bg-white/20 px-2 py-1 rounded-button transition">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..."
class="bg-white/20 text-white placeholder-white/70 text-sm rounded-button px-3 py-1 pl-8 w-40 focus:w-60 transition-all duration-300 focus:outline-none focus:ring-1 focus:ring-white/50">
<i
class="fa-icon fa-solid fa-magnifying-glass absolute left-2 top-1/2 transform -translate-y-1/2 text-white/70 text-xs"></i>
</div>
<button
class="bg-white/10 hover:bg-white/20 rounded-button px-3 py-1 text-sm flex items-center space-x-1 transition">
<i class="fa-icon fa-solid fa-robot text-xs"></i>
<span>AI 助手</span>
</button>
<div class="relative">
<img src="https://mastergo.com/ai/api/search-image?query=professional20business20profile20photo20of20a20young20asian20male20executive20with20white20background&width=32&height=32&orientation=squarish&flag=a6d20992702c7a888c93eb051f248a43"
alt="用户头像" class="w-8 h-8 rounded-full object-cover cursor-pointer">
</div>
</div>
</div>
</header> -->
<!-- 主内容区域 -->
<main class="flex-grow container mx-auto px-6 py-8">
<div class="flex flex-col space-y-6">
<!-- 面包屑导航 -->
<!-- <div class="flex items-center text-sm text-gray-600">
<a href="#" class="hover:text-primary">首页</a>
<i class="fa-icon fa-solid fa-chevron-right mx-2 text-xs"></i>
<a href="#" class="hover:text-primary">系统管理</a>
<i class="fa-icon fa-solid fa-chevron-right mx-2 text-xs"></i>
<span class="text-gray-800">数据字典管理</span>
</div> -->
<!-- 页面标题和操作按钮 -->
<div class="flex justify-between items-center">
<h1 class="text-2xl font-bold text-gray-800">数据字典管理</h1>
<div class="flex space-x-3">
<button
class="bg-primary hover:bg-blue-700 text-white rounded-button px-4 py-2 text-sm flex items-center space-x-2 transition">
<i class="fa-icon fa-solid fa-plus text-xs"></i>
<span>新增元数据域</span>
</button>
<button
class="bg-white border border-gray-300 hover:bg-gray-50 text-gray-700 rounded-button px-4 py-2 text-sm flex items-center space-x-2 transition">
<i class="fa-icon fa-solid fa-download text-xs"></i>
<span>导出配置</span>
</button>
</div>
</div>
<!-- 数据字典内容区域 -->
<div class="bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden">
<div class="flex h-[1200px]">
<!-- 左侧树形结构 -->
<div class="w-1/4 border-r border-gray-200 overflow-y-auto scroll-container">
<div class="p-4 space-y-2">
<div class="flex items-center justify-between">
<h3 class="font-medium text-gray-700">员工模型</h3>
<button class="text-gray-400 hover:text-gray-600">
<i class="fa-icon fa-solid fa-ellipsis-vertical text-xs"></i>
</button>
</div>
<div class="mt-2 space-y-1">
<!-- 树形结构项 -->
<div class="tree-item">
<div
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
<span class="text-sm">基础信息</span>
</div>
<i class="fa-icon fa-solid fa-chevron-down text-gray-400 text-xs"></i>
</div>
<div class="ml-4 mt-1 space-y-1">
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">员工编号</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">姓名</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">性别</span>
</div>
</div>
</div>
<div class="tree-item">
<div
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
<span class="text-sm">技术职务</span>
</div>
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
</div>
</div>
<div class="tree-item">
<div
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer bg-blue-50">
<div class="flex items-center space-x-2">
<i class="fa-icon fa-solid fa-folder-open text-yellow-400 text-sm"></i>
<span class="text-sm font-medium text-primary">绩效参数</span>
</div>
<i class="fa-icon fa-solid fa-chevron-down text-gray-400 text-xs"></i>
</div>
<div class="ml-4 mt-1 space-y-1">
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">代码量</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">文档字数</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">出勤时长</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">项目金额</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">培训时长</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">会议次数</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">会议时长</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">千行 bug 数</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">运维响应时间</span>
</div>
<div
class="flex items-center py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<i class="fa-icon fa-solid fa-file text-blue-400 text-sm mr-2"></i>
<span class="text-sm">员工满意度</span>
</div>
</div>
</div>
<div class="tree-item">
<div
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
<span class="text-sm">联系方式</span>
</div>
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
</div>
</div>
<div class="tree-item">
<div
class="flex items-center justify-between py-1 px-2 rounded hover:bg-gray-100 cursor-pointer">
<div class="flex items-center space-x-2">
<i class="fa-icon fa-solid fa-folder text-yellow-400 text-sm"></i>
<span class="text-sm">其他信息</span>
</div>
<i class="fa-icon fa-solid fa-chevron-right text-gray-400 text-xs"></i>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧属性配置面板 -->
<div class="w-3/4 overflow-y-auto scroll-container">
<div class="p-6">
<div class="flex justify-between items-center mb-6">
<h2 class="text-lg font-semibold text-gray-800">绩效参数属性配置</h2>
<button
class="bg-primary hover:bg-blue-700 text-white rounded-button px-3 py-1 text-sm flex items-center space-x-2 transition">
<i class="fa-icon fa-solid fa-plus text-xs"></i>
<span>新增属性</span>
</button>
</div>
<div class="bg-gray-50 rounded-lg p-4 mb-6">
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">元数据域名称</label>
<input type="text" value="绩效参数"
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">元数据域编码</label>
<input type="text" value="performance_params"
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
</div>
<div class="col-span-2">
<label class="block text-sm font-medium text-gray-700 mb-1">描述</label>
<textarea
class="w-full border border-gray-300 rounded-button px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary"
rows="2">用于记录员工各项绩效指标的参数集合</textarea>
</div>
</div>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
属性名称</th>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
编码</th>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
数据类型</th>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
单位</th>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
必填</th>
<th scope="col"
class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
操作</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
代码量</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">code_amount
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
文档字数</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">doc_words</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
出勤时长</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
attendance_hours</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">小时</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
项目金额</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">project_amount
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox"
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
培训时长</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">training_hours
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">小时</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox"
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
会议次数</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">meeting_count
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
会议时长</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">meeting_hours
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">分钟</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox"
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">千行
bug 数</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">bug_count</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">个/千行</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
运维响应时间</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">response_time
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">分钟</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox" checked
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900">
员工满意度</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">satisfaction
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<select
class="border border-gray-300 rounded-button px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-primary focus:border-primary">
<option>数字</option>
<option>文本</option>
<option>日期</option>
<option selected>列表</option>
</select>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500"></td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<input type="checkbox"
class="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded">
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-gray-500">
<button class="text-blue-600 hover:text-blue-900 mr-2">
<i class="fa-icon fa-solid fa-pen text-xs"></i>
</button>
<button class="text-red-600 hover:text-red-900">
<i class="fa-icon fa-solid fa-trash text-xs"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="mt-6 flex items-center justify-between">
<div class="text-sm text-gray-500">
显示 <span class="font-medium">1</span><span class="font-medium">10</span> 条,共
<span class="font-medium">10</span> 条记录
</div>
<div class="flex space-x-1">
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
上一页
</button>
<button
class="px-3 py-1 border border-primary bg-primary text-white rounded-button text-sm">
1
</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
2
</button>
<button
class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">
下一页
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-8">
<div class="container mx-auto px-4">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">人力资源管理系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
<li><a href="#" class="hover:text-white">考勤管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">更新日志</a></li>
<li><a href="#" class="hover:text-white">API文档</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-start">
<i class="fas fa-map-marker-alt fa-icon mr-2 mt-1"></i>
<span>北京市海淀区中关村软件园2号楼</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone fa-icon mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon mr-2"></i>
<span>contact@hrsystem.com</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 flex flex-col md:flex-row justify-between items-center">
<div class="text-xs text-gray-400 mb-4 md:mb-0">
© 2023 人力资源管理系统 版权所有
</div>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weixin fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-weibo fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-github fa-icon"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-linkedin-in fa-icon"></i>
</a>
</div>
<div class="text-xs text-gray-400 mt-4 md:mt-0">
京ICP备12345678号-1
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,318 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA',
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.marquee {
white-space: nowrap;
overflow: hidden;
box-sizing: border-box;
animation: marquee 20s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
.card-shadow {
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
.icon-container {
display: flex;
justify-content: center;
align-items: center;
width: 24px;
height: 24px;
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary flex flex-col">
<!-- 顶部导航 -->
<!-- <header class="w-full bg-primary text-white">
<nav class="max-w-7xl mx-auto px-4 py-3 flex items-center justify-between">
<div class="flex items-center space-x-10">
<h1 class="text-xl font-['Pacifico']">人力</h1>
<div class="flex space-x-6 text-sm">
<a href="#" class="hover:text-gray-200">多维统计</a>
<a href="#" class="hover:text-gray-200">人员管理</a>
<a href="#" class="hover:text-gray-200">组织管理</a>
<a href="#" class="hover:text-gray-200">考勤管理</a>
<a href="#" class="hover:text-gray-200">绩效管理</a>
<a href="#" class="hover:text-gray-200">薪酬管理</a>
<a href="#" class="hover:text-gray-200">知识库</a>
<a href="#" class="hover:text-gray-200">后台管理</a>
</div>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..." class="py-1 px-3 pl-8 text-sm rounded-button text-gray-800 w-40">
<i class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 text-gray-500"></i>
</div>
<div class="flex items-center space-x-2">
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center">
<i class="fas fa-user text-primary"></i>
</div>
<span class="text-sm">张明远</span>
</div>
<button class="bg-white text-primary text-sm py-1 px-3 rounded-button flex items-center space-x-1">
<i class="fas fa-robot"></i>
<span>AI助手</span>
</button>
</div>
</nav>
<div class="bg-amber-50 text-black py-1 px-4 text-xs">
<div class="marquee">
<span>【系统公告】2025年度绩效考核标准已更新请各部门负责人及时查阅。 | 2025年第一季度员工满意度调查结果已发布整体满意度达到92.5%。 | 提醒2025年上半年绩效计划填报截止日期为6月30日请及时完成。 | 新员工入职培训将于7月5日在总部3楼会议室举行。</span>
</div>
</div>
</header> -->
<!-- 主内容区 -->
<main class="flex-1 max-w-7xl mx-auto px-4 py-6 w-full">
<!-- 筛选区 -->
<div class="bg-white p-4 rounded-lg card-shadow mb-6">
<div class="grid grid-cols-4 gap-4">
<div>
<label class="block text-xs text-gray-600 mb-1">姓名</label>
<input type="text" class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm">
</div>
<div>
<label class="block text-xs text-gray-600 mb-1">电话</label>
<input type="text" class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm">
</div>
<div>
<label class="block text-xs text-gray-600 mb-1">身份证</label>
<input type="text" class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm">
</div>
<div>
<label class="block text-xs text-gray-600 mb-1">绩效计划</label>
<div class="relative">
<button class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm text-left flex justify-between items-center">
<span>2025年度</span>
<i class="fas fa-chevron-down text-xs"></i>
</button>
</div>
</div>
</div>
<div class="flex justify-end mt-4">
<button class="bg-primary text-white text-sm py-1 px-4 rounded-button mr-2">查询</button>
<button class="bg-white border border-gray-300 text-gray-700 text-sm py-1 px-4 rounded-button">重置</button>
</div>
</div>
<!-- 人员信息 -->
<div class="bg-white p-4 rounded-lg card-shadow mb-6">
<div class="flex items-center space-x-4">
<div class="w-16 h-16 rounded-full bg-gray-200 flex items-center justify-center">
<i class="fas fa-user text-gray-500 text-2xl"></i>
</div>
<div class="grid grid-cols-4 gap-4 flex-1">
<div>
<p class="text-xs text-gray-500">性别</p>
<p class="text-sm"></p>
</div>
<div>
<p class="text-xs text-gray-500">年龄</p>
<p class="text-sm">32</p>
</div>
<div>
<p class="text-xs text-gray-500">部门</p>
<p class="text-sm">技术研发中心</p>
</div>
<div>
<p class="text-xs text-gray-500">岗位</p>
<p class="text-sm">高级软件工程师</p>
</div>
</div>
<div>
<p class="text-xs text-gray-500">绩效计划名称</p>
<p class="text-sm">2025年度技术岗绩效计划</p>
</div>
</div>
</div>
<!-- 绩效公式 -->
<div class="bg-white p-4 rounded-lg card-shadow mb-6">
<p class="text-sm font-medium mb-2">绩效公式</p>
<p class="text-xs bg-gray-100 p-2 rounded-button">
总分 = 代码量 × 0.1 + 文档字数 × 0.01 + 培训次数 × 3 + 项目金额 × 0.01 + 项目比重 × 0.1 + 工作时长 × 0.01 + 执行力 × 0.1 + 对公司认同度 × 0.1
</p>
</div>
<!-- 绩效总分 -->
<div class="bg-white p-4 rounded-lg card-shadow mb-6">
<div class="flex justify-between">
<div>
<p class="text-xs text-gray-500">绩效总分</p>
<p class="text-2xl font-bold text-primary">92</p>
</div>
<div>
<p class="text-xs text-gray-500">审批状态</p>
<p class="text-sm text-green-600 font-medium">已确认</p>
</div>
</div>
</div>
<!-- 客观指标 -->
<div class="bg-white p-4 rounded-lg card-shadow mb-6">
<p class="text-sm font-medium mb-3">客观指标</p>
<div class="grid grid-cols-3 gap-4">
<div>
<p class="text-xs text-gray-500">代码量</p>
<p class="text-sm">15,672 行</p>
</div>
<div>
<p class="text-xs text-gray-500">文档字数</p>
<p class="text-sm">28,500 字</p>
</div>
<div>
<p class="text-xs text-gray-500">培训次数</p>
<p class="text-sm">8 次</p>
</div>
<div>
<p class="text-xs text-gray-500">项目金额</p>
<p class="text-sm">¥1,250,000</p>
</div>
<div>
<p class="text-xs text-gray-500">项目比重</p>
<p class="text-sm">35%</p>
</div>
<div>
<p class="text-xs text-gray-500">工作时长</p>
<p class="text-sm">1,850 小时</p>
</div>
</div>
</div>
<!-- 主观指标 -->
<div class="grid grid-cols-2 gap-4 mb-6">
<!-- 执行力 -->
<div class="bg-white p-4 rounded-lg card-shadow">
<p class="text-sm font-medium mb-3">执行力</p>
<div class="flex items-center space-x-2 mb-3">
<span class="text-xs text-gray-500">评分:</span>
<div class="flex">
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-gray-300"></i>
</div>
<span class="text-xs">4.0</span>
</div>
<div>
<p class="text-xs text-gray-500 mb-1">评价</p>
<textarea class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm h-20" placeholder="请输入评价内容...">该员工能够高效执行分配的任务,在项目开发过程中表现出色,能够按时保质完成工作。在团队协作中主动承担责任,遇到问题能够积极寻求解决方案。</textarea>
</div>
</div>
<!-- 对公司认同 -->
<div class="bg-white p-4 rounded-lg card-shadow">
<p class="text-sm font-medium mb-3">对公司认同度</p>
<div class="flex items-center space-x-2 mb-3">
<span class="text-xs text-gray-500">评分:</span>
<div class="flex">
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star text-yellow-400"></i>
<i class="fas fa-star-half-alt text-yellow-400"></i>
</div>
<span class="text-xs">4.5</span>
</div>
<div>
<p class="text-xs text-gray-500 mb-1">评价</p>
<textarea class="w-full border border-gray-300 rounded-button px-2 py-1 text-sm h-20" placeholder="请输入评价内容...">该员工高度认同公司文化和价值观,积极参与公司组织的各项活动。在日常工作中能够主动传播正能量,对新员工起到良好的示范作用。对公司发展战略有深刻理解并积极支持。</textarea>
</div>
</div>
</div>
<!-- 操作按钮 -->
<div class="flex justify-end space-x-3 mb-6">
<button class="bg-primary text-white text-sm py-2 px-6 rounded-button">保存评价</button>
<button class="bg-white border border-primary text-primary text-sm py-2 px-6 rounded-button">返回列表</button>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-6">
<div class="max-w-7xl mx-auto px-4">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-3">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">加入我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-3">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li><a href="#" class="hover:text-white">人力资源系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效考核系统</a></li>
<li><a href="#" class="hover:text-white">培训发展平台</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-3">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">视频教程</a></li>
<li><a href="#" class="hover:text-white">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-3">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-400">
<li>电话400-888-8888</li>
<li>邮箱service@hrsystem.com</li>
<li>地址北京市海淀区科技园路88号</li>
<li class="flex space-x-3 mt-3">
<a href="#" class="hover:text-white"><i class="fab fa-weixin"></i></a>
<a href="#" class="hover:text-white"><i class="fab fa-weibo"></i></a>
<a href="#" class="hover:text-white"><i class="fab fa-linkedin"></i></a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-6 pt-6 text-center text-xs text-gray-400">
<p>© 2025 人力资源管理系统 版权所有 | 京ICP备12345678号-1 | 京公网安备11010802023456号</p>
</div>
</div>
</footer>
</body>
</html>

@ -1,366 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA',
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
width: 16px;
height: 16px;
}
.scroll-container {
scrollbar-width: none;
}
.scroll-container::-webkit-scrollbar {
display: none;
}
</style>
</head>
<body class="min-h-[1024px] bg-secondary font-sans text-sm text-gray-800">
<!-- <header class="w-full h-[60px] bg-primary text-white fixed top-0 z-50 shadow-md">
<div class="w-[1200px] h-full mx-auto flex items-center justify-between">
<div class="flex items-center">
<span class="font-['Pacifico'] text-2xl mr-10">人力</span>
</div>
<nav class="flex-1 flex items-center">
<ul class="flex space-x-6">
<li><a href="#" class="hover:text-gray-200 transition">多维统计</a></li>
<li><a href="#" class="hover:text-gray-200 transition">人员管理</a></li>
<li><a href="#" class="hover:text-gray-200 transition">组织管理</a></li>
<li><a href="#" class="hover:text-gray-200 transition font-semibold">考勤管理</a></li>
<li><a href="#" class="hover:text-gray-200 transition">绩效管理</a></li>
<li><a href="#" class="hover:text-gray-200 transition">薪酬管理</a></li>
<li><a href="#" class="hover:text-gray-200 transition">知识库</a></li>
<li><a href="#" class="hover:text-gray-200 transition">后台管理</a></li>
</ul>
</nav>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..." class="pl-8 pr-3 py-1 rounded-button bg-white bg-opacity-20 text-white placeholder-white focus:outline-none focus:ring-1 focus:ring-white w-[180px]">
<i class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 fa-icon"></i>
</div>
<button class="flex items-center space-x-1 bg-white bg-opacity-20 hover:bg-opacity-30 px-3 py-1 rounded-button transition">
<i class="fas fa-robot fa-icon"></i>
<span>AI助手</span>
</button>
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center overflow-hidden">
<i class="fas fa-user fa-icon text-primary"></i>
</div>
</div>
</div>
</header> -->
<!-- 主内容区 -->
<main class="w-[1200px] mx-auto px-4 py-6">
<div class="flex space-x-4">
<!-- 左侧组织架构树 -->
<div class="w-1/5 bg-white rounded-md shadow-sm p-4">
<h2 class="font-medium text-gray-700 mb-4">组织架构</h2>
<div class="space-y-2">
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-building fa-icon text-gray-500"></i>
<span class="hover:text-primary">公司总部</span>
</div>
<div class="ml-6 space-y-2">
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-users fa-icon text-gray-500"></i>
<span class="hover:text-primary">人力资源部</span>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-users fa-icon text-gray-500"></i>
<span class="hover:text-primary">财务部</span>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-users fa-icon text-gray-500"></i>
<span class="hover:text-primary">技术研发部</span>
</div>
<div class="ml-6 space-y-2">
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-user fa-icon text-gray-500"></i>
<span class="hover:text-primary">前端开发组</span>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-user fa-icon text-gray-500"></i>
<span class="hover:text-primary">后端开发组</span>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-user fa-icon text-gray-500"></i>
<span class="hover:text-primary">测试组</span>
</div>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-users fa-icon text-gray-500"></i>
<span class="hover:text-primary">产品部</span>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<i class="fas fa-users fa-icon text-gray-500"></i>
<span class="hover:text-primary">市场部</span>
</div>
</div>
</div>
</div>
<!-- 右侧考勤管理区 -->
<div class="w-4/5 bg-white rounded-md shadow-sm p-4">
<h2 class="font-medium text-gray-700 mb-4">考勤管理</h2>
<!-- 筛选区 -->
<div class="grid grid-cols-4 gap-4 mb-6">
<div>
<label class="block text-gray-600 mb-1">员工ID</label>
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-gray-600 mb-1">员工姓名</label>
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-gray-600 mb-1">日期范围</label>
<div class="relative">
<input type="text" class="w-full border rounded-button px-3 py-1 focus:outline-none focus:ring-1 focus:ring-primary" placeholder="选择日期">
<i class="fas fa-calendar-alt absolute right-2 top-1/2 transform -translate-y-1/2 fa-icon text-gray-400"></i>
</div>
</div>
<div>
<label class="block text-gray-600 mb-1">考勤状态</label>
<div class="relative">
<select class="w-full border rounded-button px-3 py-1 appearance-none focus:outline-none focus:ring-1 focus:ring-primary">
<option>全部</option>
<option>正常</option>
<option>迟到</option>
<option>早退</option>
<option>缺勤</option>
</select>
<i class="fas fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 fa-icon text-gray-400"></i>
</div>
</div>
</div>
<!-- 操作按钮 -->
<div class="flex justify-between mb-4">
<div class="flex space-x-2">
<button class="bg-primary text-white px-3 py-1 rounded-button hover:bg-opacity-90 transition">
<i class="fas fa-search fa-icon mr-1"></i>
<span>查询</span>
</button>
<button class="border border-gray-300 px-3 py-1 rounded-button hover:bg-gray-50 transition">
<i class="fas fa-redo fa-icon mr-1"></i>
<span>重置</span>
</button>
</div>
<div>
<button class="bg-primary text-white px-3 py-1 rounded-button hover:bg-opacity-90 transition">
<i class="fas fa-download fa-icon mr-1"></i>
<span>导出</span>
</button>
</div>
</div>
<!-- 数据表格 -->
<div class="overflow-x-auto">
<table class="w-full">
<thead class="bg-secondary">
<tr>
<th class="px-4 py-2 text-left">员工ID</th>
<th class="px-4 py-2 text-left">员工姓名</th>
<th class="px-4 py-2 text-left">日期</th>
<th class="px-4 py-2 text-left">单位</th>
<th class="px-4 py-2 text-left">部门</th>
<th class="px-4 py-2 text-left">考勤状态</th>
<th class="px-4 py-2 text-left">上班时间</th>
<th class="px-4 py-2 text-left">下班时间</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10001</td>
<td class="px-4 py-2">张伟</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">技术研发部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10002</td>
<td class="px-4 py-2">王芳</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">人力资源部</td>
<td class="px-4 py-2 text-yellow-500">迟到</td>
<td class="px-4 py-2">09:30:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10003</td>
<td class="px-4 py-2">李娜</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">财务部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10004</td>
<td class="px-4 py-2">赵明</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">产品部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10005</td>
<td class="px-4 py-2">刘强</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">市场部</td>
<td class="px-4 py-2 text-red-500">早退</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">17:30:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10006</td>
<td class="px-4 py-2">陈静</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">技术研发部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10007</td>
<td class="px-4 py-2">杨光</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">人力资源部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-4 py-2">10008</td>
<td class="px-4 py-2">周涛</td>
<td class="px-4 py-2">2023-06-01</td>
<td class="px-4 py-2">总部</td>
<td class="px-4 py-2">财务部</td>
<td class="px-4 py-2 text-green-500">正常</td>
<td class="px-4 py-2">09:00:00</td>
<td class="px-4 py-2">18:00:00</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="flex justify-between items-center mt-4">
<div class="text-gray-500">
显示 1 到 8 条,共 120 条记录
</div>
<div class="flex space-x-1">
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">
<i class="fas fa-angle-left fa-icon"></i>
</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center bg-primary text-white">1</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">2</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">3</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">4</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">5</button>
<button class="w-8 h-8 border rounded-button flex items-center justify-center hover:bg-gray-50">
<i class="fas fa-angle-right fa-icon"></i>
</button>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-gray-400 py-6">
<div class="w-[1200px] mx-auto">
<div class="grid grid-cols-3 gap-8">
<div>
<h3 class="text-white text-sm font-medium mb-3">关于我们</h3>
<p class="text-xs leading-6">人力资源管理系统致力于为企业提供专业的人力资源管理解决方案,帮助企业提升管理效率,优化人力资源配置。</p>
</div>
<div>
<h3 class="text-white text-sm font-medium mb-3">快速链接</h3>
<ul class="space-y-2 text-xs">
<li><a href="#" class="hover:text-white transition">帮助中心</a></li>
<li><a href="#" class="hover:text-white transition">API文档</a></li>
<li><a href="#" class="hover:text-white transition">系统更新</a></li>
<li><a href="#" class="hover:text-white transition">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-white text-sm font-medium mb-3">联系方式</h3>
<ul class="space-y-2 text-xs">
<li class="flex items-center">
<i class="fas fa-phone fa-icon mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon mr-2"></i>
<span>service@hrms.com</span>
</li>
<li class="flex items-center">
<i class="fas fa-map-marker-alt fa-icon mr-2"></i>
<span>北京市海淀区科技园路88号</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-6 pt-4 text-xs text-center">
<p>© 2023 人力资源管理系统 版权所有 | 京ICP备12345678号</p>
</div>
</div>
</footer>
</body>
</html>

@ -1,451 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
body {
min-height: 1024px;
}
.nav-item:hover {
background-color: rgba(255,255,255,0.1);
}
.tree-item:hover {
background-color: rgba(45,92,246,0.1);
}
.table-row:hover {
background-color: #F5F6FA;
}
.search-icon {
display: flex;
justify-content: center;
align-items: center;
width: 16px;
height: 16px;
}
.user-avatar {
width: 32px;
height: 32px;
}
.ai-icon {
display: flex;
justify-content: center;
align-items: center;
width: 20px;
height: 20px;
}
</style>
</head>
<body class="bg-white font-sans text-gray-800">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary text-white fixed top-0 left-0 z-50 shadow-md">
<div class="container mx-auto px-4 h-16 flex items-center justify-between">
<div class="flex items-center">
<div class="font-['Pacifico'] text-xl mr-8">人力</div>
<nav class="hidden md:flex space-x-5">
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">多维统计</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">人员管理</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">组织管理</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">考勤管理</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">绩效管理</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">薪酬管理</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">知识库</a>
<a href="#" class="nav-item px-3 py-2 text-sm rounded-button whitespace-nowrap">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..." class="bg-white bg-opacity-20 text-white text-sm pl-8 pr-4 py-1 rounded-full border-none focus:ring-2 focus:ring-white focus:ring-opacity-50 placeholder-white placeholder-opacity-70 w-48">
<i class="fas fa-search search-icon absolute left-3 top-1/2 transform -translate-y-1/2 text-white text-opacity-70"></i>
</div>
<button class="flex items-center space-x-1 bg-white bg-opacity-20 hover:bg-opacity-30 px-3 py-1 rounded-button text-sm whitespace-nowrap">
<i class="fas fa-robot ai-icon text-white"></i>
<span>AI助手</span>
</button>
<div class="flex items-center space-x-2 cursor-pointer">
<div class="user-avatar rounded-full bg-white text-primary flex items-center justify-center font-semibold"></div>
</div>
</div>
</div>
</header> -->
<!-- 主体内容 -->
<main class="container mx-auto px-4 pb-10">
<div class="flex mt-6">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-4">
<div class="bg-secondary rounded-md shadow-sm p-4 h-full">
<h3 class="text-sm font-semibold mb-4 text-gray-700">组织架构</h3>
<div class="space-y-1">
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center">
<i class="fas fa-building mr-2 text-gray-500"></i>
<span>集团公司</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
<span>技术中心</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8 bg-primary bg-opacity-10 text-primary">
<i class="fas fa-code-branch mr-2"></i>
<span>研发部</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
<span>测试部</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
<span>市场中心</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
<span>市场部</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
<span>品牌部</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-4">
<i class="fas fa-sitemap mr-2 text-gray-500"></i>
<span>运营中心</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
<span>客服部</span>
</div>
<div class="tree-item cursor-pointer p-2 rounded-md text-sm flex items-center ml-8">
<i class="fas fa-code-branch mr-2 text-gray-500"></i>
<span>运营部</span>
</div>
</div>
</div>
</div>
<!-- 右侧内容区 -->
<div class="w-4/5">
<!-- 筛选区域 -->
<div class="bg-white rounded-md shadow-sm p-4 mb-4">
<h3 class="text-sm font-semibold mb-4 text-gray-700">薪酬查询</h3>
<div class="grid grid-cols-4 gap-4">
<div>
<label class="block text-xs text-gray-500 mb-1">姓名</label>
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary">
</div>
<div>
<label class="block text-xs text-gray-500 mb-1">电话</label>
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary">
</div>
<div>
<label class="block text-xs text-gray-500 mb-1">月份</label>
<div class="relative">
<input type="text" class="w-full border border-gray-200 rounded-md px-3 py-1 text-sm focus:ring-primary focus:border-primary" placeholder="选择月份">
<i class="fas fa-calendar-alt absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-sm"></i>
</div>
</div>
<div class="flex items-end">
<button class="bg-primary text-white px-4 py-1 rounded-button text-sm whitespace-nowrap hover:bg-opacity-90">查询</button>
<button class="ml-2 border border-gray-200 px-4 py-1 rounded-button text-sm whitespace-nowrap hover:bg-gray-50">重置</button>
</div>
</div>
</div>
<!-- 薪酬列表 -->
<div class="bg-white rounded-md shadow-sm overflow-hidden">
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200 text-sm">
<thead class="bg-secondary">
<tr>
<th class="px-4 py-2 text-left font-medium text-gray-700">序号</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">姓名</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">性别</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">年龄</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">部门</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">岗位</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">月份</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">税前工资</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">税后工资</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">基本工资</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">浮动工资</th>
<th class="px-4 py-2 text-left font-medium text-gray-700">详情</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr class="table-row">
<td class="px-4 py-2">1</td>
<td class="px-4 py-2">张明远</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">32</td>
<td class="px-4 py-2">研发部</td>
<td class="px-4 py-2">高级工程师</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥28,500</td>
<td class="px-4 py-2">¥24,225</td>
<td class="px-4 py-2">¥18,000</td>
<td class="px-4 py-2">¥10,500</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">2</td>
<td class="px-4 py-2">李思雨</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">28</td>
<td class="px-4 py-2">市场部</td>
<td class="px-4 py-2">市场经理</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥25,800</td>
<td class="px-4 py-2">¥22,170</td>
<td class="px-4 py-2">¥16,000</td>
<td class="px-4 py-2">¥9,800</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">3</td>
<td class="px-4 py-2">王建国</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">45</td>
<td class="px-4 py-2">技术中心</td>
<td class="px-4 py-2">技术总监</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥42,000</td>
<td class="px-4 py-2">¥34,860</td>
<td class="px-4 py-2">¥25,000</td>
<td class="px-4 py-2">¥17,000</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">4</td>
<td class="px-4 py-2">赵雪</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">26</td>
<td class="px-4 py-2">运营部</td>
<td class="px-4 py-2">运营专员</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥15,000</td>
<td class="px-4 py-2">¥13,350</td>
<td class="px-4 py-2">¥10,000</td>
<td class="px-4 py-2">¥5,000</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">5</td>
<td class="px-4 py-2">陈志强</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">35</td>
<td class="px-4 py-2">测试部</td>
<td class="px-4 py-2">测试经理</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥22,500</td>
<td class="px-4 py-2">¥19,575</td>
<td class="px-4 py-2">¥15,000</td>
<td class="px-4 py-2">¥7,500</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">6</td>
<td class="px-4 py-2">刘芳</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">30</td>
<td class="px-4 py-2">品牌部</td>
<td class="px-4 py-2">品牌主管</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥19,800</td>
<td class="px-4 py-2">¥17,406</td>
<td class="px-4 py-2">¥12,000</td>
<td class="px-4 py-2">¥7,800</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">7</td>
<td class="px-4 py-2">周伟</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">29</td>
<td class="px-4 py-2">研发部</td>
<td class="px-4 py-2">前端工程师</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥20,000</td>
<td class="px-4 py-2">¥17,600</td>
<td class="px-4 py-2">¥13,000</td>
<td class="px-4 py-2">¥7,000</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">8</td>
<td class="px-4 py-2">吴晓梅</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">27</td>
<td class="px-4 py-2">客服部</td>
<td class="px-4 py-2">客服主管</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥16,500</td>
<td class="px-4 py-2">¥14,685</td>
<td class="px-4 py-2">¥11,000</td>
<td class="px-4 py-2">¥5,500</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">9</td>
<td class="px-4 py-2">郑阳</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">33</td>
<td class="px-4 py-2">研发部</td>
<td class="px-4 py-2">后端工程师</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥23,000</td>
<td class="px-4 py-2">¥19,910</td>
<td class="px-4 py-2">¥15,000</td>
<td class="px-4 py-2">¥8,000</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
<tr class="table-row">
<td class="px-4 py-2">10</td>
<td class="px-4 py-2">林静</td>
<td class="px-4 py-2"></td>
<td class="px-4 py-2">31</td>
<td class="px-4 py-2">市场部</td>
<td class="px-4 py-2">市场策划</td>
<td class="px-4 py-2">2023-10</td>
<td class="px-4 py-2">¥18,500</td>
<td class="px-4 py-2">¥16,315</td>
<td class="px-4 py-2">¥12,000</td>
<td class="px-4 py-2">¥6,500</td>
<td class="px-4 py-2">
<button class="text-primary hover:underline">查看</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="px-4 py-3 flex items-center justify-between border-t border-gray-200">
<div class="text-xs text-gray-500">
显示 1 到 10 条,共 128 条记录
</div>
<div class="flex space-x-1">
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">&laquo;</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm bg-primary text-white">1</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">2</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">3</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">...</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">13</button>
<button class="px-3 py-1 border border-gray-200 rounded-md text-sm hover:bg-gray-50">&raquo;</button>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 底部页脚 -->
<footer class="w-full bg-secondary border-t border-gray-200 mt-10">
<div class="container mx-auto px-4 py-8">
<div class="grid grid-cols-4 gap-8">
<div>
<h4 class="text-sm font-semibold mb-4">关于我们</h4>
<p class="text-xs text-gray-600 mb-4">人力科技是一家专注于企业人力资源数字化解决方案的高科技企业,致力于为企业提供专业、高效的人力资源管理服务。</p>
<div class="flex space-x-4">
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-weixin"></i></a>
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-weibo"></i></a>
<a href="#" class="text-gray-500 hover:text-primary"><i class="fab fa-linkedin"></i></a>
</div>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">产品服务</h4>
<ul class="space-y-2 text-xs text-gray-600">
<li><a href="#" class="hover:text-primary">人力资源管理系统</a></li>
<li><a href="#" class="hover:text-primary">薪酬计算系统</a></li>
<li><a href="#" class="hover:text-primary">绩效考核系统</a></li>
<li><a href="#" class="hover:text-primary">招聘管理系统</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">帮助中心</h4>
<ul class="space-y-2 text-xs text-gray-600">
<li><a href="#" class="hover:text-primary">使用文档</a></li>
<li><a href="#" class="hover:text-primary">视频教程</a></li>
<li><a href="#" class="hover:text-primary">常见问题</a></li>
<li><a href="#" class="hover:text-primary">在线客服</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-semibold mb-4">联系我们</h4>
<ul class="space-y-2 text-xs text-gray-600">
<li class="flex items-start">
<i class="fas fa-map-marker-alt mr-2 mt-0.5"></i>
<span>北京市海淀区中关村软件园二期</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone-alt mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope mr-2"></i>
<span>service@hrtech.com</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-200 mt-8 pt-6 text-center text-xs text-gray-500">
<p>© 2023 人力科技 版权所有 京ICP备12345678号</p>
</div>
</div>
</footer>
</body>
</html>

@ -1,520 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA',
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
body {
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
min-height: 1024px;
}
.nav-item:hover {
background-color: rgba(255, 255, 255, 0.2);
}
.tree-node:hover {
background-color: #E6E9F0;
}
.form-card {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
.scroll-container {
animation: scroll 15s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
i.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body class="bg-gray-50">
<!-- 顶部导航栏 -->
<!-- <header class="bg-primary text-white sticky top-0 z-50">
<div class="container mx-auto px-4 h-15 flex items-center justify-between">
<div class="flex items-center">
<span class="font-['Pacifico'] text-xl mr-10">人力</span>
</div>
<nav class="flex-1 flex justify-center">
<ul class="flex space-x-6">
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">多维统计</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">人员管理</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">组织管理</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">考勤管理</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">绩效管理</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">薪酬管理</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">知识库</li>
<li class="nav-item px-3 py-2 rounded-button cursor-pointer">后台管理</li>
</ul>
</nav>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="搜索..." class="bg-white bg-opacity-20 text-white placeholder-white text-sm rounded-button pl-8 pr-4 py-1 w-40 focus:outline-none">
<i class="fa-icon fa-solid fa-magnifying-glass absolute left-2 top-1/2 transform -translate-y-1/2 text-white text-sm"></i>
</div>
<div class="flex items-center space-x-2 cursor-pointer">
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center">
<i class="fa-icon fa-solid fa-user text-primary text-sm"></i>
</div>
<span class="text-sm">张明远</span>
</div>
<button class="bg-white text-primary text-sm px-3 py-1 rounded-button flex items-center space-x-1">
<i class="fa-icon fa-solid fa-robot text-sm"></i>
<span>AI 助手</span>
</button>
</div>
</div>
</header> -->
<!-- 公告栏 -->
<div class="bg-primary bg-opacity-10 py-2 overflow-hidden">
<div class="container mx-auto px-4">
<div class="flex items-center">
<span class="bg-primary text-white text-xs px-2 py-1 rounded-button mr-3 whitespace-nowrap">公告</span>
<div class="relative w-full overflow-hidden">
<div class="scroll-container whitespace-nowrap">
<span class="text-sm mr-8">2023年度绩效考核方案已发布请各部门负责人及时查阅</span>
<span class="text-sm mr-8">薪酬管理系统将于本周五18:00-20:00进行升级维护</span>
<span class="text-sm mr-8">新员工入职培训计划已更新,请相关人员做好准备</span>
<span class="text-sm mr-8">2023年度绩效考核方案已发布请各部门负责人及时查阅</span>
<span class="text-sm mr-8">薪酬管理系统将于本周五18:00-20:00进行升级维护</span>
<span class="text-sm mr-8">新员工入职培训计划已更新,请相关人员做好准备</span>
</div>
</div>
</div>
</div>
</div>
<!-- 主体内容 -->
<main class="container mx-auto px-4 py-6">
<div class="flex">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-4">
<div class="bg-white rounded-md shadow-sm p-4 h-full">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">组织架构</h3>
<div class="flex space-x-2">
<button class="text-gray-500 hover:text-primary">
<i class="fa-icon fa-solid fa-expand text-sm"></i>
</button>
<button class="text-gray-500 hover:text-primary">
<i class="fa-icon fa-solid fa-filter text-sm"></i>
</button>
</div>
</div>
<div class="space-y-1">
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-building text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">集团公司</span>
</div>
<div class="pl-4">
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-building text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">北京分公司</span>
</div>
<div class="pl-4">
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-users text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">人力资源部</span>
</div>
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-chart-line text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">财务部</span>
</div>
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-laptop-code text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">技术研发部</span>
</div>
</div>
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-building text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">上海分公司</span>
</div>
<div class="pl-4">
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-users text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">人力资源部</span>
</div>
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-shopping-bag text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">市场部</span>
</div>
</div>
</div>
<div class="tree-node flex items-center py-1 px-2 rounded-button cursor-pointer">
<i class="fa-icon fa-solid fa-building text-gray-500 mr-2 text-sm"></i>
<span class="text-sm">深圳分公司</span>
</div>
</div>
</div>
</div>
<!-- 右侧薪酬规则设置 -->
<div class="w-4/5">
<div class="bg-white rounded-md shadow-sm p-6">
<div class="flex justify-between items-center mb-6">
<h2 class="text-xl font-semibold text-gray-800">薪酬计算规则设置</h2>
<div class="flex space-x-3">
<button class="bg-primary text-white text-sm px-4 py-2 rounded-button flex items-center space-x-2">
<i class="fa-icon fa-solid fa-save text-sm"></i>
<span>保存规则</span>
</button>
<button class="bg-white border border-gray-300 text-gray-700 text-sm px-4 py-2 rounded-button flex items-center space-x-2">
<i class="fa-icon fa-solid fa-times text-sm"></i>
<span>取消</span>
</button>
</div>
</div>
<div class="space-y-6">
<!-- 基本信息 -->
<div class="form-card bg-secondary rounded-md p-4">
<h3 class="font-medium text-gray-700 mb-3">基本信息</h3>
<div class="grid grid-cols-3 gap-4">
<div>
<label class="block text-sm text-gray-600 mb-1">规则名称</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">适用组织</label>
<div class="relative">
<input type="text" value="集团公司/北京分公司" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">生效日期</label>
<div class="relative">
<input type="text" value="2023-07-01" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-calendar-days absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
</div>
</div>
<!-- 薪酬项设置 -->
<div class="form-card bg-secondary rounded-md p-4">
<div class="flex justify-between items-center mb-3">
<h3 class="font-medium text-gray-700">薪酬项设置</h3>
<button class="text-primary text-sm flex items-center space-x-1">
<i class="fa-icon fa-solid fa-plus text-sm"></i>
<span>添加薪酬项</span>
</button>
</div>
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="text-left text-sm text-gray-500 border-b border-gray-200">
<th class="pb-2">薪酬项名称</th>
<th class="pb-2">类型</th>
<th class="pb-2">计税方式</th>
<th class="pb-2">计算公式</th>
<th class="pb-2">操作</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="py-3">
<input type="text" value="基本工资" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="固定工资" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="税前" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<input type="text" value="岗位工资基数 * 职级系数" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-64 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<button class="text-red-500 hover:text-red-700">
<i class="fa-icon fa-solid fa-trash text-sm"></i>
</button>
</td>
</tr>
<tr>
<td class="py-3">
<input type="text" value="绩效奖金" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="浮动工资" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="税前" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<input type="text" value="基本工资 * 绩效系数" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-64 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<button class="text-red-500 hover:text-red-700">
<i class="fa-icon fa-solid fa-trash text-sm"></i>
</button>
</td>
</tr>
<tr>
<td class="py-3">
<input type="text" value="交通补贴" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="补贴" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<div class="relative">
<input type="text" value="税后" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-32 focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-2 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</td>
<td class="py-3">
<input type="text" value="固定金额 500" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-64 focus:outline-none focus:ring-1 focus:ring-primary">
</td>
<td class="py-3">
<button class="text-red-500 hover:text-red-700">
<i class="fa-icon fa-solid fa-trash text-sm"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- 社保公积金设置 -->
<div class="form-card bg-secondary rounded-md p-4">
<h3 class="font-medium text-gray-700 mb-3">社保公积金设置</h3>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm text-gray-600 mb-1">社保缴纳基数</label>
<div class="relative">
<input type="text" value="员工基本工资" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">公积金缴纳基数</label>
<div class="relative">
<input type="text" value="员工基本工资" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
</div>
<div class="mt-4">
<label class="block text-sm text-gray-600 mb-2">缴纳比例</label>
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="text-left text-sm text-gray-500 border-b border-gray-200">
<th class="pb-2">项目</th>
<th class="pb-2">单位比例</th>
<th class="pb-2">个人比例</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="py-2">养老保险</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="16%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="8%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
</tr>
<tr>
<td class="py-2">医疗保险</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="9.5%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="2%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
</tr>
<tr>
<td class="py-2">失业保险</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="0.5%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="0.5%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
</tr>
<tr>
<td class="py-2">公积金</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="12%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
<td class="py-2">
<div class="relative w-24">
<input type="text" value="12%" class="border border-gray-300 rounded-md px-2 py-1 text-sm w-full focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- 个税设置 -->
<div class="form-card bg-secondary rounded-md p-4">
<h3 class="font-medium text-gray-700 mb-3">个人所得税设置</h3>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm text-gray-600 mb-1">起征点</label>
<div class="relative">
<input type="text" value="5000" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
</div>
</div>
<div>
<label class="block text-sm text-gray-600 mb-1">专项附加扣除</label>
<div class="relative">
<input type="text" value="自动计算" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary">
<i class="fa-icon fa-solid fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-xs"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 底部通栏 -->
<footer class="bg-gray-800 text-white py-8 mt-10">
<div class="container mx-auto px-4">
<div class="grid grid-cols-4 gap-8">
<div>
<h4 class="text-sm font-medium mb-4">关于我们</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">联系我们</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-medium mb-4">产品服务</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">人力资源管理系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效管理系统</a></li>
<li><a href="#" class="hover:text-white">培训管理系统</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-medium mb-4">帮助中心</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">使用指南</a></li>
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">视频教程</a></li>
<li><a href="#" class="hover:text-white">在线客服</a></li>
</ul>
</div>
<div>
<h4 class="text-sm font-medium mb-4">联系我们</h4>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-center">
<i class="fa-icon fa-solid fa-phone mr-2 text-sm"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fa-icon fa-solid fa-envelope mr-2 text-sm"></i>
<span>service@hrsystem.com</span>
</li>
<li class="flex items-center">
<i class="fa-icon fa-solid fa-location-dot mr-2 text-sm"></i>
<span>北京市海淀区中关村软件园</span>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 flex justify-between items-center">
<p class="text-xs text-gray-400">© 2023 人力资源管理系统 版权所有</p>
<div class="flex space-x-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fa-icon fa-brands fa-weixin text-sm"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fa-icon fa-brands fa-weibo text-sm"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fa-icon fa-brands fa-linkedin-in text-sm"></i>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,475 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力资源管理系统</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
.font-logo {
font-family: 'Pacifico', serif;
}
.fa-icon {
display: flex;
justify-content: center;
align-items: center;
}
.scroll-container {
overflow: hidden;
}
.scroll-content {
display: inline-block;
white-space: nowrap;
animation: scroll 20s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-50%); }
}
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type="number"] {
-moz-appearance: textfield;
}
</style>
</head>
<body class="min-h-[1024px] bg-gray-50 flex flex-col">
<!-- 顶部导航栏 -->
<!-- <header class="w-full bg-primary text-white shadow-md">
<div class="container mx-auto px-6 h-[60px] flex items-center justify-between">
<div class="flex items-center space-x-8">
<div class="font-logo text-xl">人力</div>
<nav class="hidden md:flex space-x-6">
<a href="#" class="text-sm hover:text-gray-200 transition">多维统计</a>
<a href="#" class="text-sm hover:text-gray-200 transition">人员管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">组织管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">考勤管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">绩效管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">薪酬管理</a>
<a href="#" class="text-sm hover:text-gray-200 transition">知识库</a>
<a href="#" class="text-sm hover:text-gray-200 transition">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden md:block">
<input type="text" placeholder="搜索..." class="bg-primary-light text-sm text-white placeholder-gray-300 rounded-button pl-8 pr-4 py-2 border border-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500">
<i class="fas fa-search absolute left-2 top-1/2 transform -translate-y-1/2 text-gray-300 fa-icon w-4 h-4"></i>
</div>
<button class="bg-blue-600 hover:bg-blue-700 text-white text-sm px-4 py-2 rounded-button flex items-center space-x-2">
<i class="fas fa-robot fa-icon w-4 h-4"></i>
<span>AI 助手</span>
</button>
<div class="w-8 h-8 rounded-full bg-white flex items-center justify-center cursor-pointer">
<i class="fas fa-user text-primary fa-icon w-4 h-4"></i>
</div>
</div>
</div>
</header> -->
<!-- 公告栏 -->
<div class="w-full bg-yellow-50 py-2 px-6 border-b border-yellow-200">
<div class="container mx-auto flex items-center">
<span class="text-yellow-700 font-medium text-sm mr-4 whitespace-nowrap">公告:</span>
<div class="scroll-container w-full">
<div class="scroll-content text-sm text-yellow-700">
2023年度绩效考核工作将于12月1日正式启动请各部门提前做好准备。2023年度员工满意度调查结果已发布请各部门负责人查阅。公司年度旅游活动报名开始截止日期11月30日。2024年春节放假安排已发布请各部门做好工作安排。公司新办公区将于2024年1月正式启用请各部门做好搬迁准备。
</div>
</div>
</div>
</div>
<!-- 主体内容 -->
<main class="flex-1 container mx-auto px-6 py-6 flex">
<!-- 左侧组织架构树 -->
<div class="w-1/5 pr-4">
<div class="bg-white rounded-md shadow-sm p-4 h-full">
<div class="flex justify-between items-center mb-4">
<h3 class="font-medium text-gray-700">组织架构</h3>
<button class="text-primary hover:text-blue-700">
<i class="fas fa-sync-alt fa-icon w-4 h-4"></i>
</button>
</div>
<div class="space-y-1">
<div class="flex items-center justify-between p-2 hover:bg-secondary rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-building text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">集团公司</span>
</div>
<i class="fas fa-chevron-down text-gray-400 fa-icon w-3 h-3"></i>
</div>
<div class="pl-6">
<div class="flex items-center justify-between p-2 hover:bg-secondary rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-sitemap text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">人力资源部</span>
</div>
<i class="fas fa-chevron-down text-gray-400 fa-icon w-3 h-3"></i>
</div>
<div class="pl-6">
<div class="flex items-center p-2 hover:bg-secondary rounded-md cursor-pointer">
<i class="fas fa-users text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">招聘组</span>
</div>
<div class="flex items-center p-2 hover:bg-secondary rounded-md cursor-pointer">
<i class="fas fa-users text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">培训组</span>
</div>
<div class="flex items-center p-2 hover:bg-secondary rounded-md cursor-pointer">
<i class="fas fa-users text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">薪酬组</span>
</div>
</div>
<div class="flex items-center justify-between p-2 hover:bg-secondary rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-sitemap text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">财务部</span>
</div>
<i class="fas fa-chevron-down text-gray-400 fa-icon w-3 h-3"></i>
</div>
<div class="flex items-center justify-between p-2 hover:bg-secondary rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-sitemap text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">技术研发中心</span>
</div>
<i class="fas fa-chevron-down text-gray-400 fa-icon w-3 h-3"></i>
</div>
<div class="flex items-center justify-between p-2 hover:bg-secondary rounded-md cursor-pointer">
<div class="flex items-center">
<i class="fas fa-sitemap text-gray-500 fa-icon w-4 h-4 mr-2"></i>
<span class="text-sm">市场营销部</span>
</div>
<i class="fas fa-chevron-down text-gray-400 fa-icon w-3 h-3"></i>
</div>
</div>
</div>
</div>
</div>
<!-- 右侧部门列表 -->
<div class="w-4/5 pl-4">
<div class="bg-white rounded-md shadow-sm p-6 h-full">
<div class="flex justify-between items-center mb-6">
<div class="flex items-center space-x-4">
<h2 class="text-lg font-medium text-gray-800">部门管理</h2>
<div class="flex items-center space-x-2">
<span class="text-sm text-gray-500">年份:</span>
<div class="relative">
<button class="flex items-center justify-between bg-white border border-gray-300 rounded-button px-3 py-1 text-sm text-gray-700 w-28">
<span>2023</span>
<i class="fas fa-chevron-down fa-icon w-3 h-3 ml-2"></i>
</button>
</div>
</div>
</div>
<button class="bg-primary hover:bg-blue-700 text-white text-sm px-4 py-2 rounded-button flex items-center space-x-2">
<i class="fas fa-plus fa-icon w-4 h-4"></i>
<span>添加部门</span>
</button>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">序号</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">部门名称</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">部门负责人</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">员工人数</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">操作</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">1</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">人力资源部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">张明远</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">24</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">财务部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">李思雨</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">18</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">技术研发中心</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">王建国</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">56</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">市场营销部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">赵雪梅</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">32</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">5</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">产品设计部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">陈志强</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">28</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">6</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">客户服务部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">刘芳芳</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">22</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">7</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">行政后勤部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">吴晓峰</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">15</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">8</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">质量管理部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">郑海涛</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">19</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">9</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">采购部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">周丽华</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">12</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">10</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">法务部</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">孙正义</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">8</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-primary hover:text-blue-700 mr-3">
<i class="fas fa-users fa-icon w-4 h-4"></i>
</button>
<button class="text-blue-600 hover:text-blue-800 mr-3">
<i class="fas fa-edit fa-icon w-4 h-4"></i>
</button>
<button class="text-red-600 hover:text-red-800">
<i class="fas fa-trash-alt fa-icon w-4 h-4"></i>
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="flex items-center justify-between mt-6">
<div class="text-sm text-gray-500">
显示 1 到 10 条,共 15 条记录
</div>
<div class="flex space-x-1">
<button class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">上一页</button>
<button class="px-3 py-1 border border-primary rounded-button text-sm text-white bg-primary hover:bg-blue-700">1</button>
<button class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">2</button>
<button class="px-3 py-1 border border-gray-300 rounded-button text-sm text-gray-700 bg-white hover:bg-gray-50">下一页</button>
</div>
</div>
</div>
</div>
</main>
<!-- 页脚 -->
<footer class="w-full bg-gray-800 text-white py-8">
<div class="container mx-auto px-6">
<div class="grid grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-medium mb-4">关于我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">公司简介</a></li>
<li><a href="#" class="hover:text-white">发展历程</a></li>
<li><a href="#" class="hover:text-white">企业文化</a></li>
<li><a href="#" class="hover:text-white">荣誉资质</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">产品服务</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">人力资源系统</a></li>
<li><a href="#" class="hover:text-white">薪酬管理系统</a></li>
<li><a href="#" class="hover:text-white">绩效考核系统</a></li>
<li><a href="#" class="hover:text-white">培训管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">帮助中心</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li><a href="#" class="hover:text-white">常见问题</a></li>
<li><a href="#" class="hover:text-white">使用教程</a></li>
<li><a href="#" class="hover:text-white">API文档</a></li>
<li><a href="#" class="hover:text-white">联系我们</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-medium mb-4">联系我们</h3>
<ul class="space-y-2 text-xs text-gray-300">
<li class="flex items-center">
<i class="fas fa-map-marker-alt fa-icon w-4 h-4 mr-2"></i>
<span>北京市海淀区中关村软件园</span>
</li>
<li class="flex items-center">
<i class="fas fa-phone-alt fa-icon w-4 h-4 mr-2"></i>
<span>400-888-8888</span>
</li>
<li class="flex items-center">
<i class="fas fa-envelope fa-icon w-4 h-4 mr-2"></i>
<span>contact@hrsystem.com</span>
</li>
</ul>
<div class="flex space-x-4 mt-4">
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-gray-600">
<i class="fab fa-weixin fa-icon w-4 h-4"></i>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-gray-600">
<i class="fab fa-weibo fa-icon w-4 h-4"></i>
</a>
<a href="#" class="w-8 h-8 rounded-full bg-gray-700 flex items-center justify-center hover:bg-gray-600">
<i class="fab fa-linkedin-in fa-icon w-4 h-4"></i>
</a>
</div>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-6 text-xs text-gray-400">
<div class="flex justify-between">
<div>© 2023 人力资源管理系统 版权所有</div>
<div class="flex space-x-4">
<a href="#" class="hover:text-white">隐私政策</a>
<a href="#" class="hover:text-white">服务条款</a>
<a href="#" class="hover:text-white">法律声明</a>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>

@ -1,358 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>人力管理系统 - 配置项管理</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#2D5CF6',
secondary: '#F5F6FA'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '4px'
}
}
}
}
</script>
<style>
body {
min-height: 1024px;
display: flex;
flex-direction: column;
}
.main-content {
flex: 1;
}
.nav-link:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.ai-assistant {
animation: pulse 2s infinite;
}
@keyframes pulse {
0% {
opacity: 0.8;
}
50% {
opacity: 1;
transform: scale(1.05);
}
100% {
opacity: 0.8;
}
}
.table-row:hover {
background-color: #F5F6FA;
}
.search-input:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(45, 92, 246, 0.5);
}
.card-shadow {
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
</style>
</head>
<body class="bg-gray-50">
<!-- 顶部导航栏 -->
<!-- <header class="bg-primary text-white sticky top-0 z-50">
<div class="container mx-auto px-4">
<div class="flex items-center justify-between h-16">
<div class="flex items-center">
<span class="font-['Pacifico'] text-xl mr-10">人力</span>
<nav class="hidden md:flex space-x-1">
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">多维统计</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">人员管理</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">组织管理</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">考勤管理</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">绩效管理</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">薪酬管理</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">知识库</a>
<a href="#" class="nav-link px-3 py-2 text-sm rounded-button">后台管理</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<div class="relative hidden lg:block">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i class="fas fa-search text-gray-400" style="width: 16px; height: 16px; display: flex; justify-content: center; align-items: center;"></i>
</div>
<input type="text" class="search-input bg-white text-gray-800 pl-10 pr-4 py-2 rounded-button text-sm w-64 focus:outline-none" placeholder="搜索...">
</div>
<div class="flex items-center">
<img src="https://mastergo.com/ai/api/search-image?query=professional+asian+business+man+headshot+with+white+background&width=32&height=32&orientation=squarish&flag=ccdb4f7d825487d0239ffd0e25db8ae5"
alt="用户头像"
class="w-8 h-8 rounded-full object-cover">
</div>
<button class="ai-assistant bg-white text-primary px-3 py-1 rounded-button text-sm flex items-center whitespace-nowrap">
<i class="fas fa-robot mr-2" style="width: 14px; height: 14px; display: flex; justify-content: center; align-items: center;"></i>
AI助手
</button>
</div>
</div>
</div>
</header> -->
<!-- 主要内容区 -->
<main class="main-content py-8">
<div class="container mx-auto px-4 max-w-6xl">
<!-- 页面标题和操作区 -->
<div class="flex justify-between items-center mb-6">
<h1 class="text-2xl font-semibold text-gray-800">配置项管理</h1>
<button class="bg-primary text-white px-4 py-2 rounded-button text-sm flex items-center whitespace-nowrap">
<i class="fas fa-plus mr-2" style="width: 14px; height: 14px; display: flex; justify-content: center; align-items: center;"></i>
新建配置项
</button>
</div>
<!-- 搜索区 -->
<div class="bg-white card-shadow rounded-md p-6 mb-6">
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">配置项名称</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:ring-primary focus:border-primary">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">配置项 Code</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2 text-sm focus:ring-primary focus:border-primary">
</div>
<div class="flex items-end">
<button class="bg-primary text-white px-4 py-2 rounded-button text-sm whitespace-nowrap w-full">
<i class="fas fa-search mr-2" style="width: 14px; height: 14px;"></i>
查询
</button>
</div>
</div>
</div>
<!-- 配置项列表 -->
<div class="bg-white card-shadow rounded-md overflow-hidden">
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">配置名称</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">配置 Code</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">配置值</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">修改人</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">修改时间</th>
<th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">操作</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">系统名称</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">system.name</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">人力管理系统</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">张明远</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-05-12 14:30</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">登录超时时间</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">session.timeout</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">30分钟</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">李思雨</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-06-18 09:15</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">默认每页条数</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">page.size</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">20</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">王建国</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-07-22 16:45</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">系统Logo URL</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">system.logo</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">/assets/logo.png</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">赵晓雯</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-08-05 11:20</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">数据备份路径</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">backup.path</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">/data/backup</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">陈宇航</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-09-14 13:10</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">邮件服务器地址</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">mail.server</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">smtp.example.com</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">林志强</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-10-08 10:05</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
<tr class="table-row">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">系统维护时间</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">maintenance.time</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">每周日 02:00-04:00</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">吴晓峰</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">2023-11-19 15:30</td>
<td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button class="text-primary hover:text-primary-dark mr-3">编辑</button>
<button class="text-red-600 hover:text-red-900">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="bg-white px-6 py-4 flex items-center justify-between border-t border-gray-200">
<div class="flex-1 flex justify-between sm:hidden">
<a href="#" class="relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
上一页
</a>
<a href="#" class="ml-3 relative inline-flex items-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
下一页
</a>
</div>
<div class="hidden sm:flex-1 sm:flex sm:items-center sm:justify-between">
<div>
<p class="text-sm text-gray-700">
显示 <span class="font-medium">1</span><span class="font-medium">7</span> 条,共 <span class="font-medium">32</span> 条记录
</p>
</div>
<div>
<nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination">
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
<span class="sr-only">上一页</span>
<i class="fas fa-chevron-left" style="width: 12px; height: 12px; display: flex; justify-content: center; align-items: center;"></i>
</a>
<a href="#" aria-current="page" class="z-10 bg-primary border-primary text-white relative inline-flex items-center px-4 py-2 border text-sm font-medium">
1
</a>
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
2
</a>
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
3
</a>
<span class="relative inline-flex items-center px-4 py-2 border border-gray-300 bg-white text-sm font-medium text-gray-700">
...
</span>
<a href="#" class="bg-white border-gray-300 text-gray-500 hover:bg-gray-50 relative inline-flex items-center px-4 py-2 border text-sm font-medium">
8
</a>
<a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-300 bg-white text-sm font-medium text-gray-500 hover:bg-gray-50">
<span class="sr-only">下一页</span>
<i class="fas fa-chevron-right" style="width: 12px; height: 12px; display: flex; justify-content: center; align-items: center;"></i>
</a>
</nav>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- 底部通栏 -->
<footer class="bg-gray-800 text-white py-8">
<div class="container mx-auto px-4">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">关于我们</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-300 hover:text-white text-sm">公司简介</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">发展历程</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">企业文化</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">招贤纳士</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">产品服务</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-300 hover:text-white text-sm">人力资源系统</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">薪酬管理系统</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">绩效管理系统</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">培训管理系统</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">帮助中心</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-300 hover:text-white text-sm">使用指南</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">常见问题</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">视频教程</a></li>
<li><a href="#" class="text-gray-300 hover:text-white text-sm">在线客服</a></li>
</ul>
</div>
<div>
<h3 class="text-sm font-semibold uppercase tracking-wider mb-4">联系我们</h3>
<ul class="space-y-2">
<li class="text-gray-300 text-sm">电话400-888-8888</li>
<li class="text-gray-300 text-sm">邮箱contact@hrsystem.com</li>
<li class="text-gray-300 text-sm">地址北京市海淀区科技园路88号</li>
<li class="flex space-x-4 mt-4">
<a href="#" class="text-gray-300 hover:text-white">
<i class="fab fa-weixin" style="width: 16px; height: 16px; display: flex; justify-content: center; align-items: center;"></i>
</a>
<a href="#" class="text-gray-300 hover:text-white">
<i class="fab fa-weibo" style="width: 16px; height: 16px; display: flex; justify-content: center; align-items: center;"></i>
</a>
<a href="#" class="text-gray-300 hover:text-white">
<i class="fab fa-linkedin" style="width: 16px; height: 16px; display: flex; justify-content: center; align-items: center;"></i>
</a>
</li>
</ul>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-8 flex flex-col md:flex-row justify-between items-center">
<p class="text-gray-400 text-xs">© 2023 人力管理系统 版权所有</p>
<div class="flex space-x-6 mt-4 md:mt-0">
<a href="#" class="text-gray-400 hover:text-white text-xs">隐私政策</a>
<a href="#" class="text-gray-400 hover:text-white text-xs">服务条款</a>
<a href="#" class="text-gray-400 hover:text-white text-xs">法律声明</a>
<a href="#" class="text-gray-400 hover:text-white text-xs">ICP备案号京ICP备12345678号</a>
</div>
</div>
</div>
</footer>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@ -0,0 +1,83 @@
import React, { PureComponent } from 'react';
import { connect } from '@umijs/max';
import { Tabs } from 'antd';
// 导入子组件
import BasicInfoManagement from './components/BasicInfoManagement';
import QualificationManagement from './components/QualificationManagement';
import PersonnelBasicInfo from './components/PersonnelBasicInfo';
import styles from './BasicInformation.less';
@connect(({ staffsheet, loading }) => ({
staffsheet,
loading: loading.models.staffsheet,
}))
class BasicInformation extends PureComponent {
state = {
activeTab: '1',
}
// 渲染Tab内容
renderTabContent = () => {
const { activeTab } = this.state;
const { staffsheet, loading, dispatch } = this.props;
const childProps = {
staffsheet,
loading,
dispatch
};
switch (activeTab) {
case '1':
return <BasicInfoManagement {...childProps} />;
case '2':
return <QualificationManagement {...childProps} />;
case '3':
return <PersonnelBasicInfo {...childProps} />;
default:
return <BasicInfoManagement {...childProps} />;
}
}
render() {
const { activeTab } = this.state;
const tabItems = [
{
key: '1',
label: '基本信息管理',
},
{
key: '2',
label: '资质证照管理',
},
{
key: '3',
label: '人员基础信息',
}
];
return (
<div>
{/* 顶部标签页 */}
<div style={{ marginBottom: 0, background: '#EEEFF7', padding: '0 24px' }}>
<Tabs
activeKey={activeTab}
onChange={(key) => this.setState({ activeTab: key })}
items={tabItems}
className="custom-tabs"
style={{ marginBottom: 0 }}
/>
</div>
{/* 根据选中的Tab渲染对应的子组件 */}
{this.renderTabContent()}
</div>
);
}
}
export default BasicInformation;

@ -0,0 +1,836 @@
/* Tabs导航条样式 - 简洁风格 */
:global(.custom-tabs) {
:global(.ant-tabs-nav) {
margin-bottom: 0 !important;
background-color: #EEEFF7;
}
/* 移除默认的下划线动画 */
:global(.ant-tabs-ink-bar) {
display: none !important;
}
/* 未选中状态 - 简洁样式 */
:global(.ant-tabs-tab) {
background: transparent !important;
border: none !important;
border-radius: 0 !important;
margin-right: 32px !important;
padding: 12px 0 !important;
transition: all 0.3s ease !important;
position: relative !important;
}
/* 未选中状态文字 */
:global(.ant-tabs-tab) :global(.ant-tabs-tab-btn) {
color: #333 !important;
font-size: 14px !important;
font-weight: normal !important;
}
/* 选中状态 */
:global(.ant-tabs-tab-active) {
background: transparent !important;
}
/* 选中状态文字 */
:global(.ant-tabs-tab-active) :global(.ant-tabs-tab-btn) {
color: #2E4CD4 !important;
font-weight: 500 !important;
}
/* 选中状态底部蓝色边框 */
:global(.ant-tabs-tab-active)::after {
content: '' !important;
position: absolute !important;
bottom: 0 !important;
left: 0 !important;
right: 0 !important;
height: 2px !important;
background: #2E4CD4 !important;
}
/* 底部分隔线 */
:global(.ant-tabs-nav)::before {
// border-bottom: 1px solid red !important;
}
/* 悬停效果 */
:global(.ant-tabs-tab):hover :global(.ant-tabs-tab-btn) {
color: #2E4CD4 !important;
}
}
.card-container {
margin: 0;
background: #fff;
border-radius: 0;
:global(.ant-card-body) {
padding: 15px 24px;
}
}
/* 主要卡片样式 */
.ant-card {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
border-radius: 8px;
}
.ant-card-head-title {
font-weight: 500;
font-size: 16px;
}
.ant-card-body {
padding: 20px;
}
/* 功能区域图表样式 */
.chart-container {
position: relative;
height: 240px;
display: flex;
align-items: center;
justify-content: center;
}
.chart-full-size {
height: 100%;
width: 100%;
}
.org-chart {
position: relative;
height: 240px;
.org-top-button {
text-align: center;
margin-bottom: 30px;
.ant-btn {
border-radius: 20px;
font-size: 12px;
height: 36px;
padding-left: 20px;
padding-right: 20px;
background: #5470c6;
border: none;
box-shadow: 0 2px 8px rgba(84, 112, 198, 0.3);
}
}
.org-level-1 {
display: flex;
justify-content: space-between;
margin-bottom: 25px;
margin-top: 20px;
padding-left: 8%;
padding-right: 8%;
.org-department {
text-align: center;
position: relative;
.dept-icon {
width: 48px;
height: 48px;
border-radius: 50%;
margin: 0 auto 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: white;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
&.safety {
background-color: #52c41a;
box-shadow: 0 2px 8px rgba(82, 196, 26, 0.3);
}
&.production {
background-color: #1890ff;
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
}
&.equipment {
background-color: #13c2c2;
box-shadow: 0 2px 8px rgba(19, 194, 194, 0.3);
}
}
.dept-name {
font-size: 12px;
color: #374151;
font-weight: 500;
}
}
}
.org-level-2 {
display: flex;
justify-content: space-between;
padding-left: 4%;
padding-right: 4%;
.dept-group {
display: flex;
gap: 16px;
.sub-department {
text-align: center;
.sub-dept-icon {
width: 36px;
height: 36px;
border-radius: 50%;
margin: 0 auto 6px;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: white;
&.safety {
background-color: #52c41a;
}
&.production {
background-color: #1890ff;
}
&.equipment {
background-color: #13c2c2;
}
}
.sub-dept-name {
font-size: 10px;
color: #6b7280;
line-height: 1.2;
}
}
}
}
// 连接线样式
.connect-line {
position: absolute;
&.vertical {
width: 1px;
border-left: 1px dashed #9ca3af;
}
&.horizontal {
height: 1px;
border-top: 1px dashed #9ca3af;
}
// 主连接线
&.main-vertical {
top: 56px;
left: 50%;
transform: translateX(-50%);
height: 20px;
}
&.main-horizontal {
top: 76px;
left: 20%;
width: 60%;
}
// 第一层连接线
&.level1-left {
top: 70px;
left: 20%;
height: 12px;
}
&.level1-center {
top: 70px;
left: 50%;
height: 12px;
}
&.level1-right {
top: 70px;
left: 80%;
height: 12px;
}
}
}
/* 风险警告图标 */
.risk-icon {
width: 80px;
height: 80px;
border-radius: 50%;
background: linear-gradient(135deg, #ff6b6b, #ff8e8e);
margin: 0 auto 12px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(255, 107, 107, 0.3);
font-size: 32px;
color: white;
}
/* 提示框样式 */
.risk-tips {
background-color: #fff2f0;
padding: 12px;
border-radius: 6px;
border: 1px solid #ffccc7;
.tips-header {
display: flex;
align-items: center;
margin-bottom: 8px;
.tips-icon {
color: #ff4d4f;
margin-right: 8px;
}
.tips-label {
font-size: 12px;
font-weight: bold;
}
}
.tips-content {
font-size: 12px;
color: #666;
line-height: 1.5;
}
}
/* 表格工具栏 */
.table-toolbar {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
padding: 16px 0;
border-bottom: 1px solid #f0f0f0;
}
/* 响应式设计 */
@media (max-width: 1200px) {
.function-block {
height: auto;
min-height: 250px;
}
}
@media (max-width: 768px) {
.custom-tabs .ant-tabs-tab {
padding: 6px 12px !important;
font-size: 12px;
}
.org-button {
padding: 2px;
.org-icon {
width: 32px;
height: 32px;
font-size: 14px;
}
.org-label {
font-size: 10px;
}
}
.table-toolbar {
flex-direction: column;
gap: 12px;
align-items: stretch;
}
.function-block {
padding: 16px;
height: auto;
}
}
/* 新增样式类 - 实时风险评估 */
.risk-assessment-container {
border: 1px solid #FFE8E8;
border-radius: 4px;
padding: 20px;
height: 300px;
position: relative;
overflow: hidden;
background-image: url('~@/assets/basic_information/risk-area-bg.png');
background-repeat: no-repeat;
// background-size: cover;
background-position: center;
}
.risk-background-top {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 60%;
background: radial-gradient(ellipse at top right, rgba(255, 107, 53, 0.08) 0%, transparent 70%);
pointer-events: none;
}
.risk-background-bottom {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 50%;
background: radial-gradient(ellipse at bottom left, rgba(239, 68, 68, 0.06) 0%, transparent 60%);
pointer-events: none;
}
.risk-title {
display: flex;
align-items: center;
margin-bottom: 24px;
position: relative;
z-index: 2;
}
.risk-title-indicator {
display: inline-block;
width: 2px;
height: 16px;
background: #FF2526;
border-radius: 2px;
margin-right: 8px;
}
.risk-title-text {
color: #333;
font-size: 14px;
font-weight: 500;
}
.risk-content-area {
display: flex;
align-items: flex-start;
height: calc(100% - 60px);
position: relative;
z-index: 2;
}
.risk-shield-container {
// flex: 0 0 120px;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.risk-shield {
width: 80px;
height: 80px;
background: linear-gradient(135deg, #ff6b35 0%, #f7931e 50%, #ffb347 100%);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8px 20px rgba(255, 107, 53, 0.3), inset 0 2px 4px rgba(255, 255, 255, 0.3);
position: relative;
transform: perspective(200px) rotateX(5deg) rotateY(-5deg);
}
.risk-shield-icon {
color: white;
font-size: 40px;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
.risk-shield-shadow {
position: absolute;
bottom: -8px;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 16px;
background: linear-gradient(90deg, rgba(255, 107, 53, 0.2) 0%, rgba(255, 107, 53, 0.4) 50%, rgba(255, 107, 53, 0.2) 100%);
border-radius: 50%;
filter: blur(2px);
}
.risk-info-container {
flex: 1;
// padding-left: 16px;
margin-top: 50px;
height: 100%;
}
.risk-level-alert {
background: #FFD0D0;
backdrop-filter: blur(4px);
border-radius: 6px;
padding: 12px 16px;
// margin-bottom: 20px;
// border: 1px solid rgba(255, 196, 209, 0.6);
// box-shadow: 0 2px 8px rgba(255, 107, 53, 0.1);
}
.risk-level-text {
color: #333;
font-size: 14px;
font-weight: 500;
}
.risk-level-danger {
color: #FF2626;
font-weight: 700;
margin-left: 4px;
}
.risk-tip-container {
display: flex;
align-items: flex-start;
padding: 12px 0;
background: rgba(255, 255, 255, 0.4);
border-radius: 8px;
}
.risk-tip-icon {
width: 20px;
height: 20px;
// background: linear-gradient(135deg, #ff6b35, #f7931e);
display: flex;
align-items: center;
justify-content: center;
margin-right: 8px;
margin-top: 2px;
flex-shrink: 0;
// box-shadow: 0 2px 6px rgba(255, 107, 53, 0.3);
}
.risk-tip-emoji {
color: white;
font-size: 12px;
font-weight: bold;
}
.risk-tip-content {
flex: 1;
}
.risk-tip-text {
font-size: 13px;
color: #666;
line-height: 1.6;
font-weight: 500;
}
/* 组织架构样式 */
.org-chart-container {
position: relative;
height: 240px;
}
.org-top-button-container {
text-align: center;
margin-bottom: 30px;
}
.org-top-button {
border-radius: 20px;
font-size: 12px;
height: 36px;
padding-left: 20px;
padding-right: 20px;
background: #2E4CD4;
border: none;
}
.org-connect-line-vertical {
position: absolute;
top: 56px;
left: 50%;
transform: translateX(-50%);
width: 1px;
height: 20px;
background: #d1d5db;
border-left: 1px dashed #9ca3af;
}
.org-connect-line-horizontal {
position: absolute;
top: 76px;
left: 20%;
width: 60%;
height: 1px;
border-top: 1px dashed #9ca3af;
}
.org-connect-line-branch {
position: absolute;
top: 70px;
width: 1px;
height: 12px;
border-left: 1px dashed #9ca3af;
}
.org-connect-line-branch-left {
left: 20%;
}
.org-connect-line-branch-center {
left: 50%;
}
.org-connect-line-branch-right {
left: 80%;
}
.org-departments-container {
display: flex;
justify-content: space-between;
margin-bottom: 25px;
margin-top: 20px;
padding-left: 8%;
padding-right: 8%;
}
.org-department {
text-align: center;
position: relative;
}
.org-department-icon {
width: 48px;
height: 48px;
border-radius: 50%;
margin: 0 auto 8px;
display: flex;
align-items: center;
justify-content: center;
}
.org-department-icon-safety {
background-color: #52c41a;
box-shadow: 0 2px 8px rgba(82, 196, 26, 0.3);
}
.org-department-icon-production {
background-color: #1890ff;
box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
}
.org-department-icon-equipment {
background-color: #13c2c2;
box-shadow: 0 2px 8px rgba(19, 194, 194, 0.3);
}
.org-department-label {
font-size: 12px;
color: #374151;
font-weight: 500;
}
.org-department-connect-v {
position: absolute;
top: 58px;
left: 50%;
transform: translateX(-50%);
width: 1px;
height: 20px;
border-left: 1px dashed #9ca3af;
}
.org-department-connect-h {
position: absolute;
top: 78px;
left: 10%;
width: 80%;
height: 1px;
border-top: 1px dashed #9ca3af;
}
.org-department-connect-sub {
position: absolute;
top: 72px;
width: 1px;
height: 12px;
border-left: 1px dashed #9ca3af;
}
.org-department-connect-sub-left {
left: 10%;
}
.org-department-connect-sub-right {
left: 90%;
}
.button-style {
border-color: #DFE4F6;
color: #2E4CD4;
}
/* 表格工具栏样式 */
.table-toolbar-container {
margin-bottom: 16px;
}
.operateStyle {
color: #2E4CD4;
}
.search-input {
width: 300px;
}
.filter-select {
width: 120px;
}
.func-area-bg {
background-image: url('~@/assets/basic_information/func-area-bg.png');
background-repeat: no-repeat;
// background-size: cover;
background-position: center;
}
.organ-area-bg {
background-image: url('~@/assets/basic_information/organ-area-bg.png');
background-repeat: no-repeat;
// background-size: cover;
background-position: center;
}
.warn-area-bg {
background-image: url('~@/assets/basic_information/warn-area-bg.png');
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.stat-card {
background: #F6F7FF;
border-radius: 4px;
padding: 10px 15px;
display: flex;
align-items: center;
min-height: 80px;
}
.stat-card-label {
color: #666;
font-size: 14px;
margin-bottom: 8px;
}
.stat-card-value {
color: #222;
font-size: 22px;
font-weight: 600;
}
.stat-card-icon {
width: 40px;
height: 40px;
border-radius: 50%;
// background: rgba(46, 76, 212, 0.08);
display: flex;
align-items: center;
justify-content: center;
margin-left: 10px;
img {
width: 40px;
height: 40px;
}
}
.ryzz-area-bg {
background-image: url('~@/assets/basic_information/ryzz-area-bg.png');
background-repeat: no-repeat;
// background-size: cover;
background-position: center;
}
.dqtx-area-bg {
background-image: url('~@/assets/basic_information/dqtx-area-bg.png');
background-repeat: no-repeat;
// background-size: cover;
background-position: center;
}
// 表单组件公共样式
.createForm {
:global(.ant-modal-content) {
background: linear-gradient(180deg, #EAEEFF 0%, #FFFFFF 20%, #FFFFFF 100%);
}
:global(.ant-modal-header) {
background-color: transparent;
}
:global(.ant-modal-title) {
text-align: center;
}
:global(.ant-modal-footer) {
text-align: center;
}
:global {
.ant-form {
margin-right: 24px;
width: 100%;
padding: 0 20px;
}
.ant-picker,
.ant-input-number {
width: 100%;
}
}
}
.modal-cancel-btn {
background: #B6BBD9;
color: #fff;
border: none;
border-radius: 4px;
width: 88px;
height: 36px;
margin-right: 16px;
font-size: 14px;
cursor: pointer;
}
.modal-ok-btn {
background: #2E4CD4;
color: #fff;
border: none;
border-radius: 4px;
width: 88px;
height: 36px;
font-size: 14px;
cursor: pointer;
}
.view-label {
color: #666;
font-size: 14px;
margin-bottom: 2px;
margin-right: 20px;
display: inline-block;
}
.view-value {
color: #333;
font-size: 14px;
font-weight: 500;
word-break: break-all;
display: inline-block;
}

@ -0,0 +1,807 @@
import React, { PureComponent } from 'react';
import {
DeleteOutlined,
EditOutlined,
PlusOutlined,
SearchOutlined,
RedoOutlined,
DownOutlined,
ExclamationCircleFilled,
UpOutlined,
SafetyOutlined,
ImportOutlined,
ExportOutlined,
UserOutlined,
TeamOutlined,
SettingOutlined,
FileTextOutlined,
ProjectOutlined,
WarningOutlined,
AlertOutlined,
} from '@ant-design/icons';
import { Button, Card, Divider, Dropdown, message, Modal, Popconfirm, Space, Switch, Tag, Row, Col, Tree, Progress, Input, Select } from 'antd';
import StandardTable from '@/components/StandardTable';
import ReactECharts from 'echarts-for-react';
import { MyIcon } from "@/components/Icon"
import style from "@/global.less";
import BasicInfoCreateForm from '../form/BasicInfoCreateForm'; //新增表单
import BasicInfoUpdateForm from '../form/BasicInfoUpdateForm'; //修改表单
import BasicInfoViewForm from '../form/BasicInfoViewForm'; //查看表单
import styles from '../BasicInformation.less';
import datadictionary from "@/utils/dataDictionary";
import { formatDate } from "@/utils/formatUtils";
import { formatDictText, checkButtonAuthority } from "@/utils/globalCommon";
import riskShieldImg from '@/assets/basic_information/risk-shield.png'; // 新增:引入盾牌图片
import riskTip from '@/assets/basic_information/risk-tip.png';
const { confirm } = Modal;
//预约类型
const sex_type = datadictionary.sex
const user_status = datadictionary.user_status
const sys_user_post = datadictionary.sys_user_post
const mockData = {
list: [
{
id: '01',
projectName: '安全项目一',
location: '北京朝阳区',
area: '15,000m²',
organization: '安全生产部',
staffCount: 168,
safetyLevel: '高',
},
{
id: '02',
projectName: '安全项目二',
location: '北京朝阳区',
area: '15,000m²',
organization: '安全生产部',
staffCount: 168,
safetyLevel: '中',
},
{
id: '03',
projectName: '安全项目三',
location: '北京朝阳区',
area: '15,000m²',
organization: '安全生产部',
staffCount: 168,
safetyLevel: '低',
},
{
id: '04',
projectName: '安全项目四',
location: '北京朝阳区',
area: '15,000m²',
organization: '安全生产部',
staffCount: 168,
safetyLevel: '低',
},
{
id: '05',
projectName: '安全项目五',
location: '北京朝阳区',
area: '15,000m²',
organization: '安全生产部',
staffCount: 168,
safetyLevel: '中',
},
],
pagination: {
total: 48,
current: 1,
pageSize: 5,
},
}
class BasicInfoManagement extends PureComponent {
state = {
modalVisible: false,
updateModalVisible: false,
viewModalVisible: false,
expandForm: false,
selectedRows: [],
formValues: {},
updateFormValues: {},
viewFormValues: {},
toggleExpand: false,
}
columns = [
{
title: '编号',
dataIndex: 'id',
key: 'id',
width: 80,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '项目名称',
dataIndex: 'projectName',
key: 'projectName',
width: 150,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '地理信息',
dataIndex: 'location',
key: 'location',
width: 120,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '占地面积',
dataIndex: 'area',
key: 'area',
width: 100,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '组织机构',
dataIndex: 'organization',
key: 'organization',
width: 120,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '职业人数',
dataIndex: 'staffCount',
key: 'staffCount',
width: 100,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text} </span>
),
},
{
title: '安全等级',
dataIndex: 'safetyLevel',
key: 'safetyLevel',
width: 100,
render: (text) => {
let color = '#FF2526';
let bgColor = '#FFE0E2';
if (text === '中') {
color = '#FF8800';
bgColor = '#FFF3E9';
} else if (text === '低') {
color = '#00AAFA';
bgColor = '#DAF3FF';
}
return (
<Tag
style={{
color: color,
backgroundColor: bgColor,
border: 'none',
borderRadius: 14,
padding: '4px 8px',
fontSize: '12px'
}}
>
{text}
</Tag>
);
},
},
{
title: '操作',
fixed: 'right',
align: 'center',
width: 200,
render: (text, record) => {
return (
<div>
<a className={styles.operateStyle} style={{ marginRight: 15, fontSize: '12px' }} onClick={() => this.handleViewModalVisible(true, record)}> 详情 </a>
<a className={styles.operateStyle} style={{ marginRight: 15, fontSize: '12px' }} onClick={() => this.handleUpdateModalVisible(true, record)}> 修改 </a>
<a className={styles.operateStyle} style={{ color: '#FF2626', fontSize: '12px' }}> 删除 </a>
</div>
)
}
},
]
getPieChartOption = () => {
return {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c}% ({d}%)'
},
legend: {
orient: 'vertical',
right: '20%',
top: '25%',
itemWidth: 16,
itemHeight: 4,
itemGap: 16,
textStyle: {
fontSize: 12,
color: '#666',
fontWeight: 'normal'
}
},
series: [
{
name: '功能区域占比',
type: 'pie',
radius: ['30%', '45%'],
center: ['30%', '45%'],
avoidLabelOverlap: false,
label: {
show: false
},
emphasis: {
scale: true,
scaleSize: 5
},
labelLine: {
show: false
},
data: [
{
value: 45,
name: '生产区',
itemStyle: {
color: '#4B69F1'
}
},
{
value: 20,
name: '仓储区',
itemStyle: {
color: '#44BB5F'
}
},
{
value: 20,
name: '办公区',
itemStyle: {
color: '#A493FB'
}
},
{
value: 15,
name: '辅助区',
itemStyle: {
color: '#FFD85A'
}
}
]
}
]
};
}
handleStandardTableChange = (pagination, sorter) => {
const { dispatch } = this.props
const { formValues } = this.state
const params = {
currentPage: pagination.current,
pageSize: pagination.pageSize,
...formValues
}
sorter.field && (params.sorter = `${sorter.field}_${sorter.order}`)
// 这里应该调用实际的数据获取方法
// 由于当前使用的是mockData我们可以在这里添加日志或者调用相应的action
console.log('分页参数:', params);
// 如果有实际的数据获取action应该这样调用
// dispatch({
// type: 'namespace/fetch',
// payload: params,
// });
}
handleFormReset = () => {
const { dispatch } = this.props
this.setState({
formValues: {}
})
}
toggleForm = () => {
const { expandForm } = this.state
this.setState({
expandForm: !expandForm
})
}
handleSelectRows = rows => {
this.setState({
selectedRows: rows
})
}
handleSearch = values => {
const { dispatch } = this.props
const { expandForm } = this.state
this.setState({
formValues: values
})
}
handleModalVisible = flag => {
this.setState({
modalVisible: !!flag
})
}
handleUpdateModalVisible = (flag, record) => {
this.setState({
updateModalVisible: !!flag,
updateFormValues: record || {}
})
}
handleViewModalVisible = (flag, record) => {
this.setState({
viewModalVisible: !!flag,
viewFormValues: record || {}
})
}
handleAdd = fields => {
const { dispatch } = this.props
// 添加逻辑
}
handleDeleteRecord = record => {
const { dispatch } = this.props
// 删除逻辑
}
handleUpdate = fields => {
const { dispatch } = this.props
// 更新逻辑
}
handleCollapse = () => {
const { toggleExpand } = this.state
this.setState({
toggleExpand: !toggleExpand
})
}
render() {
const {
loading,
dispatch
} = this.props
const {
selectedRows,
modalVisible,
updateModalVisible,
viewModalVisible,
updateFormValues,
viewFormValues,
toggleExpand,
} = this.state
const parentMethods = {
handleAdd: this.handleAdd,
handleModalVisible: this.handleModalVisible,
dispatch: dispatch,
loading,
}
const updateMethods = {
handleUpdateModalVisible: this.handleUpdateModalVisible,
handleUpdate: this.handleUpdate,
dispatch: dispatch,
loading,
}
const viewMethods = {
handleViewModalVisible: this.handleViewModalVisible
}
return (
<Card bordered={false} className={styles['card-container']}>
{/* 主要内容区域 */}
<Row gutter={16} style={{ marginBottom: 15 }}>
{/* 左侧:组织机构人员管理 */}
<Col span={9}>
<div
className={styles['organ-area-bg']}
style={{
border: '1px solid #e9ecef',
borderRadius: 4,
padding: 20,
height: 300
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4 ',
marginRight: 8
}}></span>
组织机构与人员管理
</div>
{/* 组织架构图 */}
<div className={styles['org-chart-container']}>
{/* 顶部按钮 */}
<div className={styles['org-top-button-container']}>
<Button
type="primary"
className={styles['org-top-button']}
>
项目安全管组织架构
</Button>
</div>
{/* 连接线 - 顶部到第一层 */}
<div className={styles['org-connect-line-vertical']}></div>
{/* 第一层水平连接线 */}
<div className={styles['org-connect-line-horizontal']}></div>
{/* 第一层垂直连接线 */}
<div className={`${styles['org-connect-line-branch']} ${styles['org-connect-line-branch-left']}`}></div>
<div className={`${styles['org-connect-line-branch']} ${styles['org-connect-line-branch-center']}`}></div>
<div className={`${styles['org-connect-line-branch']} ${styles['org-connect-line-branch-right']}`}></div>
{/* 第一层部门 */}
<div className={styles['org-departments-container']}>
<div className={styles['org-department']}>
<div className={`${styles['org-department-icon']} ${styles['org-department-icon-safety']}`}>
<SafetyOutlined style={{ color: 'white', fontSize: 20 }} />
</div>
<div className={styles['org-department-label']}>安监部</div>
{/* 安监部连接线 */}
<div className={styles['org-department-connect-v']}></div>
<div className={styles['org-department-connect-h']}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-left']}`}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-right']}`}></div>
</div>
<div className={styles['org-department']}>
<div className={`${styles['org-department-icon']} ${styles['org-department-icon-production']}`}>
<ProjectOutlined style={{ color: 'white', fontSize: 20 }} />
</div>
<div className={styles['org-department-label']}>生产部</div>
{/* 生产部连接线 */}
<div className={styles['org-department-connect-v']}></div>
<div className={styles['org-department-connect-h']}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-left']}`}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-right']}`}></div>
</div>
<div className={styles['org-department']}>
<div className={`${styles['org-department-icon']} ${styles['org-department-icon-equipment']}`}>
<SettingOutlined style={{ color: 'white', fontSize: 20 }} />
</div>
<div className={styles['org-department-label']}>设备部</div>
{/* 设备部连接线 */}
<div className={styles['org-department-connect-v']}></div>
<div className={styles['org-department-connect-h']}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-left']}`}></div>
<div className={`${styles['org-department-connect-sub']} ${styles['org-department-connect-sub-right']}`}></div>
</div>
</div>
{/* 第二层子部门 */}
<div style={{
display: 'flex',
justifyContent: 'space-between',
paddingLeft: '4%',
paddingRight: '4%'
}}>
{/* 安监部子部门 */}
<div style={{ display: 'flex', gap: 16 }}>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#52c41a',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<UserOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>安全监督科</div>
</div>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#52c41a',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<TeamOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>风险评估科</div>
</div>
</div>
{/* 生产部子部门 */}
<div style={{ display: 'flex', gap: 16 }}>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#1890ff',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<UserOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>生产调度科</div>
</div>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#1890ff',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<TeamOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>现场管理科</div>
</div>
</div>
{/* 设备部子部门 */}
<div style={{ display: 'flex', gap: 16 }}>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#13c2c2',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<UserOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>设备维护科</div>
</div>
<div style={{ textAlign: 'center' }}>
<div style={{
width: 36,
height: 36,
borderRadius: '50%',
backgroundColor: '#13c2c2',
margin: '0 auto 6px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}>
<SettingOutlined style={{ color: 'white', fontSize: 16 }} />
</div>
<div style={{ fontSize: 10, color: '#6b7280', lineHeight: 1.2 }}>备件管理科</div>
</div>
</div>
</div>
</div>
</div>
</Col>
{/* 中间:功能区域占比 */}
<Col span={8}>
<div
className={styles['func-area-bg']}
style={{
border: '1px solid #E3E7FB',
borderRadius: 4,
padding: 20,
height: 300
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
功能区面积占比
</div>
<div className={styles['chart-container']}>
<ReactECharts
option={this.getPieChartOption()}
className={styles['chart-full-size']}
opts={{ renderer: 'canvas' }}
/>
</div>
</div>
</Col>
{/* 右侧:实时风险评估 */}
<Col span={7}>
<div className={styles['risk-assessment-container']}>
{/* 顶部装饰性背景层 */}
{/* <div className={styles['risk-background-top']}></div> */}
{/* 底部装饰性背景层 */}
{/* <div className={styles['risk-background-bottom']}></div> */}
{/* 标题 */}
<div className={styles['risk-title']}>
<span className={styles['risk-title-indicator']}></span>
<span className={styles['risk-title-text']}>实时风险评估</span>
</div>
{/* 主要内容区域 */}
<div className={styles['risk-content-area']}>
{/* 左侧盾牌图标 */}
<div className={styles['risk-shield-container']}>
<img
src={riskShieldImg}
alt="风险盾牌"
style={{ width: 130, height: 130, marginLeft: '-20px', objectFit: 'contain' }}
/>
</div>
{/* 右侧内容 */}
<div className={styles['risk-info-container']}>
{/* 风险等级提示框 */}
<div className={styles['risk-level-alert']}>
<span className={styles['risk-level-text']}>
当前风险等级
<span className={styles['risk-level-danger']}>重大风险</span>
</span>
</div>
{/* 提示信息 */}
<div className={styles['risk-tip-container']}>
<div className={styles['risk-tip-icon']}>
<img
src={riskTip}
alt="提示"
style={{ width: 20, height: 20, display: 'block' }}
/>
</div>
<div className={styles['risk-tip-content']}>
<div className={styles['risk-tip-text']}>
提示安全等级分为 蓝四级当前风险等级为红区存在重大风险
</div>
</div>
</div>
</div>
</div>
</div>
</Col>
</Row>
{/* 底部表格区域 */}
<div>
<div className={styles['table-toolbar-container']}>
<Row justify="space-between" align="middle">
<Col>
<Space>
<Input.Search
placeholder="搜索项目名称、地理信息..."
className={styles['search-input']}
onSearch={this.handleSearch}
/>
<span style={{ marginLeft: 20 }}>筛选条件</span>
<Select
placeholder="请选择"
className={styles['filter-select']}
options={[
{ value: 'all', label: '全部' },
{ value: 'high', label: '高风险' },
{ value: 'medium', label: '中风险' },
{ value: 'low', label: '低风险' },
]}
/>
</Space>
</Col>
<Col>
<Space>
<Button
icon={<PlusOutlined />}
className={styles['button-style']}
onClick={() => this.handleModalVisible(true)} // 确保有这一行
>
新建项目
</Button>
<Button
icon={<ImportOutlined />}
className={styles['button-style']}
>
导入数据
</Button>
<Button
icon={<ExportOutlined />}
className={styles['button-style']}
>
导出数据
</Button>
</Space>
</Col>
</Row>
</div>
<StandardTable
rowKey={'id'}
selectedRows={selectedRows}
loading={loading}
data={mockData}
columns={this.columns}
onSelectRow={this.handleSelectRows}
onChange={this.handleStandardTableChange}
scroll={{ x: 1200 }}
showTotal={(total, range) => `${total}`}
/>
</div>
{modalVisible && <BasicInfoCreateForm {...parentMethods} modalVisible={modalVisible} />}
{updateFormValues && Object.keys(updateFormValues).length ? (
<BasicInfoUpdateForm
{...updateMethods}
updateModalVisible={updateModalVisible}
values={updateFormValues}
/>
) : null}
{viewFormValues && Object.keys(viewFormValues).length ? (
<BasicInfoViewForm
{...viewMethods}
viewModalVisible={viewModalVisible}
values={viewFormValues}
/>
) : null}
</Card>
)
}
}
export default BasicInfoManagement;

@ -0,0 +1,779 @@
import React, { PureComponent } from 'react';
import {
DeleteOutlined,
EditOutlined,
PlusOutlined,
SearchOutlined,
RedoOutlined,
DownOutlined,
ExclamationCircleFilled,
ExclamationCircleOutlined,
UpOutlined,
SafetyOutlined,
ImportOutlined,
ExportOutlined,
UserOutlined,
TeamOutlined,
SettingOutlined,
FileTextOutlined,
ProjectOutlined,
WarningOutlined,
AlertOutlined,
} from '@ant-design/icons';
import { Button, Card, Divider, Dropdown, message, Modal, Popconfirm, Space, Switch, Tag, Row, Col, Tree, Progress, Input, Select } from 'antd';
import StandardTable from '@/components/StandardTable';
import ReactECharts from 'echarts-for-react';
import { MyIcon } from "@/components/Icon"
import style from "@/global.less";
import StaffSheetCreateForm from '../form/BasicInfoCreateForm'; //新增表单
import StaffSheetUpdateForm from '../form/BasicInfoUpdateForm'; //修改表单
import StaffSheetViewForm from '../form/BasicInfoViewForm'; //查看表单
import styles from '../BasicInformation.less';
import datadictionary from "@/utils/dataDictionary";
import { formatDate } from "@/utils/formatUtils";
import { formatDictText, checkButtonAuthority } from "@/utils/globalCommon";
import userIcon from '@/assets/basic_information/user.png';
import contractExpireIcon from '@/assets/basic_information/contract-expire.png';
import contractOverdueIcon from '@/assets/basic_information/contract-overdue.png';
import certificateExpireIcon from '@/assets/basic_information/certificate-expire.png';
// import certificateOverdueIcon from '@/assets/basic_information/certificate-overdue.png';
import addIcon from '@/assets/basic_information/add.png';
const { confirm } = Modal;
//预约类型
const sex_type = datadictionary.sex
const user_status = datadictionary.user_status
const sys_user_post = datadictionary.sys_user_post
const mockData = {
list: [
{
id: '01',
name: '王一一',
idCard: '411***************7659',
company: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
phone: '15278967754',
category: '长期工',
contractStatus: '有效',
contractExpiry: '2025-08-26',
},
{
id: '02',
name: '刘冰',
idCard: '411***************7659',
company: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
phone: '15278967754',
category: '外包工',
contractStatus: '异常',
contractExpiry: '2025-08-26',
},
{
id: '03',
name: '赵志远',
idCard: '411***************7659',
company: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
phone: '15278967754',
category: '临时工',
contractStatus: '有效',
contractExpiry: '2025-08-26',
},
{
id: '04',
name: '王博国',
idCard: '411***************7659',
company: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
phone: '15278967754',
category: '顾问',
contractStatus: '剩余30天',
contractExpiry: '2025-08-26',
},
{
id: '05',
name: '赵敏敏',
idCard: '411***************7659',
company: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
phone: '15278967754',
category: '外包工',
contractStatus: '剩余30天',
contractExpiry: '2025-08-26',
},
],
pagination: {
total: 48,
current: 1,
pageSize: 5,
},
}
class PersonnelBasicInfo extends PureComponent {
state = {
modalVisible: false,
updateModalVisible: false,
viewModalVisible: false,
expandForm: false,
selectedRows: [],
formValues: {},
updateFormValues: {},
viewFormValues: {},
toggleExpand: false,
}
columns = [
{
title: '编号',
dataIndex: 'id',
key: 'id',
width: 60,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '姓名',
dataIndex: 'name',
key: 'name',
width: 80,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '身份证号',
dataIndex: 'idCard',
key: 'idCard',
width: 180,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '所属公司',
dataIndex: 'company',
key: 'company',
width: 250,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '联系方式',
dataIndex: 'phone',
key: 'phone',
width: 120,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '人员分类',
dataIndex: 'category',
key: 'category',
width: 100,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '合同状态',
dataIndex: 'contractStatus',
key: 'contractStatus',
width: 100,
render: (text) => {
let color = '#2E4CD4';
let bgColor = '#E6E9FB';
if (text === '异常') {
color = '#FF3E48';
bgColor = '#FFE0E2';
} else if (text === '剩余30天') {
color = '#FF8800';
bgColor = '#FFF3E9';
}
return (
<Tag
style={{
color: color,
backgroundColor: bgColor,
border: 'none',
borderRadius: 4,
padding: '2px 8px',
fontSize: '12px'
}}
>
{text}
</Tag>
);
},
},
{
title: '合同有效期',
dataIndex: 'contractExpiry',
key: 'contractExpiry',
width: 120,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '操作',
fixed: 'right',
align: 'center',
width: 100,
render: (text, record) => (
<a style={{ color: '#2E4CD4', fontSize: '12px' }}>上传附件</a>
),
},
]
getPieChartOption = () => {
return {
radar: {
indicator: [
{ name: '{a|培训完成率} {b|85%}', max: 100 },
{ name: '{a|持证率} {b|92%}', max: 100 },
{ name: '{a|注册工程师占比} {b|15%}', max: 100 }
],
center: ['45%', '50%'],
radius: 80,
splitNumber: 4,
shape: 'polygon',
axisName: {
rich: {
a: {
color: '#333',
fontSize: 12,
fontWeight: 400,
},
b: {
color: '#2E4CD4',
fontSize: 12,
fontWeight: 400,
}
},
formatter: function (value) {
// value 形如 "持证率 92%"
// 这里直接返回ECharts rich 会自动处理
return value;
}
},
splitLine: {
lineStyle: {
color: ['#BFCBFF']
}
},
splitArea: {
areaStyle: {
color: ['#fff']
}
},
axisLine: {
lineStyle: {
color: '#E6EAF5'
}
}
},
series: [{
type: 'radar',
data: [
{
value: [85, 92, 15],
areaStyle: {
color: '#499BFF'
},
lineStyle: {
color: '#1269FF',
width: 2
},
symbol: 'circle',
symbolSize: 6,
itemStyle: {
color: '#2E4CD4',
borderColor: '#fff',
borderWidth: 2
}
}
]
}]
}
}
getPieDepartmentDistributionChartOption = () => {
return {
grid: {
left: 0,
right: 0,
top: 70,
bottom: 0,
containLabel: true
},
xAxis: {
type: 'category',
data: ['技术部', '销售部', '市场部', '财务部', '人事部'],
axisLine: { lineStyle: { color: '#E6EAF5' } },
axisTick: { show: false },
axisLabel: { color: '#666', fontSize: 13 }
},
yAxis: {
type: 'value',
minInterval: 100,
splitLine: { lineStyle: { color: '#E6EAF5' } },
axisLabel: { color: '#666', fontSize: 13 }
},
series: [{
type: 'bar',
data: [360, 450, 370, 360, 200],
barWidth: 25,
itemStyle: {
color: typeof window !== 'undefined' && window.echarts
? new window.echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#3691FF' },
{ offset: 1, color: '#1E68FF' }
])
: '#1E68FF'
}
}]
};
}
handleStandardTableChange = (pagination, sorter) => {
const { dispatch } = this.props
const { formValues } = this.state
const params = {
currentPage: pagination.current,
pageSize: pagination.pageSize,
...formValues
}
sorter.field && (params.sorter = `${sorter.field}_${sorter.order}`)
}
handleFormReset = () => {
const { dispatch } = this.props
this.setState({
formValues: {}
})
}
toggleForm = () => {
const { expandForm } = this.state
this.setState({
expandForm: !expandForm
})
}
handleSelectRows = rows => {
this.setState({
selectedRows: rows
})
}
handleSearch = values => {
const { dispatch } = this.props
const { expandForm } = this.state
this.setState({
formValues: values
})
}
handleModalVisible = flag => {
this.setState({
modalVisible: !!flag
})
}
handleUpdateModalVisible = (flag, record) => {
this.setState({
updateModalVisible: !!flag,
updateFormValues: record || {}
})
}
handleViewModalVisible = (flag, record) => {
this.setState({
viewModalVisible: !!flag,
viewFormValues: record || {}
})
}
handleAdd = fields => {
const { dispatch } = this.props
// 添加逻辑
}
handleDeleteRecord = record => {
const { dispatch } = this.props
// 删除逻辑
}
handleUpdate = fields => {
const { dispatch } = this.props
// 更新逻辑
}
handleCollapse = () => {
const { toggleExpand } = this.state
this.setState({
toggleExpand: !toggleExpand
})
}
render() {
const {
loading,
dispatch
} = this.props
const {
selectedRows,
modalVisible,
updateModalVisible,
viewModalVisible,
updateFormValues,
viewFormValues,
toggleExpand,
} = this.state
const parentMethods = {
handleAdd: this.handleAdd,
handleModalVisible: this.handleModalVisible,
dispatch: dispatch,
loading,
}
const updateMethods = {
handleUpdateModalVisible: this.handleUpdateModalVisible,
handleUpdate: this.handleUpdate,
dispatch: dispatch,
loading,
}
const viewMethods = {
handleViewModalVisible: this.handleViewModalVisible
}
return (
<Card bordered={false} className={styles['card-container']}>
{/* 顶部统计卡片区域 */}
<Row gutter={16} style={{ marginBottom: 15 }}>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>总人数</div>
<div className={styles['stat-card-value']}>1456</div>
</div>
<div className={styles['stat-card-icon']}>
<img src={userIcon} alt="总人数" />
</div>
</div>
</Col>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>合同即将过期</div>
<div className={styles['stat-card-value']}>357</div>
</div>
<div className={styles['stat-card-icon']}>
<img src={contractExpireIcon} alt="合同即将过期" />
</div>
</div>
</Col>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>合同已过期</div>
<div className={styles['stat-card-value']}>1456</div>
</div>
<div className={styles['stat-card-icon']}>
<img src={contractOverdueIcon} alt="合同已过期" />
</div>
</div>
</Col>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>证件即将过期</div>
<div className={styles['stat-card-value']}>1456</div>
</div>
<div className={styles['stat-card-icon']}>
<img src={certificateExpireIcon} alt="证件即将过期" />
</div>
</div>
</Col>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>证件已过期</div>
<div className={styles['stat-card-value']}>1456</div>
</div>
<div className={styles['stat-card-icon']}>
{/* <img src={certificateOverdueIcon} alt="证件已过期" */}
</div>
</div>
</Col>
<Col span={4}>
<div className={styles['stat-card']}>
<div style={{ flex: 1 }}>
<div className={styles['stat-card-label']}>本月新增</div>
<div className={styles['stat-card-value']}>1456</div>
</div>
<div className={styles['stat-card-icon']}>
<img src={addIcon} alt="本月新增" />
</div>
</div>
</Col>
</Row>
{/* 主要内容区域 */}
<Row gutter={16} style={{ marginBottom: 15 }}>
{/* 左侧:人员资质 */}
<Col span={8}>
<div
className={styles['ryzz-area-bg']}
style={{
// border: '1px solid #DBE2FF',
borderRadius: 4,
padding: 20,
height: 240,
position: 'relative'
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
人员资质
</div>
<div style={{
width: '100%',
height: 220,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
position: 'relative'
}}>
<ReactECharts
option={this.getPieChartOption()}
style={{ width: '100%', height: '100%' }}
opts={{ renderer: 'canvas' }}
/>
</div>
</div>
</Col>
{/* 中间:部门人员分布 */}
<Col span={10}>
<div
className={styles['ryzz-area-bg']}
style={{
// border: '1px solid #e9ecef',
borderRadius: 4,
padding: 20,
height: 240,
display: 'flex',
flexDirection: 'column'
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 12,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
部门人员分布
</div>
<div style={{
width: '100%',
flex: 1,
minHeight: 0,
display: 'flex',
alignItems: 'flex-end'
}}>
<ReactECharts
option={this.getPieDepartmentDistributionChartOption()}
className={styles['chart-full-size']}
style={{ width: '100%', height: 220 }}
opts={{ renderer: 'canvas' }}
/>
</div>
</div>
</Col>
{/* 右侧:到期提醒 */}
<Col span={6}>
<div
className={styles['dqtx-area-bg']}
style={{
// border: '1px solid #e9ecef',
borderRadius: 4,
padding: 20,
height: 240,
position: 'relative'
}}>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500,
position: 'relative',
zIndex: 2
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
到期提醒
</div>
<div style={{ marginTop: 0 }}>
<div style={{
background: '#F1F5FF',
borderRadius: 6,
padding: '10px 14px',
display: 'flex',
alignItems: 'center',
marginBottom: 12,
boxShadow: '0 0 2px 0 rgba(46,76,212,0.2)'
}}>
<ExclamationCircleOutlined style={{ color: '#FF4D4F', fontSize: 18, marginRight: 10 }} />
<span style={{ color: '#222', fontSize: 14 }}>沈一撒合同已到期</span>
</div>
<div style={{
background: '#F1F5FF',
borderRadius: 6,
padding: '10px 14px',
display: 'flex',
alignItems: 'center',
marginBottom: 12,
boxShadow: '0 0 2px 0 rgba(46,76,212,0.2)'
}}>
<ExclamationCircleOutlined style={{ color: '#FF4D4F', fontSize: 18, marginRight: 10 }} />
<span style={{ color: '#222', fontSize: 14 }}>赵敏敏合同临期 15 </span>
</div>
<div style={{
background: '#F1F5FF',
borderRadius: 6,
padding: '10px 14px',
display: 'flex',
alignItems: 'center',
marginBottom: 0,
boxShadow: '0 0 2px 0 rgba(46,76,212,0.2)'
}}>
<ExclamationCircleOutlined style={{ color: '#FF4D4F', fontSize: 18, marginRight: 10 }} />
<span style={{ color: '#222', fontSize: 14 }}>赵敏敏合同临期 15 </span>
</div>
</div>
</div>
</Col>
</Row>
{/* 底部表格区域 */}
<div>
<div className={styles['table-toolbar-container']}>
<Row justify="space-between" align="middle">
<Col>
<Space>
<Input.Search
placeholder="搜索姓名、工号..."
className={styles['search-input']}
onSearch={this.handleSearch}
/>
<span style={{ marginLeft: 20 }}>部门</span>
<Select
placeholder="请选择"
className={styles['filter-select']}
options={[
{ value: 'all', label: '全部' },
{ value: 'high', label: '高风险' },
{ value: 'medium', label: '中风险' },
{ value: 'low', label: '低风险' },
]}
/>
</Space>
</Col>
<Col>
<Space>
<Button
icon={<PlusOutlined />}
style={{ backgroundColor: '#2E4CD4', color: '#fff', borderColor: '#2E4CD4' }}
>
新增人员
</Button>
<Button
icon={<ImportOutlined />}
className={styles['button-style']}
>
批量导入
</Button>
<Button
icon={<ExportOutlined />}
className={styles['button-style']}
>
批量导出
</Button>
</Space>
</Col>
</Row>
</div>
<StandardTable
rowKey={'id'}
selectedRows={selectedRows}
loading={loading}
data={mockData}
columns={this.columns}
onSelectRow={this.handleSelectRows}
onChange={this.handleStandardTableChange}
scroll={{ x: 1200 }}
showTotal={(total, range) => `${total}`}
/>
</div>
{modalVisible && <StaffSheetCreateForm {...parentMethods} modalVisible={modalVisible} />}
{updateFormValues && Object.keys(updateFormValues).length ? (
<StaffSheetUpdateForm
{...updateMethods}
updateModalVisible={updateModalVisible}
values={updateFormValues}
/>
) : null}
{viewFormValues && Object.keys(viewFormValues).length ? (
<StaffSheetViewForm
{...viewMethods}
viewModalVisible={viewModalVisible}
values={viewFormValues}
/>
) : null}
</Card>
)
}
}
export default PersonnelBasicInfo;

@ -0,0 +1,743 @@
import React, { PureComponent } from 'react';
import {
DeleteOutlined,
EditOutlined,
PlusOutlined,
SearchOutlined,
RedoOutlined,
DownOutlined,
ExclamationCircleFilled,
UpOutlined,
SafetyOutlined,
ImportOutlined,
ExportOutlined,
UserOutlined,
TeamOutlined,
SettingOutlined,
FileTextOutlined,
ProjectOutlined,
WarningOutlined,
AlertOutlined,
} from '@ant-design/icons';
import { Button, Card, Divider, Dropdown, message, Modal, Popconfirm, Space, Switch, Tag, Row, Col, Tree, Progress, Input, Select } from 'antd';
import StandardTable from '@/components/StandardTable';
import ReactECharts from 'echarts-for-react';
import { MyIcon } from "@/components/Icon"
import style from "@/global.less";
import StaffSheetCreateForm from '../form/BasicInfoCreateForm'; //新增表单
import StaffSheetUpdateForm from '../form/BasicInfoUpdateForm'; //修改表单
import StaffSheetViewForm from '../form/BasicInfoViewForm'; //查看表单
import styles from '../BasicInformation.less';
import datadictionary from "@/utils/dataDictionary";
import { formatDate } from "@/utils/formatUtils";
import { formatDictText, checkButtonAuthority } from "@/utils/globalCommon";
const { confirm } = Modal;
//预约类型
const sex_type = datadictionary.sex
const user_status = datadictionary.user_status
const sys_user_post = datadictionary.sys_user_post
const mockData = {
list: [
{
id: '01',
certificateName: '安全生产许可证',
certificateNumber: 'AQ103',
validDate: '2025-09-09',
status: '有效',
remainingDays: 15,
fileLink: '点击查看 PDF',
},
{
id: '02',
certificateName: '特种设备证书',
certificateNumber: 'AQ103',
validDate: '2025-09-09',
status: '有效',
remainingDays: 15,
fileLink: '点击查看 PDF',
},
{
id: '03',
certificateName: '安全许可证书',
certificateNumber: 'AQ103',
validDate: '2025-09-09',
status: '即将到期',
remainingDays: 15,
fileLink: '点击查看 PDF',
},
{
id: '04',
certificateName: '安全生产许可证',
certificateNumber: 'AQ103',
validDate: '2025-09-09',
status: '即将到期',
remainingDays: 15,
fileLink: '点击查看 PDF',
},
{
id: '05',
certificateName: '安全生产许可证',
certificateNumber: 'AQ103',
validDate: '2025-09-09',
status: '异常',
remainingDays: 15,
fileLink: '点击查看 PDF',
},
],
pagination: {
total: 48,
current: 1,
pageSize: 5,
},
}
class QualificationManagement extends PureComponent {
state = {
modalVisible: false,
updateModalVisible: false,
viewModalVisible: false,
expandForm: false,
selectedRows: [],
formValues: {},
updateFormValues: {},
viewFormValues: {},
toggleExpand: false,
}
columns = [
{
title: '序号',
dataIndex: 'id',
key: 'id',
width: 60,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '证书名称',
dataIndex: 'certificateName',
key: 'certificateName',
width: 150,
fixed: 'left',
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '编号',
dataIndex: 'certificateNumber',
key: 'certificateNumber',
width: 120,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '有效期',
dataIndex: 'validDate',
key: 'validDate',
width: 100,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text}</span>
),
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
width: 100,
render: (text) => {
let color = '#2E4CD4';
let bgColor = '#E6E9FB';
if (text === '即将到期') {
color = '#FF8800';
bgColor = '#FFF3E9';
} else if (text === '异常') {
color = '#FF3E48';
bgColor = '#FFE0E2';
}
return (
<Tag
style={{
color: color,
backgroundColor: bgColor,
border: 'none',
borderRadius: 4,
padding: '2px 8px',
fontSize: '12px'
}}
>
{text}
</Tag>
);
},
},
{
title: '预警信息',
dataIndex: 'remainingDays',
key: 'remainingDays',
width: 100,
render: (text) => (
<span style={{ fontSize: '12px' }}>{text} </span>
),
},
{
title: '关联文件链接',
dataIndex: 'fileLink',
key: 'fileLink',
width: 120,
render: (text, record) => (
<a style={{ color: '#2E4CD4', fontSize: '12px' }}>{text}</a>
),
},
// {
// title: '操作',
// fixed: 'right',
// align: 'center',
// width: 200,
// render: (text, record) => {
// return (
// <div>
// <a className={styles.operateStyle} style={{ marginRight: 15 }}> 详情 </a>
// <a className={styles.operateStyle} style={{ marginRight: 15 }}> 修改 </a>
// <a className={styles.operateStyle} style={{ color: '#FF2626' }}> 删除 </a>
// </div>
// )
// }
// },
]
getPieChartOption = () => {
return {
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c}% ({d}%)'
},
legend: {
orient: 'vertical',
right: '0',
top: '25%',
itemWidth: 16,
itemHeight: 4,
itemGap: 16,
textStyle: {
fontSize: 12,
color: '#666',
fontWeight: 'normal'
}
},
series: [
{
name: '证照类型分布',
type: 'pie',
radius: ['30%', '45%'],
center: ['30%', '40%'],
avoidLabelOverlap: false,
label: {
show: false
},
emphasis: {
scale: true,
scaleSize: 5
},
labelLine: {
show: false
},
data: [
{
value: 45,
name: '安全生产许可证',
itemStyle: {
color: '#4B69F1'
}
},
{
value: 20,
name: '安全评价报告',
itemStyle: {
color: '#44BB5F'
}
},
{
value: 20,
name: '施工资质证书',
itemStyle: {
color: '#A493FB'
}
},
{
value: 15,
name: '其他',
itemStyle: {
color: '#FFD85A'
}
}
]
}
]
};
}
getPieCertificationStatusChartOption = () => {
return {
tooltip: {
trigger: 'item',
formatter: '{b}: {c}% ({d}%)'
},
legend: {
orient: 'vertical',
right: '20%',
top: '25%',
itemWidth: 16,
itemHeight: 4,
itemGap: 16,
textStyle: {
fontSize: 12,
color: '#666'
}
},
series: [
{
name: '证照状态分布',
type: 'pie',
radius: '45%',
center: ['30%', '40%'],
avoidLabelOverlap: false,
label: {
show: true,
position: 'inside',
formatter: '{d}%',
fontSize: 12,
// fontWeight: 'bold',
color: '#fff'
},
emphasis: {
scale: true,
scaleSize: 5
},
labelLine: {
show: false
},
data: [
{
value: 40,
name: '有效',
itemStyle: {
color: '#1269FF'
}
},
{
value: 25,
name: '临期 30 天',
itemStyle: {
color: '#6E86F4'
}
},
{
value: 25,
name: '临期 15 天',
itemStyle: {
color: '#A3B3F8'
}
},
{
value: 10,
name: '异常',
itemStyle: {
color: '#C6D0FB'
}
}
]
}
]
};
}
handleStandardTableChange = (pagination, sorter) => {
const { dispatch } = this.props
const { formValues } = this.state
const params = {
currentPage: pagination.current,
pageSize: pagination.pageSize,
...formValues
}
sorter.field && (params.sorter = `${sorter.field}_${sorter.order}`)
}
handleFormReset = () => {
const { dispatch } = this.props
this.setState({
formValues: {}
})
}
toggleForm = () => {
const { expandForm } = this.state
this.setState({
expandForm: !expandForm
})
}
handleSelectRows = rows => {
this.setState({
selectedRows: rows
})
}
handleSearch = values => {
const { dispatch } = this.props
const { expandForm } = this.state
this.setState({
formValues: values
})
}
handleModalVisible = flag => {
this.setState({
modalVisible: !!flag
})
}
handleUpdateModalVisible = (flag, record) => {
this.setState({
updateModalVisible: !!flag,
updateFormValues: record || {}
})
}
handleViewModalVisible = (flag, record) => {
this.setState({
viewModalVisible: !!flag,
viewFormValues: record || {}
})
}
handleAdd = fields => {
const { dispatch } = this.props
// 添加逻辑
}
handleDeleteRecord = record => {
const { dispatch } = this.props
// 删除逻辑
}
handleUpdate = fields => {
const { dispatch } = this.props
// 更新逻辑
}
handleCollapse = () => {
const { toggleExpand } = this.state
this.setState({
toggleExpand: !toggleExpand
})
}
render() {
const {
loading,
dispatch
} = this.props
const {
selectedRows,
modalVisible,
updateModalVisible,
viewModalVisible,
updateFormValues,
viewFormValues,
toggleExpand,
} = this.state
const parentMethods = {
handleAdd: this.handleAdd,
handleModalVisible: this.handleModalVisible,
dispatch: dispatch,
loading,
}
const updateMethods = {
handleUpdateModalVisible: this.handleUpdateModalVisible,
handleUpdate: this.handleUpdate,
dispatch: dispatch,
loading,
}
const viewMethods = {
handleViewModalVisible: this.handleViewModalVisible
}
return (
<Card bordered={false} className={styles['card-container']}>
{/* 主要内容区域 */}
<Row gutter={16} style={{ marginBottom: 15 }}>
{/* 左侧:证照类型分布 */}
<Col span={7}>
<div
className={styles['func-area-bg']}
style={{
border: '1px solid #E3E7FB',
borderRadius: 4,
padding: 20,
height: 260
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4 ',
marginRight: 8
}}></span>
证照类型分布
</div>
<div className={styles['chart-container']}>
<ReactECharts
option={this.getPieChartOption()}
className={styles['chart-full-size']}
opts={{ renderer: 'canvas' }}
/>
</div>
</div>
</Col>
{/* 中间:证照状态分布 */}
<Col span={8}>
<div
className={styles['func-area-bg']}
style={{
border: '1px solid #E3E7FB',
borderRadius: 4,
padding: 20,
height: 260
}}
>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 20,
color: '#333',
fontSize: 14,
fontWeight: 500
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
证照状态分布
</div>
<div className={styles['chart-container']}>
<ReactECharts
option={this.getPieCertificationStatusChartOption()}
className={styles['chart-full-size']}
opts={{ renderer: 'canvas' }}
/>
</div>
</div>
</Col>
{/* 右侧:临期预警 */}
<Col span={9}>
<div
className={styles['warn-area-bg']}
style={{
border: '1px solid #FFE8E8',
borderRadius: 4,
padding: 20,
height: 260,
position: 'relative'
}}>
{/* 添加半透明覆盖层以增强内容可读性 */}
<div style={{
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
background: 'rgba(248, 249, 250, 0.3)',
borderRadius: 4,
pointerEvents: 'none'
}}></div>
<div style={{
display: 'flex',
alignItems: 'center',
marginBottom: 10,
color: '#333',
fontSize: 14,
fontWeight: 500,
position: 'relative',
zIndex: 2
}}>
<span style={{
display: 'inline-block',
width: 2,
height: 16,
background: '#2E4CD4',
marginRight: 8
}}></span>
临期预警
</div>
{/* 证照预警列表 */}
<div style={{
marginTop: 10,
marginLeft: 10,
width: '60%',
position: 'relative',
zIndex: 2
}}>
{[
{ name: '安全生产许可证', code: 'AQXK-2023-0552', status: '15天后到期', backgroundColor: '#FFF9F4', borderColor: '#FFD7BB', backgroundColorDate: '#FFEDDE', color: '#FF8800' },
{ name: '安全生产许可证', code: 'AQXK-2023-0552', status: '15天后到期', backgroundColor: '#FFF9F4', borderColor: '#FFD7BB', backgroundColorDate: '#FFEDDE', color: '#FF8800' },
{ name: '安全生产许可证', code: 'AQXK-2023-0552', status: '5天后到期', backgroundColor: '#FFF5F6', borderColor: '#FFC0BF', backgroundColorDate: '#FFE0E2', color: '#FF2526' }
].map((item, index) => (
<div key={index} style={{
background: item.backgroundColor,
border: `1px solid ${item.borderColor}`,
borderRadius: 4,
padding: '7px 16px',
marginBottom: 12,
boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
position: 'relative',
zIndex: 2,
backdropFilter: 'blur(1px)'
}}>
<div style={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
marginBottom: 6
}}>
<span style={{
fontWeight: 500,
color: '#333',
fontSize: 13
}}>
{item.name}
</span>
<div style={{
background: item.backgroundColorDate,
color: item.color,
padding: '2px 8px',
borderRadius: 5,
fontSize: 11,
fontWeight: 500
}}>
{item.status}
</div>
</div>
<div style={{
color: '#999',
fontSize: 11,
lineHeight: 1.2
}}>
编号{item.code}
</div>
</div>
))}
</div>
</div>
</Col>
</Row>
{/* 底部表格区域 */}
<div>
<div className={styles['table-toolbar-container']}>
<Row justify="space-between" align="middle">
<Col>
<Space>
<Input.Search
placeholder="搜索证书名称..."
className={styles['search-input']}
onSearch={this.handleSearch}
/>
<span style={{ marginLeft: 20 }}>证件类型</span>
<Select
placeholder="请选择"
className={styles['filter-select']}
options={[
{ value: 'all', label: '全部' },
{ value: 'high', label: '高风险' },
{ value: 'medium', label: '中风险' },
{ value: 'low', label: '低风险' },
]}
/>
</Space>
</Col>
<Col>
<Space>
<Button
icon={<ImportOutlined />}
className={styles['button-style']}
>
批量导入
</Button>
<Button
icon={<ExportOutlined />}
className={styles['button-style']}
>
批量导出
</Button>
</Space>
</Col>
</Row>
</div>
<StandardTable
rowKey={'id'}
selectedRows={selectedRows}
loading={loading}
data={mockData}
columns={this.columns}
onSelectRow={this.handleSelectRows}
onChange={this.handleStandardTableChange}
scroll={{ x: 1200 }}
showTotal={(total, range) => `${total}`}
/>
</div>
{modalVisible && <StaffSheetCreateForm {...parentMethods} modalVisible={modalVisible} />}
{updateFormValues && Object.keys(updateFormValues).length ? (
<StaffSheetUpdateForm
{...updateMethods}
updateModalVisible={updateModalVisible}
values={updateFormValues}
/>
) : null}
{viewFormValues && Object.keys(viewFormValues).length ? (
<StaffSheetViewForm
{...viewMethods}
viewModalVisible={viewModalVisible}
values={viewFormValues}
/>
) : null}
</Card>
)
}
}
export default QualificationManagement;

@ -0,0 +1,167 @@
import { useState, useEffect } from 'react'
import { Col, DatePicker, Form, Input, Modal, Row, Select } from 'antd'
import SelectDeptTree from '@/components/SelectDeptTree'
import SelectOrganTree from '@/components/SelectOrganTree'
import datadictionary from '@/utils/dataDictionary'
import { formatDictOptions, verifyPhone } from '@/utils/globalCommon'
import { NumberInput } from '@/components/NumberInput'
import styles from '../BasicInformation.less'
import style from '@/global.less'
import dayjs from 'dayjs'
import { formatDate } from '@/utils/formatUtils'
const { Item: FormItem } = Form
const { TextArea } = Input
const dictData = datadictionary
//新增表单
let getDeptTreeBySelectTree
let getOrganTreeBySelectTree
const BasicInfoCreateForm = (props => {
const [form] = Form.useForm()
const {
modalVisible,
handleAdd,
handleModalVisible,
loading,
dispatch,
selectDeptTree,
selectOrganTree
} = props
// 清空和初始化逻辑可保留
useEffect(() => {
form.resetFields();
}, [modalVisible])
const okHandle = () => {
form.validateFields()
.then(fieldsValue => {
form.resetFields()
handleAdd(fieldsValue)
})
.catch(() => { })
}
const afterClose = () => {
form.resetFields();
}
return (
<Modal
width={550}
bodyStyle={{ minHeight: '200px' }}
className={styles.createForm}
centered
destroyOnClose
title='新建项目'
open={modalVisible}
onOk={okHandle}
onCancel={() => handleModalVisible()}
afterClose={afterClose}
confirmLoading={loading}
footer={[
<button
key="cancel"
onClick={() => handleModalVisible()}
className={styles['modal-cancel-btn']}
>取消</button>,
<button
key="submit"
onClick={okHandle}
className={styles['modal-ok-btn']}
>确定</button>
]}
>
<Form
form={form}
// layout='vertical'
requiredMark={false}
style={{ marginTop: 30 }}
>
<Row gutter={16}>
<Col span={24}>
<Form.Item
label="项目名称"
name="projectName"
rules={[{ required: true, message: '请输入项目名称' }]}
>
<Input placeholder="输入项目名称" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={24}>
<Form.Item
label="地理信息"
name="location"
rules={[{ required: true, message: '请输入位置信息' }]}
>
<Input placeholder="请输入位置信息" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
<Form.Item
label="占地面积"
name="area"
rules={[{ required: true, message: '请输入面积信息' }]}
>
<Input
placeholder="面积信息"
addonAfter="m²"
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="职业人数"
name="peopleCount"
rules={[{ required: true, message: '请输入人数' }]}
>
<Input placeholder="输入数量" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
<Form.Item
label="组织机构"
name="org"
rules={[{ required: true, message: '请选择组织机构' }]}
>
<Select
placeholder="请选择"
options={[
{ label: '机构A', value: 'A' },
{ label: '机构B', value: 'B' }
]}
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="安全等级"
name="safeLevel"
rules={[{ required: true, message: '请选择安全等级' }]}
>
<Select
placeholder="请选择"
options={[
{ label: '一级', value: '1' },
{ label: '二级', value: '2' },
{ label: '三级', value: '3' }
]}
/>
</Form.Item>
</Col>
</Row>
</Form>
</Modal>
)
})
export default BasicInfoCreateForm

@ -0,0 +1,149 @@
import { useEffect } from 'react'
import { Col, Form, Input, Modal, Row, Select } from 'antd'
import styles from '../BasicInformation.less'
const BasicInfoUpdateForm = (props => {
const [form] = Form.useForm()
const {
updateModalVisible,
handleUpdate,
handleUpdateModalVisible,
loading,
values = {}
} = props
useEffect(() => {
if (updateModalVisible) {
form.setFieldsValue(values)
}
}, [updateModalVisible, values, form])
const okHandle = () => {
form.validateFields()
.then(fieldsValue => {
form.resetFields()
handleUpdate(fieldsValue)
})
.catch(() => { })
}
const afterClose = () => {
form.resetFields();
}
return (
<Modal
width={550}
bodyStyle={{ minHeight: '200px' }}
className={styles.createForm}
centered
destroyOnClose
title='修改项目'
open={updateModalVisible}
onOk={okHandle}
onCancel={() => handleUpdateModalVisible()}
afterClose={afterClose}
confirmLoading={loading}
footer={[
<button
key="cancel"
onClick={() => handleUpdateModalVisible()}
className={styles['modal-cancel-btn']}
>取消</button>,
<button
key="submit"
onClick={okHandle}
className={styles['modal-ok-btn']}
>确定</button>
]}
>
<Form
form={form}
requiredMark={false}
style={{ marginTop: 30 }}
>
<Row gutter={16}>
<Col span={24}>
<Form.Item
label="项目名称"
name="projectName"
rules={[{ required: true, message: '请输入项目名称' }]}
>
<Input placeholder="输入项目名称" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={24}>
<Form.Item
label="地理信息"
name="location"
rules={[{ required: true, message: '请输入位置信息' }]}
>
<Input placeholder="请输入位置信息" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
<Form.Item
label="占地面积"
name="area"
rules={[{ required: true, message: '请输入面积信息' }]}
>
<Input
placeholder="面积信息"
addonAfter="m²"
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="职业人数"
name="peopleCount"
rules={[{ required: true, message: '请输入人数' }]}
>
<Input placeholder="输入数量" />
</Form.Item>
</Col>
</Row>
<Row gutter={16}>
<Col span={12}>
<Form.Item
label="组织机构"
name="org"
rules={[{ required: true, message: '请选择组织机构' }]}
>
<Select
placeholder="请选择"
options={[
{ label: '机构A', value: 'A' },
{ label: '机构B', value: 'B' }
]}
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="安全等级"
name="safeLevel"
rules={[{ required: true, message: '请选择安全等级' }]}
>
<Select
placeholder="请选择"
options={[
{ label: '一级', value: '1' },
{ label: '二级', value: '2' },
{ label: '三级', value: '3' }
]}
/>
</Form.Item>
</Col>
</Row>
</Form>
</Modal>
)
})
export default BasicInfoUpdateForm

@ -0,0 +1,52 @@
import React from 'react';
import { Modal, Row, Col } from 'antd';
import styles from '../BasicInformation.less';
const BasicInfoViewForm = (props) => {
const { viewModalVisible, handleViewModalVisible, values = {} } = props;
return (
<Modal
width={500}
bodyStyle={{ minHeight: '180px'}}
className={styles.createForm}
centered
destroyOnClose
title="详情"
open={viewModalVisible}
footer={null}
onCancel={() => handleViewModalVisible(false)}
>
<Row gutter={0} style={{ marginTop: 30 }}>
<Col span={12} style={{ marginBottom: 18 }}>
<div className={styles['view-label']}>项目名称</div>
<div className={styles['view-value']}>{values.projectName || '-'}</div>
</Col>
<Col span={12} style={{ marginBottom: 18 }}>
<div className={styles['view-label']}>地理信息</div>
<div className={styles['view-value']}>{values.location || '-'}</div>
</Col>
<Col span={12} style={{ marginBottom: 18 }}>
<div className={styles['view-label']}>占地面积</div>
<div className={styles['view-value']}>
{values.area ? `${values.area}` : '-'}
</div>
</Col>
<Col span={12} style={{ marginBottom: 18 }}>
<div className={styles['view-label']}>职业人数</div>
<div className={styles['view-value']}>{values.staffCount || '-'}</div>
</Col>
<Col span={12}>
<div className={styles['view-label']}>组织机构</div>
<div className={styles['view-value']}>{values.organization || '-'}</div>
</Col>
<Col span={12}>
<div className={styles['view-label']}>安全等级</div>
<div className={styles['view-value']}>{values.safetyLevel || '-'}</div>
</Col>
</Row>
</Modal>
);
};
export default BasicInfoViewForm;

@ -0,0 +1,113 @@
import { useEffect } from 'react'
import { Button, Col, Form, Input, Row } from 'antd'
import { UpOutlined, SearchOutlined, RedoOutlined } from '@ant-design/icons'
import SelectDeptTree from '@/components/SelectDeptTree'
import SelectOrganTree from '@/components/SelectOrganTree'
import style from '@/global.less'
const { Item: FormItem } = Form
let getDeptTreeBySelectTree
let getOrganTreeBySelectTree
const StaffSheetRenderAdvancedForm = (props) => {
const [form] = Form.useForm()
const { dispatch, handleSearch, handleFormReset, toggleForm, selectDeptTree, selectOrganTree, params } = props
useEffect(() => {
form.setFieldsValue({
user_name: params?.user_name,
user_name_cn: params?.user_name_cn,
deptname: params?.deptname,
orgname: params?.orgname,
})
}, [params])
const onFinish = values => {
// if (getDeptTreeBySelectTree) {
// values.dept_code = getDeptTreeBySelectTree.dept_code
// values.deptname = getDeptTreeBySelectTree.title
// }
if (getOrganTreeBySelectTree) {
values.org_code = getOrganTreeBySelectTree.org_code
values.orgname = getOrganTreeBySelectTree.title
}
handleSearch(values)
}
const myHandleFormReset = () => {
form.resetFields()
handleFormReset()
}
const selectedDeptTreeValue = (deptRecord) => {
getDeptTreeBySelectTree = deptRecord
}
const selectedOrganTreeValue = (orgRecord) => {
getOrganTreeBySelectTree = orgRecord
}
const parentDeptTreeMethod = {
dispatch: dispatch,
selectDeptTree: selectDeptTree,
selectedDeptTreeValue: selectedDeptTreeValue
}
const parentOrganTreeMethod = {
dispatch: dispatch,
selectOrganTree: selectOrganTree,
selectedOrganTreeValue: selectedOrganTreeValue
}
return (
<Form form={form} onFinish={onFinish} layout='inline'>
<Row gutter={{ md: 8, lg: 24, xl: 48 }} className={style.searchInput}>
<Col md={8} sm={24}>
<FormItem label='用户名' name='user_name'>
<Input placeholder='请输入' />
</FormItem>
</Col>
<Col md={8} sm={24}>
<FormItem label='用户名称' name='user_name_cn'>
<Input placeholder='请输入' />
</FormItem>
</Col>
<Col md={8} sm={24}>
<FormItem label='机构代码' name='orgname'>
<SelectOrganTree {...parentOrganTreeMethod} />
</FormItem>
</Col>
</Row>
<Row gutter={{md: 8, lg: 24, xl: 48}} className={style.searchBox}>
{/*<Col md={8} sm={24}>*/}
{/* <FormItem label='部门名称' name='deptname'>*/}
{/* <SelectDeptTree placeholder={'请选择部门'} {...parentDeptTreeMethod} />*/}
{/* </FormItem>*/}
{/*</Col>*/}
<Col md={24} sm={24}>
<div className={style.searchBtn}>
<Button type='primary' htmlType='submit'>
查询
</Button>
<Button onClick={myHandleFormReset}>
重置
</Button>
<a onClick={() => toggleForm(form)}>
收起 <UpOutlined />
</a>
</div>
</Col>
</Row>
</Form>
)
}
export default StaffSheetRenderAdvancedForm

@ -0,0 +1,81 @@
import { useEffect } from 'react'
import {Button, Col, Form, Input, Row, DatePicker, Select} from 'antd'
import {DownOutlined, RedoOutlined, SearchOutlined} from '@ant-design/icons'
import style from '@/global.less'
import dayjs from 'dayjs'
const { Item: FormItem } = Form
const StaffSheetRenderSimpleForm = (props) => {
const [form] = Form.useForm()
const { handleSearch, handleFormReset, toggleForm, params } = props
useEffect(() => {
form.setFieldsValue({
user_name: params?.user_name,
user_name_cn: params?.user_name_cn,
})
}, [params])
const onFinish = values => {
handleSearch(values)
}
const myHandleFormReset = () => {
form.resetFields()
handleFormReset()
}
return (
<Form form={form} onFinish={onFinish} layout='inline'>
<Row gutter={{ md: 8, lg: 24, xl: 48 }} className={style.searchInput}>
<Col md={4} sm={24}>
<FormItem label='我的查询条件' name='wdcxtj'>
<Select
placeholder='请选择'
options={[]}
/>
</FormItem>
</Col>
<Col md={4} sm={24}>
<FormItem label='日期' name='rq' rules={[{ required: true, message: '请选择日期!' }]}>
<DatePicker defaultValue={dayjs('2025-04-10', 'YYYY-MM-DD')} format='YYYY-MM-DD' />
</FormItem>
</Col>
<Col md={4} sm={24}>
<FormItem label='工作地点' name='gzdd'>
<Input placeholder='请输入' />
</FormItem>
</Col>
<Col md={4} sm={24}>
<FormItem label='工号' name='gh'>
<Input placeholder='请输入' defaultValue="123456"/>
</FormItem>
</Col>
<Col md={4} sm={24}>
<FormItem label='名称' name='gh'>
<Input placeholder='请输入'/>
</FormItem>
</Col>
<Col md={4} sm={24}>
<div className={style.searchBtn}>
<Button type='primary' htmlType='submit'>
查询
</Button>
<Button onClick={myHandleFormReset}>
重置
</Button>
</div>
</Col>
</Row>
</Form>
)
}
export default StaffSheetRenderSimpleForm

@ -13,29 +13,34 @@ const menuItem = [
key: '/topnavbar00/hrefficiency',
// icon: <SettingOutlined />,
children: [
// {
// label: '工时仪表盘',
// key: '/topnavbar00/hrefficiency/timesheet',
// // icon: <SettingOutlined />,
// },
// {
// label: '员工仪表盘',
// key: '/topnavbar00/hrefficiency/staffsheet',
// // icon: <SettingOutlined />,
// },
// {
// label: '员工效率监控',
// key: '/topnavbar00/hrefficiency/staffuph',
// // icon: <SettingOutlined />,
// },
// {
// label: '部门效率监控',
// key: '/topnavbar00/hrefficiency/deptuph',
// // icon: <SettingOutlined />,
// },
// {
// label: '全员效率监控',
// key: '/topnavbar00/hrefficiency/allstaffuph',
// // icon: <SettingOutlined />,
// },
{
label: '工时仪表盘',
key: '/topnavbar00/hrefficiency/timesheet',
// icon: <SettingOutlined />,
},
{
label: '员工仪表盘',
key: '/topnavbar00/hrefficiency/staffsheet',
// icon: <SettingOutlined />,
},
{
label: '员工效率监控',
key: '/topnavbar00/hrefficiency/staffuph',
// icon: <SettingOutlined />,
},
{
label: '部门效率监控',
key: '/topnavbar00/hrefficiency/deptuph',
// icon: <SettingOutlined />,
},
{
label: '全员效率监控',
key: '/topnavbar00/hrefficiency/allstaffuph',
label: '安全管理基础信息',
key: '/topnavbar00/hrefficiency/basicinformation',
// icon: <SettingOutlined />,
},
{

Loading…
Cancel
Save